123 lines
2.1 KiB
C++
123 lines
2.1 KiB
C++
/* **************************************
|
|
* 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();
|
|
}
|
|
}
|