score += s;
}
+bool player_dead()
+{
+ return player.health <= 0;
+}
+
struct list *add_element(struct list *list, void *element)
{
struct list **ptr;
static void player_death(struct entity *self)
{
- (void) self;
- quit();
+ self->texture = "☠ ";
}
/* Mapgen */
static void handle_input(char c)
{
+ bool dead = player_dead();
+
switch (c) {
case 'q':
quit();
break;
case 'w':
- move(&player, 0, -1);
+ dead || move(&player, 0, -1);
break;
case 'a':
- move(&player, -1, 0);
+ dead || move(&player, -1, 0);
break;
case 's':
- move(&player, 0, 1);
+ dead || move(&player, 0, 1);
break;
case 'd':
- move(&player, 1, 0);
+ dead || move(&player, 1, 0);
break;
}
}
double dtime = (double) (ts.tv_sec - ts_old.tv_sec) + (double) (ts.tv_nsec - ts_old.tv_nsec) / 1000000000.0;
ts_old = ts;
+ bool dead = player_dead();
+
render_entity_list render_list = {{NULL}};
for (struct list **ptr = &entities; *ptr != NULL; ) {
if (visible)
render_list[dx + LIGHT][dy + LIGHT] = entity;
- if (entity->on_step)
+ if (! dead && entity->on_step)
entity->on_step(entity, (struct entity_step_data) {
.dtime = dtime,
.visible = visible,
const char *name;
int x, y;
struct color color;
- char texture[8];
+ const char *texture;
bool remove;
void *meta;
int health;
void spawn(struct entity def, int x, int y);
void add_health(struct entity *entity, int health);
void add_score(int s);
+bool player_dead();
void set_color(struct color color, bool bg);
struct color light_color(struct color color, double light);
void register_air_function(struct generator_function func);