PocketEmpires/Gameplay.cpp

160 lines
2.5 KiB
C++

/* **************************************
* Includes *
* **************************************/
#include "Gameplay.h"
#include "MouseSpr.c"
#include "Pad.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);
/*
const byte TowerSpr[] PROGMEM = {16,32,
0xF,0xF0,
0x8,0x10,
0x8,0x10,
0xF,0xF0,
0x8,0x10,
0x8,0x10,
0x8,0x10,
0x8,0x10,
0x1B,0xD8,
0x2A,0x54,
0x4A,0x52,
0xFB,0xDF,
0x8,0x10,
0x8,0x10,
0x8,0x10,
0x9,0x90,
0x9,0x90,
0x8,0x10,
0x8,0x10,
0x8,0x10,
0x8,0x10,
0x9,0x90,
0x9,0x90,
0x8,0x10,
0x8,0x10,
0x8,0x10,
0x8,0x10,
0x8,0x10,
0xB,0xD0,
0xA,0x50,
0xA,0x50,
0xF,0xF0,
};*/
void GameInit(void)
{
uint8_t i;
for (i = 0; i < GAME_MAX_PLAYERS; i++)
{
GamePlayers[i].Init();
}
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)
{
//int8_t menu(const char* const* items, uint8_t length);
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();
}
}