160 lines
2.5 KiB
C++
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();
|
|
}
|
|
}
|