1 #include "state.h" 2 3 #include "city/victory.h" 4 #include "city/view.h" 5 #include "city/warning.h" 6 #include "core/random.h" 7 #include "map/ring.h" 8 #include "map/building.h" 9 10 static struct { 11 int paused; 12 int current_overlay; 13 int previous_overlay; 14 } data = {0, OVERLAY_NONE, OVERLAY_NONE}; 15 game_state_init(void)16void game_state_init(void) 17 { 18 city_victory_reset(); 19 map_ring_init(); 20 21 city_view_reset_orientation(); 22 city_view_set_camera(76, 152); 23 24 random_generate_pool(); 25 26 city_warning_clear_all(); 27 } 28 game_state_is_paused(void)29int game_state_is_paused(void) 30 { 31 return data.paused; 32 } 33 game_state_unpause(void)34void game_state_unpause(void) 35 { 36 data.paused = 0; 37 } 38 game_state_toggle_paused(void)39void game_state_toggle_paused(void) 40 { 41 data.paused = data.paused ? 0 : 1; 42 } 43 game_state_overlay(void)44int game_state_overlay(void) 45 { 46 return data.current_overlay; 47 } 48 game_state_reset_overlay(void)49void game_state_reset_overlay(void) 50 { 51 data.current_overlay = OVERLAY_NONE; 52 data.previous_overlay = OVERLAY_NONE; 53 } 54 game_state_toggle_overlay(void)55void game_state_toggle_overlay(void) 56 { 57 int tmp = data.previous_overlay; 58 data.previous_overlay = data.current_overlay; 59 data.current_overlay = tmp; 60 map_clear_highlights(); 61 } 62 game_state_set_overlay(int overlay)63void game_state_set_overlay(int overlay) 64 { 65 if (overlay == OVERLAY_NONE) { 66 data.previous_overlay = data.current_overlay; 67 } else { 68 data.previous_overlay = OVERLAY_NONE; 69 } 70 data.current_overlay = overlay; 71 map_clear_highlights(); 72 } 73