Freeciv-3.2: /fast/freeciv/nightly/S3_2/common/player.h Source File

Freeciv-3.2

Loading...
Searching...
No Matches
player.h
Go to the documentation of this file.
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.
7
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__PLAYER_H
14#define FC__PLAYER_H
15
16#ifdef __cplusplus
17extern "C" {
18#endif /* __cplusplus */
19
20/* utility */
21#include "bitvector.h"
22
23/* common */
24#include "connection.h"
25#include "effects.h"
26#include "fc_types.h"
27#include "multipliers.h"
28#include "shared.h"
29#include "spaceship.h"
30#include "style.h"
31#include "tech.h"
32#include "unitlist.h"
33#include "vision.h"
34
35struct ai_trait;
36struct city;
37struct nation_type;
38
39#define PLAYER_DEFAULT_TAX_RATE 0
40#define PLAYER_DEFAULT_SCIENCE_RATE 100
41#define PLAYER_DEFAULT_LUXURY_RATE 0
42
43#define ANON_PLAYER_NAME "noname"
44
45/* If changing this, be sure to adjust loading of pre-2.6 savegames
46 * which depend on saved username to tell if user (or ranked_user) is
47 * anonymous. */
48#define ANON_USER_NAME N_("Unassigned")
49
50 enum plrcolor_mode {
51 PLRCOL_PLR_ORDER,
52 PLRCOL_PLR_RANDOM,
53 PLRCOL_PLR_SET,
54 PLRCOL_TEAM_ORDER,
55 PLRCOL_NATION_ORDER
56};
57
58struct player_slot;
59
60 struct player_economic {
61 int gold;
62 int tax;
63 int science;
64 int luxury;
65 int infra_points;
66};
67
68#define SPECENUM_NAME player_status
69/* 'normal' status */
70#define SPECENUM_VALUE0 PSTATUS_NORMAL
71/* set once the player is in the process of dying */
72#define SPECENUM_VALUE1 PSTATUS_DYING
73/* this player is winner in scenario game */
74#define SPECENUM_VALUE2 PSTATUS_WINNER
75/* has indicated willingness to surrender */
76#define SPECENUM_VALUE3 PSTATUS_SURRENDER
77/* keep this last */
78#define SPECENUM_COUNT PSTATUS_COUNT
79#include "specenum_gen.h"
80
81 BV_DEFINE(bv_pstatus, PSTATUS_COUNT);
82
83 struct player_score {
84 int happy;
85 int content;
86 int unhappy;
87 int angry;
88 int specialists[SP_MAX];
89 int wonders;
90 int techs;
91 int techout;
92 int landarea;
93 int settledarea;
94 int population; /* in thousand of citizen */
95 int cities;
96 int units;
97 int pollution;
98 int literacy;
99 int bnp;
100 int mfg;
101 int spaceship;
102 int units_built; /* Number of units this player produced. */
103 int units_killed; /* Number of enemy units killed. */
104 int units_lost; /* Number of own units that died,
105 * by combat or otherwise. */
106 int units_used; /* Number of own units that disappeared upon use */
107 int culture;
108 int game; /* Total score you get in player dialog. */
109};
110
111 struct player_ai {
112 int maxbuycost;
113 void *handicaps;
114 enum ai_level skill_level; /* 0-10 value for save/load/display */
115 int fuzzy; /* chance in 1000 to mis-decide */
116 int expand; /* percentage factor to value new cities */
117 int science_cost; /* Cost in bulbs to get new tech, relative
118 to non-AI players (100: Equal cost) */
119 int warmth, frost; /* threat of global warming / nuclear winter */
120 enum barbarian_type barbarian_type;
121
122 int love[MAX_NUM_PLAYER_SLOTS];
123
124 struct ai_trait *traits;
125};
126
127/* Diplomatic states (how one player views another).
128 * (Some diplomatic states are "pacts" (mutual agreements), others aren't.)
129 *
130 * Adding to or reordering this array will break many things.
131 *
132 * Used in the network protocol.
133 */
134#define SPECENUM_NAME diplstate_type
135#define SPECENUM_VALUE0 DS_ARMISTICE
136#define SPECENUM_VALUE0NAME N_("?diplomatic_state:Armistice")
137#define SPECENUM_VALUE1 DS_WAR
138#define SPECENUM_VALUE1NAME N_("?diplomatic_state:War")
139#define SPECENUM_VALUE2 DS_CEASEFIRE
140#define SPECENUM_VALUE2NAME N_("?diplomatic_state:Cease-fire")
141#define SPECENUM_VALUE3 DS_PEACE
142#define SPECENUM_VALUE3NAME N_("?diplomatic_state:Peace")
143#define SPECENUM_VALUE4 DS_ALLIANCE
144#define SPECENUM_VALUE4NAME N_("?diplomatic_state:Alliance")
145#define SPECENUM_VALUE5 DS_NO_CONTACT
146#define SPECENUM_VALUE5NAME N_("?diplomatic_state:Never met")
147#define SPECENUM_VALUE6 DS_TEAM
148#define SPECENUM_VALUE6NAME N_("?diplomatic_state:Team")
149 /* When adding or removing entries, note that first value
150 * of diplrel_other should be next to last diplstate_type */
151#define SPECENUM_COUNT DS_LAST /* leave this last */
152#include "specenum_gen.h"
153
154/* Other diplomatic relation properties.
155 *
156 * The first element here is numbered DS_LAST
157 *
158 * Used in the network protocol.
159 */
160#define SPECENUM_NAME diplrel_other
161#define SPECENUM_VALUE7 DRO_GIVES_SHARED_VISION
162#define SPECENUM_VALUE7NAME N_("Gives shared vision")
163#define SPECENUM_VALUE8 DRO_RECEIVES_SHARED_VISION
164#define SPECENUM_VALUE8NAME N_("Receives shared vision")
165#define SPECENUM_VALUE9 DRO_HOSTS_EMBASSY
166#define SPECENUM_VALUE9NAME N_("Hosts embassy")
167#define SPECENUM_VALUE10 DRO_HAS_EMBASSY
168#define SPECENUM_VALUE10NAME N_("Has embassy")
169#define SPECENUM_VALUE11 DRO_HOSTS_REAL_EMBASSY
170#define SPECENUM_VALUE11NAME N_("Hosts real embassy")
171#define SPECENUM_VALUE12 DRO_HAS_REAL_EMBASSY
172#define SPECENUM_VALUE12NAME N_("Has real embassy")
173#define SPECENUM_VALUE13 DRO_HAS_CASUS_BELLI
174#define SPECENUM_VALUE13NAME N_("Has Casus Belli")
175#define SPECENUM_VALUE14 DRO_PROVIDED_CASUS_BELLI
176#define SPECENUM_VALUE14NAME N_("Provided Casus Belli")
177#define SPECENUM_VALUE15 DRO_FOREIGN
178#define SPECENUM_VALUE15NAME N_("Foreign")
179#define SPECENUM_VALUE16 DRO_HAS_TEAM_EMBASSY
180#define SPECENUM_VALUE16NAME N_("Has team embassy")
181#define SPECENUM_VALUE17 DRO_HOSTS_TEAM_EMBASSY
182#define SPECENUM_VALUE17NAME N_("Hosts team embassy")
183#define SPECENUM_COUNT DRO_LAST
184#include "specenum_gen.h"
185
186 BV_DEFINE(bv_diplrel_all_reqs,
187 /* Reserve a location for each possible DiplRel requirement. */
188 ((DRO_LAST - 1) * 2) * REQ_RANGE_COUNT);
189
190 enum dipl_reason {
191 DIPL_OK, DIPL_ERROR, DIPL_SENATE_BLOCKING,
192 DIPL_ALLIANCE_PROBLEM_US, DIPL_ALLIANCE_PROBLEM_THEM
193};
194
195/* The following are for "pacts" */
196 struct player_diplstate {
197 enum diplstate_type type; /* This player's disposition towards other */
198 enum diplstate_type max_state; /* Maximum treaty level ever had */
199 int first_contact_turn; /* Turn we had first contact with this player */
200 char turns_left; /* Until pact (e.g., cease-fire) ends */
201 char has_reason_to_cancel; /* 0: no, 1: this turn, 2: this or next turn */
202 char contact_turns_left; /* Until contact ends */
203
204 int auto_cancel_turn; /* Used to avoid asymmetric turns_left */
205};
206
207/***************************************************************************
208 On the distinction between nations(formerly races), players, and users,
209 see doc/HACKING
210***************************************************************************/
211
212 enum player_debug_types {
213 PLAYER_DEBUG_DIPLOMACY, PLAYER_DEBUG_TECH, PLAYER_DEBUG_LAST
214};
215
216 BV_DEFINE(bv_debug, PLAYER_DEBUG_LAST);
217
218 struct attribute_block_s {
219 void *data;
220 int length;
221#define MAX_ATTRIBUTE_BLOCK (256*1024) /* largest attribute block */
222};
223
224struct ai_type;
225struct ai_data;
226
227bool player_has_flag(const struct player *pplayer, enum plr_flag_id flag);
228
229#define is_human(plr) !player_has_flag((plr), PLRF_AI)
230#define is_ai(plr) player_has_flag((plr), PLRF_AI)
231#define set_as_human(plr) BV_CLR((plr)->flags, PLRF_AI)
232#define set_as_ai(plr) BV_SET((plr)->flags, PLRF_AI)
233
234bool player_has_state(const struct player *pplayer, enum plrstate_type state);
235
236 struct multiplier_value
237{
238 /* Value currently in force. */
239 int value;
240 /* Value to be used next turn. */
241 int target;
242 /* Turn that value was last changed. */
243 int changed;
244};
245
246 struct player
247{
248 struct player_slot *slot;
249 char name[MAX_LEN_NAME];
250 char username[MAX_LEN_NAME];
251 bool unassigned_user;
252 char ranked_username[MAX_LEN_NAME]; /* the user who will be ranked */
253 bool unassigned_ranked;
254 int user_turns; /* number of turns this user has played */
255 bool is_male;
256 struct government *government; /* may be NULL in pregame */
257 struct government *target_government; /* may be NULL */
258 struct nation_type *nation;
259 struct team *team;
260 bool is_ready; /* Did the player click "start" yet? */
261 bool phase_done; /* Has human player finished */
262 bool ai_phase_done; /* Has AI type finished */
263 int nturns_idle;
264 int turns_alive; /* Number of turns this player has spent alive;
265 * 0 when created, increment at the end of each turn */
266 bool is_alive;
267 bool is_winner;
268 int last_war_action;
269
270 /* Turn in which the player's revolution is over; see update_revolution. */
271 int revolution_finishes;
272
273 int primary_capital_id;
274
275 bv_player real_embassy;
276 const struct player_diplstate **diplstates;
277 struct nation_style *style;
278 int music_style;
279 struct city_list *cities;
280 struct unit_list *units;
281 struct player_score score;
282 struct player_economic economic;
283
284 struct player_spaceship spaceship;
285
286 struct player_ai ai_common;
287 const struct ai_type *ai;
288 char *savegame_ai_type_name;
289
290 bv_plr_flags flags;
291
292 bool was_created; /* if the player was /created */
293 bool random_name;
294 bool is_connected;
295 struct connection *current_conn; /* non-null while handling packet */
296 struct conn_list *connections; /* will replace conn */
297 int autoselect_weight; /* How likely scenario player is to get picked
298 * for an user to use. */
299
300 bv_player gives_shared_vision; /* bitvector those that give you
301 * shared vision */
302 bv_player gives_shared_tiles;
303 int wonders[B_LAST]; /* contains city id's, WONDER_NOT_BUILT,
304 * or WONDER_LOST */
305 struct attribute_block_s attribute_block;
306 struct attribute_block_s attribute_block_buffer;
307
308 struct dbv tile_known;
309
310 struct rgbcolor *rgb;
311
312 struct multiplier_value multipliers[MAX_NUM_MULTIPLIERS];
313
314 int history; /* National level culture - does not include culture of individual
315 * cities. */
316
317 union {
318 struct {
319 /* Only used in the server (./ai/ and ./server/). */
320 bv_pstatus status;
321
322 struct player_tile *private_map;
323
324 /* Player can see inside their borders. */
325 bool border_vision;
326
327 bv_player really_gives_vision; /* takes into account that p3 may see
328 * what p1 has via p2 */
329
330 bv_debug debug;
331
332 struct adv_data *adv;
333
334 void *ais[FREECIV_AI_MOD_LAST];
335
336 /* This user is allowed to take over the player. */
337 char delegate_to[MAX_LEN_NAME];
338 /* This is set when a player is 'involved' in a delegation.
339 * There are two cases:
340 * - if delegate_to[] is set, it records the original owner, with
341 * 'username' temporarily holding the delegate's name;
342 * - otherwise, it's set when a delegate's original player is 'put
343 * aside' while the delegate user controls a delegated player.
344 * (In this case orig_username == username.) */
345 char orig_username[MAX_LEN_NAME];
346
347 int huts; /* How many huts this player has found */
348
349 int bulbs_last_turn; /* Number of bulbs researched last turn only. */
350 } server;
351
352 struct {
353 /* Only used at the client (the server is omniscient; ./client/). */
354
355 /* Corresponds to the result of
356 (player:server:private_map[tile_index]:seen_count[vlayer] != 0). */
357 struct dbv tile_vision[V_COUNT];
358
359 enum mood_type mood;
360
361 int tech_upkeep;
362
363 bool color_changeable;
364
365 int culture;
366 } client;
367 };
368};
369
370/* Initialization and iteration */
371void player_slots_init(void);
372bool player_slots_initialised(void);
373void player_slots_free(void);
374
375struct player_slot *player_slot_first(void);
376struct player_slot *player_slot_next(struct player_slot *pslot);
377
378/* A player slot contains a possibly uninitialized player. */
379int player_slot_count(void);
380int player_slot_index(const struct player_slot *pslot);
381struct player *player_slot_get_player(const struct player_slot *pslot);
382bool player_slot_is_used(const struct player_slot *pslot);
383struct player_slot *player_slot_by_number(int player_id);
384int player_slot_max_used_number(void);
385
386/* General player accessor functions. */
387struct player *player_new(struct player_slot *pslot);
388void player_set_color(struct player *pplayer,
389 const struct rgbcolor *prgbcolor);
390void player_clear(struct player *pplayer, bool full);
391void player_ruleset_close(struct player *pplayer);
392void player_destroy(struct player *pplayer);
393
394int player_count(void);
395int player_index(const struct player *pplayer);
396int player_number(const struct player *pplayer);
397struct player *player_by_number(const int player_id);
398
399const char *player_name(const struct player *pplayer);
400struct player *player_by_name(const char *name);
401struct player *player_by_name_prefix(const char *name,
402 enum m_pre_result *result);
403struct player *player_by_user(const char *name);
404
405bool player_set_nation(struct player *pplayer, struct nation_type *pnation);
406#define player_nation(_plr_) (_plr_)->nation
407
408bool player_has_embassy(const struct player *pplayer,
409 const struct player *pplayer2);
410bool player_has_real_embassy(const struct player *pplayer,
411 const struct player *pplayer2);
412bool player_has_embassy_from_effect(const struct player *pplayer,
413 const struct player *pplayer2);
414bool team_has_embassy(const struct team *pteam, const struct player *tgt_player);
415
416int player_age(const struct player *pplayer);
417
418bool player_can_trust_tile_has_no_units(const struct player *pplayer,
419 const struct tile *ptile);
420bool can_player_see_hypotetic_units_at(const struct player *pplayer,
421 const struct tile *ptile);
422bool can_player_see_unit(const struct player *pplayer,
423 const struct unit *punit);
424bool can_player_see_unit_at(const struct player *pplayer,
425 const struct unit *punit,
426 const struct tile *ptile,
427 bool is_transported);
428bool can_player_see_tile(const struct player *plr,
429 const struct tile *ptile);
430
431bool can_player_see_units_in_city(const struct player *pplayer,
432 const struct city *pcity);
433bool can_player_see_city_internals(const struct player *pplayer,
434 const struct city *pcity);
435bool player_can_see_city_externals(const struct player *pow_player,
436 const struct city *target_city);
437
438bool player_owns_city(const struct player *pplayer,
439 const struct city *pcity);
440bool player_can_invade_tile(const struct player *pplayer,
441 const struct tile *ptile);
442
443struct city *player_city_by_number(const struct player *pplayer,
444 int city_id);
445struct unit *player_unit_by_number(const struct player *pplayer,
446 int unit_id);
447
448bool player_in_city_map(const struct player *pplayer,
449 const struct tile *ptile);
450bool player_knows_techs_with_flag(const struct player *pplayer,
451 enum tech_flag_id flag);
452int num_known_tech_with_flag(const struct player *pplayer,
453 enum tech_flag_id flag);
454int player_get_expected_income(const struct player *pplayer);
455
456struct city *player_primary_capital(const struct player *pplayer);
457
458const char *love_text(const int love);
459
460enum diplstate_type cancel_pact_result(enum diplstate_type oldstate);
461
462struct player_diplstate *player_diplstate_get(const struct player *plr1,
463 const struct player *plr2);
464bool are_diplstates_equal(const struct player_diplstate *pds1,
465 const struct player_diplstate *pds2);
466enum dipl_reason pplayer_can_make_treaty(const struct player *p1,
467 const struct player *p2,
468 enum diplstate_type treaty);
469enum dipl_reason pplayer_can_cancel_treaty(const struct player *p1,
470 const struct player *p2);
471bool pplayers_at_war(const struct player *pplayer,
472 const struct player *pplayer2);
473bool pplayers_allied(const struct player *pplayer,
474 const struct player *pplayer2);
475bool pplayers_in_peace(const struct player *pplayer,
476 const struct player *pplayer2);
477bool players_non_invade(const struct player *pplayer1,
478 const struct player *pplayer2);
479bool pplayers_non_attack(const struct player *pplayer,
480 const struct player *pplayer2);
481bool players_on_same_team(const struct player *pplayer1,
482 const struct player *pplayer2);
483int player_in_territory(const struct player *pplayer,
484 const struct player *pplayer2);
485
486/**************************************************************************
487 Return TRUE iff player is any kind of barbarian
488**************************************************************************/
489 static inline bool is_barbarian(const struct player *pplayer)
490{
491 return pplayer->ai_common.barbarian_type != NOT_A_BARBARIAN;
492}
493
494bool gives_shared_vision(const struct player *me, const struct player *them);
495bool gives_shared_tiles(const struct player *me, const struct player *them);
496
497void diplrel_mess_close(void);
498bool is_diplrel_between(const struct player *player1,
499 const struct player *player2,
500 int diplrel);
501bool is_diplrel_to_other(const struct player *pplayer, int diplrel);
502int diplrel_by_rule_name(const char *value);
503const char *diplrel_rule_name(int value);
504const char *diplrel_name_translation(int value);
505
506enum casus_belli_range casus_belli_range_for(const struct player *offender,
507 const struct unit_type *off_ut,
508 const struct player *tgt_plr,
509 const enum effect_type outcome,
510 const struct action *paction,
511 const struct tile *tgt_tile);
512
513 bv_diplrel_all_reqs diplrel_req_contradicts(const struct requirement *req);
514
515int player_multiplier_value(const struct player *pplayer,
516 const struct multiplier *pmul);
517int player_multiplier_effect_value(const struct player *pplayer,
518 const struct multiplier *pmul);
519int player_multiplier_target_value(const struct player *pplayer,
520 const struct multiplier *pmul);
521
522/* iterate over all player slots */
523#define player_slots_iterate(_pslot) \
524 if (player_slots_initialised()) { \
525 struct player_slot *_pslot = player_slot_first(); \
526 for (; NULL != _pslot; _pslot = player_slot_next(_pslot)) {
527#define player_slots_iterate_end \
528 } \
529 }
530
531/* iterate over all players, which are used at the moment */
532#define players_iterate(_pplayer) \
533 player_slots_iterate(_pslot##_pplayer) { \
534 struct player *_pplayer = player_slot_get_player(_pslot##_pplayer); \
535 if (_pplayer != NULL) {
536
537#define players_iterate_end \
538 } \
539 } player_slots_iterate_end;
540
541/* iterate over all players, which are used at the moment and are alive */
542#define players_iterate_alive(_pplayer) \
543 players_iterate(_pplayer) { \
544 if (!_pplayer->is_alive) { \
545 continue; \
546 }
547#define players_iterate_alive_end \
548 } players_iterate_end;
549
550/* get 'struct player_list' and related functions: */
551#define SPECLIST_TAG player
552#define SPECLIST_TYPE struct player
553#include "speclist.h"
554
555#define player_list_iterate(playerlist, pplayer) \
556 TYPED_LIST_ITERATE(struct player, playerlist, pplayer)
557#define player_list_iterate_end \
558 LIST_ITERATE_END
559
560/* ai love values should be in range [-MAX_AI_LOVE..MAX_AI_LOVE] */
561#define MAX_AI_LOVE 1000
562
563
564/* User functions. */
565bool is_valid_username(const char *name);
566
567#define ai_level_cmd(_level_) ai_level_name(_level_)
568bool is_settable_ai_level(enum ai_level level);
569int number_of_ai_levels(void);
570
571void *player_ai_data(const struct player *pplayer, const struct ai_type *ai);
572void player_set_ai_data(struct player *pplayer, const struct ai_type *ai,
573 void *data);
574
575 static inline bool player_is_cpuhog(const struct player *pplayer)
576{
577 /* You have to make code change here to enable cpuhog AI. There is no even
578 * configure option to change this. That's intentional.
579 * Enabling them causes game to proceed differently, and for reproducing
580 * reported bugs we want to know if this has been changed. People are more
581 * likely to report that they have made code changes than remembering some
582 * specific configure option they happened to pass to build this time - or even
583 * knowing what configure options somebody else used when building freeciv for them. */
584 return FALSE;
585}
586
587#ifdef __cplusplus
588}
589#endif /* __cplusplus */
590
591#endif /* FC__PLAYER_H */
bitvector.h
BV_DEFINE
#define BV_DEFINE(name, bits)
Definition bitvector.h:132
client
struct civclient client
Definition client_main.c:150
incite_cost
char * incite_cost
Definition comments.c:74
connection.h
punit
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit * punit
Definition dialogs_g.h:74
target_city
struct unit struct city * target_city
Definition dialogs_g.h:56
effects.h
fc_types.h
SP_MAX
#define SP_MAX
Definition fc_types.h:412
MAX_NUM_PLAYER_SLOTS
#define MAX_NUM_PLAYER_SLOTS
Definition fc_types.h:32
MAX_NUM_MULTIPLIERS
#define MAX_NUM_MULTIPLIERS
Definition fc_types.h:55
MAX_LEN_NAME
#define MAX_LEN_NAME
Definition fc_types.h:66
B_LAST
#define B_LAST
Definition improvement.h:42
name
const char * name
Definition inputfile.c:127
multipliers.h
is_settable_ai_level
bool is_settable_ai_level(enum ai_level level)
Definition player.c:1919
are_diplstates_equal
bool are_diplstates_equal(const struct player_diplstate *pds1, const struct player_diplstate *pds2)
Definition player.c:1501
player_can_invade_tile
bool player_can_invade_tile(const struct player *pplayer, const struct tile *ptile)
Definition player.c:270
player_knows_techs_with_flag
bool player_knows_techs_with_flag(const struct player *pplayer, enum tech_flag_id flag)
Definition player.c:1328
player_multiplier_effect_value
int player_multiplier_effect_value(const struct player *pplayer, const struct multiplier *pmul)
Definition player.c:1969
player_ai_data
void * player_ai_data(const struct player *pplayer, const struct ai_type *ai)
Definition player.c:1940
player_has_state
bool player_has_state(const struct player *pplayer, enum plrstate_type state)
Definition player.c:1998
dipl_reason
dipl_reason
Definition player.h:190
DIPL_SENATE_BLOCKING
@ DIPL_SENATE_BLOCKING
Definition player.h:191
DIPL_ALLIANCE_PROBLEM_THEM
@ DIPL_ALLIANCE_PROBLEM_THEM
Definition player.h:192
DIPL_ALLIANCE_PROBLEM_US
@ DIPL_ALLIANCE_PROBLEM_US
Definition player.h:192
DIPL_OK
@ DIPL_OK
Definition player.h:191
DIPL_ERROR
@ DIPL_ERROR
Definition player.h:191
player_slot_is_used
bool player_slot_is_used(const struct player_slot *pslot)
Definition player.c:448
diplrel_req_contradicts
bv_diplrel_all_reqs diplrel_req_contradicts(const struct requirement *req)
Definition player.c:1823
num_known_tech_with_flag
int num_known_tech_with_flag(const struct player *pplayer, enum tech_flag_id flag)
Definition player.c:1273
is_valid_username
bool is_valid_username(const char *name)
Definition player.c:1908
player_multiplier_target_value
int player_multiplier_target_value(const struct player *pplayer, const struct multiplier *pmul)
Definition player.c:1981
can_player_see_tile
bool can_player_see_tile(const struct player *plr, const struct tile *ptile)
Definition player.c:1091
player_unit_by_number
struct unit * player_unit_by_number(const struct player *pplayer, int unit_id)
Definition player.c:1229
player_by_name_prefix
struct player * player_by_name_prefix(const char *name, enum m_pre_result *result)
Definition player.c:920
diplrel_by_rule_name
int diplrel_by_rule_name(const char *value)
Definition player.c:1581
player_new
struct player * player_new(struct player_slot *pslot)
Definition player.c:493
player_by_number
struct player * player_by_number(const int player_id)
Definition player.c:849
player_in_city_map
bool player_in_city_map(const struct player *pplayer, const struct tile *ptile)
Definition player.c:1249
players_on_same_team
bool players_on_same_team(const struct player *pplayer1, const struct player *pplayer2)
Definition player.c:1476
can_player_see_unit_at
bool can_player_see_unit_at(const struct player *pplayer, const struct unit *punit, const struct tile *ptile, bool is_transported)
Definition player.c:1034
player_count
int player_count(void)
Definition player.c:817
cancel_pact_result
enum diplstate_type cancel_pact_result(enum diplstate_type oldstate)
Definition player.c:68
player_slot_count
int player_slot_count(void)
Definition player.c:418
player_slot_by_number
struct player_slot * player_slot_by_number(int player_id)
Definition player.c:463
player_multiplier_value
int player_multiplier_value(const struct player *pplayer, const struct multiplier *pmul)
Definition player.c:1958
player_get_expected_income
int player_get_expected_income(const struct player *pplayer)
Definition player.c:1286
player_number
int player_number(const struct player *pplayer)
Definition player.c:837
pplayer_can_make_treaty
enum dipl_reason pplayer_can_make_treaty(const struct player *p1, const struct player *p2, enum diplstate_type treaty)
Definition player.c:159
player_name
const char * player_name(const struct player *pplayer)
Definition player.c:895
player_slots_free
void player_slots_free(void)
Definition player.c:386
is_diplrel_to_other
bool is_diplrel_to_other(const struct player *pplayer, int diplrel)
Definition player.c:1562
is_barbarian
static bool is_barbarian(const struct player *pplayer)
Definition player.h:489
player_slot_max_used_number
int player_slot_max_used_number(void)
Definition player.c:476
can_player_see_unit
bool can_player_see_unit(const struct player *pplayer, const struct unit *punit)
Definition player.c:1104
pplayers_at_war
bool pplayers_at_war(const struct player *pplayer, const struct player *pplayer2)
Definition player.c:1388
player_set_ai_data
void player_set_ai_data(struct player *pplayer, const struct ai_type *ai, void *data)
Definition player.c:1948
player_ruleset_close
void player_ruleset_close(struct player *pplayer)
Definition player.c:745
player_clear
void player_clear(struct player *pplayer, bool full)
Definition player.c:669
player_slot_index
int player_slot_index(const struct player_slot *pslot)
Definition player.c:426
player_by_name
struct player * player_by_name(const char *name)
Definition player.c:881
player_slots_init
void player_slots_init(void)
Definition player.c:360
player_has_flag
bool player_has_flag(const struct player *pplayer, enum plr_flag_id flag)
Definition player.c:1990
player_has_real_embassy
bool player_has_real_embassy(const struct player *pplayer, const struct player *pplayer2)
Definition player.c:240
team_has_embassy
bool team_has_embassy(const struct team *pteam, const struct player *tgt_player)
Definition player.c:220
player_set_color
void player_set_color(struct player *pplayer, const struct rgbcolor *prgbcolor)
Definition player.c:648
player_city_by_number
struct city * player_city_by_number(const struct player *pplayer, int city_id)
Definition player.c:1203
player_primary_capital
struct city * player_primary_capital(const struct player *pplayer)
Definition player.c:1337
player_index
int player_index(const struct player *pplayer)
Definition player.c:829
player_in_territory
int player_in_territory(const struct player *pplayer, const struct player *pplayer2)
Definition player.c:1878
player_by_user
struct player * player_by_user(const char *name)
Definition player.c:940
diplrel_name_translation
const char * diplrel_name_translation(int value)
Definition player.c:1627
is_diplrel_between
bool is_diplrel_between(const struct player *player1, const struct player *player2, int diplrel)
Definition player.c:1512
plrcolor_mode
plrcolor_mode
Definition player.h:50
PLRCOL_PLR_RANDOM
@ PLRCOL_PLR_RANDOM
Definition player.h:52
PLRCOL_PLR_SET
@ PLRCOL_PLR_SET
Definition player.h:53
PLRCOL_NATION_ORDER
@ PLRCOL_NATION_ORDER
Definition player.h:55
PLRCOL_TEAM_ORDER
@ PLRCOL_TEAM_ORDER
Definition player.h:54
PLRCOL_PLR_ORDER
@ PLRCOL_PLR_ORDER
Definition player.h:51
player_is_cpuhog
static bool player_is_cpuhog(const struct player *pplayer)
Definition player.h:575
player_set_nation
bool player_set_nation(struct player *pplayer, struct nation_type *pnation)
Definition player.c:861
player_can_see_city_externals
bool player_can_see_city_externals(const struct player *pow_player, const struct city *target_city)
Definition player.c:1164
player_age
int player_age(const struct player *pplayer)
Definition player.c:954
pplayer_can_cancel_treaty
enum dipl_reason pplayer_can_cancel_treaty(const struct player *p1, const struct player *p2)
Definition player.c:98
player_diplstate_get
struct player_diplstate * player_diplstate_get(const struct player *plr1, const struct player *plr2)
Definition player.c:324
number_of_ai_levels
int number_of_ai_levels(void)
Definition player.c:1932
pplayers_allied
bool pplayers_allied(const struct player *pplayer, const struct player *pplayer2)
Definition player.c:1405
can_player_see_hypotetic_units_at
bool can_player_see_hypotetic_units_at(const struct player *pplayer, const struct tile *ptile)
Definition player.c:993
player_has_embassy_from_effect
bool player_has_embassy_from_effect(const struct player *pplayer, const struct player *pplayer2)
Definition player.c:250
diplrel_mess_close
void diplrel_mess_close(void)
Definition player.c:1808
players_non_invade
bool players_non_invade(const struct player *pplayer1, const struct player *pplayer2)
Definition player.c:1442
pplayers_non_attack
bool pplayers_non_attack(const struct player *pplayer, const struct player *pplayer2)
Definition player.c:1459
can_player_see_units_in_city
bool can_player_see_units_in_city(const struct player *pplayer, const struct city *pcity)
Definition player.c:1133
player_slot_get_player
struct player * player_slot_get_player(const struct player_slot *pslot)
Definition player.c:437
can_player_see_city_internals
bool can_player_see_city_internals(const struct player *pplayer, const struct city *pcity)
Definition player.c:1149
player_slot_next
struct player_slot * player_slot_next(struct player_slot *pslot)
Definition player.c:407
player_can_trust_tile_has_no_units
bool player_can_trust_tile_has_no_units(const struct player *pplayer, const struct tile *ptile)
Definition player.c:967
player_slots_initialised
bool player_slots_initialised(void)
Definition player.c:378
love_text
const char * love_text(const int love)
Definition player.c:1354
player_debug_types
player_debug_types
Definition player.h:212
PLAYER_DEBUG_LAST
@ PLAYER_DEBUG_LAST
Definition player.h:213
PLAYER_DEBUG_DIPLOMACY
@ PLAYER_DEBUG_DIPLOMACY
Definition player.h:213
PLAYER_DEBUG_TECH
@ PLAYER_DEBUG_TECH
Definition player.h:213
gives_shared_tiles
bool gives_shared_tiles(const struct player *me, const struct player *them)
Definition player.c:1493
player_has_embassy
bool player_has_embassy(const struct player *pplayer, const struct player *pplayer2)
Definition player.c:208
casus_belli_range_for
enum casus_belli_range casus_belli_range_for(const struct player *offender, const struct unit_type *off_ut, const struct player *tgt_plr, const enum effect_type outcome, const struct action *paction, const struct tile *tgt_tile)
Definition player.c:1640
diplrel_rule_name
const char * diplrel_rule_name(int value)
Definition player.c:1615
gives_shared_vision
bool gives_shared_vision(const struct player *me, const struct player *them)
Definition player.c:1485
player_owns_city
bool player_owns_city(const struct player *pplayer, const struct city *pcity)
Definition player.c:261
player_slot_first
struct player_slot * player_slot_first(void)
Definition player.c:399
player_destroy
void player_destroy(struct player *pplayer)
Definition player.c:756
pplayers_in_peace
bool pplayers_in_peace(const struct player *pplayer, const struct player *pplayer2)
Definition player.c:1426
level
struct setting_list * level[OLEVELS_NUM]
Definition settings.c:190
shared.h
m_pre_result
m_pre_result
Definition shared.h:207
spaceship.h
specenum_gen.h
speclist.h
action
Definition actions.h:360
adv_data
Definition advdata.h:50
ai_trait
Definition traits.h:37
ai_type
Definition ai.h:50
attribute_block_s
Definition player.h:218
attribute_block_s::data
void * data
Definition player.h:219
attribute_block_s::length
int length
Definition player.h:220
city
Definition city.h:320
connection
Definition connection.h:136
dbv
Definition bitvector.h:32
government
Definition government.h:52
multiplier_value
Definition player.h:237
multiplier_value::value
int value
Definition player.h:239
multiplier_value::target
int target
Definition player.h:241
multiplier_value::changed
int changed
Definition player.h:243
multiplier
Definition multipliers.h:31
nation_style
Definition style.h:22
nation_type
Definition nation.h:98
player_ai
Definition player.h:111
player_ai::handicaps
void * handicaps
Definition player.h:113
player_ai::skill_level
enum ai_level skill_level
Definition player.h:114
player_ai::traits
struct ai_trait * traits
Definition player.h:124
player_ai::barbarian_type
enum barbarian_type barbarian_type
Definition player.h:120
player_ai::warmth
int warmth
Definition player.h:119
player_ai::science_cost
int science_cost
Definition player.h:117
player_ai::love
int love[MAX_NUM_PLAYER_SLOTS]
Definition player.h:122
player_ai::expand
int expand
Definition player.h:116
player_ai::fuzzy
int fuzzy
Definition player.h:115
player_ai::maxbuycost
int maxbuycost
Definition player.h:112
player_ai::frost
int frost
Definition player.h:119
player_diplstate
Definition player.h:196
player_diplstate::contact_turns_left
char contact_turns_left
Definition player.h:202
player_diplstate::turns_left
char turns_left
Definition player.h:200
player_diplstate::auto_cancel_turn
int auto_cancel_turn
Definition player.h:204
player_diplstate::first_contact_turn
int first_contact_turn
Definition player.h:199
player_diplstate::max_state
enum diplstate_type max_state
Definition player.h:198
player_diplstate::type
enum diplstate_type type
Definition player.h:197
player_diplstate::has_reason_to_cancel
char has_reason_to_cancel
Definition player.h:201
player_economic
Definition player.h:60
player_economic::luxury
int luxury
Definition player.h:64
player_economic::science
int science
Definition player.h:63
player_economic::tax
int tax
Definition player.h:62
player_economic::infra_points
int infra_points
Definition player.h:65
player_economic::gold
int gold
Definition player.h:61
player_score
Definition player.h:83
player_score::units_killed
int units_killed
Definition player.h:103
player_score::landarea
int landarea
Definition player.h:92
player_score::mfg
int mfg
Definition player.h:100
player_score::population
int population
Definition player.h:94
player_score::pollution
int pollution
Definition player.h:97
player_score::wonders
int wonders
Definition player.h:89
player_score::settledarea
int settledarea
Definition player.h:93
player_score::units_used
int units_used
Definition player.h:106
player_score::specialists
int specialists[SP_MAX]
Definition player.h:88
player_score::units_lost
int units_lost
Definition player.h:104
player_score::angry
int angry
Definition player.h:87
player_score::techout
int techout
Definition player.h:91
player_score::game
int game
Definition player.h:108
player_score::units
int units
Definition player.h:96
player_score::units_built
int units_built
Definition player.h:102
player_score::content
int content
Definition player.h:85
player_score::happy
int happy
Definition player.h:84
player_score::spaceship
int spaceship
Definition player.h:101
player_score::culture
int culture
Definition player.h:107
player_score::unhappy
int unhappy
Definition player.h:86
player_score::cities
int cities
Definition player.h:95
player_score::bnp
int bnp
Definition player.h:99
player_score::literacy
int literacy
Definition player.h:98
player_score::techs
int techs
Definition player.h:90
player_slot
Definition player.c:46
player_spaceship
Definition spaceship.h:94
player_tile
Definition maphand.h:30
player
Definition player.h:247
player::cities
struct city_list * cities
Definition player.h:279
player::bulbs_last_turn
int bulbs_last_turn
Definition player.h:349
player::random_name
bool random_name
Definition player.h:293
player::ai_common
struct player_ai ai_common
Definition player.h:286
player::flags
bv_plr_flags flags
Definition player.h:290
player::status
bv_pstatus status
Definition player.h:320
player::primary_capital_id
int primary_capital_id
Definition player.h:273
player::is_male
bool is_male
Definition player.h:255
player::wonders
int wonders[B_LAST]
Definition player.h:303
player::diplstates
const struct player_diplstate ** diplstates
Definition player.h:276
player::unassigned_ranked
bool unassigned_ranked
Definition player.h:253
player::target_government
struct government * target_government
Definition player.h:257
player::autoselect_weight
int autoselect_weight
Definition player.h:297
player::username
char username[MAX_LEN_NAME]
Definition player.h:250
player::is_winner
bool is_winner
Definition player.h:267
player::is_connected
bool is_connected
Definition player.h:294
player::revolution_finishes
int revolution_finishes
Definition player.h:271
player::nturns_idle
int nturns_idle
Definition player.h:263
player::government
struct government * government
Definition player.h:256
player::tile_known
struct dbv tile_known
Definition player.h:308
player::current_conn
struct connection * current_conn
Definition player.h:295
player::team
struct team * team
Definition player.h:259
player::savegame_ai_type_name
char * savegame_ai_type_name
Definition player.h:288
player::turns_alive
int turns_alive
Definition player.h:264
player::was_created
bool was_created
Definition player.h:292
player::tech_upkeep
int tech_upkeep
Definition player.h:361
player::ai
const struct ai_type * ai
Definition player.h:287
player::units
struct unit_list * units
Definition player.h:280
player::ranked_username
char ranked_username[MAX_LEN_NAME]
Definition player.h:252
player::connections
struct conn_list * connections
Definition player.h:296
player::huts
int huts
Definition player.h:347
player::is_alive
bool is_alive
Definition player.h:266
player::real_embassy
bv_player real_embassy
Definition player.h:275
player::economic
struct player_economic economic
Definition player.h:282
player::culture
int culture
Definition player.h:365
player::spaceship
struct player_spaceship spaceship
Definition player.h:284
player::attribute_block
struct attribute_block_s attribute_block
Definition player.h:305
player::name
char name[MAX_LEN_NAME]
Definition player.h:249
player::gives_shared_vision
bv_player gives_shared_vision
Definition player.h:300
player::mood
enum mood_type mood
Definition player.h:359
player::score
struct player_score score
Definition player.h:281
player::attribute_block_buffer
struct attribute_block_s attribute_block_buffer
Definition player.h:306
player::private_map
struct player_tile * private_map
Definition player.h:322
player::multipliers
struct multiplier_value multipliers[MAX_NUM_MULTIPLIERS]
Definition player.h:312
player::really_gives_vision
bv_player really_gives_vision
Definition player.h:327
player::nation
struct nation_type * nation
Definition player.h:258
player::color_changeable
bool color_changeable
Definition player.h:363
player::music_style
int music_style
Definition player.h:278
player::style
struct nation_style * style
Definition player.h:277
player::border_vision
bool border_vision
Definition player.h:325
player::phase_done
bool phase_done
Definition player.h:261
player::adv
struct adv_data * adv
Definition player.h:332
player::slot
struct player_slot * slot
Definition player.h:248
player::gives_shared_tiles
bv_player gives_shared_tiles
Definition player.h:302
player::is_ready
bool is_ready
Definition player.h:260
player::history
int history
Definition player.h:314
player::user_turns
int user_turns
Definition player.h:254
player::debug
bv_debug debug
Definition player.h:330
player::last_war_action
int last_war_action
Definition player.h:268
player::rgb
struct rgbcolor * rgb
Definition player.h:310
player::unassigned_user
bool unassigned_user
Definition player.h:251
player::ai_phase_done
bool ai_phase_done
Definition player.h:262
requirement
Definition requirements.h:81
rgbcolor
Definition rgbcolor.h:33
server
Definition servers.h:29
team
Definition team.c:40
tile
Definition tile.h:50
unit_type
Definition unittype.h:500
unit
Definition unit.h:138
style.h
FALSE
#define FALSE
Definition support.h:47
tech.h
unitlist.h
vision.h