A retro platform game
git clone git://soophie.de/freezo
diff --git a/src/enemy.c b/src/enemy.c
index 466e1e4..c4d2540 100644
--- a/src/enemy.c
+++ b/src/enemy.c
1
@@ -8,18 +8,20 @@3
enemy_t *enemy_create(pos_t pos, enemy_e type) {4
enemy_t *enemy = malloc(sizeof(enemy_t));5
- enemy->pos = pos;6
- enemy->type = type;7
- enemy->on_ground = false;8
- enemy->velocity = 0.0;9
- enemy->gravity = 0.0;10
- enemy->dir = 1;11
- enemy->stunned = false;12
- enemy->frozen = false;13
- enemy->frozen_timer = 0;14
- enemy->fall_height = 0.0;15
- enemy->timer_walking = timer_create(9, 8);16
- enemy->timer_sneaking = timer_create(9, 16);17
+ *enemy = (enemy_t) {18
+ .pos = pos,19
+ .type = type,20
+ .on_ground = false,21
+ .velocity = 0.0,22
+ .gravity = 0.0,23
+ .dir = 1,24
+ .stunned = false,25
+ .frozen = false,26
+ .frozen_timer = 0,27
+ .fall_height = 0.0,28
+ .timer_walking = timer_create(9, 8),29
+ .timer_sneaking = timer_create(9, 16),30
+ };31
return enemy;32
}
diff --git a/src/game.c b/src/game.c
index 11f1b44..a98017c 100644
--- a/src/game.c
+++ b/src/game.c
1
@@ -13,29 +13,31 @@3
game_t *game_create(void) {4
game_t *game = malloc(sizeof(game_t));5
- game->state = STATE_GAME;6
- game->level = NULL,7
- game->quit = false;8
- game->defeat = false;9
- game->victory = false;10
- game->menu = menu_create();11
- game->player = NULL;12
- game->tiles = NULL;13
- game->tiles_len = 0;14
- game->entities = NULL;15
- game->entities_len = 0;16
- game->effects = NULL;17
- game->effects_len = 0;18
- game->assets.tiles = texture_load("assets/tiles.png", SCALE);19
- game->assets.entities = texture_load("assets/entities.png", SCALE);20
- game->assets.font = texture_load("assets/font.png", SCALE - 1);21
- game->assets.images = texture_load("assets/images.png", SCALE);22
- game->camera = (Camera2D) {23
- .offset = (pos_t) { 0.0, 0.0 },24
- .zoom = 1,25
+ *game = (game_t) {26
+ .state = STATE_GAME,27
+ .level = NULL,28
+ .quit = false,29
+ .defeat = false,30
+ .victory = false,31
+ .menu = menu_create(),32
+ .player = NULL,33
+ .tiles = NULL,34
+ .tiles_len = 0,35
+ .entities = NULL,36
+ .entities_len = 0,37
+ .effects = NULL,38
+ .effects_len = 0,39
+ .assets.tiles = texture_load("assets/tiles.png", SCALE),40
+ .assets.entities = texture_load("assets/entities.png", SCALE),41
+ .assets.font = texture_load("assets/font.png", SCALE - 1),42
+ .assets.images = texture_load("assets/images.png", SCALE),43
+ .camera = (Camera2D) {44
+ .offset = (pos_t) { 0.0, 0.0 },45
+ .zoom = 1,46
+ },47
+ .xp = 0,48
+ .sceen_timer = 0,49
};50
- game->xp = 0;51
- game->sceen_timer = 0;52
level_load(game, LEVEL_1);53
return game;54
}
diff --git a/src/player.c b/src/player.c
index 79a51e7..4391c9f 100644
--- a/src/player.c
+++ b/src/player.c
1
@@ -10,22 +10,24 @@3
player_t *player_create(pos_t pos) {4
player_t *player = malloc(sizeof(player_t));5
- player->pos = pos;6
- player->health = 6;7
- player->on_ground = false;8
- player->velocity = 0.0;9
- player->gravity = 0.0;10
- player->dir = 1;11
- player->sneaking = false;12
- player->shooting = false;13
- player->damage_timer = 0;14
- player->fall_height = 0.0;15
- player->held_enemy = NULL;16
- player->moving = false;17
- player->timer_walking = timer_create(9, 4);18
- player->timer_sneaking = timer_create(9, 8);19
- player->target_entity = NULL;20
- player->shooting_distance = PLAYER_SHOOTING_RANGE;21
+ *player = (player_t) {22
+ .pos = pos,23
+ .health = 6,24
+ .on_ground = false,25
+ .velocity = 0.0,26
+ .gravity = 0.0,27
+ .dir = 1,28
+ .sneaking = false,29
+ .shooting = false,30
+ .damage_timer = 0,31
+ .fall_height = 0.0,32
+ .held_enemy = NULL,33
+ .moving = false,34
+ .timer_walking = timer_create(9, 4),35
+ .timer_sneaking = timer_create(9, 8),36
+ .target_entity = NULL,37
+ .shooting_distance = PLAYER_SHOOTING_RANGE,38
+ };39
return player;40
}
diff --git a/todo.md b/todo.md
deleted file mode 100644
index be5c238..0000000
--- a/todo.md
+++ /dev/null
1
@@ -1,17 +0,0 @@2
-Todos3
-=====4
-5
-- [x] Improve freeze target detection6
-- [x] Adjust win conditions (check if all gates are frozen)7
-- [x] Add ceiling collision8
-- [x] Victory/Defeat screen (delay)9
-- [x] Add title screen10
-- [ ] Create a file format for designing levels (also entity/tile state)11
-- [ ] Add wall collision12
-- [ ] Add move velocity (for damage and maybe icy surfaces)13
-- [x] Stop enemy movement on walls14
-- [ ] Stop freeze laser on walls15
-- [ ] Add hitboxes (make them visible in debug mode)16
-- [ ] Add countdown17
-- [ ] Add new enemies18
-- [ ] Add boss
diff --git a/todo.txt b/todo.txt
new file mode 100644
index 0000000..a605b0c
--- /dev/null
+++ b/todo.txt
1
@@ -0,0 +1,17 @@2
+Todos3
+=====4
+5
+- [x] Improve freeze target detection6
+- [x] Adjust win conditions (check if all gates are frozen)7
+- [x] Add ceiling collision8
+- [x] Victory/Defeat screen (delay)9
+- [x] Add title screen10
+- [ ] Create a file format for designing levels (also entity/tile state)11
+- [x] Add wall collision12
+- [ ] Add move velocity (for damage and maybe icy surfaces)13
+- [x] Stop enemy movement on walls14
+- [ ] Stop freeze laser on walls15
+- [ ] Add hitboxes (make them visible in debug mode)16
+- [ ] Add countdown17
+- [ ] Add new enemies18
+- [ ] Add boss