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