Add huge asteroids

This commit is contained in:
2025-10-18 17:43:22 +01:00
parent 79ac5a489d
commit 8cbe1b0431

27
game.c
View File

@@ -9,6 +9,7 @@
#include <linux/input-event-codes.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
#define SHIP_COLLIDE_R 0.05
#define SHIP_MASS 0.5
@@ -22,11 +23,12 @@
#define ASTEROID_A_JITTER 0.8
#define ASTEROID_VEL_JITTER 0.001
#define ASTEROID_OMG_JITTER 0.005
#define INIT_ASTEROIDS 8
#define INIT_ASTEROIDS 1
#define ASTEROID_SMALL 0.05
#define ASTEROID_MEDIUM 0.1
#define ASTEROID_LARGE 0.2
#define ASTEROID_SMALL 0.05f
#define ASTEROID_MEDIUM 0.1f
#define ASTEROID_LARGE 0.2f
#define ASTEROID_HUGE 0.4f
#define ASTEROID_R_JITTER 0.02
#define ASTEROID_MIN_DIST 0.8
@@ -222,12 +224,14 @@ static void spawn_asteroid()
{
float r;
const float rnd = rng_canon();
if (rnd < 0.2)
if (rnd < 0.1)
r = ASTEROID_SMALL;
else if (rnd < 0.6)
else if (rnd < 0.5)
r = ASTEROID_MEDIUM;
else
else if (rnd < 0.9)
r = ASTEROID_LARGE;
else
r = ASTEROID_HUGE;
unsigned id;
entity_t *e = gen_asteroid(r, &id);
@@ -344,9 +348,11 @@ static void destroy_asteroid(entity_t *a, vec2_t shot_vel)
--asteroid_count;
float r;
if (fabs(a->radius - ASTEROID_LARGE) < 1e-3)
if (a->radius == ASTEROID_HUGE)
r = ASTEROID_LARGE;
else if (a->radius == ASTEROID_LARGE)
r = ASTEROID_MEDIUM;
else if (fabs(a->radius - ASTEROID_MEDIUM) < 1e-3)
else if (a->radius == ASTEROID_MEDIUM)
r = ASTEROID_SMALL;
else
return;
@@ -379,6 +385,8 @@ static void destroy_asteroid(entity_t *a, vec2_t shot_vel)
++asteroid_count;
}
printf("asteroid count: %u\n", asteroid_count);
}
static void handle_collisions(const collision_t *collisions, unsigned count)
@@ -426,6 +434,7 @@ void game_init(float _aspect)
dead = false;
counter = 0;
entity_count = shape_count = 0;
asteroid_count = 0;
entity_t *ship = add_entity(&ship_entity_id);
ship->radius = SHIP_COLLIDE_R;