blob: aceca8ffc04a8c3b8c205485322132419aa460ab (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
/* **************************************
* 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();
}
}
|