Stop sharing requirement_unit_state_ereq().
[freeciv.git] / client / control.h
blobb4d372f1fe515917c4872baecc63e976ddc0994a
1 /***********************************************************************
2 Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2, or (at your option)
6 any later version.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 ***********************************************************************/
13 #ifndef FC__CONTROL_H
14 #define FC__CONTROL_H
16 #ifdef __cplusplus
17 extern "C" {
18 #endif /* __cplusplus */
20 /* common */
21 #include "actions.h"
22 #include "packets.h"
23 #include "unitlist.h"
25 enum cursor_hover_state {
26 HOVER_NONE = 0,
27 HOVER_GOTO,
28 HOVER_PARADROP,
29 HOVER_CONNECT,
30 HOVER_PATROL,
31 HOVER_ACT_SEL_TGT
34 /* Selecting unit from a stack without popup. */
35 enum quickselect_type {
36 SELECT_POPUP = 0, SELECT_SEA, SELECT_LAND, SELECT_APPEND, SELECT_FOCUS
39 void control_init(void);
40 void control_free(void);
41 void control_unit_killed(struct unit *punit);
43 void unit_change_battlegroup(struct unit *punit, int battlegroup);
44 void unit_register_battlegroup(struct unit *punit);
46 extern enum cursor_hover_state hover_state;
47 extern enum unit_activity connect_activity;
48 extern struct extra_type *connect_tgt;
49 extern int goto_last_action;
50 extern int goto_last_tgt;
51 extern enum unit_orders goto_last_order;
52 extern bool non_ai_unit_focus;
54 bool can_unit_do_connect(struct unit *punit,
55 enum unit_activity activity,
56 struct extra_type *tgt);
58 int check_recursive_road_connect(struct tile *ptile, const struct extra_type *pextra,
59 const struct unit *punit, const struct player *pplayer, int rec);
61 void do_move_unit(struct unit *punit, struct unit *target_unit);
62 void do_unit_goto(struct tile *ptile);
63 void do_unit_paradrop_to(struct unit *punit, struct tile *ptile);
64 void do_unit_patrol_to(struct tile *ptile);
65 void do_unit_connect(struct tile *ptile,
66 enum unit_activity activity,
67 struct extra_type *tgt);
68 void do_map_click(struct tile *ptile, enum quickselect_type qtype);
69 void control_mouse_cursor(struct tile *ptile);
71 void set_hover_state(struct unit_list *punits, enum cursor_hover_state state,
72 enum unit_activity connect_activity,
73 struct extra_type *tgt,
74 int goto_last_tgt,
75 int goto_last_action,
76 enum unit_orders goto_last_order);
77 void request_center_focus_unit(void);
78 void request_unit_non_action_move(struct unit *punit,
79 struct tile *dest_tile);
80 void request_move_unit_direction(struct unit *punit, int dir);
81 void request_new_unit_activity(struct unit *punit, enum unit_activity act);
82 void request_new_unit_activity_targeted(struct unit *punit,
83 enum unit_activity act,
84 struct extra_type *tgt);
85 void request_unit_load(struct unit *pcargo, struct unit *ptransporter,
86 struct tile *ptile);
87 void request_unit_unload(struct unit *pcargo);
88 void request_unit_autosettlers(const struct unit *punit);
89 void request_unit_build_city(struct unit *punit);
90 void request_unit_caravan_action(struct unit *punit, enum gen_action action);
91 void request_unit_change_homecity(struct unit *punit);
92 void request_unit_connect(enum unit_activity activity,
93 struct extra_type *tgt);
94 void request_unit_disband(struct unit *punit);
95 void request_unit_fortify(struct unit *punit);
96 void request_unit_goto(enum unit_orders last_order, int action_id, int tgt_id);
97 void request_unit_move_done(void);
98 void request_unit_paradrop(struct unit_list *punits);
99 void request_unit_patrol(void);
100 void request_unit_pillage(struct unit *punit);
101 void request_unit_sentry(struct unit *punit);
102 struct unit *request_unit_unload_all(struct unit *punit);
103 void request_unit_airlift(struct unit *punit, struct city *pcity);
104 void request_unit_return(struct unit *punit);
105 void request_unit_upgrade(struct unit *punit);
106 void request_unit_convert(struct unit *punit);
107 void request_units_wait(struct unit_list *punits);
108 void request_unit_wakeup(struct unit *punit);
110 #define SPECENUM_NAME unit_select_type_mode
111 #define SPECENUM_VALUE0 SELTYPE_SINGLE
112 #define SPECENUM_VALUE1 SELTYPE_SAME
113 #define SPECENUM_VALUE2 SELTYPE_ALL
114 #include "specenum_gen.h"
116 #define SPECENUM_NAME unit_select_location_mode
117 #define SPECENUM_VALUE0 SELLOC_UNITS /* Units on tile. */
118 #define SPECENUM_VALUE1 SELLOC_TILE /* Tile. */
119 #define SPECENUM_VALUE2 SELLOC_CONT /* Continent. */
120 #define SPECENUM_VALUE3 SELLOC_LAND /* Move type: land. */
121 #define SPECENUM_VALUE4 SELLOC_SEA /* Move type: sea. */
122 #define SPECENUM_VALUE5 SELLOC_BOTH /* Move type: both. */
123 #define SPECENUM_VALUE6 SELLOC_WORLD /* World. */
124 #define SPECENUM_COUNT SELLOC_COUNT
125 #include "specenum_gen.h"
127 void request_unit_select(struct unit_list *punits,
128 enum unit_select_type_mode seltype,
129 enum unit_select_location_mode selloc);
131 void request_do_action(enum gen_action action, int actor_id,
132 int target_id, int value, const char *name);
133 void request_action_details(enum gen_action action, int actor_id,
134 int target_id);
135 void request_toggle_city_outlines(void);
136 void request_toggle_city_output(void);
137 void request_toggle_map_grid(void);
138 void request_toggle_map_borders(void);
139 void request_toggle_map_native(void);
140 void request_toggle_city_full_bar(void);
141 void request_toggle_city_names(void);
142 void request_toggle_city_growth(void);
143 void request_toggle_city_productions(void);
144 void request_toggle_city_buycost(void);
145 void request_toggle_city_trade_routes(void);
146 void request_toggle_terrain(void);
147 void request_toggle_coastline(void);
148 void request_toggle_roads_rails(void);
149 void request_toggle_irrigation(void);
150 void request_toggle_mines(void);
151 void request_toggle_bases(void);
152 void request_toggle_resources(void);
153 void request_toggle_huts(void);
154 void request_toggle_pollution(void);
155 void request_toggle_cities(void);
156 void request_toggle_units(void);
157 void request_toggle_unit_solid_bg(void);
158 void request_toggle_unit_shields(void);
159 void request_toggle_focus_unit(void);
160 void request_toggle_fog_of_war(void);
162 void wakeup_sentried_units(struct tile *ptile);
163 void clear_unit_orders(struct unit *punit);
165 bool unit_is_in_focus(const struct unit *punit);
166 struct unit *get_focus_unit_on_tile(const struct tile *ptile);
167 struct unit *head_of_units_in_focus(void);
168 struct unit_list *get_units_in_focus(void);
169 int get_num_units_in_focus(void);
171 void unit_focus_set(struct unit *punit);
172 void unit_focus_set_and_select(struct unit *punit);
173 void unit_focus_add(struct unit *punit);
174 void unit_focus_remove(struct unit *punit);
175 void unit_focus_urgent(struct unit *punit);
177 void unit_focus_advance(void);
178 void unit_focus_update(void);
180 void auto_center_on_focus_unit(void);
181 void update_unit_pix_label(struct unit_list *punitlist);
183 struct unit *find_visible_unit(struct tile *ptile);
184 void set_units_in_combat(struct unit *pattacker, struct unit *pdefender);
185 double blink_active_unit(void);
186 double blink_turn_done_button(void);
188 bool should_ask_server_for_actions(const struct unit *punit);
189 void action_selection_no_longer_in_progress(const int old_actor_id);
190 void action_decision_clear_want(const int old_actor_id);
191 void action_selection_next_in_focus(const int old_actor_id);
192 void action_decision_request(struct unit *actor_unit);
194 void key_cancel_action(void);
195 void key_center_capital(void);
196 void key_city_full_bar_toggle(void);
197 void key_city_names_toggle(void);
198 void key_city_growth_toggle(void);
199 void key_city_productions_toggle(void);
200 void key_city_buycost_toggle(void);
201 void key_city_trade_routes_toggle(void);
202 void key_terrain_toggle(void);
203 void key_coastline_toggle(void);
204 void key_roads_rails_toggle(void);
205 void key_irrigation_toggle(void);
206 void key_mines_toggle(void);
207 void key_bases_toggle(void);
208 void key_resources_toggle(void);
209 void key_huts_toggle(void);
210 void key_pollution_toggle(void);
211 void key_cities_toggle(void);
212 void key_units_toggle(void);
213 void key_unit_solid_bg_toggle(void);
214 void key_unit_shields_toggle(void);
215 void key_focus_unit_toggle(void);
216 void key_fog_of_war_toggle(void);
217 void key_end_turn(void);
218 void key_city_outlines_toggle(void);
219 void key_city_output_toggle(void);
220 void key_map_grid_toggle(void);
221 void key_map_borders_toggle(void);
222 void key_map_native_toggle(void);
223 void key_recall_previous_focus_unit(void);
224 void key_unit_move(enum direction8 gui_dir);
225 void key_unit_airbase(void);
226 void key_unit_auto_explore(void);
227 void key_unit_auto_settle(void);
228 void key_unit_build_city(void);
229 void key_unit_build_wonder(void);
230 void key_unit_connect(enum unit_activity activity,
231 struct extra_type *tgt);
232 void key_unit_action_select(void);
233 void key_unit_action_select_tgt(void);
234 void key_unit_convert(void);
235 void key_unit_done(void);
236 void key_unit_fallout(void);
237 void key_unit_fortify(void);
238 void key_unit_fortress(void);
239 void key_unit_goto(void);
240 void key_unit_homecity(void);
241 void key_unit_irrigate(void);
242 void key_unit_mine(void);
243 void key_unit_nuke(void);
244 void key_unit_patrol(void);
245 void key_unit_paradrop(void);
246 void key_unit_pillage(void);
247 void key_unit_pollution(void);
248 void key_unit_road(void);
249 void key_unit_sentry(void);
250 void key_unit_trade_route(void);
251 void key_unit_transform(void);
252 void key_unit_unload_all(void);
253 void key_unit_wait(void);
254 void key_unit_wakeup_others(void);
255 void key_unit_assign_battlegroup(int battlegroup, bool append);
256 void key_unit_select_battlegroup(int battlegroup, bool append);
258 void key_editor_toggle(void);
259 void key_editor_recalculate_borders(void);
260 void key_editor_toggle_fogofwar(void);
262 void finish_city(struct tile *ptile, const char *name);
263 void cancel_city(struct tile *ptile);
265 /* don't change this unless you also put more entries in data/Freeciv */
266 #define MAX_NUM_UNITS_BELOW 4
268 extern int num_units_below;
270 #ifdef __cplusplus
272 #endif /* __cplusplus */
274 #endif /* FC__CONTROL_H */