1 #ifndef CITY_VIEW_H
2 #define CITY_VIEW_H
3 
4 #include "core/buffer.h"
5 
6 // TODO get rid of these
7 #define VIEW_X_MAX 165
8 #define VIEW_Y_MAX 325
9 
10 typedef struct {
11     int x;
12     int y;
13 } view_tile, pixel_offset;
14 
15 typedef void (map_callback)(int x, int y, int grid_offset);
16 
17 void city_view_init(void);
18 
19 int city_view_orientation(void);
20 
21 void city_view_reset_orientation(void);
22 
23 int city_view_get_scale(void);
24 void city_view_set_scale(int scale);
25 
26 int city_view_get_max_scale(void);
27 void city_view_set_max_scale(int scale);
28 
29 void city_view_get_camera(int *x, int *y);
30 void city_view_get_pixel_offset(int *x, int *y);
31 void city_view_get_camera_in_pixels(int *x, int *y);
32 
33 void city_view_set_camera(int x, int y);
34 
35 void city_view_set_camera_from_pixel_position(int x, int y);
36 
37 void city_view_scroll(int x, int y);
38 
39 void city_view_grid_offset_to_xy_view(int grid_offset, int *x_view, int *y_view);
40 
41 void city_view_get_selected_tile_pixels(int *x_pixels, int *y_pixels);
42 
43 int city_view_pixels_to_view_tile(int x_pixels, int y_pixels, view_tile *tile);
44 
45 void city_view_set_selected_view_tile(const view_tile *tile);
46 
47 int city_view_tile_to_grid_offset(const view_tile *tile);
48 
49 void city_view_go_to_grid_offset(int grid_offset);
50 
51 void city_view_rotate_left(void);
52 
53 void city_view_rotate_right(void);
54 
55 void city_view_set_viewport(int screen_width, int screen_height);
56 
57 void city_view_get_scaled_viewport(int *x, int *y, int *width, int *height);
58 void city_view_get_unscaled_viewport(int *x, int *y, int *width, int *height);
59 void city_view_get_viewport_size_tiles(int *width, int *height);
60 
61 int city_view_is_sidebar_collapsed(void);
62 
63 void city_view_start_sidebar_toggle(void);
64 
65 void city_view_toggle_sidebar(void);
66 
67 void city_view_save_state(buffer *orientation, buffer *camera);
68 
69 void city_view_load_state(buffer *orientation, buffer *camera);
70 
71 void city_view_save_scenario_state(buffer *camera);
72 
73 void city_view_load_scenario_state(buffer *camera);
74 
75 void city_view_foreach_map_tile(map_callback *callback);
76 
77 void city_view_foreach_valid_map_tile(map_callback *callback1, map_callback *callback2, map_callback *callback3);
78 
79 void city_view_foreach_tile_in_range(int grid_offset, int size, int radius, map_callback *callback);
80 
81 void city_view_foreach_minimap_tile(
82     int x_offset, int y_offset, int absolute_x, int absolute_y,
83     int width_tiles, int height_tiles, map_callback *callback);
84 
85 #endif // CITY_VIEW_H
86