Add huge asteroids

This commit is contained in:
Camden Dixie O'Brien
2025-10-15 14:44:29 +01:00
parent 6d16ba6e27
commit 2a55eb17ad

27
game.c
View File

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