/* ************************************** * Includes * * **************************************/ #include "Gameplay.h" #include "MouseSpr.i" #include "Pad.h" #include "Camera.h" /* ************************************** * Defines * * **************************************/ /* ************************************** * Global variables * * **************************************/ Player GamePlayers[GAME_MAX_PLAYERS]; /* ************************************** * Local variables * * **************************************/ static const char PauseMenuOption_0[] PROGMEM = "Resume"; static const char PauseMenuOption_1[] PROGMEM = "Quit"; static TYPE_SPRITE MouseSpr; static const char* const PauseMenuOptions[] PROGMEM = { PauseMenuOption_0, PauseMenuOption_1 }; /* ************************************** * Local prototypes * * **************************************/ static void GameCalculations(void); static void GameGraphics(void); static bool GamePause(void); static void GameLoop(void); void GameInit(void) { for (uint8_t i = 0; i < GAME_MAX_PLAYERS; i++) { GamePlayers[i].Init(); } GamePlayers[0].setHuman(true); MouseSpr.Data = MouseSprData; MouseSpr.color = GFX_INVERT; MouseSpr.rotation = NOROT; MouseSpr.flip = NOFLIP; MouseSpr.x = (X_SCREEN_RESOLUTION >> 1) - 4; MouseSpr.y = (Y_SCREEN_RESOLUTION >> 1) - 4; GfxInit(); GameLoop(); } bool GamePause(void) { if (PadButtonReleased(PAD_C) == true) { uint8_t choice = gb.menu(PauseMenuOptions, 2); if (choice != 0) { return true; } } return false; } void GameCalculations(void) { uint8_t i; for (i = 0; i < GAME_MAX_PLAYERS; i++) { GamePlayers[i].Handler(); } if (PadAnyKeyPressed() == true) { SystemSetRandSeed(); } } void GameGraphics(void) { uint8_t i; GfxClearScreen(); for (i = 0; i < GAME_MAX_PLAYERS; i++) { GamePlayers[i].DrawHandler(); } GfxDrawSprite(&MouseSpr); } void GameLoop(void) { while (1) { if (GamePause() == true) { return; } GameCalculations(); while (GfxRefreshNeeded() == false); GameGraphics(); SystemIncreaseGlobalTimer(); } }