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