]> git.lizzy.rs Git - nothing.git/commitdiff
(#418) refactor state management in game_update
authorrexim <reximkut@gmail.com>
Sun, 30 Dec 2018 18:00:37 +0000 (01:00 +0700)
committerrexim <reximkut@gmail.com>
Sun, 30 Dec 2018 18:00:37 +0000 (01:00 +0700)
src/game.c

index 253c9d655db4092a992fa584a27d3af5aeb1f833..c58c498151313568e0a95e6e6ab552036d9a77dd 100644 (file)
@@ -171,11 +171,19 @@ int game_update(Game *game, float delta_time)
     trace_assert(game);
     trace_assert(delta_time > 0.0f);
 
-    if (game->state == GAME_STATE_QUIT) {
-        return 0;
-    }
+    switch (game->state) {
+    case GAME_STATE_RUNNING: {
+        if (level_update(game->level, delta_time) < 0) {
+            return -1;
+        }
+
+        if (level_enter_camera_event(game->level, game->camera) < 0) {
+            return -1;
+        }
+
+    } break;
 
-    if (game->state == GAME_STATE_RUNNING || game->state == GAME_STATE_CONSOLE) {
+    case GAME_STATE_CONSOLE: {
         if (level_update(game->level, delta_time) < 0) {
             return -1;
         }
@@ -187,6 +195,17 @@ int game_update(Game *game, float delta_time)
         if (console_update(game->console, delta_time) < 0) {
             return -1;
         }
+    } break;
+
+    case GAME_STATE_LEVEL_PICKER: {
+        if (level_picker_update(game->level_picker, delta_time) < 0) {
+            return -1;
+        }
+    } break;
+
+    case GAME_STATE_PAUSE:
+    case GAME_STATE_QUIT:
+        break;
     }
 
     return 0;