1 /* Definitions of functions visible to interfaces in Xconq.
2    Copyright (C) 1996-2000 Stanley T. Shebs.
3 
4 Xconq is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.  See the file COPYING.  */
8 
9 /* (should doublecheck that all of the decls in this file either have
10    impls or are removed) */
11 
12 #undef  DEF_ACTION
13 #define DEF_ACTION(name,code,args,prepfn,NETPREPFN,dofn,checkfn,ARGDECL,doc)  \
14   extern int NETPREPFN ARGDECL;
15 
16 #include "action.def"
17 
18 #undef  DEF_TASK
19 #define DEF_TASK(name,dname,code,argtypes,dofn,createfn,setfn,NETSETFN,pushfn,NETPUSHFN,ARGDECL)  \
20   extern void NETSETFN ARGDECL;  \
21   extern void NETPUSHFN ARGDECL;
22 
23 #include "task.def"
24 
25 /* Max number of packets received by each call to receive_data. */
26 
27 #define MAXPACKETS 32767
28 
29 /* File names below refer to locations of the kernel core functions. */
30 
31 /* ai.c */
32 
33 extern void net_set_side_ai(Side *side, char *aitype);
34 
35 /* module.c */
36 
37 extern void net_set_variant_value(int which, int v1, int v2, int v3);
38 
39 /* init.c */
40 
41 extern int net_add_side_and_player(void);
42 extern int net_remove_side_and_player(int s);
43 extern void net_set_player_advantage(int n, int newadv);
44 extern void net_rename_side_for_player(int n, int which);
45 extern void net_set_ai_for_player(int n, char *aitype);
46 extern int net_exchange_players(int n, int n2);
47 
48 /* run2.c */
49 
50 extern void net_request_additional_side(char *playerspec);
51 
52 /* run.c */
53 
54 extern int net_run_game(int maxactions);
55 extern void net_finish_turn(Side *side);
56 extern void net_resign_game(Side *side, Side *side2);
57 
58 /* side.c */
59 
60 extern void net_set_side_name(Side *side, Side *side2, char *newname);
61 extern void net_set_side_longname(Side *side, Side *side2, char *newname);
62 extern void net_set_side_shortname(Side *side, Side *side2, char *newname);
63 extern void net_set_side_noun(Side *side, Side *side2, char *newname);
64 extern void net_set_side_pluralnoun(Side *side, Side *side2, char *newname);
65 extern void net_set_side_adjective(Side *side, Side *side2, char *newname);
66 extern void net_set_side_emblemname(Side *side, Side *side2, char *newname);
67 extern void net_set_side_colorscheme(Side *side, Side *side2, char *newname);
68 extern void net_become_designer(Side *side);
69 extern void net_become_nondesigner(Side *side);
70 extern void net_set_trust(Side *side, Side *side2, int val);
71 extern void net_set_autofinish(Side *side, int value);
72 extern void net_set_autoresearch(Side *side, int value);
73 extern void net_set_willing_to_save(Side *side, int flag);
74 extern void net_set_willing_to_draw(Side *side, int flag);
75 extern void net_send_message(Side *side, SideMask sidemask, char *str);
76 extern void net_set_side_self_unit(Side *side, struct a_unit *unit);
77 extern void net_set_doctrine(Side *side, char *spec);
78 extern void net_set_controlled_by(Side *side, Side *side2, int val);
79 extern void net_set_side_research_topic(Side *side, int a);
80 extern void net_set_side_research_goal(Side *side, int a);
81 extern void net_set_side_startx(Side *side, int x);
82 extern void net_set_side_starty(Side *side, int y);
83 
84 #ifdef DESIGNERS
85 extern void net_paint_view(Side *side, int x, int y, int r, int tview, int uview);
86 #endif /* DESIGNERS */
87 
88 /* plan.c */
89 
90 extern void net_set_unit_plan_type(Side *side, Unit *unit, int type);
91 extern void net_set_unit_asleep(Side *side, Unit *unit, int flag, int recurse);
92 extern void net_set_unit_reserve(Side *side, Unit *unit, int flag, int recurse);
93 extern void net_set_unit_ai_control(Side *side, Unit *unit, int flag, int recurse);
94 extern void net_set_unit_main_goal(Side *side, Unit *unit, Goal *goal);
95 extern void net_set_unit_curadvance(Side *side, Unit *unit, int a);
96 extern void net_set_unit_researchdone(Side *side, Unit *unit, int flag);
97 extern void net_set_unit_waiting_for_transport(Side *side, Unit *unit, int flag);
98 extern void net_wake_unit(Side *side, Unit *unit, int wakeocc);
99 extern void net_wake_area(Side *side, int x, int y, int n, int occs);
100 extern void net_set_formation(Unit *unit, Unit *leader, int x, int y, int dist, int flex);
101 extern void net_delay_unit(Unit *unit, int flag);
102 extern int net_clear_task_agenda(Side *side, Unit *unit);
103 extern int net_clear_task_outcome(Side *side, Unit *unit);
104 extern void net_force_replan(Unit *unit);
105 
106 /* unit.c */
107 
108 extern void net_set_unit_name(Side *side, Unit *unit, char *newname);
109 extern int net_disband_unit(Side *side, Unit *unit);
110 
111 #ifdef DESIGNERS
112 extern Unit *net_designer_create_unit(Side *side, int u, int s, int x, int y);
113 extern int net_designer_teleport(Unit *unit, int x, int y, Unit *other);
114 extern int net_designer_change_side(Unit *unit, Side *side);
115 extern int net_designer_disband(Unit *unit);
116 #endif /* DESIGNERS */
117 
118 /* task.c */
119 
120 extern void net_add_task(Unit *unit, int pos, Task *task);
121 
122 /* world.c */
123 
124 extern Feature *net_create_feature(char *feattype, char *name);
125 extern void net_set_feature_type_name(Feature *feature, char *feattype);
126 extern void net_set_feature_name(Feature *feature, char *name);
127 extern void net_destroy_feature(Feature *feature);
128 extern void net_renumber_features(void);
129 
130 #ifdef DESIGNERS
131 extern void net_paint_cell(Side *side, int x, int y, int r, int t);
132 extern void net_paint_border(Side *side, int x, int y, int dir, int t, int mode);
133 extern void net_paint_connection(Side *side, int x, int y, int dir, int t, int mode);
134 extern void net_paint_coating(Side *side, int x, int y, int r, int t, int depth);
135 extern void net_paint_people(Side *side, int x, int y, int r, int s);
136 extern void net_paint_control(Side *side, int x, int y, int r, int s);
137 extern void net_paint_feature(Side *side, int x, int y, int r, int f);
138 extern void net_paint_elevation(Side *side, int x, int y, int r, int code, int elev, int vary);
139 extern void net_paint_temperature(Side *side, int x, int y, int r, int temp);
140 extern void net_paint_material(Side *side, int x, int y, int r, int m, int amt);
141 extern void net_paint_clouds(Side *side, int x, int y, int r, int cloudtype, int bot, int hgt);
142 extern void net_paint_winds(Side *side, int x, int y, int r, int dir, int force);
143 
144 		/* should fix kernel separation! */
145 
146 extern void fix_elevations(void);
147 
148 #endif /* DESIGNERS */
149 
150 /* tp.c */
151 
152 extern void net_toggle_user_at(int u, int x, int y);
153 
154 	/* called by all interfaces. */
155 
156 extern int send_join(char *str);
157 extern void receive_data(int timeout, int lim);
158 extern int host_the_game(char *hostport);
159 extern int try_join_game(char *hostport);
160 extern void net_save_game(char *fname);
161 
162 	/* called by the unix interface. */
163 
164 extern void send_version(int rid);
165 extern void broadcast_game_module(void);
166 extern void net_send_chat(int rid, char *str);
167 extern int game_checksum(void);
168 extern void send_quit(void);
169 extern void flush_outgoing_queue(void);
170 
171 extern void (*update_variant_callback)(int which);
172 extern void (*update_assignment_callback)(int n);
173 
174 	/* called by cmdline.c. */
175 
176 extern void net_update_player(Player *player);
177 
178 
179 	/* called by the x11 interface. */
180 
181 extern void download_to_player(Player *player);
182 
183 	/* Called by Tkconq. */
184 
185 extern void broadcast_randstate(void);
186 
187 /* Declarations of functions that must be supplied by an interface. */
188 
189 extern void add_remote_locally(int rid, char *str);
190 extern void send_chat(int rid, char *str);
191 extern void make_default_player_spec(void);
192