Add huge asteroids
This commit is contained in:
27
game.c
27
game.c
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user