[ADD] init variables for restarting

This commit is contained in:
SemvdH
2021-08-23 18:46:05 +02:00
parent 6d923ebb45
commit da0c35e17f

View File

@@ -31,17 +31,17 @@ typedef enum
GAMEOVER GAMEOVER
} game_state; } game_state;
uint8_t running = 1, drawing_circle = 0; uint8_t running, drawing_circle;
game_state current_state = START; game_state current_state = START;
stick_data left_stick = {0, 0}, right_stick = {0, 0}; stick_data left_stick = {0, 0}, right_stick = {0, 0};
SceCtrlData pad; SceCtrlData pad;
uint8_t cross_pressed = 0; uint8_t cross_pressed;
uint8_t current_bullet = 0; uint8_t current_bullet;
BULLET bullets[255]; BULLET bullets[255];
uint8_t current_smoke_particle = 0; uint8_t current_smoke_particle;
SMOKE_PARTICLE smoke_particles[255]; SMOKE_PARTICLE smoke_particles[255];
vita2d_pgf *pgf; vita2d_pgf *pgf;
@@ -50,12 +50,12 @@ vita2d_pvf *pvf;
SceUInt64 deltaTime = 0; // delta time in ms SceUInt64 deltaTime = 0; // delta time in ms
SceKernelSysClock sysclock; SceKernelSysClock sysclock;
timing_timer bullet_timer = {0, 250, 0}; // 0 as starting time, 250 ms timeout, not elapsed timing_timer bullet_timer = {0, 250, 0}; // 0 as starting time, 250 ms timeout, not elapsed
timing_timer menu_switch_input_delay_timer = {0, 100, 0}; // 0 as starting time, 100 ms timeout, not elapsed timing_timer menu_switch_input_delay_timer = {0, 200, 0}; // 0 as starting time, 100 ms timeout, not elapsed
ENEMY_SPRITE enemies[SIMPLE_ENEMY_MAX_AMOUNT]; ENEMY_SPRITE enemies[SIMPLE_ENEMY_MAX_AMOUNT];
uint32_t enemy_count = 0; uint32_t enemy_count;
float player_x = 300, player_y = 50, x2_pos = 400, y2_pos = 50, radius = 5.0; float player_x, player_y, x2_pos, y2_pos, radius;
/** /**
* @brief should be called when an unhandlable exception or error occurs. Triggers coredump. * @brief should be called when an unhandlable exception or error occurs. Triggers coredump.
@@ -69,10 +69,56 @@ __attribute__((__noreturn__)) void shit_yourself(void)
} }
} }
/**
* @brief initializes all variables
*/
void init_variables()
{
running = 1;
drawing_circle = 0;
cross_pressed = 0;
current_bullet = 0;
current_smoke_particle = 0;
enemy_count = 0;
player_x = 300;
player_y = 50;
x2_pos = 400;
y2_pos = 50;
radius = 5.0;
}
// ################################################################ // ################################################################
// ------------------------ GENERATE SPRITES ------------------ // ------------------------ GENERATE SPRITES ------------------
// ################################################################ // ################################################################
/**
* @brief initializes the sprites
*/
void init_sprites()
{
int i;
for (i = 0; i < 255; i++)
{
BULLET temp = {NONACTIVE, 0, 100, RGBA8(0, i, 255, 255), 300.0};
bullets[i] = temp;
}
for (i = 0; i < 255; i++)
{
SMOKE_PARTICLE s = {NONACTIVE, 0, 0, SMOKE_START_RADIUS};
smoke_particles[i] = s;
}
// add simple enemies
for (i = 0; i < SIMPLE_ENEMY_MAX_AMOUNT; i++)
{
ENEMY_SPRITE e = {ACTIVE, SIMPLE, 20 * i + 10, 10, RGBA8(245, 90, 66, 255), 1.0};
enemies[i] = e;
enemy_count++;
}
}
void generate_bullet() void generate_bullet()
{ {
// {1, x1_pos, y1_pos, RGBA8(100, 100, 0, 255)}; // {1, x1_pos, y1_pos, RGBA8(100, 100, 0, 255)};
@@ -206,6 +252,8 @@ SceBool check_player_collisions()
// ------------------------ END COLLISION ------------------ // ------------------------ END COLLISION ------------------
// ################################################################ // ################################################################
void init() void init()
{ {
/* to enable analog sampling */ /* to enable analog sampling */
@@ -213,31 +261,14 @@ void init()
vita2d_init(); vita2d_init();
vita2d_set_clear_color(RGBA8(0x40, 0x40, 0x40, 0xFF)); vita2d_set_clear_color(RGBA8(0x40, 0x40, 0x40, 0xFF));
init_variables();
pgf = vita2d_load_default_pgf(); pgf = vita2d_load_default_pgf();
pvf = vita2d_load_default_pvf(); pvf = vita2d_load_default_pvf();
memset(&pad, 0, sizeof(pad)); memset(&pad, 0, sizeof(pad));
int i;
for (i = 0; i < 255; i++) init_sprites();
{
BULLET temp = {NONACTIVE, 0, 100, RGBA8(0, i, 255, 255), 300.0};
bullets[i] = temp;
}
for (i = 0; i < 255; i++)
{
SMOKE_PARTICLE s = {NONACTIVE, 0, 0, SMOKE_START_RADIUS};
smoke_particles[i] = s;
}
// add simple enemies
for (i = 0; i < SIMPLE_ENEMY_MAX_AMOUNT; i++)
{
ENEMY_SPRITE e = {ACTIVE, SIMPLE, 20 * i + 10, 10, RGBA8(245, 90, 66, 255), 1.0};
enemies[i] = e;
enemy_count++;
}
//TODO add other enemies //TODO add other enemies
} }
@@ -303,7 +334,7 @@ void update_game()
current_state = GAMEOVER; current_state = GAMEOVER;
return; return;
} }
check_bullet_collisions(); check_bullet_collisions();
for (int i = 0; i < 255; i++) for (int i = 0; i < 255; i++)
@@ -327,6 +358,16 @@ void update_game()
void update_gameover() void update_gameover()
{ {
timing_update_timer(&menu_switch_input_delay_timer, deltaTime);
timing_check_timer_elapsed(&menu_switch_input_delay_timer);
if (cross_pressed)
if (menu_switch_input_delay_timer.elapsed)
{
current_state = START;
init_variables();
init_sprites();
menu_switch_input_delay_timer.elapsed = 0;
}
} }
void update() void update()
@@ -414,7 +455,7 @@ void draw_game()
void draw_gameover() void draw_gameover()
{ {
vita2d_pvf_draw_text(pvf, 700, 80, RGBA8(0, 255, 0, 255), 1.0f, "Game over");
} }
void draw() void draw()