Author: cazfi
Date: Mon Jul 25 15:06:59 2016
New Revision: 33324

URL: http://svn.gna.org/viewcvs/freeciv?rev=33324&view=rev
Log:
Added cost_pct property for tech classes.

See patch #7497

Modified:
    trunk/client/packhand.c
    trunk/common/networking/packets.def
    trunk/common/tech.c
    trunk/common/tech.h
    trunk/data/alien/techs.ruleset
    trunk/data/civ1/techs.ruleset
    trunk/data/civ2/techs.ruleset
    trunk/data/civ2civ3/techs.ruleset
    trunk/data/classic/techs.ruleset
    trunk/data/experimental/techs.ruleset
    trunk/data/multiplayer/techs.ruleset
    trunk/data/ruledit/comments.txt
    trunk/data/sandbox/techs.ruleset
    trunk/data/stub/techs.ruleset
    trunk/fc_version
    trunk/server/ruleset.c

Modified: trunk/client/packhand.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/packhand.c?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/client/packhand.c     (original)
+++ trunk/client/packhand.c     Mon Jul 25 15:06:59 2016
@@ -3479,6 +3479,7 @@
   fc_assert_ret_msg(NULL != ptclass, "Bad tech_class %d.", p->id);
 
   names_set(&ptclass->name, NULL, p->name, p->rule_name);
+  ptclass->cost_pct = p->cost_pct;
 }
 
 /****************************************************************************

Modified: trunk/common/networking/packets.def
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/networking/packets.def?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/common/networking/packets.def (original)
+++ trunk/common/networking/packets.def Mon Jul 25 15:06:59 2016
@@ -1424,6 +1424,7 @@
   UINT16 id;
   STRING name[MAX_LEN_NAME];
   STRING rule_name[MAX_LEN_NAME];
+  UINT16 cost_pct;
 end
 
 PACKET_RULESET_TECH_FLAG = 234; sc, lsend

Modified: trunk/common/tech.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/tech.c?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/common/tech.c (original)
+++ trunk/common/tech.c Mon Jul 25 15:06:59 2016
@@ -214,6 +214,7 @@
 
   advance_iterate(A_FIRST, padvance) {
     int num_reqs = 0;
+    bool min_req = TRUE;
 
     advance_req_iterate(padvance, preq) {
       (void) preq; /* Compiler wants us to do something with 'preq'. */
@@ -227,7 +228,8 @@
       break;
     case TECH_COST_CLASSIC_PRESET:
       if (-1 != padvance->cost) {
-        continue;
+        min_req = FALSE;
+        break;
       }
       /* No break. */
     case TECH_COST_CLASSIC:
@@ -236,7 +238,8 @@
       break;
     case TECH_COST_EXPERIMENTAL_PRESET:
       if (-1 != padvance->cost) {
-        continue;
+        min_req = FALSE;
+        break;
       }
       /* No break. */
     case TECH_COST_EXPERIMENTAL:
@@ -245,8 +248,13 @@
       break;
     }
 
-    if (padvance->cost < game.info.base_tech_cost) {
+    if (min_req && padvance->cost < game.info.base_tech_cost) {
       padvance->cost = game.info.base_tech_cost;
+    }
+
+    /* Class cost */
+    if (padvance->tclass != NULL) {
+      padvance->cost = padvance->cost * padvance->tclass->cost_pct / 100;
     }
   } advance_iterate_end;
 }

Modified: trunk/common/tech.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/tech.h?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/common/tech.h (original)
+++ trunk/common/tech.h Mon Jul 25 15:06:59 2016
@@ -118,6 +118,7 @@
   int idx;
   struct name_translation name;
   bool disabled;
+  int cost_pct;
 };
 
 struct advance {

Modified: trunk/data/alien/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/alien/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/alien/techs.ruleset      (original)
+++ trunk/data/alien/techs.ruleset      Mon Jul 25 15:06:59 2016
@@ -36,6 +36,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/data/civ1/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ1/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/civ1/techs.ruleset       (original)
+++ trunk/data/civ1/techs.ruleset       Mon Jul 25 15:06:59 2016
@@ -32,6 +32,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/data/civ2/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/civ2/techs.ruleset       (original)
+++ trunk/data/civ2/techs.ruleset       Mon Jul 25 15:06:59 2016
@@ -32,6 +32,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/data/civ2civ3/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2civ3/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/civ2civ3/techs.ruleset   (original)
+++ trunk/data/civ2civ3/techs.ruleset   Mon Jul 25 15:06:59 2016
@@ -32,6 +32,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/data/classic/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/classic/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/classic/techs.ruleset    (original)
+++ trunk/data/classic/techs.ruleset    Mon Jul 25 15:06:59 2016
@@ -32,6 +32,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/data/experimental/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/experimental/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/experimental/techs.ruleset       (original)
+++ trunk/data/experimental/techs.ruleset       Mon Jul 25 15:06:59 2016
@@ -34,6 +34,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/data/multiplayer/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/multiplayer/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/multiplayer/techs.ruleset        (original)
+++ trunk/data/multiplayer/techs.ruleset        Mon Jul 25 15:06:59 2016
@@ -32,6 +32,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/data/ruledit/comments.txt
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/ruledit/comments.txt?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/ruledit/comments.txt     (original)
+++ trunk/data/ruledit/comments.txt     Mon Jul 25 15:06:59 2016
@@ -78,6 +78,8 @@
 ; name                    = translatable name as seen by user\n\
 ; rule_name               = (optional) name for rulesets etc; if not\n\
 ;                           present, 'name' is used.\n\
+; cost_pct                = how much techs of the class cost compared\n\
+;                           to normal. Default is 100%.\n\
 ;\n\
 ; */ <-- avoid gettext warnings\n\
 "

Modified: trunk/data/sandbox/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/sandbox/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/sandbox/techs.ruleset    (original)
+++ trunk/data/sandbox/techs.ruleset    Mon Jul 25 15:06:59 2016
@@ -32,6 +32,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/data/stub/techs.ruleset
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/data/stub/techs.ruleset?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/data/stub/techs.ruleset       (original)
+++ trunk/data/stub/techs.ruleset       Mon Jul 25 15:06:59 2016
@@ -26,6 +26,8 @@
 ; name                    = translatable name as seen by user
 ; rule_name               = (optional) name for rulesets etc; if not
 ;                           present, 'name' is used.
+; cost_pct                = how much techs of the class cost compared
+;                           to normal. Default is 100%.
 ;
 ; */ <-- avoid gettext warnings
 

Modified: trunk/fc_version
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/fc_version?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/fc_version    (original)
+++ trunk/fc_version    Mon Jul 25 15:06:59 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.Jul.20"
+NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-3.0-2016.Jul.25"
 NETWORK_CAPSTRING_OPTIONAL=""
 
 FREECIV_DISTRIBUTOR=""

Modified: trunk/server/ruleset.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/ruleset.c?rev=33324&r1=33323&r2=33324&view=diff
==============================================================================
--- trunk/server/ruleset.c      (original)
+++ trunk/server/ruleset.c      Mon Jul 25 15:06:59 2016
@@ -1230,6 +1230,18 @@
   const char *filename = secfile_name(file);
   bool ok = TRUE;
 
+  sec = secfile_sections_by_name_prefix(file, TECH_CLASS_SECTION_PREFIX);
+
+  i = 0;
+  tech_class_iterate(ptclass) {
+    const char *sec_name = section_name(section_list_get(sec, i));
+
+    ptclass->cost_pct = secfile_lookup_int_default(file, 100, "%s.%s",
+                                                   sec_name, "cost_pct");
+
+    i++;
+  } tech_class_iterate_end;
+
   sec = secfile_sections_by_name_prefix(file, ADVANCE_SECTION_PREFIX);
 
   i = 0;
@@ -1327,7 +1339,7 @@
     a->cost = secfile_lookup_int_default(file, -1, "%s.%s",
                                          sec_name, "cost");
     a->num_reqs = 0;
-    
+
     i++;
   } advance_iterate_end;
 
@@ -6718,6 +6730,7 @@
     packet.id = ptclass->idx;
     sz_strlcpy(packet.name, untranslated_name(&ptclass->name));
     sz_strlcpy(packet.rule_name, rule_name_get(&ptclass->name));
+    packet.cost_pct = ptclass->cost_pct;
 
     lsend_packet_ruleset_tech_class(dest, &packet);
   } tech_class_iterate_end;


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

Reply via email to