Author: cazfi Date: Sat Jul 23 20:18:06 2016 New Revision: 33301 URL: http://svn.gna.org/viewcvs/freeciv?rev=33301&view=rev Log: Turned list of tech class names to tech class sections in the ruleset format
See patch #7428 Modified: 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/server/ruleset.c trunk/tools/ruleutil/comments.c trunk/tools/ruleutil/comments.h trunk/tools/ruleutil/rulesave.c Modified: trunk/common/tech.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/tech.h?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/common/tech.h (original) +++ trunk/common/tech.h Sat Jul 23 20:18:06 2016 @@ -173,6 +173,7 @@ void tech_classes_init(void); struct tech_class *tech_class_by_number(const int idx); +#define tech_class_index(_ptclass_) (_ptclass_)->idx const char *tech_class_name_translation(const struct tech_class *ptclass); const char *tech_class_rule_name(const struct tech_class *ptclass); struct tech_class *tech_class_by_rule_name(const char *name); Modified: trunk/data/alien/techs.ruleset URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/alien/techs.ruleset?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/alien/techs.ruleset (original) +++ trunk/data/alien/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -26,11 +26,21 @@ ; { "name", "helptxt" ; } - -; Names of the tech classes. Leave empty to have no tech classes. +; /* <-- avoid gettext warnings +; +; Tech classes: +; ; First one is the default one. -[classes] -; names = +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings + +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/data/civ1/techs.ruleset URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/civ1/techs.ruleset?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/civ1/techs.ruleset (original) +++ trunk/data/civ1/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -22,11 +22,21 @@ ; { "name", "helptxt" ; } - -; Names of the tech classes. Leave empty to have no tech classes. +; /* <-- avoid gettext warnings +; +; Tech classes: +; ; First one is the default one. -[classes] -; names = +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings + +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/data/civ2/techs.ruleset URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2/techs.ruleset?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/civ2/techs.ruleset (original) +++ trunk/data/civ2/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -22,11 +22,21 @@ ; { "name", "helptxt" ; } - -; Names of the tech classes. Leave empty to have no tech classes. +; /* <-- avoid gettext warnings +; +; Tech classes: +; ; First one is the default one. -[classes] -; names = +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings + +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/data/civ2civ3/techs.ruleset URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/civ2civ3/techs.ruleset?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/civ2civ3/techs.ruleset (original) +++ trunk/data/civ2civ3/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -22,11 +22,21 @@ ; { "name", "helptxt" ; } - -; Names of the tech classes. Leave empty to have no tech classes. +; /* <-- avoid gettext warnings +; +; Tech classes: +; ; First one is the default one. -[classes] -; names = +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings + +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/data/classic/techs.ruleset URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/classic/techs.ruleset?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/classic/techs.ruleset (original) +++ trunk/data/classic/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -22,10 +22,21 @@ ; { "name", "helptxt" ; } -; Names of the tech classes. Leave empty to have no tech classes. +; /* <-- avoid gettext warnings +; +; Tech classes: +; ; First one is the default one. -[classes] -; names = +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings + +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/data/experimental/techs.ruleset URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/experimental/techs.ruleset?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/experimental/techs.ruleset (original) +++ trunk/data/experimental/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -24,10 +24,21 @@ ; { "name", "helptxt" ; } -; Names of the tech classes. Leave empty to have no tech classes. +; /* <-- avoid gettext warnings +; +; Tech classes: +; ; First one is the default one. -[classes] -; names = +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings + +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/data/multiplayer/techs.ruleset URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/multiplayer/techs.ruleset?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/multiplayer/techs.ruleset (original) +++ trunk/data/multiplayer/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -22,11 +22,21 @@ ; { "name", "helptxt" ; } - -; Names of the tech classes. Leave empty to have no tech classes. +; /* <-- avoid gettext warnings +; +; Tech classes: +; ; First one is the default one. -[classes] -; names = +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings + +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/data/ruledit/comments.txt URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/ruledit/comments.txt?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/ruledit/comments.txt (original) +++ trunk/data/ruledit/comments.txt Sat Jul 23 20:18:06 2016 @@ -62,6 +62,22 @@ ; \"DisasterProof\" = Disasters never destroy this building. Is meaningful\n\ ; only for genus \"Improvement\" buildings as others are\n\ ; automatically disaster proof.\n\ +;\n\ +; */ <-- avoid gettext warnings\n\ +" + +tech_classes = "\ +\n\ +; /* <-- avoid gettext warnings\n\ +;\n\ +; Tech classes:\n\ +;\n\ +; First one is the default one.\n\ +; If there is none, tech classes feature is disabled\n\ +;\n\ +; name = translatable name as seen by user\n\ +; rule_name = (optional) name for rulesets etc; if not\n\ +; present, 'name' is used.\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=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/sandbox/techs.ruleset (original) +++ trunk/data/sandbox/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -22,11 +22,21 @@ ; { "name", "helptxt" ; } - -; Names of the tech classes. Leave empty to have no tech classes. +; /* <-- avoid gettext warnings +; +; Tech classes: +; ; First one is the default one. -[classes] -; names = +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings + +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/data/stub/techs.ruleset URL: http://svn.gna.org/viewcvs/freeciv/trunk/data/stub/techs.ruleset?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/data/stub/techs.ruleset (original) +++ trunk/data/stub/techs.ruleset Sat Jul 23 20:18:06 2016 @@ -16,11 +16,21 @@ ; { "name", "helptxt" ; } +; /* <-- avoid gettext warnings +; +; Tech classes: +; +; First one is the default one. +; If there is none, tech classes feature is disabled +; +; name = translatable name as seen by user +; rule_name = (optional) name for rulesets etc; if not +; present, 'name' is used. +; +; */ <-- avoid gettext warnings -; Names of the tech classes. Leave empty to have no tech classes. -; First one is the default one. -[classes] -; names = +;[techclass_default] +;name = ; /* <-- avoid gettext warnings ; Modified: trunk/server/ruleset.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/ruleset.c?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/server/ruleset.c (original) +++ trunk/server/ruleset.c Sat Jul 23 20:18:06 2016 @@ -83,6 +83,7 @@ #define SCRIPT_SUFFIX "lua" #define ADVANCE_SECTION_PREFIX "advance_" +#define TECH_CLASS_SECTION_PREFIX "techclass_" #define BUILDING_SECTION_PREFIX "building_" #define CITYSTYLE_SECTION_PREFIX "citystyle_" #define MUSICSTYLE_SECTION_PREFIX "musicstyle_" @@ -1145,10 +1146,44 @@ } if (ok) { + size_t nval; + for (; i < MAX_NUM_USER_TECH_FLAGS; i++) { set_user_tech_flag_name(TECH_USER_1 + i, NULL, NULL); } + /* Tech classes */ + sec = secfile_sections_by_name_prefix(file, TECH_CLASS_SECTION_PREFIX); + + nval = (NULL != sec ? section_list_size(sec) : 0); + if (nval > MAX_NUM_TECH_CLASSES) { + int num = nval; /* No "size_t" to printf */ + + ruleset_error(LOG_ERROR, + "\"%s\": Too many tech classes (%d, max %d)", + filename, num, MAX_NUM_TECH_CLASSES); + section_list_destroy(sec); + ok = FALSE; + } else { + game.control.num_tech_classes = nval; + } + + if (ok) { + tech_class_iterate(ptclass) { + const char *sec_name + = section_name(section_list_get(sec, tech_class_index(ptclass))); + + if (!ruleset_load_names(&ptclass->name, NULL, file, sec_name)) { + ruleset_error(LOG_ERROR, "\"%s\": Cannot load tech class names", + filename); + ok = FALSE; + break; + } + } tech_class_iterate_end; + } + } + + if (ok) { /* The techs: */ sec = secfile_sections_by_name_prefix(file, ADVANCE_SECTION_PREFIX); if (NULL == sec || 0 == (num_techs = section_list_size(sec))) { @@ -1194,17 +1229,6 @@ struct advance *a_none = advance_by_number(A_NONE); const char *filename = secfile_name(file); bool ok = TRUE; - - slist = secfile_lookup_str_vec(file, &nval, "classes.names"); - if (slist == NULL) { - game.control.num_tech_classes = 0; - } else { - game.control.num_tech_classes = nval; - for (i = 0; i < nval; i++) { - names_set(&(tech_class_by_number(i)->name), "freeciv", slist[i], slist[i]); - } - free(slist); - } sec = secfile_sections_by_name_prefix(file, ADVANCE_SECTION_PREFIX); Modified: trunk/tools/ruleutil/comments.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruleutil/comments.c?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/tools/ruleutil/comments.c (original) +++ trunk/tools/ruleutil/comments.c Sat Jul 23 20:18:06 2016 @@ -25,6 +25,7 @@ static struct { char *file_header; char *buildings; + char *tech_classes; char *techs; char *govs; char *policies; @@ -70,6 +71,7 @@ comments_storage.file_header = fc_strdup(secfile_lookup_str(comment_file, "common.header")); comments_storage.buildings = fc_strdup(secfile_lookup_str(comment_file, "typedoc.buildings")); + comments_storage.tech_classes = fc_strdup(secfile_lookup_str(comment_file, "typedoc.tech_classes")); comments_storage.techs = fc_strdup(secfile_lookup_str(comment_file, "typedoc.techs")); comments_storage.govs = fc_strdup(secfile_lookup_str(comment_file, "typedoc.governments")); comments_storage.policies = fc_strdup(secfile_lookup_str(comment_file, "typedoc.policies")); @@ -140,6 +142,14 @@ } /************************************************************************** + Write tech classess header. +**************************************************************************/ +void comment_tech_classes(struct section_file *sfile) +{ + comment_write(sfile, comments_storage.tech_classes, "Tech Classes"); +} + +/************************************************************************** Write techs header. **************************************************************************/ void comment_techs(struct section_file *sfile) Modified: trunk/tools/ruleutil/comments.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruleutil/comments.h?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/tools/ruleutil/comments.h (original) +++ trunk/tools/ruleutil/comments.h Sat Jul 23 20:18:06 2016 @@ -25,6 +25,7 @@ void comment_file_header(struct section_file *sfile); void comment_buildings(struct section_file *sfile); +void comment_tech_classes(struct section_file *sfile); void comment_techs(struct section_file *sfile); void comment_govs(struct section_file *sfile); void comment_policies(struct section_file *sfile); Modified: trunk/tools/ruleutil/rulesave.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruleutil/rulesave.c?rev=33301&r1=33300&r2=33301&view=diff ============================================================================== --- trunk/tools/ruleutil/rulesave.c (original) +++ trunk/tools/ruleutil/rulesave.c Sat Jul 23 20:18:06 2016 @@ -1743,17 +1743,16 @@ } } - if (game.control.num_tech_classes > 0) { - int ci; - const char *class_names[game.control.num_tech_classes]; - - for (ci = 0; ci < game.control.num_tech_classes; ci++) { - class_names[ci] = tech_class_rule_name(tech_class_by_number(ci)); - } - - secfile_insert_str_vec(sfile, class_names, ci, - "classes.names"); - } + comment_tech_classes(sfile); + + sect_idx = 0; + tech_class_iterate(ptclass) { + char path[512]; + + fc_snprintf(path, sizeof(path), "techclass_%d", sect_idx++); + + save_name_translation(sfile, &(ptclass->name), path); + } tech_class_iterate_end; comment_techs(sfile); _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits