Freeciv21
Develop your civilization from humble roots to a global empire
maphand.cpp File Reference
#include <QBitArray>
#include "bitvector.h"
#include "fcintl.h"
#include "log.h"
#include "rand.h"
#include "support.h"
#include "ai.h"
#include "base.h"
#include "borders.h"
#include "events.h"
#include "game.h"
#include "map.h"
#include "movement.h"
#include "nation.h"
#include "packets.h"
#include "player.h"
#include "road.h"
#include "unit.h"
#include "unitlist.h"
#include "vision.h"
#include "citytools.h"
#include "cityturn.h"
#include "notify.h"
#include "plrhand.h"
#include "sanitycheck.h"
#include "sernet.h"
#include "srv_main.h"
#include "unithand.h"
#include "unittools.h"
#include "mapgen_utils.h"
#include "maphand.h"
+ Include dependency graph for maphand.cpp:

Go to the source code of this file.

Macros

#define MAXIMUM_CLAIMED_OCEAN_SIZE   (20)
 

Functions

static void player_tile_init (struct tile *ptile, struct player *pplayer)
 We need to use fogofwar_old here, so the player's tiles get in the same state as the other players' tiles. More...
 
static void player_tile_free (struct tile *ptile, struct player *pplayer)
 Free the memory stored into the player tile. More...
 
static void give_tile_info_from_player_to_player (struct player *pfrom, struct player *pdest, struct tile *ptile)
 Give tile information from player to player. More...
 
static void shared_vision_change_seen (struct player *pplayer, struct tile *ptile, const v_radius_t change, bool can_reveal_tiles)
 Change the seen count of a tile for a pplayer. More...
 
static void map_change_seen (struct player *pplayer, struct tile *ptile, const v_radius_t change, bool can_reveal_tiles)
 This function changes the seen state of one player for all vision layers of a tile. More...
 
static void map_change_own_seen (struct player *pplayer, struct tile *ptile, const v_radius_t change)
 Changes the own seen count of a tile for a player. More...
 
static int map_get_seen (const struct player *pplayer, const struct tile *ptile, enum vision_layer vlayer)
 Return whether the player can see the tile. More...
 
static int map_get_own_seen (const struct player *pplayer, const struct tile *ptile, enum vision_layer vlayer)
 Returns the own seen count of a tile for a player. More...
 
static bool is_claimable_ocean (struct tile *ptile, struct tile *source, struct player *pplayer)
 Ocean tile can be claimed iff one of the following conditions stands: a) it is an inland lake not larger than MAXIMUM_OCEAN_SIZE b) it is adjacent to only one continent and not more than two ocean tiles c) It is one tile away from a border source d) Player knows tech with Claim_Ocean flag e) Source itself is Oceanic tile and player knows tech with Claim_Ocean_Limited flag The source which claims the ocean has to be placed on the correct continent. More...
 
static bool is_terrain_ecologically_wet (struct tile *ptile)
 Used only in global_warming() and nuclear_winter() below. More...
 
void global_warming (int effect)
 Wrapper for climate_change(). More...
 
void nuclear_winter (int effect)
 Wrapper for climate_change(). More...
 
void climate_change (bool warming, int effect)
 Do a climate change. More...
 
bool upgrade_city_extras (struct city *pcity, struct extra_type **gained)
 Check city for extra upgrade. More...
 
void upgrade_all_city_extras (struct player *pplayer, bool discovery)
 To be called when a player gains some better extra building tech for the first time. More...
 
bool really_gives_vision (struct player *me, struct player *them)
 Return TRUE iff the player me really gives shared vision to player them. More...
 
static void buffer_shared_vision (struct player *pplayer)
 Start buffering shared vision. More...
 
static void unbuffer_shared_vision (struct player *pplayer)
 Stop buffering shared vision. More...
 
void give_map_from_player_to_player (struct player *pfrom, struct player *pdest)
 Give information about whole map (all tiles) from player to player. More...
 
void give_seamap_from_player_to_player (struct player *pfrom, struct player *pdest)
 Give information about all oceanic tiles from player to player. More...
 
void give_citymap_from_player_to_player (struct city *pcity, struct player *pfrom, struct player *pdest)
 Give information about tiles within city radius from player to player. More...
 
void send_all_known_tiles (struct conn_list *dest)
 Send all tiles known to specified clients. More...
 
bool send_tile_suppression (bool now)
 Suppress send_tile_info() during game_load() More...
 
void send_tile_info (struct conn_list *dest, struct tile *ptile, bool send_unknown)
 Send tile information to all the clients in dest which know and see the tile. More...
 
void send_map_info (struct conn_list *dest)
 Send basic map information: map size, topology, and is_earth. More...
 
void map_vision_update (struct player *pplayer, struct tile *ptile, const v_radius_t old_radius_sq, const v_radius_t new_radius_sq, bool can_reveal_tiles)
 There doesn't have to be a city. More...
 
void map_set_border_vision (struct player *pplayer, const bool is_enabled)
 Turn a players ability to see inside his borders on or off. More...
 
void map_show_tile (struct player *src_player, struct tile *ptile)
 Shows the area to the player. More...
 
void map_hide_tile (struct player *src_player, struct tile *ptile)
 Hides the area to the player. More...
 
void map_show_circle (struct player *pplayer, struct tile *ptile, int radius_sq)
 Shows the area to the player. More...
 
void map_show_all (struct player *pplayer)
 Shows the area to the player. More...
 
bool map_is_known (const struct tile *ptile, const struct player *pplayer)
 Return whether the player knows the tile. More...
 
bool map_is_known_and_seen (const struct tile *ptile, const struct player *pplayer, enum vision_layer vlayer)
 Returns whether the layer 'vlayer' of the tile 'ptile' is known and seen by the player 'pplayer'. More...
 
void change_playertile_site (struct player_tile *ptile, struct vision_site *new_site)
 Changes site information for player tile. More...
 
void map_set_known (struct tile *ptile, struct player *pplayer)
 Set known status of the tile. More...
 
void map_clear_known (struct tile *ptile, struct player *pplayer)
 Clear known status of the tile. More...
 
void map_know_and_see_all (struct player *pplayer)
 Call this function to unfog all tiles. More...
 
void show_map_to_all ()
 Unfogs all tiles for all players. More...
 
void player_map_init (struct player *pplayer)
 Allocate space for map, and initialise the tiles. More...
 
void player_map_free (struct player *pplayer)
 Free a player's private map. More...
 
void remove_player_from_maps (struct player *pplayer)
 Remove all knowledge of a player from main map and other players' private maps, and send updates to connected clients. More...
 
struct vision_sitemap_get_player_city (const struct tile *ptile, const struct player *pplayer)
 Returns city located at given tile from player map. More...
 
struct vision_sitemap_get_player_site (const struct tile *ptile, const struct player *pplayer)
 Returns site located at given tile from player map. More...
 
struct player_tilemap_get_player_tile (const struct tile *ptile, const struct player *pplayer)
 Players' information of tiles is tracked so that fogged area can be kept consistent even when the client disconnects. More...
 
bool update_player_tile_knowledge (struct player *pplayer, struct tile *ptile)
 Give pplayer the correct knowledge about tile; return TRUE iff knowledge changed. More...
 
void update_tile_knowledge (struct tile *ptile)
 Update playermap knowledge for everybody who sees the tile, and send a packet to everyone whose info is changed. More...
 
void update_player_tile_last_seen (struct player *pplayer, struct tile *ptile)
 Remember that tile was last seen this year. More...
 
static void really_give_tile_info_from_player_to_player (struct player *pfrom, struct player *pdest, struct tile *ptile)
 Give tile information from one player to one player. More...
 
static void really_give_map_from_player_to_player (struct player *pfrom, struct player *pdest)
 Give information about whole map (all tiles) from player to player. More...
 
static void create_vision_dependencies ()
 This updates all players' really_gives_vision field. More...
 
void give_shared_vision (struct player *pfrom, struct player *pto)
 Starts shared vision between two players. More...
 
void remove_shared_vision (struct player *pfrom, struct player *pto)
 Removes shared vision from between two players. More...
 
void enable_fog_of_war_player (struct player *pplayer)
 Turns FoW on for player. More...
 
void enable_fog_of_war ()
 Turns FoW on for everyone. More...
 
void disable_fog_of_war_player (struct player *pplayer)
 Turns FoW off for player. More...
 
void disable_fog_of_war ()
 Turns FoW off for everyone. More...
 
static void ocean_to_land_fix_rivers (struct tile *ptile)
 Set the tile to be a river if required. More...
 
static void check_units_single_tile (struct tile *ptile)
 Helper function for bounce_units_on_terrain_change() that checks units on a single tile. More...
 
void bounce_units_on_terrain_change (struct tile *ptile)
 Check ptile and nearby tiles to see if all units can remain at their current locations, and move or disband any that cannot. More...
 
bool need_to_reassign_continents (const struct terrain *oldter, const struct terrain *newter)
 Returns TRUE if the terrain change from 'oldter' to 'newter' may require expensive reassignment of continents. More...
 
void terrain_changed (struct tile *ptile)
 Handle local side effects for a terrain change. More...
 
void fix_tile_on_terrain_change (struct tile *ptile, struct terrain *oldter, bool extend_rivers)
 Handles local side effects for a terrain change (tile and its surroundings). More...
 
void check_terrain_change (struct tile *ptile, struct terrain *oldter)
 Handles local and global side effects for a terrain change for a single tile. More...
 
static void map_unit_homecity_enqueue (struct tile *ptile)
 For each unit at the tile, queue any unique home city. More...
 
static void map_claim_border_ownership (struct tile *ptile, struct player *powner, struct tile *psource)
 Claim ownership of a single tile. More...
 
void map_claim_ownership (struct tile *ptile, struct player *powner, struct tile *psource, bool claim_bases)
 Claim ownership of a single tile. More...
 
void tile_claim_bases (struct tile *ptile, struct player *powner)
 Claim ownership of bases on single tile. More...
 
void map_clear_border (struct tile *ptile)
 Remove border for this source. More...
 
void map_update_border (struct tile *ptile, struct player *owner, int old_radius_sq, int new_radius_sq)
 Update borders for this source. More...
 
void map_claim_border (struct tile *ptile, struct player *owner, int radius_sq)
 Update borders for this source. More...
 
void map_calculate_borders ()
 Update borders for all sources. More...
 
void map_claim_base (struct tile *ptile, const extra_type *pextra, struct player *powner, struct player *ploser)
 Claim base to player's ownership. More...
 
void vision_change_sight (struct vision *vision, const v_radius_t radius_sq)
 Change the sight points for the vision source, fogging or unfogging tiles as needed. More...
 
void vision_clear_sight (struct vision *vision)
 Clear all sight points from this vision source. More...
 
void create_extra (struct tile *ptile, const extra_type *pextra, struct player *pplayer)
 Create extra to tile. More...
 
void destroy_extra (struct tile *ptile, struct extra_type *pextra)
 Remove extra from tile. More...
 
void give_distorted_map (struct player *pfrom, struct player *pto, int prob, bool reveal_cities)
 Transfer (random parts of) player pfrom's world map to pto. More...
 

Variables

static bool send_tile_suppressed = false
 

Macro Definition Documentation

◆ MAXIMUM_CLAIMED_OCEAN_SIZE

#define MAXIMUM_CLAIMED_OCEAN_SIZE   (20)

Definition at line 55 of file maphand.cpp.

Function Documentation

◆ bounce_units_on_terrain_change()

void bounce_units_on_terrain_change ( struct tile ptile)

Check ptile and nearby tiles to see if all units can remain at their current locations, and move or disband any that cannot.

Call this after terrain or specials change on ptile.

Definition at line 1802 of file maphand.cpp.

Referenced by create_extra(), terrain_changed(), and unit_activity_complete().

◆ buffer_shared_vision()

◆ change_playertile_site()

void change_playertile_site ( struct player_tile ptile,
struct vision_site new_site 
)

Changes site information for player tile.

Definition at line 1122 of file maphand.cpp.

Referenced by really_give_tile_info_from_player_to_player(), remove_player_from_maps(), sg_load_player_vision(), and update_dumb_city().

◆ check_terrain_change()

void check_terrain_change ( struct tile ptile,
struct terrain oldter 
)

Handles local and global side effects for a terrain change for a single tile.

Call this in the server immediately after calling tile_change_terrain. Assumes an in-game terrain change (e.g., by workers/engineers).

Definition at line 1875 of file maphand.cpp.

Referenced by climate_change(), and unit_activity_complete().

◆ check_units_single_tile()

static void check_units_single_tile ( struct tile ptile)
static

Helper function for bounce_units_on_terrain_change() that checks units on a single tile.

Definition at line 1785 of file maphand.cpp.

Referenced by bounce_units_on_terrain_change().

◆ climate_change()

void climate_change ( bool  warming,
int  effect 
)

Do a climate change.

Global warming occurred if 'warming' is TRUE, else there is a nuclear winter.

Definition at line 123 of file maphand.cpp.

Referenced by api_edit_climate_change(), global_warming(), and nuclear_winter().

◆ create_extra()

void create_extra ( struct tile ptile,
const extra_type pextra,
struct player pplayer 
)

Create extra to tile.

Definition at line 2405 of file maphand.cpp.

Referenced by api_edit_create_owned_extra(), begin_phase(), and unit_activity_complete().

◆ create_vision_dependencies()

static void create_vision_dependencies ( )
static

This updates all players' really_gives_vision field.

If p1 gives p2 shared vision and p2 gives p3 shared vision p1 should also give p3 shared vision.

Definition at line 1526 of file maphand.cpp.

Referenced by give_shared_vision(), and remove_shared_vision().

◆ destroy_extra()

void destroy_extra ( struct tile ptile,
struct extra_type pextra 
)

Remove extra from tile.

Definition at line 2478 of file maphand.cpp.

Referenced by create_city(), create_extra(), do_nuke_tile(), unit_activity_complete(), and unit_enter_hut().

◆ disable_fog_of_war()

void disable_fog_of_war ( )

Turns FoW off for everyone.

Definition at line 1736 of file maphand.cpp.

Referenced by begin_turn().

◆ disable_fog_of_war_player()

void disable_fog_of_war_player ( struct player pplayer)

Turns FoW off for player.

Definition at line 1720 of file maphand.cpp.

Referenced by check_leaving_edit_mode(), disable_fog_of_war(), and handle_edit_toggle_fogofwar().

◆ enable_fog_of_war()

void enable_fog_of_war ( )

Turns FoW on for everyone.

Definition at line 1711 of file maphand.cpp.

Referenced by begin_turn().

◆ enable_fog_of_war_player()

void enable_fog_of_war_player ( struct player pplayer)

Turns FoW on for player.

Definition at line 1695 of file maphand.cpp.

Referenced by check_leaving_edit_mode(), enable_fog_of_war(), and handle_edit_toggle_fogofwar().

◆ fix_tile_on_terrain_change()

void fix_tile_on_terrain_change ( struct tile ptile,
struct terrain oldter,
bool  extend_rivers 
)

Handles local side effects for a terrain change (tile and its surroundings).

Does not handle global side effects (such as reassigning continents). For in-game terrain changes 'extend_rivers' should be TRUE; for edits it should be FALSE.

Definition at line 1856 of file maphand.cpp.

Referenced by api_edit_change_terrain(), check_terrain_change(), and edit_tile_terrain_handling().

◆ give_citymap_from_player_to_player()

void give_citymap_from_player_to_player ( struct city pcity,
struct player pfrom,
struct player pdest 
)

Give information about tiles within city radius from player to player.

Definition at line 408 of file maphand.cpp.

Referenced by handle_diplomacy_create_clause_req(), and transfer_city().

◆ give_distorted_map()

void give_distorted_map ( struct player pfrom,
struct player pto,
int  prob,
bool  reveal_cities 
)

Transfer (random parts of) player pfrom's world map to pto.

Parameters
pfromplayer that is the source of the map
ptoplayer that receives the map
probprobability for the transfer each known tile
reveal_citiesif the map of all known cities should be transferred

Definition at line 2558 of file maphand.cpp.

Referenced by kill_unit(), and spy_steal_some_maps().

◆ give_map_from_player_to_player()

void give_map_from_player_to_player ( struct player pfrom,
struct player pdest 
)

Give information about whole map (all tiles) from player to player.

Takes care of shared vision chains.

Definition at line 368 of file maphand.cpp.

Referenced by handle_diplomacy_accept_treaty_req(), and split_player().

◆ give_seamap_from_player_to_player()

void give_seamap_from_player_to_player ( struct player pfrom,
struct player pdest 
)

Give information about all oceanic tiles from player to player.

Definition at line 387 of file maphand.cpp.

Referenced by handle_diplomacy_accept_treaty_req().

◆ give_shared_vision()

void give_shared_vision ( struct player pfrom,
struct player pto 
)

Starts shared vision between two players.

Definition at line 1568 of file maphand.cpp.

Referenced by handle_diplomacy_accept_treaty_req(), sg_load_players(), and srv_ready().

◆ give_tile_info_from_player_to_player()

static void give_tile_info_from_player_to_player ( struct player pfrom,
struct player pdest,
struct tile ptile 
)
static

Give tile information from player to player.

Handles chains of shared vision so that receiver may give information forward.

Definition at line 1506 of file maphand.cpp.

Referenced by give_citymap_from_player_to_player(), give_distorted_map(), give_map_from_player_to_player(), and give_seamap_from_player_to_player().

◆ global_warming()

void global_warming ( int  effect)

Wrapper for climate_change().

Definition at line 96 of file maphand.cpp.

Referenced by end_turn().

◆ is_claimable_ocean()

static bool is_claimable_ocean ( struct tile ptile,
struct tile source,
struct player pplayer 
)
static

Ocean tile can be claimed iff one of the following conditions stands: a) it is an inland lake not larger than MAXIMUM_OCEAN_SIZE b) it is adjacent to only one continent and not more than two ocean tiles c) It is one tile away from a border source d) Player knows tech with Claim_Ocean flag e) Source itself is Oceanic tile and player knows tech with Claim_Ocean_Limited flag The source which claims the ocean has to be placed on the correct continent.

in case a) The continent which surrounds the inland lake in case b) The only continent which is adjacent to the tile

Definition at line 1953 of file maphand.cpp.

Referenced by check_terrain_change(), and map_claim_border().

◆ is_terrain_ecologically_wet()

static bool is_terrain_ecologically_wet ( struct tile ptile)
static

Used only in global_warming() and nuclear_winter() below.

Definition at line 86 of file maphand.cpp.

Referenced by climate_change().

◆ map_calculate_borders()

void map_calculate_borders ( )

Update borders for all sources.

Call this on turn end.

Definition at line 2244 of file maphand.cpp.

Referenced by end_turn(), handle_edit_recalculate_borders(), player_limit_to_max_rates(), and sg_load_players().

◆ map_change_own_seen()

static void map_change_own_seen ( struct player pplayer,
struct tile ptile,
const v_radius_t  change 
)
static

Changes the own seen count of a tile for a player.

Definition at line 1110 of file maphand.cpp.

Referenced by shared_vision_change_seen().

◆ map_change_seen()

void map_change_seen ( struct player pplayer,
struct tile ptile,
const v_radius_t  change,
bool  can_reveal_tiles 
)
static

This function changes the seen state of one player for all vision layers of a tile.

It reveals the tiles if needed and controls the fog of war.

See also map_change_own_seen(), shared_vision_change_seen().

Definition at line 922 of file maphand.cpp.

Referenced by disable_fog_of_war_player(), enable_fog_of_war_player(), give_shared_vision(), map_know_and_see_all(), remove_shared_vision(), and shared_vision_change_seen().

◆ map_claim_base()

void map_claim_base ( struct tile ptile,
const extra_type pextra,
struct player powner,
struct player ploser 
)

Claim base to player's ownership.

Definition at line 2273 of file maphand.cpp.

Referenced by create_extra(), maybe_claim_base(), and tile_claim_bases().

◆ map_claim_border()

void map_claim_border ( struct tile ptile,
struct player owner,
int  radius_sq 
)

Update borders for this source.

Call this for each new source.

If radius_sq is -1, get value from the border source on tile.

Definition at line 2155 of file maphand.cpp.

Referenced by city_change_size(), city_populate(), create_city(), map_calculate_borders(), map_claim_base(), map_update_border(), and transfer_city().

◆ map_claim_border_ownership()

static void map_claim_border_ownership ( struct tile ptile,
struct player powner,
struct tile psource 
)
static

Claim ownership of a single tile.

Definition at line 2024 of file maphand.cpp.

Referenced by map_claim_base(), and map_claim_ownership().

◆ map_claim_ownership()

void map_claim_ownership ( struct tile ptile,
struct player powner,
struct tile psource,
bool  claim_bases 
)

◆ map_clear_border()

void map_clear_border ( struct tile ptile)

Remove border for this source.

Definition at line 2102 of file maphand.cpp.

Referenced by check_terrain_change(), destroy_extra(), map_claim_base(), map_claim_border(), remove_city(), and transfer_city().

◆ map_clear_known()

void map_clear_known ( struct tile ptile,
struct player pplayer 
)

Clear known status of the tile.

Definition at line 1141 of file maphand.cpp.

Referenced by create_barbarian_player(), map_hide_tile(), and remove_player_from_maps().

◆ map_get_own_seen()

static int map_get_own_seen ( const struct player pplayer,
const struct tile ptile,
enum vision_layer  vlayer 
)
inlinestatic

Returns the own seen count of a tile for a player.

It doesn't count the shared vision.

See also map_get_seen().

Definition at line 1100 of file maphand.cpp.

Referenced by give_shared_vision(), and remove_shared_vision().

◆ map_get_player_city()

struct vision_site* map_get_player_city ( const struct tile ptile,
const struct player pplayer 
)

Returns city located at given tile from player map.

Definition at line 1317 of file maphand.cpp.

Referenced by mapimg_server_tile_city(), package_dumb_city(), sg_save_player_vision(), spy_send_sabotage_list(), and update_dumb_city().

◆ map_get_player_site()

struct vision_site* map_get_player_site ( const struct tile ptile,
const struct player pplayer 
)

Returns site located at given tile from player map.

Definition at line 1330 of file maphand.cpp.

Referenced by find_closest_city(), map_get_player_city(), maybe_cancel_patrol_due_to_enemy(), send_all_known_cities(), send_city_info_at_tile(), and send_tile_info().

◆ map_get_player_tile()

struct player_tile* map_get_player_tile ( const struct tile ptile,
const struct player pplayer 
)

◆ map_get_seen()

static int map_get_seen ( const struct player pplayer,
const struct tile ptile,
enum vision_layer  vlayer 
)
inlinestatic

Return whether the player can see the tile.

Seeing a tile means you have vision of it now (as opposed to knowing a tile which means you've seen it before). Note that a tile can be seen but not known (currently this only happens when a city is founded with some unknown tiles in its radius); in this case the tile is unknown (but map_get_seen will still return TRUE).

Definition at line 909 of file maphand.cpp.

Referenced by map_hide_tile(), map_is_known_and_seen(), and map_show_tile().

◆ map_hide_tile()

void map_hide_tile ( struct player src_player,
struct tile ptile 
)

Hides the area to the player.

Callers may wish to buffer_shared_vision before calling this function.

Definition at line 802 of file maphand.cpp.

Referenced by handle_edit_player_vision().

◆ map_is_known()

◆ map_is_known_and_seen()

◆ map_know_and_see_all()

void map_know_and_see_all ( struct player pplayer)

Call this function to unfog all tiles.

This should only be called when a player dies or at the end of the game as it will result in permanent vision of the whole map.

Definition at line 1151 of file maphand.cpp.

Referenced by kill_player(), sg_load_player_vision(), and show_map_to_all().

◆ map_set_border_vision()

void map_set_border_vision ( struct player pplayer,
const bool  is_enabled 
)

Turn a players ability to see inside his borders on or off.

It is safe to set the current value.

Definition at line 714 of file maphand.cpp.

Referenced by do_border_vision_effect().

◆ map_set_known()

void map_set_known ( struct tile ptile,
struct player pplayer 
)

Set known status of the tile.

Definition at line 1133 of file maphand.cpp.

Referenced by map_change_seen(), map_show_tile(), really_give_tile_info_from_player_to_player(), and sg_load_map_known().

◆ map_show_all()

void map_show_all ( struct player pplayer)

Shows the area to the player.

Unless the tile is "seen", it will remain fogged and units will be hidden.

Definition at line 870 of file maphand.cpp.

Referenced by do_reveal_effects(), and srv_ready().

◆ map_show_circle()

void map_show_circle ( struct player pplayer,
struct tile ptile,
int  radius_sq 
)

Shows the area to the player.

Unless the tile is "seen", it will remain fogged and units will be hidden.

Definition at line 852 of file maphand.cpp.

Referenced by do_paradrop(), handle_edit_unit_create(), illegal_action_pay_price(), place_starting_unit(), try_summon_barbarians(), and unleash_barbarians().

◆ map_show_tile()

void map_show_tile ( struct player src_player,
struct tile ptile 
)

Shows the area to the player.

Unless the tile is "seen", it will remain fogged and units will be hidden.

Callers may wish to buffer_shared_vision before calling this function.

Definition at line 743 of file maphand.cpp.

Referenced by do_reveal_effects(), handle_edit_city_create(), handle_edit_player_vision(), map_show_all(), map_show_circle(), and send_city_info_at_tile().

◆ map_unit_homecity_enqueue()

static void map_unit_homecity_enqueue ( struct tile ptile)
static

For each unit at the tile, queue any unique home city.

Definition at line 2006 of file maphand.cpp.

Referenced by map_claim_border_ownership().

◆ map_update_border()

void map_update_border ( struct tile ptile,
struct player owner,
int  old_radius_sq,
int  new_radius_sq 
)

Update borders for this source.

Changes the radius without temporary clearing.

Definition at line 2121 of file maphand.cpp.

Referenced by city_reduce_size().

◆ map_vision_update()

void map_vision_update ( struct player pplayer,
struct tile ptile,
const v_radius_t  old_radius_sq,
const v_radius_t  new_radius_sq,
bool  can_reveal_tiles 
)

There doesn't have to be a city.

Definition at line 652 of file maphand.cpp.

Referenced by destroy_extra(), map_claim_base(), and vision_change_sight().

◆ need_to_reassign_continents()

bool need_to_reassign_continents ( const struct terrain oldter,
const struct terrain newter 
)

Returns TRUE if the terrain change from 'oldter' to 'newter' may require expensive reassignment of continents.

Definition at line 1819 of file maphand.cpp.

Referenced by api_edit_change_terrain(), check_terrain_change(), and edit_tile_terrain_handling().

◆ nuclear_winter()

void nuclear_winter ( int  effect)

Wrapper for climate_change().

Definition at line 109 of file maphand.cpp.

Referenced by end_turn().

◆ ocean_to_land_fix_rivers()

static void ocean_to_land_fix_rivers ( struct tile ptile)
static

Set the tile to be a river if required.

It's required if one of the tiles nearby would otherwise be part of a river to nowhere. (Note that rivers-to-nowhere can still occur if a single-tile lake is transformed away, but this is relatively unlikely.) For simplicity, I'm assuming that this is the only exit of the river, so I don't need to trace it across the continent. –CJM

Definition at line 1751 of file maphand.cpp.

Referenced by fix_tile_on_terrain_change().

◆ player_map_free()

void player_map_free ( struct player pplayer)

Free a player's private map.

Definition at line 1191 of file maphand.cpp.

Referenced by player_limit_to_max_rates(), and server_player_init().

◆ player_map_init()

void player_map_init ( struct player pplayer)

Allocate space for map, and initialise the tiles.

Uses current map.xsize and map.ysize.

Definition at line 1177 of file maphand.cpp.

Referenced by server_player_init(), sg_load_map_known(), and srv_ready().

◆ player_tile_free()

static void player_tile_free ( struct tile ptile,
struct player pplayer 
)
static

Free the memory stored into the player tile.

Definition at line 1309 of file maphand.cpp.

Referenced by player_map_free().

◆ player_tile_init()

static void player_tile_init ( struct tile ptile,
struct player pplayer 
)
static

We need to use fogofwar_old here, so the player's tiles get in the same state as the other players' tiles.

Definition at line 1284 of file maphand.cpp.

Referenced by player_map_init().

◆ really_give_map_from_player_to_player()

static void really_give_map_from_player_to_player ( struct player pfrom,
struct player pdest 
)
static

Give information about whole map (all tiles) from player to player.

Does not take care of shared vision; caller is assumed to do that.

Definition at line 1489 of file maphand.cpp.

Referenced by give_shared_vision().

◆ really_give_tile_info_from_player_to_player()

static void really_give_tile_info_from_player_to_player ( struct player pfrom,
struct player pdest,
struct tile ptile 
)
static

Give tile information from one player to one player.

Definition at line 1439 of file maphand.cpp.

Referenced by give_tile_info_from_player_to_player(), and really_give_map_from_player_to_player().

◆ really_gives_vision()

bool really_gives_vision ( struct player me,
struct player them 
)

◆ remove_player_from_maps()

void remove_player_from_maps ( struct player pplayer)

Remove all knowledge of a player from main map and other players' private maps, and send updates to connected clients.

Frees all vision_sites associated with that player.

Definition at line 1210 of file maphand.cpp.

Referenced by player_limit_to_max_rates().

◆ remove_shared_vision()

void remove_shared_vision ( struct player pfrom,
struct player pto 
)

Removes shared vision from between two players.

Definition at line 1634 of file maphand.cpp.

Referenced by dai_diplomacy_actions(), dai_go_to_war(), handle_diplomacy_cancel_pact_explicit(), kill_player(), and player_limit_to_max_rates().

◆ send_all_known_tiles()

void send_all_known_tiles ( struct conn_list *  dest)

Send all tiles known to specified clients.

If dest is nullptr means game.est_connections.

Note for multiple connections this may change "sent" multiple times for single player. This is ok, because "sent" data is just optimised calculations, so it will be correct before this, for each connection during this, and at end.

Definition at line 436 of file maphand.cpp.

Referenced by api_edit_change_terrain(), check_edited_tile_terrains(), check_terrain_change(), and send_all_info().

◆ send_map_info()

void send_map_info ( struct conn_list *  dest)

Send basic map information: map size, topology, and is_earth.

Definition at line 617 of file maphand.cpp.

Referenced by send_all_info().

◆ send_tile_info()

void send_tile_info ( struct conn_list *  dest,
struct tile ptile,
bool  send_unknown 
)

Send tile information to all the clients in dest which know and see the tile.

If dest is nullptr, sends to all clients (game.est_connections) which know and see tile.

Note that this function does not update the playermap. For that call update_tile_knowledge().

Definition at line 485 of file maphand.cpp.

Referenced by api_edit_tile_set_label(), city_map_update_empty(), city_map_update_tile_direct(), city_map_update_worker(), destroy_extra(), found_new_tech(), handle_edit_tile(), map_change_seen(), map_claim_border_ownership(), map_hide_tile(), map_show_tile(), really_give_tile_info_from_player_to_player(), remove_city(), remove_player_from_maps(), send_all_known_tiles(), and update_tile_knowledge().

◆ send_tile_suppression()

bool send_tile_suppression ( bool  now)

Suppress send_tile_info() during game_load()

Definition at line 469 of file maphand.cpp.

Referenced by savegame2_load(), and savegame3_load().

◆ shared_vision_change_seen()

static void shared_vision_change_seen ( struct player pplayer,
struct tile ptile,
const v_radius_t  change,
bool  can_reveal_tiles 
)
static

Change the seen count of a tile for a pplayer.

It will automatically handle the shared visions.

Definition at line 632 of file maphand.cpp.

Referenced by map_claim_border_ownership(), map_set_border_vision(), and map_vision_update().

◆ show_map_to_all()

void show_map_to_all ( )

Unfogs all tiles for all players.

See map_know_and_see_all.

Definition at line 1167 of file maphand.cpp.

Referenced by srv_scores().

◆ terrain_changed()

void terrain_changed ( struct tile ptile)

Handle local side effects for a terrain change.

Definition at line 1837 of file maphand.cpp.

Referenced by edit_tile_extra_handling(), and fix_tile_on_terrain_change().

◆ tile_claim_bases()

void tile_claim_bases ( struct tile ptile,
struct player powner 
)

Claim ownership of bases on single tile.

Definition at line 2083 of file maphand.cpp.

Referenced by map_claim_ownership(), sg_load_map_owner(), sg_load_player_units(), and unit_move().

◆ unbuffer_shared_vision()

◆ update_player_tile_knowledge()

bool update_player_tile_knowledge ( struct player pplayer,
struct tile ptile 
)

Give pplayer the correct knowledge about tile; return TRUE iff knowledge changed.

Note that unlike update_tile_knowledge, this function will not send any packets to the client. Callers may want to call send_tile_info() if this function returns TRUE.

Definition at line 1357 of file maphand.cpp.

Referenced by destroy_extra(), found_new_tech(), map_change_seen(), map_show_tile(), sg_load_player_vision(), and update_tile_knowledge().

◆ update_player_tile_last_seen()

void update_player_tile_last_seen ( struct player pplayer,
struct tile ptile 
)

Remember that tile was last seen this year.

Definition at line 1427 of file maphand.cpp.

Referenced by map_change_seen(), map_hide_tile(), map_show_tile(), and sg_load_player_vision().

◆ update_tile_knowledge()

void update_tile_knowledge ( struct tile ptile)

Update playermap knowledge for everybody who sees the tile, and send a packet to everyone whose info is changed.

Note this only checks for changing of the terrain, special, or resource for the tile, since these are the only values held in the playermap.

A tile's owner always can see terrain changes in his or her territory.

Definition at line 1395 of file maphand.cpp.

Referenced by api_edit_change_terrain(), api_edit_create_owned_extra(), api_edit_remove_extra(), begin_phase(), check_terrain_change(), climate_change(), create_city(), do_nuke_tile(), edit_tile_extra_handling(), edit_tile_terrain_handling(), end_turn(), handle_edit_tile(), map_claim_border_ownership(), place_pollution(), place_starting_unit(), transfer_city(), try_summon_barbarians(), unit_activity_complete(), unit_enter_hut(), and upgrade_all_city_extras().

◆ upgrade_all_city_extras()

void upgrade_all_city_extras ( struct player pplayer,
bool  discovery 
)

To be called when a player gains some better extra building tech for the first time.

Sends a message, and upgrades all city squares to new extras. "discovery" just affects the message: set to 1 if the tech is a "discovery", 0 if otherwise acquired (conquer/trade/GLib). –dwp

Definition at line 251 of file maphand.cpp.

Referenced by found_new_tech().

◆ upgrade_city_extras()

bool upgrade_city_extras ( struct city pcity,
struct extra_type **  gained 
)

Check city for extra upgrade.

Returns whether anything was done. gained will be set if there's exactly one kind of extra added.

Definition at line 214 of file maphand.cpp.

Referenced by create_city(), result_defense_bonus(), terrain_changed(), transfer_city(), and upgrade_all_city_extras().

◆ vision_change_sight()

void vision_change_sight ( struct vision vision,
const v_radius_t  radius_sq 
)

Change the sight points for the vision source, fogging or unfogging tiles as needed.

See documentation in vision.h.

Definition at line 2383 of file maphand.cpp.

Referenced by city_refresh_vision(), transfer_city(), unit_move_data(), unit_refresh_vision(), and vision_clear_sight().

◆ vision_clear_sight()

void vision_clear_sight ( struct vision vision)

Clear all sight points from this vision source.

See documentation in vision.h.

Definition at line 2395 of file maphand.cpp.

Referenced by remove_city(), server_remove_unit_full(), transfer_city(), unit_change_homecity_handling(), and unit_move().

Variable Documentation

◆ send_tile_suppressed

bool send_tile_suppressed = false
static

Definition at line 58 of file maphand.cpp.

Referenced by send_tile_info(), and send_tile_suppression().