From 53cd72592c3b900175ac069708f4937c83dea37c Mon Sep 17 00:00:00 2001 From: realtradam Date: Mon, 29 May 2023 22:42:36 -0400 Subject: better init and deinit of systems --- src/bullet.h | 6 ++++++ src/enemies.h | 6 ++++++ src/input.h | 6 ++++++ src/main.c | 49 ++++++++++++++++++++++++++----------------------- src/player.h | 6 ++++++ src/wall.h | 6 ++++++ 6 files changed, 56 insertions(+), 23 deletions(-) diff --git a/src/bullet.h b/src/bullet.h index e335d7d..7bb8d6c 100644 --- a/src/bullet.h +++ b/src/bullet.h @@ -21,6 +21,12 @@ init_bullets(void); void deinit_bullets(void); +#define bullets_init_do() \ + mrodeo_defer_do( \ + init_bullets(), \ + deinit_bullets() \ + ) + bullet_t * spawn_bullet( float x, diff --git a/src/enemies.h b/src/enemies.h index b111885..b2e9b6b 100644 --- a/src/enemies.h +++ b/src/enemies.h @@ -49,6 +49,12 @@ init_enemies(void); void deinit_enemies(void); +#define enemies_init_do() \ + mrodeo_defer_do( \ + init_enemies(), \ + deinit_enemies() \ + ) + enemy_t* spawn_enemy( float x, diff --git a/src/input.h b/src/input.h index c03c454..c73e59a 100644 --- a/src/input.h +++ b/src/input.h @@ -77,3 +77,9 @@ register_inputs(void); void unregister_inputs(void); + +#define inputs_register_do() \ + mrodeo_defer_do( \ + register_inputs(), \ + unregister_inputs() \ + ) diff --git a/src/main.c b/src/main.c index 81e0248..4a08439 100644 --- a/src/main.c +++ b/src/main.c @@ -92,8 +92,6 @@ main_loop(void) int main(void) { - register_inputs(); - rodeo_log( rodeo_logLevel_info, "Testing logging... It seems to work!" @@ -108,29 +106,34 @@ main(void) ); - mrodeo_window_do(window_height, window_width, cstr_lit("Rodeo Window")) + register_inputs(); + inputs_register_do() { - renderer = rodeo_renderer_name_get(); - rodeo_frame_limit_set(60); - - scratch = rodeo_audio_sound_create_from_path(cstr_lit("assets/sample.wav")); - music = rodeo_audio_music_create_from_path(cstr_lit("assets/music.ogg")); - - init_bullets(); - init_player(); - init_enemies(); - init_wall(); - - - rodeo_mainLoop_run( - main_loop - ); - - deinit_player(); - deinit_enemies(); + mrodeo_window_do(window_height, window_width, cstr_lit("Rodeo Window")) + { + renderer = rodeo_renderer_name_get(); + rodeo_frame_limit_set(60); + + scratch = rodeo_audio_sound_create_from_path(cstr_lit("assets/sample.wav")); + music = rodeo_audio_music_create_from_path(cstr_lit("assets/music.ogg")); + + bullets_init_do() + { + player_init_do() + { + enemies_init_do() + { + wall_init_do() + { + rodeo_mainLoop_run( + main_loop + ); + } + } + } + } + } } - unregister_inputs(); - return 0; } diff --git a/src/player.h b/src/player.h index f102b1d..6603554 100644 --- a/src/player.h +++ b/src/player.h @@ -28,6 +28,12 @@ init_player(void); void deinit_player(void); +#define player_init_do() \ + mrodeo_defer_do( \ + init_player(), \ + deinit_player() \ + ) + void draw_player(void); diff --git a/src/wall.h b/src/wall.h index 07990fa..945bc46 100644 --- a/src/wall.h +++ b/src/wall.h @@ -6,6 +6,12 @@ init_wall(void); void deinit_wall(void); +#define wall_init_do() \ + mrodeo_defer_do( \ + init_wall(), \ + deinit_wall() \ + ) + rodeo_collision_2d_world_t * get_wall_world(void); -- cgit v1.2.3