/*============================================================*/ /*============================================================*/ /*== ==*/ /*== Rendering Directing Routines ==*/ /*== ==*/ /*============================================================*/ /*============================================================*/ /*======================================================== Includes */ #include "Globals.h" #include "UnivUtilities.h" #include "Render.h" #include "RenderAsm1.h" #include "RenderAsm4.h" #include "RenderQD.h" /*======================================================== Functions */ /*======================================================== FillInTheSrcAndMaskRect */ void FillInTheSrcAndMaskRect (playerType *who) { if (who->selector == kPlayerSelector) { if (leftGoalIsPlayers) who->srcRect = playerSrcRects[who->dirFlagSrc][who->postFlagSrc]; else who->srcRect = opponentSrcRects[who->dirFlagSrc][who->postFlagSrc]; } else { if (leftGoalIsPlayers) who->srcRect = opponentSrcRects[who->dirFlagSrc][who->postFlagSrc]; else who->srcRect = playerSrcRects[who->dirFlagSrc][who->postFlagSrc]; } if (who->arrayFlagMask == kMask) { who->maskRect = playerSrcRects[who->dirFlagMask][who->postFlagMask]; } else { who->maskRect = fadeMaskRects[who->dirFlagMask][who->postFlagMask]; } } /*======================================================== FillInTheSrcAndMaskAddr */ void FillInTheSrcAndMaskAddr (playerType *who) { if (who->selector == kPlayerSelector) { if (leftGoalIsPlayers) who->srcAddr = playerSrcAddrs[who->dirFlagSrc][who->postFlagSrc]; else who->srcAddr = opponentSrcAddrs[who->dirFlagSrc][who->postFlagSrc]; } else { if (leftGoalIsPlayers) who->srcAddr = opponentSrcAddrs[who->dirFlagSrc][who->postFlagSrc]; else who->srcAddr = playerSrcAddrs[who->dirFlagSrc][who->postFlagSrc]; } if (who->arrayFlagMask == kMask) who->maskAddr = maskAddrs[who->dirFlagMask][who->postFlagMask]; else who->maskAddr = fadeMaskAddrs[who->dirFlagMask][who->postFlagMask]; } /*======================================================== DetermineFrameRate */ void DetermineFrameRate (void) { if (doSkipFrames) { if ((Ticks % kFramesToSkip) == 0) drawThisFrame = TRUE; else drawThisFrame = FALSE; } else drawThisFrame = TRUE; } /*======================================================== HandlePreGraphics */ void HandlePreGraphics (void) { if (netGameInSession) { if (imTheMaster) { playerInBack = (thePlayer.zPos > theOpponent.zPos); } else if (!madeThePickUp) { return; } } else { playerInBack = (thePlayer.zPos > theOpponent.zPos); } if (useQD) { FillInTheSrcAndMaskRect(&thePlayer); FillInTheSrcAndMaskRect(&theOpponent); } else { FillInTheSrcAndMaskAddr(&thePlayer); FillInTheSrcAndMaskAddr(&theOpponent); } } /*======================================================== HandlePostGraphics */ void HandlePostGraphics (void) { if (netGameInSession) { if ((!imTheMaster) && (!madeThePickUp)) return; } if (drawThisFrame) { theBall.eraser = theBall.isRect; thePlayer.wasRect = thePlayer.isRect; theOpponent.wasRect = theOpponent.isRect; theBall.wasRect = theBall.isRect; boardCursor.wasRect = boardCursor.isRect; } } /*======================================================== RenderScene */ void RenderScene (void) { if (netGameInSession) { if ((!imTheMaster) && (!madeThePickUp)) return; } if (useQD) { if (isColor) RenderSceneQDC(); else RenderSceneQD1(); } else { switch (isDepth) { case kDisplay1Bit: RenderSceneAsm1(); break; case kDisplay4Bit: RenderSceneAsm4(); break; case kDisplay8Bit: break; } } } /*======================================================== DisplayScoreDigit */ void DisplayScoreDigit (short place, short digit, short who) { if (isColor) DisplayScoreDigitQDC(place, digit, who); else DisplayScoreDigitQD1(place, digit, who); } /*======================================================== DisplayPlayerFouls */ void DisplayPlayerFouls (short fouls) { if (isColor) DisplayPlayerFoulsQDC(fouls); else DisplayPlayerFoulsQD1(fouls); } /*======================================================== DisplayOpponentFouls */ void DisplayOpponentFouls (short fouls) { if (isColor) DisplayOpponentFoulsQDC(fouls); else DisplayOpponentFoulsQD1(fouls); } /*======================================================== TwinkleAStar */ void TwinkleAStar (void) { short starNumber, colorNumber; starNumber = RandomInt(kNumberOfStars); colorNumber = RandomInt(kNumberOfStarColors); if (splashIsUp) { starNumber = 0; colorNumber = 0; } if (isColor) TwinkleAStarQDC(starNumber, colorNumber); else TwinkleAStarQD1(starNumber); } /*======================================================== DrawAllStars */ void DrawAllStars (void) { short i, colorNumber; for (i = 0; i < kNumberOfStars; i++) { colorNumber = RandomInt(kNumberOfStarColors); if (isColor) DrawOffscreenAStarQDC(i, colorNumber); else DrawOffscreenAStarQD1(i); } } /*======================================================== UpdateArrows */ void UpdateArrows (void) { if (isColor) UpdateArrowsQDC(); else UpdateArrowsQD1(); } /*======================================================== UpdateBallTimers */ void UpdateBallTimers (playerType *who) { Rect tempRect; if (who->selector == kPlayerSelector) { if (leftGoalIsPlayers) tempRect = leftTimingDest; else tempRect = rightTimingDest; } else { if (leftGoalIsPlayers) tempRect = rightTimingDest; else tempRect = leftTimingDest; } tempRect.bottom = tempRect.top + ((kLoopLimitOnHeldBall - who->loopsBallHeld) / kTimingScale); if (isColor) UpdateBallTimersQDC(&tempRect); else UpdateBallTimersQD1(&tempRect); }