/*============================================================*/ /*============================================================*/ /*== ==*/ /*== Initialize Game Structures ==*/ /*== ==*/ /*============================================================*/ /*============================================================*/ /*======================================================== Includes */ #include "Globals.h" #include "UnivUtilities.h" #include "InitGameStructs.h" #include "Prefs.h" #include #include "AnimCursor.h" #include "PlayerStats.h" /*======================================================== SetPrefsToDefault */ void SetPrefsToDefault (void) { short i; lifeTime = 0L; encryptedNumber = 0L; GetChooserName((StringPtr)theNames[0]); if (theNames[0][0] == 0) PasStringCopy((StringPtr)"\pPlayer 1", (StringPtr)theNames[0]); PasStringCopy((StringPtr)"\pPlayer 2", (StringPtr)theNames[1]); PasStringCopy((StringPtr)"\pPlayer 3", (StringPtr)theNames[2]); PasStringCopy((StringPtr)"\pPlayer 4", (StringPtr)theNames[3]); PasStringCopy((StringPtr)"\pPlayer 5", (StringPtr)theNames[4]); PasStringCopy((StringPtr)"\pPlayer 6", (StringPtr)theNames[5]); PasStringCopy((StringPtr)"\pPlayer 7", (StringPtr)theNames[6]); PasStringCopy((StringPtr)"\pPlayer 8", (StringPtr)theNames[7]); PasStringCopy((StringPtr)"\pPlayer 9", (StringPtr)theNames[8]); PasStringCopy((StringPtr)"\pPlayer 10", (StringPtr)theNames[9]); ResetWorldRecords(); theOpponent.persona = kSimpleGeorge; whichHumanNumber = 1; whichGame = kStandardGame; GetSoundVol(&soundVolume); isLeague = kLittleLeague; for (i = 0; i < 10; i++) { teaksThreshholds[i] = 50; } theOpponent.teaksThresh = teaksThreshholds[whichHumanNumber - 1]; useQD = FALSE; willUseQD = useQD; replayGoals = TRUE; replayFouls = FALSE; replayOnR = TRUE; autoTeamsDialog = TRUE; showBoardCursor = FALSE; leftGoalIsPlayers = TRUE; soundOn = TRUE; beamSoundOn = TRUE; incidentSoundOn = TRUE; collisionSoundOn = TRUE; crowdSoundOn = TRUE; autoSetDepth = TRUE; enableAnnouncer = TRUE; enableBackground = FALSE; doZooms = TRUE; replayZooms = TRUE; doSkipFrames = FALSE; for (i = 0; i < 10; i++) { theStats[i].tournamentTime = 0L; theStats[i].bestPlatinumTime = 0L; theStats[i].copperTitles = 0; theStats[i].bronzeTitles = 0; theStats[i].silverTitles = 0; theStats[i].goldTitles = 0; theStats[i].platinumTitles = 0; theStats[i].played = 0; theStats[i].won = 0; theStats[i].goals = 0; theStats[i].fouls = 0; theStats[i].criticals = 0; theStats[i].oppGoals = 0; theStats[i].oppFouls = 0; theStats[i].oppCriticals = 0; theStats[i].georgeState = kUnplayedState; theStats[i].maraState = kUnplayedState; theStats[i].ottoState = kUnplayedState; theStats[i].claireState = kUnplayedState; theStats[i].eazeState = kUnplayedState; theStats[i].teakState = kUnplayedState; } } /*======================================================== LoadThePreferences */ void LoadThePreferences (void) { prefsInfo thePreferred; short i; if (LoadPrefs(&thePreferred) == FALSE) { SetPrefsToDefault(); return; } if (thePreferred.prefVersion >= 0x0200) { SetPrefsToDefault(); return; } encryptedNumber = thePreferred.encryption; lifeTime = thePreferred.timeWas; PasStringCopy((StringPtr)thePreferred.mostTitlesName, (StringPtr)mostTitlesName); mostTitlesDate = thePreferred.mostTitlesDate; mostTitles = thePreferred.mostTitles; PasStringCopy((StringPtr)thePreferred.mostPointsName, (StringPtr)mostPointsName); mostPointsDate = thePreferred.mostPointsDate; mostPoints = thePreferred.mostPoints; PasStringCopy((StringPtr)thePreferred.mostFoulsName, (StringPtr)mostFoulsName); mostFoulsDate = thePreferred.mostFoulsDate; mostFouls = thePreferred.mostFouls; PasStringCopy((StringPtr)thePreferred.mostCritsName, (StringPtr)mostCritsName); mostCritsDate = thePreferred.mostCritsDate; mostCrits = thePreferred.mostCrits; for (i = 0; i < 10; i++) { PasStringCopy((StringPtr)thePreferred.namesWere[i], (StringPtr)theNames[i]); } theOpponent.persona = thePreferred.opponentWas; if ((theOpponent.persona < kSimpleGeorge) || (theOpponent.persona > kNetHuman)) theOpponent.persona = kSimpleGeorge; whichHumanNumber = thePreferred.playerWas; if ((whichHumanNumber < 1) || (whichHumanNumber > 10)) whichHumanNumber = 1; whichGame = thePreferred.gameWas; if ((whichGame < kPracticeBoardin) || (whichGame > kTournament)) whichGame = kStandardGame; isLeague = thePreferred.wasLeague; if ((isLeague < kLittleLeague) || (isLeague > kProfessional)) isLeague = kLittleLeague; for (i = 0; i < 10; i++) { teaksThreshholds[i] = thePreferred.wasTeaksThresh[i]; if ((teaksThreshholds[i] < 4) || (teaksThreshholds[i] > 95)) teaksThreshholds[i] = 50; } theOpponent.teaksThresh = teaksThreshholds[whichHumanNumber - 1]; soundVolume = thePreferred.wasVolume; if ((soundVolume < 0) || (soundVolume > 7)) soundVolume = 7; useQD = thePreferred.wasUseQD; willUseQD = useQD; autoTeamsDialog = thePreferred.wasAutoTeams; replayGoals = thePreferred.replayGoalsWas; replayFouls = thePreferred.replayFoulsWas; replayOnR = thePreferred.replayOnRWas; showBoardCursor = thePreferred.wasShowCursor; leftGoalIsPlayers = thePreferred.leftGoalWasPlayers; soundOn = thePreferred.wasSoundOn; beamSoundOn = thePreferred.wasBeamSoundOn; incidentSoundOn = thePreferred.wasIncidentSoundOn; collisionSoundOn = thePreferred.wasCollisionSoundOn; crowdSoundOn = thePreferred.wasCrowdSoundOn; autoSetDepth = thePreferred.wasSetDepth; enableAnnouncer = thePreferred.wasAnnouncer; enableBackground = thePreferred.wasBackground; doZooms = thePreferred.wasZooms; replayZooms = thePreferred.wasReplayZooms; doSkipFrames = thePreferred.wasSkipFrames; netOnly = thePreferred.wasNetOnly; for (i = 0; i < 10; i++) { theStats[i].tournamentTime = thePreferred.wasStats[i].tournamentTime; theStats[i].bestPlatinumTime = thePreferred.wasStats[i].bestPlatinumTime; theStats[i].copperTitles = thePreferred.wasStats[i].copperTitles; theStats[i].bronzeTitles = thePreferred.wasStats[i].bronzeTitles; theStats[i].silverTitles = thePreferred.wasStats[i].silverTitles; theStats[i].goldTitles = thePreferred.wasStats[i].goldTitles; theStats[i].platinumTitles = thePreferred.wasStats[i].platinumTitles; theStats[i].played = thePreferred.wasStats[i].played; theStats[i].won = thePreferred.wasStats[i].won; theStats[i].goals = thePreferred.wasStats[i].goals; theStats[i].fouls = thePreferred.wasStats[i].fouls; theStats[i].criticals = thePreferred.wasStats[i].criticals; theStats[i].oppGoals = thePreferred.wasStats[i].oppGoals; theStats[i].oppFouls = thePreferred.wasStats[i].oppFouls; theStats[i].oppCriticals = thePreferred.wasStats[i].oppCriticals; theStats[i].georgeState = thePreferred.wasStats[i].georgeState; theStats[i].maraState = thePreferred.wasStats[i].maraState; theStats[i].ottoState = thePreferred.wasStats[i].ottoState; theStats[i].claireState = thePreferred.wasStats[i].claireState; theStats[i].eazeState = thePreferred.wasStats[i].eazeState; theStats[i].teakState = thePreferred.wasStats[i].teakState; } #if kDemoVersion theOpponent.persona = kSimpleGeorge; whichGame = kStandardGame; isLeague = kLittleLeague; netOnly = FALSE; #endif } /*======================================================== LoadLargeDataStructures */ void LoadLargeDataStructures (void) { Handle tempResHand; short resID; littleForceTable = (short *)NewPtr(sizeof(forceData)); if (littleForceTable == kNilPointer) DeathError(kErrNoMemory); juniorForceTable = (short *)NewPtr(sizeof(forceData)); if (juniorForceTable == kNilPointer) DeathError(kErrNoMemory); varsityForceTable = (short *)NewPtr(sizeof(forceData)); if (varsityForceTable == kNilPointer) DeathError(kErrNoMemory); minorForceTable = (short *)NewPtr(sizeof(forceData)); if (minorForceTable == kNilPointer) DeathError(kErrNoMemory); proForceTable = (short *)NewPtr(sizeof(forceData)); if (proForceTable == kNilPointer) DeathError(kErrNoMemory); if (displayMode == kDisplay13Inch) resID = kLargeDishDataID; else resID = kSmallDishDataID; tempResHand = GetResource('vert', resID); if (tempResHand != kNilPointer) { HLock(tempResHand); BlockMove(*tempResHand, &vertTable, sizeof(vertData)); HUnlock(tempResHand); ReleaseResource(tempResHand); } else DeathError(kErrNoMemory); if (displayMode == kDisplay13Inch) resID = 1100; else resID = 1000; tempResHand = GetResource('forc', resID + 0); if (tempResHand != kNilPointer) { HLock(tempResHand); BlockMove(*tempResHand, littleForceTable, sizeof(forceData)); HUnlock(tempResHand); ReleaseResource(tempResHand); } else DeathError(kErrNoMemory); tempResHand = GetResource('forc', resID + 1); if (tempResHand != kNilPointer) { HLock(tempResHand); BlockMove(*tempResHand, juniorForceTable, sizeof(forceData)); HUnlock(tempResHand); ReleaseResource(tempResHand); } else DeathError(kErrNoMemory); tempResHand = GetResource('forc', resID + 2); if (tempResHand != kNilPointer) { HLock(tempResHand); BlockMove(*tempResHand, varsityForceTable, sizeof(forceData)); HUnlock(tempResHand); ReleaseResource(tempResHand); } else DeathError(kErrNoMemory); tempResHand = GetResource('forc', resID + 3); if (tempResHand != kNilPointer) { HLock(tempResHand); BlockMove(*tempResHand, minorForceTable, sizeof(forceData)); HUnlock(tempResHand); ReleaseResource(tempResHand); } else DeathError(kErrNoMemory); tempResHand = GetResource('forc', resID + 4); if (tempResHand != kNilPointer) { HLock(tempResHand); BlockMove(*tempResHand, proForceTable, sizeof(forceData)); HUnlock(tempResHand); ReleaseResource(tempResHand); } else DeathError(kErrNoMemory); switch (displayMode) { case kDisplay9Inch: case kDisplay12Inch: resID = kSmallDishDataID; break; case kDisplay13Inch: resID = kLargeDishDataID; break; } tempResHand = GetResource('sPts', resID); if (tempResHand != kNilPointer) { HLock(tempResHand); BlockMove(*tempResHand, &starList, sizeof(starData)); HUnlock(tempResHand); ReleaseResource(tempResHand); } else DeathError(kErrNoMemory); } /*======================================================== VarInit */ void VarInit (void) { short i, j, halfWide; SpinCursor(7); SetRect(&leftArrowDest, 0, 0, 19, 32); SetRect(&rightArrowDest, 0, 0, 19, 32); switch (displayMode) { case kDisplay13Inch: screenWide = 640; screenHigh = 480; displayHCenter = 320; displayVCenter = 240; arenaSize = kLargeArena; OffsetRect(&leftArrowDest, 90, 40); OffsetRect(&rightArrowDest, 530, 40); break; case kDisplay12Inch: screenWide = 512; screenHigh = 384; displayHCenter = 256; displayVCenter = 192; arenaSize = kSmallArena; OffsetRect(&leftArrowDest, 65, 0); OffsetRect(&rightArrowDest, 428, 0); break; case kDisplay9Inch: screenWide = 512; screenHigh = 342; displayHCenter = 256; displayVCenter = 171; arenaSize = kSmallArena; OffsetRect(&leftArrowDest, 65, 0); OffsetRect(&rightArrowDest, 428, 0); break; } screenHCenter = ((screenBits.bounds.right - screenBits.bounds.left) / 2) + screenBits.bounds.left; screenVCenter = ((screenBits.bounds.bottom - screenBits.bounds.top) / 2) + screenBits.bounds.top; /* Initialize Booleans */ thisTime = Ticks; replaySomething = replayGoals || replayFouls || replayOnR; smsActivated = FALSE; pausing = FALSE; newGame = FALSE; if (leftGoalIsPlayers) { leftPlayerNumber = kHumanPlayer; rightPlayerNumber = theOpponent.persona; } else { rightPlayerNumber = kHumanPlayer; leftPlayerNumber = theOpponent.persona; } antiFacing[kFacingSouth] = kFacingSouth; antiFacing[kFacingSouthEast] = kFacingSouthWest; antiFacing[kFacingEast] = kFacingWest; antiFacing[kFacingNorthEast] = kFacingNorthWest; antiFacing[kFacingNorth] = kFacingNorth; antiFacing[kFacingNorthWest] = kFacingNorthEast; antiFacing[kFacingWest] = kFacingEast; antiFacing[kFacingSouthWest] = kFacingSouthEast; antiFacing[kFacingRested] = kFacingRested; primaryMode = kIdleMode; isDepth = thisMac.isDepth; GetDateTime((unsigned long *)&randSeed); if (arenaSize == kLargeArena) { halfWide = kMaxBoardForceLg * kPlayerInputSensitive + kPlayerInputSensitive + 19; SetRect(&mouseFrame, screenHCenter - halfWide, screenVCenter - halfWide, screenHCenter + halfWide, screenVCenter + halfWide); maxBoardForce = kMaxBoardForceLg; } else { halfWide = kMaxBoardForceSm * kPlayerInputSensitive + kPlayerInputSensitive + 19; SetRect(&mouseFrame, screenHCenter - halfWide, screenVCenter - halfWide, screenHCenter + halfWide, screenVCenter + halfWide); maxBoardForce = kMaxBoardForceSm; } switch (isDepth) { case kDisplay1Bit: break; case kDisplay4Bit: Index2Color(13, &starColors[0]); Index2Color(14, &starColors[1]); Index2Color(0, &starColors[2]); break; case kDisplay8Bit: Index2Color(13, &starColors[0]); Index2Color(14, &starColors[1]); Index2Color(0, &starColors[2]); break; } /* Initialize Rects */ SetRect(&leftArrowSrc, 0, 70, 19, 102); SetRect(&rightArrowSrc, 0, 102, 19, 134); SetRect(&leftArrowStorage, 368, 0, 387, 32); SetRect(&rightArrowStorage, 368, 32, 387, 64); SetRect(&screenRect, 0, 0, screenWide, screenHigh); SetRect(&nullRect, 0, 0, 0, 0); SetRect(&replayRect, 0, 0, 192, 128); OffsetRect(&replayRect, screenWide - 208, 4); replayData = kNilPointer; replayData = (replayPtr)NewPtr(sizeof(replayType)); if (replayData != kNilPointer) canReplay = TRUE; else canReplay = FALSE; if (canReplay) replayData->frame = 0; screenRgn = NewRgn(); RectRgn(screenRgn, &screenRect); } /*======================================================== InitBallData */ void InitBallData (void) { short doorIsDown; SetRect(&theBall.srcRect, 0, 0, 16, 12); if (arenaSize == kSmallArena) { theBall.initXPos = kSmInitBallXPos; theBall.initZPos = kSmInitBallZPos; theBall.initXVel = kSmInitBallXVel; theBall.initZVel = kSmInitBallZVel; } else { theBall.initXPos = kLgInitBallXPos; theBall.initZPos = kLgInitBallZPos; theBall.initXVel = kLgInitBallXVel; theBall.initZVel = kLgInitBallZVel; } SetRect(&theDoor.srcRects[kLeftDoor][kDoorIsClosed], 0, 138, 32, 159); SetRect(&theDoor.srcRects[kRightDoor][kDoorIsClosed], 0, 159, 32, 180); SetRect(&theDoor.srcRects[kLeftDoor][kDoorIsOpen], 0, 180, 32, 201); SetRect(&theDoor.srcRects[kRightDoor][kDoorIsOpen], 0, 201, 32, 222); switch (displayMode) { case kDisplay13Inch: doorIsDown = 86; break; case kDisplay12Inch: doorIsDown = 52; break; case kDisplay9Inch: if (isColor) doorIsDown = 52; else doorIsDown = 54; break; } SetRect(&theDoor.destRects[kLeftDoor], 0, 0, 32, 21); /* left door - dest */ OffsetRect(&theDoor.destRects[kLeftDoor], screenWide / 2 - 32, doorIsDown); SetRect(&theDoor.destRects[kRightDoor], 0, 0, 32, 21); /* right door - dest */ OffsetRect(&theDoor.destRects[kRightDoor], screenWide / 2, doorIsDown); theDoor.doorState = kDoorIsClosed; theDoor.doorOpen = kLeftDoor; theDoor.phase = 0; theDoor.stateChanged = FALSE; antiWhosBall[kBallIsNotHere] = kBallIsNotHere; antiWhosBall[kBallRollsFreely] = kBallRollsFreely; antiWhosBall[kPlayerHasBall] = kOpponentHasBall; antiWhosBall[kOpponentHasBall] = kPlayerHasBall; } /*======================================================== InitPlayerData */ void InitPlayerData (void) { short i; Rect tempRect; thePlayer.selector = kPlayerSelector; thePlayer.strategy = kRunDiagonal; thePlayer.turnCount = 0; if (arenaSize == kSmallArena) thePlayer.turnNow = 18; else thePlayer.turnNow = 18; SetRect(&tempRect, 0, 0, 32, 44); /* initialize player src rects */ for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); playerSrcRects[i][0] = tempRect; } SetRect(&tempRect, 0, 44, 32, 88); for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); playerSrcRects[i][1] = tempRect; } SetRect(&tempRect, 0, 88, 32, 132); for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); playerSrcRects[i][2] = tempRect; } SetRect(&tempRect, 0, 132, 32, 176); /* initialize fade mask rects */ for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); fadeMaskRects[i][0] = tempRect; } SetRect(&tempRect, 0, 176, 32, 220); for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); fadeMaskRects[i][1] = tempRect; } SetRect(&tempRect, 0, 220, 32, 264); for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); fadeMaskRects[i][2] = tempRect; } SetRect(&boardCursor.srcRect, 0, 62, 16, 70); fadeMaskSequence[0] = 0; fadeMaskSequence[1] = 1; fadeMaskSequence[2] = 0; fadeMaskSequence[3] = 1; fadeMaskSequence[4] = 0; fadeMaskSequence[5] = 1; fadeMaskSequence[6] = 2; fadeMaskSequence[7] = 1; fadeMaskSequence[8] = 0; fadeMaskSequence[9] = 1; fadeMaskSequence[10] = 2; fadeMaskSequence[11] = 1; fadeMaskSequence[12] = 2; fadeMaskSequence[13] = 1; fadeMaskSequence[14] = 2; fadeMaskSequence[15] = 1; fadeMaskSequence[16] = 2; fadeMaskSequence[17] = 3; fadeMaskSequence[18] = 2; fadeMaskSequence[19] = 1; fadeMaskSequence[20] = 2; fadeMaskSequence[21] = 3; fadeMaskSequence[22] = 2; fadeMaskSequence[23] = 3; fadeMaskSequence[24] = 2; fadeMaskSequence[25] = 3; fadeMaskSequence[26] = 2; fadeMaskSequence[27] = 3; fadeMaskSequence[28] = 4; fadeMaskSequence[29] = 3; fadeMaskSequence[30] = 2; fadeMaskSequence[31] = 3; fadeMaskSequence[32] = 4; fadeMaskSequence[33] = 3; fadeMaskSequence[34] = 4; fadeMaskSequence[35] = 3; fadeMaskSequence[36] = 4; fadeMaskSequence[37] = 3; fadeMaskSequence[38] = 4; fadeMaskSequence[39] = 5; fadeMaskSequence[40] = 4; fadeMaskSequence[41] = 3; fadeMaskSequence[42] = 4; fadeMaskSequence[43] = 5; fadeMaskSequence[44] = 4; fadeMaskSequence[45] = 5; fadeMaskSequence[46] = 4; fadeMaskSequence[47] = 5; fadeMaskSequence[48] = 4; fadeMaskSequence[49] = 5; fadeMaskSequence[50] = 6; fadeMaskSequence[51] = 5; fadeMaskSequence[52] = 4; fadeMaskSequence[53] = 5; fadeMaskSequence[54] = 6; fadeMaskSequence[55] = 5; fadeMaskSequence[56] = 6; fadeMaskSequence[57] = 5; fadeMaskSequence[58] = 6; fadeMaskSequence[59] = 5; fadeMaskSequence[60] = 6; fadeMaskSequence[61] = 7; fadeMaskSequence[62] = 6; fadeMaskSequence[63] = 5; fadeMaskSequence[64] = 6; fadeMaskSequence[65] = 7; fadeMaskSequence[66] = 8; fadeMaskSequence[67] = 7; fadeMaskSequence[68] = 8; spacialToDirection[0] = kFacingNorthWest; spacialToDirection[1] = kFacingNorth; spacialToDirection[2] = kFacingNorthEast; spacialToDirection[3] = kFacingWest; spacialToDirection[4] = kFacingRested; spacialToDirection[5] = kFacingEast; spacialToDirection[6] = kFacingSouthWest; spacialToDirection[7] = kFacingSouth; spacialToDirection[8] = kFacingSouthEast; } /*======================================================== InitOpponentData */ void InitOpponentData (void) { short i; Rect tempRect; theOpponent.selector = kOpponentSelector; theOpponent.strategy = kRunDiagonal; theOpponent.turnCount = 0; if (arenaSize == kSmallArena) theOpponent.turnNow = 18; else theOpponent.turnNow = 18; SetRect(&tempRect, 0, 132, 32, 176); /* initialize player src rects */ for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); opponentSrcRects[i][0] = tempRect; } SetRect(&tempRect, 0, 176, 32, 220); for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); opponentSrcRects[i][1] = tempRect; } SetRect(&tempRect, 0, 220, 32, 264); for (i = 0; i < 9; i++) { OffHRect(&tempRect, 32); opponentSrcRects[i][2] = tempRect; } boardForceTable[kFacingSouth][kXComponent] = maxBoardForce * 0.0; boardForceTable[kFacingSouth][kZComponent] = maxBoardForce * -1.0; boardForceTable[kFacingSouthEast][kXComponent] = maxBoardForce * 0.70711; boardForceTable[kFacingSouthEast][kZComponent] = maxBoardForce * -0.70711; boardForceTable[kFacingEast][kXComponent] = maxBoardForce * 1.0; boardForceTable[kFacingEast][kZComponent] = maxBoardForce * 0.0; boardForceTable[kFacingNorthEast][kXComponent] = maxBoardForce * 0.70711; boardForceTable[kFacingNorthEast][kZComponent] = maxBoardForce * 0.70711; boardForceTable[kFacingNorth][kXComponent] = maxBoardForce * 0.0; boardForceTable[kFacingNorth][kZComponent] = maxBoardForce * 1.0; boardForceTable[kFacingNorthWest][kXComponent] = maxBoardForce * -0.70711; boardForceTable[kFacingNorthWest][kZComponent] = maxBoardForce * 0.70711; boardForceTable[kFacingWest][kXComponent] = maxBoardForce * -1.0; boardForceTable[kFacingWest][kZComponent] = maxBoardForce * 0.0; boardForceTable[kFacingSouthWest][kXComponent] = maxBoardForce * -0.70711; boardForceTable[kFacingSouthWest][kZComponent] = maxBoardForce * -0.70711; boardForceTable[kFacingRested][kXComponent] = maxBoardForce * 0.0; boardForceTable[kFacingRested][kZComponent] = maxBoardForce * 0.0; } /*======================================================== InitDigiDispData */ void InitDigiDispData (void) { Rect tempRect; short i; SetRect(&tempRect, 336, 0, 352, 24); for (i = 0; i < 11; i++) { scoreDisplays[kLeftScoreSelector].srcRects[i] = tempRect; OffVRect(&tempRect, 24); } SetRect(&tempRect, 352, 0, 368, 24); for (i = 0; i < 11; i++) { scoreDisplays[kRightScoreSelector].srcRects[i] = tempRect; OffVRect(&tempRect, 24); } SetRect(&colonSrc[0], 0, 26, 16, 50); SetRect(&colonSrc[1], 16, 26, 32, 50); SetRect(&timingSource, 392, 238, 400, 264); switch (displayMode) { case kDisplay13Inch: SetRect(&tempRect, 0, 437, 16, 461); OffHRect(&tempRect, 32); scoreDisplays[kLeftScoreSelector].destRects[kHundredsPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].destRects[kTensPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].destRects[kOnesPlace] = tempRect; SetRect(&tempRect, 0, 437, 16, 461); OffHRect(&tempRect, 560); scoreDisplays[kRightScoreSelector].destRects[kHundredsPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].destRects[kTensPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].destRects[kOnesPlace] = tempRect; SetRect(&tempRect, 0, 461, 16, 467); OffHRect(&tempRect, 32); scoreDisplays[kLeftScoreSelector].lightDest[0] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].lightDest[1] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].lightDest[2] = tempRect; SetRect(&tempRect, 0, 461, 16, 467); OffHRect(&tempRect, 560); scoreDisplays[kRightScoreSelector].lightDest[0] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].lightDest[1] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].lightDest[2] = tempRect; SetRect(&tempRect, 0, 0, 8, 26); OffsetRect(&tempRect, 88, 437); leftTimingDest = tempRect; SetRect(&tempRect, 0, 0, 8, 26); OffsetRect(&tempRect, 616, 437); rightTimingDest = tempRect; break; case kDisplay12Inch: SetRect(&tempRect, 0, 330, 16, 354); OffHRect(&tempRect, 32); scoreDisplays[kLeftScoreSelector].destRects[kHundredsPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].destRects[kTensPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].destRects[kOnesPlace] = tempRect; SetRect(&tempRect, 0, 330, 16, 354); OffHRect(&tempRect, 432); scoreDisplays[kRightScoreSelector].destRects[kHundredsPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].destRects[kTensPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].destRects[kOnesPlace] = tempRect; SetRect(&tempRect, 0, 354, 16, 360); OffHRect(&tempRect, 32); scoreDisplays[kLeftScoreSelector].lightDest[0] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].lightDest[1] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].lightDest[2] = tempRect; SetRect(&tempRect, 0, 354, 16, 360); OffHRect(&tempRect, 432); scoreDisplays[kRightScoreSelector].lightDest[0] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].lightDest[1] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].lightDest[2] = tempRect; SetRect(&tempRect, 0, 0, 8, 26); OffsetRect(&tempRect, 88, 330); leftTimingDest = tempRect; SetRect(&tempRect, 0, 0, 8, 26); OffsetRect(&tempRect, 488, 330); rightTimingDest = tempRect; break; case kDisplay9Inch: SetRect(&tempRect, 0, 308, 16, 332); OffHRect(&tempRect, 32); scoreDisplays[kLeftScoreSelector].destRects[kHundredsPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].destRects[kTensPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].destRects[kOnesPlace] = tempRect; SetRect(&tempRect, 0, 308, 16, 332); OffHRect(&tempRect, 432); scoreDisplays[kRightScoreSelector].destRects[kHundredsPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].destRects[kTensPlace] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].destRects[kOnesPlace] = tempRect; SetRect(&tempRect, 0, 332, 16, 338); OffHRect(&tempRect, 32); scoreDisplays[kLeftScoreSelector].lightDest[0] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].lightDest[1] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kLeftScoreSelector].lightDest[2] = tempRect; SetRect(&tempRect, 0, 332, 16, 338); OffHRect(&tempRect, 432); scoreDisplays[kRightScoreSelector].lightDest[0] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].lightDest[1] = tempRect; OffHRect(&tempRect, 16); scoreDisplays[kRightScoreSelector].lightDest[2] = tempRect; SetRect(&tempRect, 0, 0, 8, 26); OffsetRect(&tempRect, 88, 308); leftTimingDest = tempRect; SetRect(&tempRect, 0, 0, 8, 26); OffsetRect(&tempRect, 488, 308); rightTimingDest = tempRect; break; } }