1 #ifndef BUILDING_MONUMENT_H
2 #define BUILDING_MONUMENT_H
3 
4 #include "building/building.h"
5 #include "map/road_access.h"
6 
7 #define MONUMENT_FINISHED -1
8 #define MONUMENT_START 1
9 #define MARS_OFFERING_FREQUENCY 16
10 
11 typedef enum {
12     CERES_MODULE_1_REDUCE_FOOD,
13     CERES_MODULE_2_DISTRIBUTE_FOOD,
14     NEPTUNE_MODULE_1_HIPPODROME_ACCESS,
15     NEPTUNE_MODULE_2_CAPACITY_AND_WATER,
16     MERCURY_MODULE_1_POTTERY_FURN,
17     MERCURY_MODULE_2_OIL_WINE,
18     MARS_MODULE_1_MESS_HALL,
19     MARS_MODULE_2_ALL_GOODS,
20     VENUS_MODULE_1_DISTRIBUTE_WINE,
21     VENUS_MODULE_2_DESIRABILITY_ENTERTAINMENT,
22     PANTHEON_MODULE_1_DESTINATION_PRIESTS,
23     PANTHEON_MODULE_2_HOUSING_EVOLUTION
24 } module_type;
25 
26 int building_monument_access_point(building *b, map_point *dst);
27 int building_monument_add_module(building *b, int module_type);
28 int building_monument_deliver_resource(building *b, int resource);
29 int building_monument_get_monument(int x, int y, int resource,
30     int road_network_id, int distance_from_entry, map_point *dst);
31 int building_monument_has_unfinished_monuments(void);
32 void building_monument_set_phase(building *b, int phase);
33 int building_monument_is_monument(const building *b);
34 int building_monument_type_is_monument(building_type type);
35 int building_monument_type_is_mini_monument(building_type type);
36 int building_monument_is_grand_temple(building_type type);
37 int building_monument_needs_resource(building *b, int resource);
38 int building_monument_needs_resources(building *b);
39 int building_monument_progress(building *b);
40 void building_monument_recalculate_monuments(void);
41 int building_monument_has_labour_problems(building *b);
42 int building_monument_working(building_type type);
43 int building_monument_resources_needed_for_monument_type(building_type type, int resource, int phase);
44 int building_monument_resource_in_delivery(building *b, int resource_id);
45 void building_monument_remove_delivery(int figure_id);
46 void building_monument_add_delivery(int monument_id, int figure_id, int resource_id, int loads_no);
47 int building_monument_has_monument(building_type type);
48 int building_monument_upgraded(building_type type);
49 int building_monument_module_type(building_type type);
50 int building_monument_phases(building_type building_type);
51 int building_monument_gt_module_is_active(int module);
52 int building_monument_pantheon_module_is_active(int module);
53 void building_monument_finish_monuments(void);
54 void building_monuments_set_construction_phase(int phase);
55 int building_monument_get_venus_gt(void);
56 int building_monument_get_neptune_gt(void);
57 void building_monument_initialize_deliveries(void);
58 int building_monument_count_grand_temples(void);
59 void building_monument_delivery_save_state(buffer *list);
60 void building_monument_delivery_load_state(buffer *list, int includes_array_size);
61 int building_monument_is_construction_halted(building *b);
62 int building_monument_toggle_construction_halted(building *b);
63 int building_monument_is_unfinished_monument(const building *b);
64 
65 #endif // BUILDING_MONUMENT_H
66