![]() |
Freeciv21
Develop your civilization from humble roots to a global empire
|
#include "bitvector.h"#include "log.h"#include "rand.h"#include "shared.h"#include "support.h"#include "citizens.h"#include "culture.h"#include "diptreaty.h"#include "game.h"#include "government.h"#include "improvement.h"#include "map.h"#include "multipliers.h"#include "packets.h"#include "player.h"#include "research.h"#include "rgbcolor.h"#include "style.h"#include "tech.h"#include "unitlist.h"#include "aiiface.h"#include "barbarian.h"#include "citytools.h"#include "cityturn.h"#include "connecthand.h"#include "diplhand.h"#include "gamehand.h"#include "maphand.h"#include "mood.h"#include "notify.h"#include "plrhand.h"#include "spacerace.h"#include "spaceship.h"#include "srv_main.h"#include "stdinhand.h"#include "techtools.h"#include "unittools.h"#include "voting.h"#include "advdata.h"#include "script_server.h"#include "aitraits.h"#include "difficulty.h"#include "handicaps.h"
Include dependency graph for plrhand.cpp:Go to the source code of this file.
Functions | |
| static void | package_player_common (struct player *plr, struct packet_player_info *packet) |
| Package player information that is always sent. More... | |
| static void | package_player_diplstate (struct player *plr1, struct player *plr2, struct packet_player_diplstate *packet_ds, struct player *receiver, bool full) |
| Package player diplstate depending on info_level. More... | |
| static void | package_player_info (struct player *plr, struct packet_player_info *packet, struct player *receiver, bool send_all) |
| Package player info depending on info_level. More... | |
| static void | send_player_remove_info_c (const struct player_slot *pslot, struct conn_list *dest) |
| Send information about removed (unused) players. More... | |
| static void | send_player_info_c_real (struct player *src, struct conn_list *dest) |
| Really send information. More... | |
| static void | send_player_diplstate_c_real (struct player *plr1, struct conn_list *dest) |
| Really send information. More... | |
| static void | send_nation_availability_real (struct conn_list *dest, bool nationset_change) |
| Helper doing the actual work for send_nation_availability() (q.v.). More... | |
| void | kill_player (struct player *pplayer) |
| Murder a player in cold blood. More... | |
| static int | get_player_maxrate (struct player *pplayer) |
| Return player maxrate in legal range. More... | |
| void | handle_player_rates (struct player *pplayer, int tax, int luxury, int science) |
| Handle a client or AI request to change the tax/luxury/science rates. More... | |
| void | government_change (struct player *pplayer, struct government *gov, bool revolution_finished) |
| Finish the revolution and set the player's government. More... | |
| int | revolution_length (struct government *gov, struct player *plr) |
| Get length of a revolution. More... | |
| void | handle_player_change_government (struct player *pplayer, Government_type_id government) |
| Called by the client or AI to change government. More... | |
| void | update_revolution (struct player *pplayer) |
| See if the player has finished their revolution. More... | |
| void | update_capital (struct player *pplayer) |
| Recalculate what city is the named capital. More... | |
| void | check_player_max_rates (struct player *pplayer) |
| The following checks that government rates are acceptable for the present form of government. More... | |
| void | update_players_after_alliance_breakup (struct player *pplayer, struct player *pplayer2, const struct unit_list *pplayer_seen_units, const struct unit_list *pplayer2_seen_units) |
| After the alliance is breaken, we need to do two things: More... | |
| static void | maybe_claim_base (struct tile *ptile, struct player *new_owner, struct player *old_owner) |
| If there's any units of new_owner on tile, they claim bases. More... | |
| void | enter_war (struct player *pplayer, struct player *pplayer2) |
| Two players enter war. More... | |
| void | player_update_last_war_action (struct player *pplayer) |
| Update last war action timestamp (affects player mood). More... | |
| void | handle_diplomacy_cancel_pact (struct player *pplayer, int other_player_id, enum clause_type clause) |
| Handles a player cancelling a "pact" with another player. More... | |
| void | handle_diplomacy_cancel_pact_explicit (struct player *pplayer, int other_player_id, enum clause_type clause, bool protect_alliances) |
| A variant of handle_diplomacy_cancel_pact that allows the caller to explicitely control if war declarations should be prevented to protect existing alliances. More... | |
| void | player_info_freeze () |
| Do not compute and send PACKET_PLAYER_INFO or PACKET_NATION_AVAILABILITY until a call to player_info_thaw(). More... | |
| void | player_info_thaw () |
| If the frozen level is back to 0, send all players' infos, and nation availability, to all connections. More... | |
| void | send_player_all_c (struct player *src, struct conn_list *dest) |
| Send all information about a player (player_info and all player_diplstates) to the given connections. More... | |
| void | send_player_info_c (struct player *src, struct conn_list *dest) |
| Send information about player slot 'src', or all valid (i.e. More... | |
| void | send_player_diplstate_c (struct player *src, struct conn_list *dest) |
| Identical to send_player_info_c(), but sends the diplstate of the player. More... | |
| struct conn_list * | player_reply_dest (struct player *pplayer) |
| Convenience function to return "reply" destination connection list for player: pplayer->current_conn if set, else pplayer->connections. More... | |
| static void | call_first_contact (struct player *pplayer, struct player *aplayer) |
| Call first_contact function if such is defined for player. More... | |
| void | server_player_init (struct player *pplayer, bool initmap, bool needs_team) |
| Initialize ANY newly-created player on the server. More... | |
| const struct rgbcolor * | player_preferred_color (struct player *pplayer) |
| If a player's color will be predictable when colors are assigned (or assignment has already happened), return that color. More... | |
| bool | player_color_changeable (const struct player *pplayer, const char **reason) |
| Return whether a player's color can currently be set with the '/playercolor' command. More... | |
| void | assign_player_colors () |
| Permanently assign colors to any players that don't already have them. More... | |
| void | server_player_set_color (struct player *pplayer, const struct rgbcolor *prgbcolor) |
| Set the player's color. More... | |
| const char * | player_color_ftstr (struct player *pplayer) |
| Return the player color as featured text string. More... | |
| void | give_midgame_initial_units (struct player *pplayer, struct tile *ptile) |
| Gives units that every player should have. More... | |
| struct player * | server_create_player (int player_id, const char *ai_tname, struct rgbcolor *prgbcolor, bool allow_ai_type_fallbacking) |
| Creates a new, uninitialized, used player slot. More... | |
| void | server_remove_player (struct player *pplayer) |
| This function does not close any connections attached to this player. More... | |
| struct player_economic | player_limit_to_max_rates (struct player *pplayer) |
| The following limits a player's rates to those that are acceptable for the present form of government. More... | |
| static bool | server_player_name_is_allowed (const struct connection *caller, const struct player *pplayer, const struct nation_type *pnation, const char *name, char *error_buf, size_t error_buf_len) |
| Check if this name is allowed for the player. More... | |
| bool | server_player_set_name_full (const struct connection *caller, struct player *pplayer, const struct nation_type *pnation, const char *name, char *error_buf, size_t error_buf_len) |
| Try to set the player name to 'name'. More... | |
| void | server_player_set_name (struct player *pplayer, const char *name) |
| Try to set the player name to 'name'. More... | |
| static enum diplstate_type | get_default_diplstate (const struct player *pplayer1, const struct player *pplayer2) |
| Returns the default diplomatic state between 2 players. More... | |
| void | make_contact (struct player *pplayer1, struct player *pplayer2, struct tile *ptile) |
| Update contact info. More... | |
| void | maybe_make_contact (struct tile *ptile, struct player *pplayer) |
| Check if we make contact with anyone. More... | |
| void | shuffle_players () |
| Shuffle or reshuffle the player order, storing in static variables above. More... | |
| void | set_shuffled_players (int *shuffled_players) |
| Initialize the shuffled players list (as from a loaded savegame). More... | |
| struct player * | shuffled_player (int i) |
| Returns the i'th shuffled player, or nullptr. More... | |
| struct nation_type * | pick_a_nation (const struct nation_list *choices, bool ignore_conflicts, bool needs_startpos, enum barbarian_type barb_type) |
| This function returns a random-ish nation that is suitable for 'barb_type' and is usable (not already in use by an existing player, and if needs_startpos is set, would not be prohibited from starting on the map by the current scenario – NB this doesn't check that any start position is actually free). More... | |
| static struct nation_set * | current_nationset () |
| Return the nationset currently in effect. More... | |
| bool | nation_is_in_current_set (const struct nation_type *pnation) |
| Is the nation in the currently selected nationset? If not, it's not allowed to appear in the game. More... | |
| void | count_playable_nations () |
| Update the server's cached number of playable nations. More... | |
| bool | client_can_pick_nation (const struct nation_type *pnation) |
| Return whether a nation is "pickable" – whether players can select it at game start. More... | |
| void | send_nation_availability (struct conn_list *dest, bool nationset_change) |
| Tell clients which nations can be picked given current server settings. More... | |
| void | fit_nationset_to_players () |
| Try to select a nation set that fits the current players' nations, or failing that, unset the nations of some of the players. More... | |
| void | reset_all_start_commands (bool plrchange) |
| Called when something is changed; this resets everyone's readiness. More... | |
| static struct player * | split_player (struct player *pplayer) |
| This function creates a new player and copies all of it's science research etc. More... | |
| bool | civil_war_possible (struct player *pplayer, bool conquering_city, bool honour_server_option) |
| Check if civil war is possible for a player. More... | |
| bool | civil_war_triggered (struct player *pplayer) |
| civil_war_triggered: The capture of a primary capital is not a sure fire way to throw and empire into civil war. More... | |
| struct player * | civil_war (struct player *pplayer) |
| Capturing a nation's primary capital is a devastating blow. More... | |
| void | handle_player_attribute_chunk (struct player *pplayer, const struct packet_player_attribute_chunk *chunk) |
| The client has send as a chunk of the attribute block. More... | |
| void | handle_player_attribute_block (struct player *pplayer) |
| The client request an attribute block. More... | |
| void | handle_player_phase_done (struct player *pplayer, int turn) |
| (Hmm, how should "turn done" work for multi-connected non-observer players?) More... | |
| int | normal_player_count () |
| Return the number of non-barbarian players. More... | |
| void | player_status_add (struct player *plr, enum player_status pstatus) |
| Add a status flag to a player. More... | |
| bool | player_status_check (struct player *plr, enum player_status pstatus) |
| Check player status flag. More... | |
| void | player_status_reset (struct player *plr) |
| Reset player status to 'normal'. More... | |
| const char * | player_delegation_get (const struct player *pplayer) |
| Returns the username that control of the player is delegated to, if any. More... | |
| void | player_delegation_set (struct player *pplayer, const char *username) |
| Define a delegation. More... | |
| bool | player_delegation_active (const struct player *pplayer) |
| Returns TRUE if a delegation is active. More... | |
| void | send_delegation_info (const struct connection *pconn) |
| Send information about delegations to reconnecting users. More... | |
| struct player * | player_by_user_delegated (const char *name) |
| For a given user, if there is some player that the user originally controlled but is currently delegated to another user, return that player. More... | |
| void | playercolor_init () |
| Initialise the player colors. More... | |
| void | playercolor_free () |
| Free the memory allocated for the player color. More... | |
| void | playercolor_add (struct rgbcolor *prgbcolor) |
| Add a color to the list of all available player colors. More... | |
| struct rgbcolor * | playercolor_get (int id) |
| Get the player color with the index 'id'. More... | |
| int | playercolor_count () |
| Number of player colors defined. More... | |
| void | handle_player_multiplier (struct player *pplayer, int count, const int *multipliers) |
| Sets player's multipliers. More... | |
| void | player_set_to_ai_mode (struct player *pplayer, enum ai_level skill_level) |
| Toggle player to AI mode. More... | |
| void | player_set_under_human_control (struct player *pplayer) |
| Toggle player under human control. More... | |
Variables | |
| static int | shuffled_order [MAX_NUM_PLAYER_SLOTS] |
| static int | player_info_frozen_level = 0 |
| void assign_player_colors | ( | ) |
Permanently assign colors to any players that don't already have them.
First assign preferred colors, then assign the rest randomly, trying to avoid clashes.
Definition at line 1608 of file plrhand.cpp.
Referenced by create_animals(), create_barbarian_player(), handle_edit_player_create(), sg_load_players(), split_player(), and srv_ready().
Call first_contact function if such is defined for player.
Definition at line 1478 of file plrhand.cpp.
Referenced by make_contact().
| void check_player_max_rates | ( | struct player * | pplayer | ) |
The following checks that government rates are acceptable for the present form of government.
Has to be called when switching governments or when toggling from AI to human.
Definition at line 637 of file plrhand.cpp.
Referenced by adv_best_government(), dai_gov_value(), government_change(), handle_player_change_government(), and player_set_under_human_control().
Capturing a nation's primary capital is a devastating blow.
This function creates a new AI player, and randomly splits the original players city list into two. Of course this results in a real mix up of territory - but since when have civil wars ever been tidy, or civil.
Embassies: All embassies with other players are lost. Other players retain their embassies with pplayer. Units: Units inside cities are assigned to the new owner of the city. Units outside are transferred along with the ownership of their supporting city. If the units are in a unit stack with non rebel units, then whichever units are nearest an allied city are teleported to that city. If the stack is a transport at sea, then all rebel units on the transport are teleported to their nearest allied city.
Cities: Are split randomly into 2. This results in a real mix up of teritory - but since when have civil wars ever been tidy, or for any matter civil?
One caveat, since the spliting of cities is random, you can conceive that this could result in either the original player or the rebel getting 0 cities. To prevent this, the hack below ensures that each side gets roughly half, which ones is still determined randomly.
Definition at line 2942 of file plrhand.cpp.
Referenced by api_edit_civil_war(), kill_player(), unit_conquer_city(), and unit_do_destroy_city().
| bool civil_war_possible | ( | struct player * | pplayer, |
| bool | conquering_city, | ||
| bool | honour_server_option | ||
| ) |
Check if civil war is possible for a player.
If conquering_city is TRUE, one of the cities currently in the empire will shortly not be and shouldn't be considered. honour_server_option controls whether we honour the 'civilwarsize' server option. (If we don't, we still enforce a minimum empire size, to avoid the risk of creating a new player with no cities.)
Definition at line 2843 of file plrhand.cpp.
Referenced by api_edit_civil_war(), unit_conquer_city(), and unit_do_destroy_city().
| bool civil_war_triggered | ( | struct player * | pplayer | ) |
civil_war_triggered: The capture of a primary capital is not a sure fire way to throw and empire into civil war.
Some governments are more susceptible than others, here are the base probabilities: Anarchy 90% Despotism 80% Monarchy 70% Fundamentalism 60% (Only in civ2 ruleset) Communism 50% Republic 40% Democracy 30% In addition each city in disorder adds and each celebrating city subtracts from the probability of a civil war. If you have at least 1 turns notice of the impending loss of your capital, you can hike luxuries up to the hightest value, and by this reduce the chance of a civil war. In fact by hiking the luxuries to 100% under Democracy, it is easy to get massively negative numbers - guaranteeing imunity from civil war. Likewise, 3 cities in disorder under despotism guarantees a civil war. This routine calculates these probabilities and returns true if a civil war is triggered.
Definition at line 2890 of file plrhand.cpp.
Referenced by api_edit_civil_war(), unit_conquer_city(), and unit_do_destroy_city().
| bool client_can_pick_nation | ( | const struct nation_type * | pnation | ) |
Return whether a nation is "pickable" – whether players can select it at game start.
(is_nation_pickable() is the equivalent function on the client.)
Definition at line 2546 of file plrhand.cpp.
Referenced by generate_players(), handle_nation_select_req(), playernation_command(), and send_nation_availability_real().
| void count_playable_nations | ( | ) |
Update the server's cached number of playable nations.
Call when the nationset changes.
Definition at line 2529 of file plrhand.cpp.
Referenced by fit_nationset_to_players(), load_ruleset_nations(), and nationset_action().
|
static |
Return the nationset currently in effect.
Definition at line 2511 of file plrhand.cpp.
Referenced by fit_nationset_to_players(), and nation_is_in_current_set().
Two players enter war.
Definition at line 711 of file plrhand.cpp.
Referenced by handle_diplomacy_cancel_pact_explicit(), and update_diplomatics().
| void fit_nationset_to_players | ( | ) |
Try to select a nation set that fits the current players' nations, or failing that, unset the nations of some of the players.
To be called when loading an old savegame that predates nationsets.
Definition at line 2588 of file plrhand.cpp.
Referenced by sg_load_players().
|
static |
Returns the default diplomatic state between 2 players.
Mainly, this returns DS_WAR or whatever the ruleset has configured, but it will always return DS_PEACE or better if both players are allied with the same third player.
Definition at line 2159 of file plrhand.cpp.
Referenced by make_contact().
|
static |
Return player maxrate in legal range.
Definition at line 256 of file plrhand.cpp.
Referenced by government_change(), and handle_player_rates().
Gives units that every player should have.
Usually called for players created midgame.
Definition at line 1752 of file plrhand.cpp.
Referenced by civil_war().
| void government_change | ( | struct player * | pplayer, |
| struct government * | gov, | ||
| bool | revolution_finished | ||
| ) |
Finish the revolution and set the player's government.
Call this as soon as the player has set a target_government and the revolution_finishes turn has arrived.
Definition at line 322 of file plrhand.cpp.
Referenced by handle_edit_player(), handle_player_change_government(), and update_revolution().
| void handle_diplomacy_cancel_pact | ( | struct player * | pplayer, |
| int | other_player_id, | ||
| enum clause_type | clause | ||
| ) |
Handles a player cancelling a "pact" with another player.
other_player_id is id of player we want to cancel a pact with clause is a special value indicating what kind of treaty we want to break. If this is CLAUSE_VISION we break shared vision. If it is a pact treaty type, we break one pact level. If it is CLAUSE_LAST we break all treaties and go straight to war.
Definition at line 745 of file plrhand.cpp.
Referenced by dai_diplomacy_actions(), and dai_go_to_war().
| void handle_diplomacy_cancel_pact_explicit | ( | struct player * | pplayer, |
| int | other_player_id, | ||
| enum clause_type | clause, | ||
| bool | protect_alliances | ||
| ) |
A variant of handle_diplomacy_cancel_pact that allows the caller to explicitely control if war declarations should be prevented to protect existing alliances.
protect_alliances is a flag, that, if set to true, will prevent war declarations if they would break existing alliances.
Definition at line 761 of file plrhand.cpp.
Referenced by handle_diplomacy_cancel_pact(), and update_diplomatics().
| void handle_player_attribute_block | ( | struct player * | pplayer | ) |
The client request an attribute block.
Definition at line 3109 of file plrhand.cpp.
| void handle_player_attribute_chunk | ( | struct player * | pplayer, |
| const struct packet_player_attribute_chunk * | chunk | ||
| ) |
The client has send as a chunk of the attribute block.
Definition at line 3099 of file plrhand.cpp.
| void handle_player_change_government | ( | struct player * | pplayer, |
| Government_type_id | government | ||
| ) |
Called by the client or AI to change government.
Definition at line 427 of file plrhand.cpp.
Referenced by city_handle_disorder(), dai_go_to_war(), dai_government_change(), and research_tech_lost().
| void handle_player_multiplier | ( | struct player * | pplayer, |
| int | count, | ||
| const int * | multipliers | ||
| ) |
Sets player's multipliers.
Definition at line 3329 of file plrhand.cpp.
| void handle_player_phase_done | ( | struct player * | pplayer, |
| int | turn | ||
| ) |
(Hmm, how should "turn done" work for multi-connected non-observer players?)
Definition at line 3118 of file plrhand.cpp.
| void handle_player_rates | ( | struct player * | pplayer, |
| int | tax, | ||
| int | luxury, | ||
| int | science | ||
| ) |
Handle a client or AI request to change the tax/luxury/science rates.
This function does full sanity checking.
Definition at line 272 of file plrhand.cpp.
| void kill_player | ( | struct player * | pplayer | ) |
Murder a player in cold blood.
Called from srv_main kill_dying_players() and edit packet handler handle_edit_player_remove().
Definition at line 103 of file plrhand.cpp.
Referenced by handle_edit_player_remove(), and kill_dying_players().
Update contact info.
Definition at line 2197 of file plrhand.cpp.
Referenced by do_have_contacts_effect(), and maybe_make_contact().
|
static |
If there's any units of new_owner on tile, they claim bases.
Definition at line 682 of file plrhand.cpp.
Referenced by enter_war().
Check if we make contact with anyone.
Definition at line 2282 of file plrhand.cpp.
Referenced by create_city(), create_unit_full(), do_paradrop(), illegal_action_pay_price(), transfer_city(), transfer_unit(), and unit_move().
| bool nation_is_in_current_set | ( | const struct nation_type * | pnation | ) |
Is the nation in the currently selected nationset? If not, it's not allowed to appear in the game.
Definition at line 2520 of file plrhand.cpp.
Referenced by assign_player_colors(), city_name_suggestion(), client_can_pick_nation(), count_playable_nations(), dai_can_requirement_be_met_in_city(), fit_nationset_to_players(), generate_players(), handle_edit_player(), handle_nation_select_req(), nationset_action(), and pick_a_nation().
| int normal_player_count | ( | ) |
Return the number of non-barbarian players.
Definition at line 3140 of file plrhand.cpp.
Referenced by adjust_improvement_wants_by_effects(), civil_war(), connection_attach_real(), dai_gov_value(), dai_tech_effect_values(), is_allowed_to_take(), nationset_action(), send_lanserver_response(), send_to_metaserver(), sg_load_sanitycheck(), srv_ready(), start_command(), take_command(), unit_conquer_city(), and unit_do_destroy_city().
|
static |
Package player information that is always sent.
Definition at line 1155 of file plrhand.cpp.
Referenced by send_player_info_c_real().
|
static |
Package player diplstate depending on info_level.
We send everything to plr's connections, we send almost everything to players with embassy to plr, we send a little to players we are in contact with and almost nothing to everyone else.
Receiver may be nullptr in which cases dummy values are sent for some fields.
Definition at line 1414 of file plrhand.cpp.
Referenced by send_player_diplstate_c_real().
|
static |
Package player info depending on info_level.
We send everything to plr's connections, we send almost everything to players with embassy to plr, we send a little to players we are in contact with and almost nothing to everyone else.
Receiver may be nullptr in which cases dummy values are sent for some fields.
Definition at line 1210 of file plrhand.cpp.
Referenced by send_player_info_c_real().
| struct nation_type* pick_a_nation | ( | const struct nation_list * | choices, |
| bool | ignore_conflicts, | ||
| bool | needs_startpos, | ||
| enum barbarian_type | barb_type | ||
| ) |
This function returns a random-ish nation that is suitable for 'barb_type' and is usable (not already in use by an existing player, and if needs_startpos is set, would not be prohibited from starting on the map by the current scenario – NB this doesn't check that any start position is actually free).
Unless 'ignore_conflicts' is set, this function tries hard to avoid a nation marked as "conflicting with" one already in the game. A conflicting nation will be returned only if the alternative is to return NO_NATION_SELECTED. Such a return indicates that there are no remaining nations which match the above criteria.
If 'choices' is non-nullptr, nations from the supplied list are preferred; but if there are no (non-conflicting) nations on the list that match the criteria, one will be chosen from outside the list (as if the list had not been supplied).
All other things being equal, prefers to pick a nation which returns a high score from nations_match() relative to any nations already in the game.
Definition at line 2377 of file plrhand.cpp.
Referenced by create_animals(), create_barbarian_player(), generate_players(), handle_edit_player_create(), sg_load_players(), and split_player().
| struct player* player_by_user_delegated | ( | const char * | name | ) |
For a given user, if there is some player that the user originally controlled but is currently delegated to another user, return that player.
See also player_by_user().
Definition at line 3252 of file plrhand.cpp.
Referenced by establish_new_connection().
| bool player_color_changeable | ( | const struct player * | pplayer, |
| const char ** | reason | ||
| ) |
Return whether a player's color can currently be set with the '/playercolor' command.
If not, give a reason why not, if 'reason' is not nullptr (need not be freed).
Definition at line 1590 of file plrhand.cpp.
Referenced by package_player_info(), and playercolor_command().
| const char* player_color_ftstr | ( | struct player * | pplayer | ) |
Return the player color as featured text string.
(In pregame, this uses the color the player will take, if known, even if not assigned yet.)
Definition at line 1726 of file plrhand.cpp.
Referenced by playercolor_command(), show_colors(), and show_players().
| bool player_delegation_active | ( | const struct player * | pplayer | ) |
Returns TRUE if a delegation is active.
This means that either the player is controlled by a delegate, or the player has been temporarily 'put aside' by a delegate.
Definition at line 3199 of file plrhand.cpp.
Referenced by delegate_command(), show_delegations(), and take_command().
| const char* player_delegation_get | ( | const struct player * | pplayer | ) |
Returns the username that control of the player is delegated to, if any.
Definition at line 3170 of file plrhand.cpp.
Referenced by delegate_command(), establish_new_connection(), player_by_user_delegated(), send_delegation_info(), sg_save_player_main(), and show_delegations().
| void player_delegation_set | ( | struct player * | pplayer, |
| const char * | username | ||
| ) |
Define a delegation.
nullptr for no delegate.
Definition at line 3183 of file plrhand.cpp.
Referenced by delegate_command(), and sg_load_player_main().
| void player_info_freeze | ( | ) |
Do not compute and send PACKET_PLAYER_INFO or PACKET_NATION_AVAILABILITY until a call to player_info_thaw().
This is used during savegame load or ruleset (re)load cycles, to avoid sending infos to the client that depend on ruleset data it does not yet have.
Definition at line 1005 of file plrhand.cpp.
Referenced by load_command(), and set_rulesetdir().
| void player_info_thaw | ( | ) |
If the frozen level is back to 0, send all players' infos, and nation availability, to all connections.
Definition at line 1011 of file plrhand.cpp.
Referenced by load_command(), and set_rulesetdir().
| struct player_economic player_limit_to_max_rates | ( | struct player * | pplayer | ) |
The following limits a player's rates to those that are acceptable for the present form of government.
If a rate exceeds maxrate for this government, it adjusts rates automatically adding the extra to the 2nd highest rate, preferring science to taxes and taxes to luxuries. (It assumes that for any government maxrate>=50)
Returns actual max rate used. This function should be called after team information are defined.
Definition at line 1825 of file plrhand.cpp.
Referenced by check_player_max_rates(), handle_edit_player_create(), server_player_init(), split_player(), and srv_ready().
If a player's color will be predictable when colors are assigned (or assignment has already happened), return that color.
Otherwise (if the player's color is yet to be assigned randomly), return nullptr.
Definition at line 1547 of file plrhand.cpp.
Referenced by assign_player_colors(), package_player_info(), and player_color_ftstr().
| struct conn_list* player_reply_dest | ( | struct player * | pplayer | ) |
Convenience function to return "reply" destination connection list for player: pplayer->current_conn if set, else pplayer->connections.
Definition at line 1469 of file plrhand.cpp.
Referenced by handle_unit_sscs_set(), unit_move(), and unit_move_handling().
| void player_set_to_ai_mode | ( | struct player * | pplayer, |
| enum ai_level | skill_level | ||
| ) |
Toggle player to AI mode.
Definition at line 3369 of file plrhand.cpp.
Referenced by away_command(), and toggle_ai_player_direct().
| void player_set_under_human_control | ( | struct player * | pplayer | ) |
Toggle player under human control.
Definition at line 3391 of file plrhand.cpp.
Referenced by away_command(), and toggle_ai_player_direct().
| void player_status_add | ( | struct player * | plr, |
| enum player_status | pstatus | ||
| ) |
Add a status flag to a player.
Definition at line 3145 of file plrhand.cpp.
Referenced by api_edit_player_victory(), kill_dying_players(), player_status_reset(), rank_users(), server_remove_unit_full(), and surrender_command().
| bool player_status_check | ( | struct player * | plr, |
| enum player_status | pstatus | ||
| ) |
Check player status flag.
Definition at line 3153 of file plrhand.cpp.
Referenced by check_for_game_over(), kill_dying_players(), rank_users(), and surrender_command().
| void player_status_reset | ( | struct player * | plr | ) |
Reset player status to 'normal'.
Definition at line 3161 of file plrhand.cpp.
Referenced by create_barbarian_player(), kill_player(), and server_player_init().
| void player_update_last_war_action | ( | struct player * | pplayer | ) |
Update last war action timestamp (affects player mood).
Definition at line 730 of file plrhand.cpp.
Referenced by action_give_casus_belli(), handle_diplomacy_cancel_pact_explicit(), unit_bombs_unit(), and unit_versus_unit().
| void playercolor_add | ( | struct rgbcolor * | prgbcolor | ) |
Add a color to the list of all available player colors.
Definition at line 3299 of file plrhand.cpp.
Referenced by load_ruleset_game().
| int playercolor_count | ( | ) |
Number of player colors defined.
Definition at line 3319 of file plrhand.cpp.
Referenced by load_ruleset_game(), mapimg_server_plrcolor_count(), and player_preferred_color().
| void playercolor_free | ( | ) |
Free the memory allocated for the player color.
Definition at line 3278 of file plrhand.cpp.
Referenced by load_rulesetdir(), and server_game_free().
| struct rgbcolor* playercolor_get | ( | int | id | ) |
Get the player color with the index 'id'.
Definition at line 3309 of file plrhand.cpp.
Referenced by mapimg_server_plrcolor_get(), and player_preferred_color().
| void playercolor_init | ( | ) |
Initialise the player colors.
Definition at line 3269 of file plrhand.cpp.
Referenced by load_rulesetdir(), and server_game_init().
| void reset_all_start_commands | ( | bool | plrchange | ) |
Called when something is changed; this resets everyone's readiness.
Definition at line 2658 of file plrhand.cpp.
Referenced by connection_detach(), establish_new_connection(), and set_command().
| int revolution_length | ( | struct government * | gov, |
| struct player * | plr | ||
| ) |
Get length of a revolution.
Definition at line 390 of file plrhand.cpp.
Referenced by handle_edit_player(), and handle_player_change_government().
| void send_delegation_info | ( | const struct connection * | pconn | ) |
Send information about delegations to reconnecting users.
Definition at line 3207 of file plrhand.cpp.
Referenced by connection_attach_real(), and establish_new_connection().
| void send_nation_availability | ( | struct conn_list * | dest, |
| bool | nationset_change | ||
| ) |
Tell clients which nations can be picked given current server settings.
Definition at line 2574 of file plrhand.cpp.
Referenced by nationset_action(), and send_ruleset_nations().
|
static |
Helper doing the actual work for send_nation_availability() (q.v.).
Definition at line 2557 of file plrhand.cpp.
Referenced by player_info_thaw(), and send_nation_availability().
| void send_player_all_c | ( | struct player * | src, |
| struct conn_list * | dest | ||
| ) |
Send all information about a player (player_info and all player_diplstates) to the given connections.
Send all players if src is nullptr; send to all connections if dest is nullptr.
This function also sends the diplstate of the player. So take care, that all players are defined in the client and in the server. To create a player without sending the diplstate, use send_player_info_c().
Definition at line 1031 of file plrhand.cpp.
Referenced by action_consequence_common(), begin_phase(), civil_war(), create_animals(), create_barbarian_player(), diplomat_bribe(), diplomat_get_tech(), diplomat_may_lose_gold(), end_turn(), establish_embassy(), found_new_tech(), handle_diplomacy_accept_treaty_req(), handle_diplomacy_cancel_pact_explicit(), handle_edit_player(), handle_edit_player_create(), handle_player_phase_done(), make_contact(), send_all_info(), split_player(), and update_players_after_alliance_breakup().
| void send_player_diplstate_c | ( | struct player * | src, |
| struct conn_list * | dest | ||
| ) |
Identical to send_player_info_c(), but sends the diplstate of the player.
This function solves one problem of using an extra packet for the diplstate. It can only be send if the player exists at the destination. Thus, this function should be called after the player(s) exists on both sides of the connection.
Definition at line 1106 of file plrhand.cpp.
Referenced by load_command(), and send_player_all_c().
|
static |
Really send information.
If 'dest' is nullptr, then it is set to game.est_connections.
Definition at line 1121 of file plrhand.cpp.
Referenced by send_player_diplstate_c().
| void send_player_info_c | ( | struct player * | src, |
| struct conn_list * | dest | ||
| ) |
Send information about player slot 'src', or all valid (i.e.
used and initialized) players if 'src' is nullptr, to specified clients 'dest'. If 'dest' is nullptr, it is treated as game.est_connections.
Note: package_player_info contains incomplete info if it has nullptr as a dest arg and and info is < INFO_EMBASSY. NB: If 'src' is nullptr (meaning send information about all players) this function will only send info for used players, i.e. player slots with a player defined.
Definition at line 1048 of file plrhand.cpp.
Referenced by aifill(), announce_player(), autotoggle_action(), away_command(), city_build_free_buildings(), connection_attach_real(), connection_delegate_restore(), connection_detach(), dai_manage_taxes(), detach_command(), diplomat_incite(), do_unit_establish_trade(), do_unit_upgrade(), establish_new_connection(), give_shared_vision(), government_change(), handle_edit_city(), handle_edit_city_create(), handle_edit_unit_create(), handle_nation_select_req(), handle_player_change_government(), handle_player_multiplier(), handle_player_rates(), handle_player_ready(), handle_unit_type_upgrade(), kill_player(), kill_unit(), nationset_action(), player_info_thaw(), player_update_last_war_action(), playernation_command(), plrcol_action(), really_handle_city_buy(), really_handle_city_sell(), remove_city(), remove_obsolete_buildings_city(), remove_shared_vision(), research_tech_lost(), reset_all_start_commands(), send_player_all_c(), server_player_set_color(), set_ai_level(), set_ai_level_direct(), split_player(), spy_steal_gold(), team_command(), toggle_ai_command(), transfer_city(), unit_conquer_city(), unit_do_help_build(), unit_enter_hut(), and update_revolution().
|
static |
Really send information.
If 'dest' is nullptr, then it is set to game.est_connections.
Definition at line 1067 of file plrhand.cpp.
Referenced by send_player_info_c().
|
static |
Send information about removed (unused) players.
Definition at line 983 of file plrhand.cpp.
Referenced by player_limit_to_max_rates().
| struct player* server_create_player | ( | int | player_id, |
| const char * | ai_tname, | ||
| struct rgbcolor * | prgbcolor, | ||
| bool | allow_ai_type_fallbacking | ||
| ) |
Creates a new, uninitialized, used player slot.
You should probably call server_player_init() to initialize it, and send_player_info_c() later to tell clients about it.
May return nullptr if creation was not possible.
Definition at line 1776 of file plrhand.cpp.
Referenced by aifill(), connection_attach_real(), create_animals(), create_barbarian_player(), handle_edit_player_create(), sg_load_players_basic(), and split_player().
| void server_player_init | ( | struct player * | pplayer, |
| bool | initmap, | ||
| bool | needs_team | ||
| ) |
Initialize ANY newly-created player on the server.
The initmap option is used because we don't want to initialize the map before the x and y sizes have been determined. This should generally be FALSE in pregame.
The needs_team options should be set for players who should be assigned a team. They will be put on their own newly-created team.
Definition at line 1494 of file plrhand.cpp.
Referenced by aifill(), connection_attach_real(), create_animals(), create_barbarian_player(), handle_edit_player_create(), server_create_player(), sg_load_players_basic(), and split_player().
|
static |
Check if this name is allowed for the player.
Fill out the error message (a translated string to be sent to the client) if not.
Definition at line 1994 of file plrhand.cpp.
Referenced by server_player_set_name_full().
Set the player's color.
If 'prgbcolor' is not nullptr the caller should free the pointer, as player_set_color() copies the data.
Definition at line 1706 of file plrhand.cpp.
Referenced by playercolor_command(), and plrcol_action().
| void server_player_set_name | ( | struct player * | pplayer, |
| const char * | name | ||
| ) |
Try to set the player name to 'name'.
Else, find a default name.
Definition at line 2159 of file plrhand.cpp.
Referenced by aifill(), connection_attach_real(), create_barbarian_player(), player_nation_defaults(), playernation_command(), and sg_load_player_main().
| bool server_player_set_name_full | ( | const struct connection * | caller, |
| struct player * | pplayer, | ||
| const struct nation_type * | pnation, | ||
| const char * | name, | ||
| char * | error_buf, | ||
| size_t | error_buf_len | ||
| ) |
Try to set the player name to 'name'.
Else, find a default name. Returns TRUE on success.
Definition at line 2059 of file plrhand.cpp.
Referenced by get_default_diplstate(), handle_edit_player(), handle_nation_select_req(), and playernation_command().
| void server_remove_player | ( | struct player * | pplayer | ) |
This function does not close any connections attached to this player.
The function cut_connection() is used for that. Be sure to send_player_slot_info_c() afterwards to tell clients that the player slot has become unused.
Definition at line 1825 of file plrhand.cpp.
Referenced by aifill(), connection_detach(), handle_edit_player_remove(), remove_player_command(), server_game_free(), sg_load_players_basic(), and start_command().
| void set_shuffled_players | ( | int * | shuffled_players | ) |
Initialize the shuffled players list (as from a loaded savegame).
Definition at line 2327 of file plrhand.cpp.
Referenced by sg_load_players_basic().
| void shuffle_players | ( | ) |
Shuffle or reshuffle the player order, storing in static variables above.
Definition at line 2302 of file plrhand.cpp.
Referenced by begin_turn(), sg_load_players_basic(), and srv_ready().
| struct player* shuffled_player | ( | int | i | ) |
Returns the i'th shuffled player, or nullptr.
NB: You should never need to call this function directly.
Definition at line 2345 of file plrhand.cpp.
This function creates a new player and copies all of it's science research etc.
Players are both thrown into anarchy and gold is split between both players.
Definition at line 2694 of file plrhand.cpp.
Referenced by civil_war().
| void update_capital | ( | struct player * | pplayer | ) |
Recalculate what city is the named capital.
Definition at line 590 of file plrhand.cpp.
Referenced by begin_phase(), and transfer_city().
| void update_players_after_alliance_breakup | ( | struct player * | pplayer, |
| struct player * | pplayer2, | ||
| const struct unit_list * | pplayer_seen_units, | ||
| const struct unit_list * | pplayer2_seen_units | ||
| ) |
After the alliance is breaken, we need to do two things:
Definition at line 665 of file plrhand.cpp.
Referenced by handle_diplomacy_accept_treaty_req(), and handle_diplomacy_cancel_pact_explicit().
| void update_revolution | ( | struct player * | pplayer | ) |
See if the player has finished their revolution.
This function should be called at the beginning of a player's phase.
Definition at line 527 of file plrhand.cpp.
Referenced by begin_phase().
|
static |
Definition at line 95 of file plrhand.cpp.
Referenced by player_info_freeze(), player_info_thaw(), send_nation_availability(), and send_player_info_c().
|
static |
Definition at line 92 of file plrhand.cpp.
Referenced by set_shuffled_players(), shuffle_players(), and shuffled_player().