[ADD] simple enemy spawning
This commit is contained in:
57
src/main.c
57
src/main.c
@@ -51,7 +51,8 @@ SceUInt64 deltaTime = 0; // delta time in ms
|
||||
SceKernelSysClock sysclock;
|
||||
timing_timer bullet_timer = {0, 250, 0}; // 0 as starting time, 250 ms timeout, not elapsed
|
||||
timing_timer menu_switch_input_delay_timer = {0, 200, 0}; // 0 as starting time, 100 ms timeout, not elapsed
|
||||
timing_timer score_timer = {0, 100, 0};
|
||||
timing_timer score_timer = {0, 100, 0}; // timer to update score
|
||||
timing_timer enemy_spawn_timer = {0, 500, 0}; // timer to spawn a new enemy
|
||||
|
||||
ENEMY_SPRITE enemies[SIMPLE_ENEMY_MAX_AMOUNT];
|
||||
uint32_t enemy_count;
|
||||
@@ -114,12 +115,16 @@ void init_sprites()
|
||||
// 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};
|
||||
ENEMY_SPRITE e = {NONACTIVE, SIMPLE, 20 * i + 10, 10, RGBA8(245, 90, 66, 255), 1.0};
|
||||
enemies[i] = e;
|
||||
enemy_count++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief generates a bullet
|
||||
*
|
||||
*/
|
||||
void generate_bullet()
|
||||
{
|
||||
// {1, x1_pos, y1_pos, RGBA8(100, 100, 0, 255)};
|
||||
@@ -130,6 +135,10 @@ void generate_bullet()
|
||||
current_bullet = (current_bullet + 1) % 254;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief generates a smoke particle
|
||||
*
|
||||
*/
|
||||
void generate_smoke_particle()
|
||||
{
|
||||
smoke_particles[current_smoke_particle].active = ACTIVE;
|
||||
@@ -140,6 +149,24 @@ void generate_smoke_particle()
|
||||
current_smoke_particle = (current_smoke_particle + 1) % 254;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief generates a simple enemy
|
||||
*
|
||||
*/
|
||||
void generate_simple_enemy()
|
||||
{
|
||||
for (int i = 0; i < SIMPLE_ENEMY_MAX_AMOUNT; i++)
|
||||
{
|
||||
if (enemies[i].active == NONACTIVE)
|
||||
{
|
||||
enemies[i].active = ACTIVE;
|
||||
enemies[i].x = toolbox_random_float(0, SCREEN_WIDTH - 1);
|
||||
enemies[i].y = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ################################################################
|
||||
// ------------------------ END GENERATE SPRITES ------------------
|
||||
// ################################################################
|
||||
@@ -306,6 +333,8 @@ void update_game()
|
||||
timing_check_timer_elapsed(&bullet_timer);
|
||||
timing_update_timer(&score_timer, deltaTime);
|
||||
timing_check_timer_elapsed(&score_timer);
|
||||
timing_update_timer(&enemy_spawn_timer, deltaTime);
|
||||
timing_check_timer_elapsed(&enemy_spawn_timer);
|
||||
|
||||
if (cross_pressed)
|
||||
{
|
||||
@@ -337,7 +366,7 @@ void update_game()
|
||||
menu_switch_input_delay_timer.elapsed = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (score_timer.elapsed)
|
||||
score += 1;
|
||||
|
||||
@@ -360,6 +389,24 @@ void update_game()
|
||||
if (smoke_particles[i].radius <= 0)
|
||||
smoke_particles[i].active = 0;
|
||||
}
|
||||
|
||||
if (enemy_spawn_timer.elapsed)
|
||||
{
|
||||
generate_simple_enemy();
|
||||
enemy_spawn_timer.elapsed = 0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < SIMPLE_ENEMY_MAX_AMOUNT; i++)
|
||||
{
|
||||
if (enemies[i].active == ACTIVE)
|
||||
{
|
||||
enemies[i].y += enemies[i].movement_speed;
|
||||
if (enemies[i].y >= SCREEN_HEIGTH + SIMPLE_ENEMY_SIZE)
|
||||
{
|
||||
enemies[i].active = NONACTIVE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void update_gameover()
|
||||
@@ -459,14 +506,14 @@ void draw_game()
|
||||
}
|
||||
|
||||
char score_text[40];
|
||||
sprintf(score_text,"score: %07d",score);
|
||||
sprintf(score_text, "score: %07d", score);
|
||||
vita2d_pvf_draw_text(pvf, 700, 100, RGBA8(0, 255, 0, 255), 1.0f, score_text);
|
||||
}
|
||||
|
||||
void draw_gameover()
|
||||
{
|
||||
char score_text[40];
|
||||
sprintf(score_text,"score: %07d",score);
|
||||
sprintf(score_text, "score: %07d", score);
|
||||
vita2d_pvf_draw_text(pvf, 700, 80, RGBA8(0, 255, 0, 255), 1.0f, "Game over");
|
||||
vita2d_pvf_draw_text(pvf, 700, 100, RGBA8(0, 255, 0, 255), 1.0f, score_text);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ void sprites_draw_player(float x, float y, float scale)
|
||||
float random_size = toolbox_random_float(scale, 5.0 * scale);
|
||||
vita2d_draw_line(x - 1.0 * scale, y, x, y + random_size, RGBA8(255, 0, 0, 200));
|
||||
vita2d_draw_line(x, y + random_size, x + 1.0 * scale, y, RGBA8(255, 0, 0, 200));
|
||||
|
||||
|
||||
//left side
|
||||
vita2d_draw_line(x - 2.0 * scale, y, x + 2.0 * scale, y, SHIP_PRIMARY_COLOR);
|
||||
vita2d_draw_line(x - 2.0 * scale, y, x - 1.0 * scale, y - 2.0 * scale, SHIP_PRIMARY_COLOR);
|
||||
@@ -39,7 +39,6 @@ void sprites_draw_player(float x, float y, float scale)
|
||||
vita2d_draw_line(x, y - 5.0 * scale, x + 1.0 * scale, y - 4.0 * scale, SHIP_PRIMARY_COLOR);
|
||||
vita2d_draw_line(x + 1.0 * scale, y - 4.0 * scale, x + 1.0 * scale, y - 2.0 * scale, SHIP_PRIMARY_COLOR);
|
||||
vita2d_draw_line(x + 1.0 * scale, y - 2.0 * scale, x + 2.0 * scale, y, SHIP_PRIMARY_COLOR);
|
||||
|
||||
}
|
||||
|
||||
void sprites_draw_enemy(ENEMY_SPRITE *enemy)
|
||||
@@ -60,5 +59,4 @@ void sprites_draw_simple_enemy(ENEMY_SPRITE *enemy)
|
||||
|
||||
void sprites_draw_complex_enemy(ENEMY_SPRITE *enemy)
|
||||
{
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user