Freeciv-3.3
|
#include "fc_prehdrs.h"
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "lua.h"
#include "astring.h"
#include "bitvector.h"
#include "bugs.h"
#include "capability.h"
#include "fc_cmdline.h"
#include "fciconv.h"
#include "fcintl.h"
#include "log.h"
#include "mem.h"
#include "netintf.h"
#include "rand.h"
#include "randseed.h"
#include "registry.h"
#include "support.h"
#include "timing.h"
#include "citymap.h"
#include "achievements.h"
#include "calendar.h"
#include "capstr.h"
#include "city.h"
#include "counters.h"
#include "culture.h"
#include "dataio.h"
#include "effects.h"
#include "events.h"
#include "fc_interface.h"
#include "government.h"
#include "map.h"
#include "mapimg.h"
#include "modpack.h"
#include "nation.h"
#include "packets.h"
#include "player.h"
#include "research.h"
#include "tech.h"
#include "unitlist.h"
#include "version.h"
#include "victory.h"
#include "aiiface.h"
#include "animals.h"
#include "auth.h"
#include "barbarian.h"
#include "cityhand.h"
#include "citytools.h"
#include "cityturn.h"
#include "connecthand.h"
#include "console.h"
#include "fcdb.h"
#include "diplhand.h"
#include "edithand.h"
#include "gamehand.h"
#include "handchat.h"
#include "maphand.h"
#include "meta.h"
#include "notify.h"
#include "plrhand.h"
#include "report.h"
#include "ruleload.h"
#include "sanitycheck.h"
#include "score.h"
#include "sernet.h"
#include "settings.h"
#include "spacerace.h"
#include "srv_log.h"
#include "srv_signal.h"
#include "stdinhand.h"
#include "techtools.h"
#include "unithand.h"
#include "unittools.h"
#include "voting.h"
#include "advdata.h"
#include "autoworkers.h"
#include "advbuilding.h"
#include "advspace.h"
#include "infracache.h"
#include "savemain.h"
#include "script_fcdb.h"
#include "script_server.h"
#include "luascript_types.h"
#include "mapgen.h"
#include "mapgen_utils.h"
#include "aitraits.h"
#include "difficulty.h"
#include "srv_main.h"
#include "spechash.h"
Go to the source code of this file.
Macros | |
#define | SPECHASH_TAG startpos |
#define | SPECHASH_IKEY_TYPE struct startpos * |
#define | SPECHASH_INT_DATA_TYPE |
#define | startpos_hash_iterate(hash, psp, c) TYPED_HASH_ITERATE(struct startpos *, intptr_t, hash, psp, c) |
#define | startpos_hash_iterate_end HASH_ITERATE_END |
Definition at line 2601 of file srv_main.c.
#define SPECHASH_INT_DATA_TYPE |
Definition at line 2602 of file srv_main.c.
Tool for generate_players().
Definition at line 2600 of file srv_main.c.
#define startpos_hash_iterate | ( | hash, | |
psp, | |||
c | |||
) | TYPED_HASH_ITERATE(struct startpos *, intptr_t, hash, psp, c) |
Definition at line 2604 of file srv_main.c.
#define startpos_hash_iterate_end HASH_ITERATE_END |
Definition at line 2606 of file srv_main.c.
Called at the start of each (new) phase to do AI activities.
Definition at line 1138 of file srv_main.c.
Referenced by begin_phase().
Fill or remove players to meet the given aifill. If return is non-NULL, points to a translated string explaining why the total number of players is less than 'amount'.
Definition at line 2506 of file srv_main.c.
Referenced by ai_fill_changed_by_server(), aifill_action(), connection_attach_real(), connection_detach(), create_command_newcomer(), create_command_pregame(), load_command(), load_rulesetdir(), nationset_action(), receive_packet_game_info_100(), remove_player_command(), pregame_options::set_aifill(), sg_load_savefile(), sg_load_scenario(), and srv_main().
Announce what nation player rules to everyone.
Definition at line 2872 of file srv_main.c.
Referenced by generate_players().
Begin a phase of movement. This handles all beginning-of-phase actions for one or more players.
Definition at line 1260 of file srv_main.c.
Referenced by srv_running().
Handle the beginning of each turn. Note: This does not give "time" to any player; it is solely for updating turn-dependent data.
Definition at line 1153 of file srv_main.c.
Referenced by srv_running().
Check if turn is really done. Returns nothing, but as a side effect sets force_end_of_sniff if no more input is expected this turn (i.e. turn done)
Definition at line 2256 of file srv_main.c.
Referenced by detach_command(), handle_player_phase_done(), lost_connection_to_client(), player_set_to_ai_mode(), and srv_running().
Returns TRUE if any one game end condition is fulfilled, FALSE otherwise.
This function will notify players but will not set the server_state(). The caller must set the server state to S_S_OVER if the function returns TRUE.
Also send notifications about impending, predictable game end conditions.
Definition at line 368 of file srv_main.c.
Referenced by srv_running().
Handle the vision granting effect EFT_BORDER_VISION
Definition at line 802 of file srv_main.c.
Referenced by end_phase().
Give contact to players with the EFT_HAVE_CONTACTS effect (traditionally from Marco Polo's Embassy).
Definition at line 785 of file srv_main.c.
Referenced by end_phase().
Give map information to players with EFT_REVEAL_CITIES or EFT_REVEAL_MAP effects (traditionally from the Apollo Program).
Definition at line 762 of file srv_main.c.
Referenced by end_phase().
End a phase of movement. This handles all end-of-phase actions for one or more players.
Definition at line 1438 of file srv_main.c.
Referenced by srv_running().
Handle the end of each turn.
Definition at line 1604 of file srv_main.c.
Referenced by srv_running().
Initialize server specific functions.
Definition at line 3745 of file srv_main.c.
Referenced by srv_init().
Apply some final adjustments from the ruleset on to the game state. We cannot do this during ruleset loading, since some players may be added later than that.
Definition at line 3201 of file srv_main.c.
Referenced by srv_ready().
Returns iff the game was started once upon a time.
Definition at line 354 of file srv_main.c.
Referenced by aifill(), api_edit_create_player(), api_server_was_started(), connection_attach_real(), connection_detach(), create_barbarian_player(), create_command(), delegate_command(), establish_new_connection(), handle_edit_player_create(), is_allowed_to_take(), mapimg_command(), observe_command(), player_color_changeable(), playercolor_command(), playernation_command(), plrcol_action(), remove_player_command(), server_player_set_color(), set_rulesetdir(), sg_load_players(), sg_load_players(), sg_load_players_basic(), sg_load_players_basic(), sg_save_game(), sg_save_player_main(), sg_save_players(), split_player(), srv_main(), take_command(), team_command(), and update_nations_with_startpos().
Assign random nations to players at game start. This includes human players, AI players created with "set aifill <X>", and players created with "create <PlayerName>".
If a player's name matches one of the leader names for some nation, and that nation is available, choose that nation, and set the leader sex appropriately. For example, when the Britons have not been chosen by anyone else, a player called Boudica whose nation has not been specified (for instance if they were created with "create Boudica") will become the Britons, and their sex will be female. Otherwise, the sex is chosen randomly, and the nation is chosen as below.
If this is a scenario and the scenario has specific start positions for some nations, try to pick those nations, favouring those with start positions which already-assigned players can't use. (Note that it's possible that we can't find enough nations with available start positions, depending on what nations players have already picked; in this case, it's OK to pick nations without start positions, as init_new_game() will fall back to mismatched start positions.)
Otherwise, pick available nations using pick_a_nation(), which tries to pick nations that look good with nations already in the game.
For 'aifill' players, the player name/sex is then reset to that of a random leader for the chosen nation.
Definition at line 2672 of file srv_main.c.
Referenced by srv_ready().
void handle_client_info | ( | struct connection * | pc, |
enum gui_type | gui, | ||
int | emerg_version, | ||
const char * | distribution | ||
) |
Handle client info packet
Definition at line 315 of file srv_main.c.
Referenced by server_handle_packet().
void handle_nation_select_req | ( | struct connection * | pc, |
int | player_no, | ||
Nation_type_id | nation_no, | ||
bool | is_male, | ||
const char * | name, | ||
int | style | ||
) |
Handles a pick-nation packet from the client. These packets are handled by connection because ctrl users may edit anyone's nation in pregame, and editing is possible during a running game.
Definition at line 2370 of file srv_main.c.
Referenced by server_handle_packet().
|
static |
Handle a player-ready packet from global observer.
Definition at line 2436 of file srv_main.c.
Referenced by server_packet_input().
Handle a player-ready packet.
Definition at line 2452 of file srv_main.c.
Referenced by server_handle_packet(), and start_command().
void handle_report_req | ( | struct connection * | pconn, |
enum report_type | type | ||
) |
Handle request asking report to be sent to client.
Definition at line 1988 of file srv_main.c.
Referenced by server_handle_packet().
Identity ids wrap at IDENTITY_NUMBER_SIZE, skipping IDENTITY_NUMBER_ZERO Setup in server_game_init()
Definition at line 2061 of file srv_main.c.
Referenced by create_city(), and place_unit().
Check whether identity number is currently allocated.
Definition at line 2043 of file srv_main.c.
Referenced by identity_number().
Mark identity number allocated.
Definition at line 2035 of file srv_main.c.
Referenced by identity_number(), server_game_init(), sg_load_player_cities(), sg_load_player_cities(), sg_load_player_units(), sg_load_player_units(), sg_load_player_vision(), and sg_load_player_vision().
Increment identity_number and return result.
Definition at line 2051 of file srv_main.c.
Referenced by identity_number().
Initialize the game seed. This may safely be called multiple times.
Definition at line 208 of file srv_main.c.
Referenced by sg_load_random(), sg_load_random(), and srv_ready().
Returns TRUE if the packet type is an edit packet sent by the client.
NB: The first and last client edit packets here must match those defined in common/networking/packets.def.
Definition at line 2083 of file srv_main.c.
Referenced by server_packet_input().
Check all players to see whether they are dying.
WARNING: do not call this while doing any handling of players, units, etc. If a player dies, all their units will be wiped and other data will be overwritten.
Definition at line 1112 of file srv_main.c.
Referenced by ai_start_phase(), end_phase(), and server_packet_input().
Helper function for the mapimg module - number of player colors.
Definition at line 3862 of file srv_main.c.
Referenced by srv_prepare().
Helper function for the mapimg module - one player color.
Definition at line 3870 of file srv_main.c.
Referenced by srv_prepare().
|
static |
Helper function for the mapimg module - city owner.
Definition at line 3815 of file srv_main.c.
Referenced by srv_prepare().
|
static |
Helper function for the mapimg module - tile knowledge.
Definition at line 3770 of file srv_main.c.
Referenced by srv_prepare().
|
static |
Helper function for the mapimg module - tile owner.
Definition at line 3799 of file srv_main.c.
Referenced by srv_prepare().
|
static |
Helper function for the mapimg module - tile terrain.
Definition at line 3785 of file srv_main.c.
Referenced by srv_prepare().
|
static |
Helper function for the mapimg module - unit owner.
Definition at line 3841 of file srv_main.c.
Referenced by srv_prepare().
|
static |
Notify about units at risk of disband due to armistice.
Definition at line 867 of file srv_main.c.
Referenced by update_diplomatics().
const char * pick_random_player_name | ( | const struct nation_type * | pnation | ) |
Returns a random ruler name picked from given nation's ruler names that is not already in use. May return NULL if no unique name is available.
Definition at line 2844 of file srv_main.c.
Referenced by create_barbarian_player(), and player_nation_defaults().
void player_nation_defaults | ( | struct player * | pplayer, |
struct nation_type * | pnation, | ||
bool | set_name | ||
) |
Set nation for player with nation default values.
Definition at line 2621 of file srv_main.c.
Referenced by create_animals(), create_barbarian_player(), create_command_newcomer(), handle_edit_player_create(), player_set_nation_full(), and split_player().
Tool for generate_players().
Definition at line 2611 of file srv_main.c.
Referenced by generate_players().
Remove illegal units when armistice turns into peace treaty.
Definition at line 911 of file srv_main.c.
Referenced by update_diplomatics().
Save all defined map images.
Definition at line 3878 of file srv_main.c.
Referenced by srv_running(), and srv_scores().
void save_game_auto | ( | const char * | save_reason, |
enum autosave_type | type | ||
) |
Save game with autosave filename
Definition at line 1837 of file srv_main.c.
Referenced by server_sniff_all_input(), srv_running(), and srv_scores().
Send all information for when game starts or client reconnects. Initial packets should have been sent before calling this function. See comment in connecthand.c::establish_new_connection().
Definition at line 730 of file srv_main.c.
Referenced by connection_attach_real(), and srv_ready().
Free game data that we reinitialize as part of a server soft restart. Bear in mind that this function is called when the 'load' command is used, for instance.
Definition at line 3521 of file srv_main.c.
Referenced by load_command(), savegame2_load(), savegame3_load(), server_quit(), and srv_main().
Initialize game data for the server (corresponds to server_game_free() ).
Definition at line 3497 of file srv_main.c.
Referenced by load_command(), savegame2_load(), savegame3_load(), srv_main(), and srv_prepare().
Definition at line 3632 of file srv_main.c.
Referenced by fc_interface_init_server().
bool server_packet_input | ( | struct connection * | pconn, |
void * | packet, | ||
int | type | ||
) |
Returns FALSE if connection should be closed (because the clients was rejected). Returns TRUE else.
Definition at line 2092 of file srv_main.c.
Referenced by incoming_client_packets().
|
static |
Returns the id of the city the player map of 'pplayer' has at 'ptile' or IDENTITY_NUMBER_ZERO if the player map don't have a city there.
Definition at line 3643 of file srv_main.c.
Referenced by fc_interface_init_server().
void fc__noreturn server_quit | ( | void | ) |
Quit the server and exit.
Definition at line 1915 of file srv_main.c.
Referenced by quit_game(), server_sniff_all_input(), and srv_main().
server_setting_id server_ss_by_name | ( | const char * | name | ) |
Returns the id of the server setting with the specified name.
Definition at line 3655 of file srv_main.c.
Referenced by fc_interface_init_server(), and fc_interface_init_tool().
const char * server_ss_name_get | ( | server_setting_id | id | ) |
Returns the name of the server setting with the specified id.
Definition at line 3670 of file srv_main.c.
Referenced by fc_interface_init_server(), and fc_interface_init_tool().
enum sset_type server_ss_type_get | ( | server_setting_id | id | ) |
Returns the type of the server setting with the specified id.
Definition at line 3685 of file srv_main.c.
Referenced by fc_interface_init_server(), and fc_interface_init_tool().
unsigned int server_ss_val_bitwise_get | ( | server_setting_id | id | ) |
Returns the value of the bitwise server setting with the specified id.
Definition at line 3730 of file srv_main.c.
Referenced by fc_interface_init_server(), and fc_interface_init_tool().
bool server_ss_val_bool_get | ( | server_setting_id | id | ) |
Returns the value of the boolean server setting with the specified id.
Definition at line 3700 of file srv_main.c.
Referenced by fc_interface_init_server(), and fc_interface_init_tool().
int server_ss_val_int_get | ( | server_setting_id | id | ) |
Returns the value of the integer server setting with the specified id.
Definition at line 3715 of file srv_main.c.
Referenced by fc_interface_init_server(), and fc_interface_init_tool().
enum server_states server_state | ( | void | ) |
Return current server state.
Definition at line 338 of file srv_main.c.
Referenced by api_edit_tile_set_label(), autosaves_callback(), check_for_full_turn_done(), connection_attach_real(), dai_assess_danger_player(), end_command(), establish_new_connection(), event_cache_add_for_all(), event_cache_add_for_global_observers(), event_cache_add_for_player(), event_cache_add_for_players(), event_cache_match(), first_timeout_action(), game_was_started(), give_shared_vision(), handle_player_rates(), handle_player_ready(), handle_report_req(), handle_ruleset_select(), load_command(), map_claim_border_ownership(), maxplayers_callback(), notify_conn_packet(), player_info_level(), player_set_to_ai_mode(), remove_shared_vision(), reset_all_start_commands(), reset_command(), send_city_info(), send_lanserver_response(), server_packet_input(), server_quit(), server_sniff_all_input(), setting_is_free_to_change(), sg_save_game(), show_players(), srv_main(), srv_running(), start_command(), start_game(), surrender_command(), timeout_action(), and update_tile_knowledge().
void set_server_state | ( | enum server_states | newstate | ) |
Set current server state.
Definition at line 346 of file srv_main.c.
Referenced by end_command(), server_quit(), server_sniff_all_input(), srv_main(), srv_ready(), and srv_running().
Initialize freeciv server.
Definition at line 232 of file srv_main.c.
Referenced by main(), and srv_prepare().
void fc__noreturn srv_main | ( | void | ) |
Play the game! Returns when S_S_RUNNING != server_state().
Definition at line 2890 of file srv_main.c.
Referenced by srv_main().
Start actual game. Everything has been set up already.
Definition at line 1878 of file srv_main.c.
Referenced by start_command().
Check for cease-fires and armistices running out; update cancelling reasons and contact information.
Definition at line 950 of file srv_main.c.
Referenced by end_turn().
|
static |
Handle environmental upsets, meaning currently pollution or fallout.
Definition at line 829 of file srv_main.c.
Referenced by end_turn().
Update information about which nations have start positions on the map.
Call this on server start, or when loading a scenario.
Definition at line 2311 of file srv_main.c.
Referenced by load_rulesetdir(), sg_load_map_startpos(), and sg_load_map_startpos().
Does this turn count as world peace turn?
Definition at line 3899 of file srv_main.c.
Referenced by world_peace_update().
Definition at line 203 of file srv_main.c.
Referenced by server_quit(), and srv_running().
|
static |
Definition at line 187 of file srv_main.c.
Referenced by server_state(), and set_server_state().
Definition at line 201 of file srv_main.c.
Referenced by server_quit(), srv_prepare(), and srv_running().
bool force_end_of_sniff |
Definition at line 193 of file srv_main.c.
Referenced by check_for_full_turn_done(), end_command(), server_sniff_all_input(), srv_running(), and start_game().
Definition at line 198 of file srv_main.c.
Referenced by srv_init(), and srv_prepare().
bv_id identity_numbers_used |
Definition at line 195 of file srv_main.c.
Referenced by identity_number_is_used(), identity_number_release(), identity_number_reserve(), and server_game_init().
Definition at line 184 of file srv_main.c.
struct server_arguments srvarg |
Definition at line 181 of file srv_main.c.
Referenced by auth_user(), close_connections_and_socket(), delegate_command(), establish_new_connection(), fcdb_command(), get_challenge_filename(), get_lanserver_announcement(), handle_login_request(), is_allowed_to_take(), load_command(), main(), main(), mapimg_command(), meta_addr_port(), metaserver_command(), rank_users(), reset_command(), save_all_map_images(), save_game(), script_fcdb_init(), send_lanserver_response(), server_open_socket(), server_quit(), server_sniff_all_input(), set_rulesetdir(), sg_load_game(), sg_load_game(), sg_save_game(), show_serverid(), srv_init(), srv_main(), srv_prepare(), srv_ready(), srv_scores(), and write_init_script().