diff options
author | kdx <kikoodx@paranoici.org> | 2023-03-21 21:29:20 +0100 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-03-21 21:29:20 +0100 |
commit | a262d351465957eadba265f1c3976e202e5b768d (patch) | |
tree | 86656c0aa774ea09e591259c76556c19b9e7154b /src | |
parent | 4beddb454cce722d31a889145ae4877071bd487e (diff) | |
download | hyperultra-a262d351465957eadba265f1c3976e202e5b768d.tar.gz |
hope this doesn't lag
Diffstat (limited to 'src')
-rw-r--r-- | src/game.c | 14 | ||||
-rw-r--r-- | src/game.h | 2 |
2 files changed, 15 insertions, 1 deletions
@@ -10,6 +10,7 @@ void game_init(Game *this) { memset(this, 0, sizeof(*this)); + this->player_dir = 1; game_restart_scene(this); } @@ -28,6 +29,7 @@ game_update(Game *this) } if (this->queue_next_scene) { this->queue_next_scene = false; + this->player_dir = game_get_entity(this, ET_exit)->exit.dir; map_next(); game_restart_scene(this); return; @@ -61,7 +63,8 @@ game_restart_scene(Game *this) Entity *e; switch (map_get(x, y)) { case 2: - player_init(game_create_entity(this), dx, dy); + e = player_init(game_create_entity(this), dx, dy); + e->player.dirx = this->player_dir; break; case 3: case 4: @@ -100,3 +103,12 @@ game_entity_count(Game *this, unsigned int type) count += (this->entities[i].type == type); return count; } + +Entity * +game_get_entity(Game *this, unsigned int type) +{ + for (int i = 0; i < MAX_ENTITIES; i++) + if (this->entities[i].type == type) + return &this->entities[i]; + return NULL; +} @@ -7,6 +7,7 @@ typedef struct Game { unsigned int uuid; bool queue_next_scene; int queue_restart_scene; + int player_dir; Entity entities[MAX_ENTITIES]; } Game; @@ -17,3 +18,4 @@ void game_draw(Game *this); void game_restart_scene(Game *this); Entity *game_create_entity(Game *this); int game_entity_count(Game *this, unsigned int type); +Entity *game_get_entity(Game *this, unsigned int type); |