From 4dccc80f1400673bd8b975865944318b5beebc70 Mon Sep 17 00:00:00 2001 From: Marko Lindqvist Date: Mon, 20 Jun 2022 23:46:00 +0300 Subject: [PATCH 51/51] Do not reveal trade partner by default Whether trade partner is revealed is now controlled by the ruleset, defaulting to FALSE (old hardcoded behavior was TRUE) See osdn #42970 Signed-off-by: Marko Lindqvist --- common/networking/packets.def | 1 + data/alien/game.ruleset | 3 +++ data/civ1/game.ruleset | 3 +++ data/civ2/game.ruleset | 3 +++ data/civ2civ3/game.ruleset | 3 +++ data/classic/game.ruleset | 3 +++ data/goldkeep/game.ruleset | 3 +++ data/granularity/game.ruleset | 3 +++ data/multiplayer/game.ruleset | 3 +++ data/sandbox/game.ruleset | 3 +++ data/stub/game.ruleset | 3 +++ data/webperimental/game.ruleset | 3 +++ fc_version | 2 +- server/citytools.c | 12 ++++++++---- server/ruleset.c | 10 ++++++++++ server/unithand.c | 5 ++--- tools/ruleutil/rulesave.c | 6 +++++- 17 files changed, 60 insertions(+), 9 deletions(-) diff --git a/common/networking/packets.def b/common/networking/packets.def index 9528eb08b7..7eb3808ef8 100644 --- a/common/networking/packets.def +++ b/common/networking/packets.def @@ -515,6 +515,7 @@ PACKET_GAME_INFO = 16; sc, is-info UINT8 fulltradesize; UINT8 trade_world_rel_pct; UINT8 min_trade_route_val; + BOOL reveal_trade_partner; GOODS_SELECTION goods_selection; /* True if at least one civilization has researched a tech */ UINT16 global_advance_count; diff --git a/data/alien/game.ruleset b/data/alien/game.ruleset index b276b64c5c..5c0d8b144b 100644 --- a/data/alien/game.ruleset +++ b/data/alien/game.ruleset @@ -1515,6 +1515,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/civ1/game.ruleset b/data/civ1/game.ruleset index dcc28f8a98..ed03597e2c 100644 --- a/data/civ1/game.ruleset +++ b/data/civ1/game.ruleset @@ -1332,6 +1332,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/civ2/game.ruleset b/data/civ2/game.ruleset index 2ee7f39105..885382846a 100644 --- a/data/civ2/game.ruleset +++ b/data/civ2/game.ruleset @@ -1577,6 +1577,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/civ2civ3/game.ruleset b/data/civ2civ3/game.ruleset index 8d63d7360c..8b91eceb03 100644 --- a/data/civ2civ3/game.ruleset +++ b/data/civ2civ3/game.ruleset @@ -2027,6 +2027,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/classic/game.ruleset b/data/classic/game.ruleset index e6777c339a..2989552e22 100644 --- a/data/classic/game.ruleset +++ b/data/classic/game.ruleset @@ -1822,6 +1822,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/goldkeep/game.ruleset b/data/goldkeep/game.ruleset index eb47879672..b3b9c56d88 100644 --- a/data/goldkeep/game.ruleset +++ b/data/goldkeep/game.ruleset @@ -1904,6 +1904,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/granularity/game.ruleset b/data/granularity/game.ruleset index e23c386a97..2b81d4d1c1 100644 --- a/data/granularity/game.ruleset +++ b/data/granularity/game.ruleset @@ -817,6 +817,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/multiplayer/game.ruleset b/data/multiplayer/game.ruleset index 98c474900b..78a02ac29d 100644 --- a/data/multiplayer/game.ruleset +++ b/data/multiplayer/game.ruleset @@ -1782,6 +1782,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/sandbox/game.ruleset b/data/sandbox/game.ruleset index a879e0e7e8..abf918a2a3 100644 --- a/data/sandbox/game.ruleset +++ b/data/sandbox/game.ruleset @@ -3363,6 +3363,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/stub/game.ruleset b/data/stub/game.ruleset index 9c70ae468e..5a242dc771 100644 --- a/data/stub/game.ruleset +++ b/data/stub/game.ruleset @@ -678,6 +678,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/data/webperimental/game.ruleset b/data/webperimental/game.ruleset index 8d1459a7a0..d8f16f24e8 100644 --- a/data/webperimental/game.ruleset +++ b/data/webperimental/game.ruleset @@ -2075,6 +2075,9 @@ settings = ; for the relevant direction (from_pct / to_pct) min_trade_route_val = 0 +; Reveal the trade partner city on map. +reveal_trade_partner = FALSE + ; When are goods for the trade route chosen. ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination diff --git a/fc_version b/fc_version index 412d401018..3b7e11ba4b 100755 --- a/fc_version +++ b/fc_version @@ -56,7 +56,7 @@ DEFAULT_FOLLOW_TAG=S3_2 # - No new mandatory capabilities can be added to the release branch; doing # so would break network capability of supposedly "compatible" releases. # -NETWORK_CAPSTRING="+Freeciv.Devel-3.2-2022.May.10" +NETWORK_CAPSTRING="+Freeciv.Devel-3.2-2022.Jun.20" FREECIV_DISTRIBUTOR="" diff --git a/server/citytools.c b/server/citytools.c index b7b14e33b8..f906177b63 100644 --- a/server/citytools.c +++ b/server/citytools.c @@ -950,7 +950,7 @@ static void raze_city(struct city *pcity) The following has to be called every time AFTER a city (pcity) has changed owner to update the city's trade routes. ****************************************************************************/ -static void reestablish_city_trade_routes(struct city *pcity) +static void reestablish_city_trade_routes(struct city *pcity) { trade_routes_iterate_safe(pcity, proute) { bool keep_route; @@ -992,9 +992,13 @@ static void reestablish_city_trade_routes(struct city *pcity) /* Give the new owner infos about the city which has a trade route * with the transferred city. */ - map_show_tile(city_owner(pcity), partner->tile); - update_dumb_city(city_owner(pcity), partner); - send_city_info(city_owner(pcity), partner); + if (game.info.reveal_trade_partner) { + struct player *owner = city_owner(pcity); + + map_show_tile(owner, partner->tile); + update_dumb_city(owner, partner); + send_city_info(owner, partner); + } } trade_routes_iterate_safe_end; } diff --git a/server/ruleset.c b/server/ruleset.c index b5d41c8277..8e596f98e2 100644 --- a/server/ruleset.c +++ b/server/ruleset.c @@ -7502,10 +7502,20 @@ static bool load_ruleset_game(struct section_file *file, bool act, if (ok) { const char *str; + bool reveal_default = FALSE; game.info.min_trade_route_val = secfile_lookup_int_default(file, 0, "trade.min_trade_route_val"); + if (compat->compat_mode && compat->version < RSFORMAT_3_2) { + /* Old hardcoded behavior was to reveal the trade partner. */ + reveal_default = TRUE; + } + + game.info.reveal_trade_partner + = secfile_lookup_bool_default(file, reveal_default, + "trade.reveal_trade_partner"); + str = secfile_lookup_str_default(file, goods_selection_method_name(RS_DEFAULT_GOODS_SELECTION), "trade.goods_selection"); diff --git a/server/unithand.c b/server/unithand.c index f51f6f2b7a..865976b46c 100644 --- a/server/unithand.c +++ b/server/unithand.c @@ -6061,9 +6061,8 @@ static bool do_unit_establish_trade(struct player *pplayer, send_city_info(city_owner(pcity), pcity); } city_list_iterate_end; - /* Notify each player about the other cities so that they know about - * its size for the trade calculation. */ - if (pplayer != partner_player) { + /* Notify each player about the other's cities. */ + if (pplayer != partner_player && game.info.reveal_trade_partner) { map_show_tile(partner_player, city_tile(pcity_homecity)); send_city_info(partner_player, pcity_homecity); map_show_tile(pplayer, city_tile(pcity_dest)); diff --git a/tools/ruleutil/rulesave.c b/tools/ruleutil/rulesave.c index 5f75e9aa81..713ba41059 100644 --- a/tools/ruleutil/rulesave.c +++ b/tools/ruleutil/rulesave.c @@ -98,7 +98,8 @@ static bool save_default_int(struct section_file *sfile, int value, Save bool value that has default applied upon loading. **************************************************************************/ static bool save_default_bool(struct section_file *sfile, bool value, - bool default_value, const char *path, const char *entry) + bool default_value, const char *path, + const char *entry) { if ((value && !default_value) || (!value && default_value)) { @@ -1662,6 +1663,9 @@ static bool save_game_ruleset(const char *filename, const char *name) save_default_int(sfile, game.info.min_trade_route_val, 0, "trade.min_trade_route_val", NULL); + save_default_bool(sfile, game.info.reveal_trade_partner, + FALSE, "trade.reveal_trade_partner", NULL); + if (game.info.goods_selection != RS_DEFAULT_GOODS_SELECTION) { secfile_insert_str(sfile, goods_selection_method_name(game.info.goods_selection), "trade.goods_selection"); -- 2.35.1