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)16 void 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)29 int game_state_is_paused(void)
30 {
31     return data.paused;
32 }
33 
game_state_unpause(void)34 void game_state_unpause(void)
35 {
36     data.paused = 0;
37 }
38 
game_state_toggle_paused(void)39 void game_state_toggle_paused(void)
40 {
41     data.paused = data.paused ? 0 : 1;
42 }
43 
game_state_overlay(void)44 int game_state_overlay(void)
45 {
46     return data.current_overlay;
47 }
48 
game_state_reset_overlay(void)49 void 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)55 void 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)63 void 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