Author: cazfi
Date: Wed Aug 17 09:26:31 2016
New Revision: 33633

URL: http://svn.gna.org/viewcvs/freeciv?rev=33633&view=rev
Log:
Added server setting to adjust how world size affects distance based trade 
bonuses.

Requested by Jacob Nevins <jtn>

See patch #6884

Modified:
    trunk/common/game.h
    trunk/common/networking/packets.def
    trunk/common/traderoutes.c
    trunk/fc_version
    trunk/server/settings.c

Modified: trunk/common/game.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/game.h?rev=33633&r1=33632&r2=33633&view=diff
==============================================================================
--- trunk/common/game.h (original)
+++ trunk/common/game.h Wed Aug 17 09:26:31 2016
@@ -561,6 +561,10 @@
 #define GAME_MIN_NOTRADESIZE         0
 #define GAME_MAX_NOTRADESIZE         49
 
+#define GAME_DEFAULT_TRADEWORLDRELPCT 50
+#define GAME_MIN_TRADEWORLDRELPCT     0
+#define GAME_MAX_TRADEWORLDRELPCT     100
+
 #define GAME_DEFAULT_FULLTRADESIZE   1
 #define GAME_MIN_FULLTRADESIZE       1
 #define GAME_MAX_FULLTRADESIZE       50

Modified: trunk/common/networking/packets.def
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/networking/packets.def?rev=33633&r1=33632&r2=33633&view=diff
==============================================================================
--- trunk/common/networking/packets.def (original)
+++ trunk/common/networking/packets.def Wed Aug 17 09:26:31 2016
@@ -483,6 +483,7 @@
   UINT8 forced_luxury;
   UINT8 forced_science;
   UINT8 fulltradesize;
+  UINT8 trade_world_rel_pct;
   /* True if at least one civilization has researched a tech */
   UINT16 global_advance_count;
   BOOL global_advances[A_LAST]; diff

Modified: trunk/common/traderoutes.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/traderoutes.c?rev=33633&r1=33632&r2=33633&view=diff
==============================================================================
--- trunk/common/traderoutes.c  (original)
+++ trunk/common/traderoutes.c  Wed Aug 17 09:26:31 2016
@@ -324,8 +324,12 @@
 
   if (NULL != pc1 && NULL != pc1->tile
       && NULL != pc2 && NULL != pc2->tile) {
-
-    bonus = real_map_distance(pc1->tile, pc2->tile)
+    int real_dist = real_map_distance(pc1->tile, pc2->tile);
+    int weighted_distance
+      = (100 - game.info.trade_world_rel_pct) * real_dist
+        + game.info.trade_world_rel_pct * (real_dist * 40 / MAX(wld.map.xsize, 
wld.map.ysize));
+
+    bonus = weighted_distance
             + city_size_get(pc1) + city_size_get(pc2);
 
     bonus = bonus * trade_route_type_trade_pct(cities_trade_route_type(pc1, 
pc2)) / 100;

Modified: trunk/fc_version
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/fc_version?rev=33633&r1=33632&r2=33633&view=diff
==============================================================================
--- trunk/fc_version    (original)
+++ trunk/fc_version    Wed Aug 17 09:26:31 2016
@@ -56,7 +56,7 @@
 #   - Avoid adding a new mandatory capability to the development branch for
 #     as long as possible.  We want to maintain network compatibility with
 #     the stable branch for as long as possible.
-NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2016.Aug.16b"
+NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2016.Aug.17"
 NETWORK_CAPSTRING_OPTIONAL=""
 
 FREECIV_DISTRIBUTOR=""

Modified: trunk/server/settings.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/settings.c?rev=33633&r1=33632&r2=33633&view=diff
==============================================================================
--- trunk/server/settings.c     (original)
+++ trunk/server/settings.c     Wed Aug 17 09:26:31 2016
@@ -1999,6 +1999,20 @@
           NULL, NULL, NULL,
           GAME_MIN_NOTRADESIZE, GAME_MAX_NOTRADESIZE,
           GAME_DEFAULT_NOTRADESIZE)
+
+  GEN_INT("tradeworldrelpct", game.info.trade_world_rel_pct,
+          SSET_RULES, SSET_ECONOMICS, SSET_RARE, ALLOW_NONE, ALLOW_BASIC,
+          N_("How largely trade distance is relative to world size"),
+          /* TRANS: The strings between single quotes are setting names and
+           * shouldn't be translated. */
+          N_("When determining trade between cities, the distance factor "
+             "can be partly or fully relative to world size. This setting "
+             "determines how big percentage of the bonus calculation is "
+             "relative to world size, and how much only absolute distance "
+             "matters."),
+          NULL, NULL, NULL,
+          GAME_MIN_TRADEWORLDRELPCT, GAME_MAX_TRADEWORLDRELPCT,
+          GAME_DEFAULT_TRADEWORLDRELPCT)
 
   GEN_INT("citymindist", game.info.citymindist,
           SSET_RULES, SSET_SOCIOLOGY, SSET_SITUATIONAL,


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to