PocketEmpires/Gameplay.cpp

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();
}
}