Freeciv-3.3
Loading...
Searching...
No Matches
comments.c
Go to the documentation of this file.
1/***********************************************************************
2 Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2, or (at your option)
6 any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12***********************************************************************/
13
14#ifdef HAVE_CONFIG_H
15#include <fc_config.h>
16#endif
17
18/* utility */
19#include "mem.h"
20#include "registry.h"
21#include "section_file.h"
22
23#include "comments.h"
24
25static struct {
26 /* Comment sections */
28 char *buildings;
30 char *techs;
31 char *govs;
32 char *policies;
33 char *uclasses;
34 char *utypes;
35 char *terrains;
36 char *resources;
37 char *extras;
38 char *bases;
39 char *roads;
40 char *styles;
43 char *effects;
44 char *ueffs;
45 char *disasters;
54 char *goods;
55 char *enablers;
57 char *nations;
60 char *clauses;
61 char *counters;
62
63 /* Other section entries */
65
66 /* Comment entries */
102
103/**********************************************************************/
107{
109 const char *fullpath;
110
112
113 if (fullpath == NULL) {
114 log_normal("Can't find the comments file");
115 return FALSE;
116 }
117
119 if (comment_file == NULL) {
120 log_normal("Can't parse the comments file");
121 return FALSE;
122 }
123
124#define comment_load(target, comment_file, comment_path) \
125{ \
126 const char *comment; \
127 \
128 if ((comment = secfile_lookup_str(comment_file, comment_path))) { \
129 target = fc_strdup(comment); \
130 } else { \
131 log_normal("Can't read %s from comments file", comment_path); \
132 return FALSE; \
133 } \
134}
135
136 comment_load(comments_storage.file_header, comment_file, "common.header");
138 comment_file, "typedoc.buildings");
139 comment_load(comments_storage.tech_classes,
140 comment_file, "typedoc.tech_classes");
141 comment_load(comments_storage.techs, comment_file, "typedoc.techs");
142 comment_load(comments_storage.govs, comment_file, "typedoc.governments");
143 comment_load(comments_storage.policies, comment_file, "typedoc.policies");
144 comment_load(comments_storage.uclasses, comment_file, "typedoc.uclasses");
145 comment_load(comments_storage.utypes, comment_file, "typedoc.utypes");
146 comment_load(comments_storage.terrains, comment_file, "typedoc.terrains");
148 comment_file, "typedoc.resources");
149 comment_load(comments_storage.extras, comment_file, "typedoc.extras");
150 comment_load(comments_storage.bases, comment_file, "typedoc.bases");
151 comment_load(comments_storage.roads, comment_file, "typedoc.roads");
152 comment_load(comments_storage.styles, comment_file, "typedoc.styles");
154 comment_file, "typedoc.citystyles");
155 comment_load(comments_storage.musicstyles,
156 comment_file, "typedoc.musicstyles");
157 comment_load(comments_storage.effects, comment_file, "typedoc.effects");
158 comment_load(comments_storage.ueffs, comment_file, "typedoc.ueffs");
160 comment_file, "typedoc.disasters");
161 comment_load(comments_storage.achievements,
162 comment_file, "typedoc.achievements");
163 comment_load(comments_storage.uflags_utype,
164 comment_file, "uflag_types.utype");
165 comment_load(comments_storage.uflags_uclass,
166 comment_file, "uflag_types.uclass");
167 comment_load(comments_storage.uflags_terrain,
168 comment_file, "uflag_types.terrain");
169 comment_load(comments_storage.uflags_extra,
170 comment_file, "uflag_types.extra");
171 comment_load(comments_storage.uflags_tech,
172 comment_file, "uflag_types.tech");
173 comment_load(comments_storage.uflags_building,
174 comment_file, "uflag_types.building");
175 comment_load(comments_storage.trade_settings,
176 comment_file, "typedoc.trade_settings");
177 comment_load(comments_storage.goods, comment_file, "typedoc.goods");
178 comment_load(comments_storage.enablers, comment_file, "typedoc.enablers");
179 comment_load(comments_storage.specialists,
180 comment_file, "typedoc.specialists");
181 comment_load(comments_storage.nations, comment_file, "typedoc.nations");
182 comment_load(comments_storage.nationgroups,
183 comment_file, "typedoc.nationgroups");
185 comment_file, "typedoc.nationsets");
186 comment_load(comments_storage.clauses, comment_file, "typedoc.clauses");
188 "typedoc.counters");
189
191 "sectiondoc.nations_ruledit");
192
194 "entrydoc.granary");
195 comment_load(comments_storage.civstyle_ransom_gold, comment_file,
196 "entrydoc.ransom_gold");
197 comment_load(comments_storage.civstyle_gameloss_style, comment_file,
198 "entrydoc.gameloss_style");
199 comment_load(comments_storage.civstyle_gold_upkeep_style, comment_file,
200 "entrydoc.gold_upkeep_style");
201 comment_load(comments_storage.civstyle_homeless_gold_upkeep, comment_file,
202 "entrydoc.homeless_gold_upkeep");
203 comment_load(comments_storage.civstyle_airlift_always, comment_file,
204 "entrydoc.airlift_always_enabled");
205 comment_load(comments_storage.wonder_visibility_small_wonders, comment_file,
206 "entrydoc.wv_small_wonders");
208 "entrydoc.incite_cost");
209 comment_load(comments_storage.combat_rules_tired_attack, comment_file,
210 "entrydoc.tired_attack");
211 comment_load(comments_storage.combat_rules_only_killing_veteran, comment_file,
212 "entrydoc.only_killing_makes_veteran");
213 comment_load(comments_storage.combat_rules_only_real_fight_veteran, comment_file,
214 "entrydoc.only_real_fight_makes_veteran");
215 comment_load(comments_storage.combat_rules_scaled_veterancy, comment_file,
216 "entrydoc.combat_odds_scaled_veterancy");
217 comment_load(comments_storage.combat_rules_damage_reduces_bombard_rate, comment_file,
218 "entrydoc.damage_reduces_bombard_rate");
219 comment_load(comments_storage.combat_rules_low_fp_badwallattacker, comment_file,
220 "entrydoc.low_firepower_badwallattacker");
221 comment_load(comments_storage.combat_rules_low_fp_pearl_harbour, comment_file,
222 "entrydoc.low_firepower_pearl_harbour");
223 comment_load(comments_storage.combat_rules_low_fp_combat_bonus, comment_file,
224 "entrydoc.low_firepower_combat_bonus");
225 comment_load(comments_storage.combat_rules_low_fp_nonnat_bombard, comment_file,
226 "entrydoc.low_firepower_nonnat_bombard");
227 comment_load(comments_storage.combat_rules_nuke_pop_loss, comment_file,
228 "entrydoc.nuke_pop_loss_pct");
229 comment_load(comments_storage.combat_rules_nuke_defender_survival,
231 "entrydoc.nuke_defender_survival_chance_pct");
233 "entrydoc.auto_attack");
235 "entrydoc.ui_names");
236 comment_load(comments_storage.actions_dc_initial_odds, comment_file,
237 "entrydoc.dc_initial_odds");
238 comment_load(comments_storage.actions_quiet_actions, comment_file,
239 "entrydoc.quiet_actions");
240 comment_load(comments_storage.borders_radius_permanent, comment_file,
241 "entrydoc.radius_permanent");
242 comment_load(comments_storage.research_tech_cost_style, comment_file,
243 "entrydoc.tech_cost_style");
244 comment_load(comments_storage.research_base_tech_cost, comment_file,
245 "entrydoc.base_tech_cost");
246 comment_load(comments_storage.research_min_tech_cost, comment_file,
247 "entrydoc.min_tech_cost");
248 comment_load(comments_storage.research_tech_leakage, comment_file,
249 "entrydoc.tech_leakage");
250 comment_load(comments_storage.research_upkeep_style, comment_file,
251 "entrydoc.tech_upkeep_style");
252 comment_load(comments_storage.research_free_tech_method, comment_file,
253 "entrydoc.free_tech_method");
254 comment_load(comments_storage.culture_history_interest, comment_file,
255 "entrydoc.history_interest_pml");
256 comment_load(comments_storage.culture_migration_pml, comment_file,
257 "entrydoc.migration_pml");
258 comment_load(comments_storage.world_peace_turns, comment_file,
259 "entrydoc.world_peace_turns");
260 comment_load(comments_storage.calendar_fragments, comment_file,
261 "entrydoc.calendar_fragments");
262
265
266 return TRUE;
267}
268
269/**********************************************************************/
273{
274 free(comments_storage.file_header);
275}
276
277/**********************************************************************/
280static void comment_write(struct section_file *sfile, const char *comment,
281 const char *name)
282{
283 if (comment == NULL) {
284 log_error("Comment for %s missing.", name);
285 return;
286 }
287
288 secfile_insert_long_comment(sfile, comment);
289}
290
291/**********************************************************************/
294static void comment_entry_write(struct section_file *sfile,
295 const char *comment, const char *section)
296{
297 if (comment == NULL) {
298 log_error("Comment to section %s missing.", section);
299 return;
300 }
301
302 secfile_insert_comment(sfile, comment, "%s", section);
303}
304
305/**********************************************************************/
309{
310 comment_write(sfile, comments_storage.file_header, "File header");
311}
312
313/**********************************************************************/
317{
318 comment_write(sfile, comments_storage.buildings, "Buildings");
319}
320
321/**********************************************************************/
325{
326 comment_write(sfile, comments_storage.tech_classes, "Tech Classes");
327}
328
329/**********************************************************************/
332void comment_techs(struct section_file *sfile)
333{
334 comment_write(sfile, comments_storage.techs, "Techs");
335}
336
337/**********************************************************************/
340void comment_govs(struct section_file *sfile)
341{
342 comment_write(sfile, comments_storage.govs, "Governments");
343}
344
345/**********************************************************************/
349{
350 comment_write(sfile, comments_storage.policies, "Policies");
351}
352
353/**********************************************************************/
357{
358 comment_write(sfile, comments_storage.uclasses, "Unit classes");
359}
360
361/**********************************************************************/
364void comment_utypes(struct section_file *sfile)
365{
366 comment_write(sfile, comments_storage.utypes, "Unit types");
367}
368
369/**********************************************************************/
373{
374 comment_write(sfile, comments_storage.terrains, "Terrains");
375}
376
377/**********************************************************************/
381{
382 comment_write(sfile, comments_storage.resources, "Resources");
383}
384
385/**********************************************************************/
388void comment_extras(struct section_file *sfile)
389{
390 comment_write(sfile, comments_storage.extras, "Extras");
391}
392
393/**********************************************************************/
396void comment_bases(struct section_file *sfile)
397{
398 comment_write(sfile, comments_storage.bases, "Bases");
399}
400
401/**********************************************************************/
404void comment_roads(struct section_file *sfile)
405{
406 comment_write(sfile, comments_storage.roads, "Roads");
407}
408
409/**********************************************************************/
412void comment_styles(struct section_file *sfile)
413{
414 comment_write(sfile, comments_storage.styles, "Styles");
415}
416
417/**********************************************************************/
421{
422 comment_write(sfile, comments_storage.citystyles, "City Styles");
423}
424
425/**********************************************************************/
429{
430 comment_write(sfile, comments_storage.musicstyles, "Music Styles");
431}
432
433/**********************************************************************/
436void comment_effects(struct section_file *sfile)
437{
438 comment_write(sfile, comments_storage.effects, "Effects");
439}
440
441/**********************************************************************/
444void comment_ueffs(struct section_file *sfile)
445{
446 comment_write(sfile, comments_storage.ueffs, "User Effects");
447}
448
449/**********************************************************************/
453{
454 comment_write(sfile, comments_storage.disasters, "Disasters");
455}
456
457/**********************************************************************/
461{
462 comment_write(sfile, comments_storage.achievements, "Achievements");
463}
464
465/**********************************************************************/
469{
470 comment_entry_write(sfile, comments_storage.uflags_utype, "control");
471}
472
473/**********************************************************************/
477{
478 comment_entry_write(sfile, comments_storage.uflags_uclass, "control");
479}
480
481/**********************************************************************/
485{
486 comment_entry_write(sfile, comments_storage.uflags_terrain, "control");
487}
488
489/**********************************************************************/
493{
494 comment_entry_write(sfile, comments_storage.uflags_extra, "control");
495}
496
497/**********************************************************************/
501{
502 comment_entry_write(sfile, comments_storage.uflags_tech, "control");
503}
504
505/**********************************************************************/
509{
510 comment_entry_write(sfile, comments_storage.uflags_building, "control");
511}
512
513/**********************************************************************/
517{
518 comment_write(sfile, comments_storage.trade_settings, "Trade settings");
519}
520
521/**********************************************************************/
524void comment_goods(struct section_file *sfile)
525{
526 comment_write(sfile, comments_storage.goods, "Goods");
527}
528
529/**********************************************************************/
533{
534 comment_write(sfile, comments_storage.enablers, "Action Enablers");
535}
536
537/**********************************************************************/
541{
542 comment_write(sfile, comments_storage.specialists, "Specialists");
543}
544
545/**********************************************************************/
548void comment_nations(struct section_file *sfile)
549{
550 comment_write(sfile, comments_storage.nations, "Nations");
551}
552
553/**********************************************************************/
557{
558 comment_write(sfile, comments_storage.nationgroups, "Nationgroups");
559}
560
561/**********************************************************************/
565{
566 comment_write(sfile, comments_storage.nationsets, "Nationsets");
567}
568
569/**********************************************************************/
572void comment_clauses(struct section_file *sfile)
573{
574 comment_write(sfile, comments_storage.clauses, "Clauses");
575}
576
577/**********************************************************************/
581{
582 comment_write(sfile, comments_storage.counters,
583 "counters");
584}
585
586/**********************************************************************/
590{
591 comment_write(sfile, comments_storage.nations_ruledit, "Ruledit");
592}
593
594/**********************************************************************/
598{
599 comment_entry_write(sfile, comments_storage.civstyle_granary,
600 "civstyle");
601}
602
603/**********************************************************************/
607{
608 comment_entry_write(sfile, comments_storage.civstyle_ransom_gold,
609 "civstyle");
610}
611
612/**********************************************************************/
616{
617 comment_entry_write(sfile, comments_storage.civstyle_gameloss_style,
618 "civstyle");
619}
620
621/**********************************************************************/
625{
626 comment_entry_write(sfile, comments_storage.civstyle_gold_upkeep_style,
627 "civstyle");
628}
629
630/**********************************************************************/
634{
635 comment_entry_write(sfile, comments_storage.civstyle_homeless_gold_upkeep,
636 "civstyle");
637}
638
639/**********************************************************************/
643{
644 comment_entry_write(sfile, comments_storage.civstyle_airlift_always,
645 "civstyle");
646}
647
648/**********************************************************************/
652{
653 comment_entry_write(sfile, comments_storage.wonder_visibility_small_wonders,
654 "wonder_visibility");
655}
656
657/**********************************************************************/
661{
662 comment_entry_write(sfile, comments_storage.incite_cost,
663 "incite_cost");
664}
665
666/**********************************************************************/
670{
671 comment_entry_write(sfile, comments_storage.combat_rules_tired_attack,
672 "combat_rules");
673}
674
675/**********************************************************************/
679{
681 comments_storage.combat_rules_only_killing_veteran,
682 "combat_rules");
683}
684
685/**********************************************************************/
689{
691 comments_storage.combat_rules_only_real_fight_veteran,
692 "combat_rules");
693}
694
695/**********************************************************************/
699{
701 comments_storage.combat_rules_scaled_veterancy,
702 "combat_rules");
703}
704
705/**********************************************************************/
709{
711 comments_storage.combat_rules_damage_reduces_bombard_rate,
712 "combat_rules");
713}
714
715/**********************************************************************/
719{
721 comments_storage.combat_rules_low_fp_badwallattacker,
722 "combat_rules");
723}
724
725/**********************************************************************/
729{
731 comments_storage.combat_rules_low_fp_pearl_harbour,
732 "combat_rules");
733}
734
735/**********************************************************************/
739{
741 comments_storage.combat_rules_low_fp_combat_bonus,
742 "combat_rules");
743}
744
745/**********************************************************************/
749{
751 comments_storage.combat_rules_low_fp_nonnat_bombard,
752 "combat_rules");
753}
754
755/**********************************************************************/
759{
760 comment_entry_write(sfile, comments_storage.combat_rules_nuke_pop_loss,
761 "combat_rules");
762}
763
764/**********************************************************************/
768{
770 comments_storage.combat_rules_nuke_defender_survival,
771 "combat_rules");
772}
773
774/**********************************************************************/
778{
779 comment_entry_write(sfile, comments_storage.auto_attack, "auto_attack");
780}
781
782/**********************************************************************/
786{
787 comment_entry_write(sfile, comments_storage.actions_ui_names, "actions");
788}
789
790/**********************************************************************/
794{
795 comment_entry_write(sfile, comments_storage.actions_dc_initial_odds,
796 "actions");
797}
798
799/**********************************************************************/
803{
804 comment_entry_write(sfile, comments_storage.actions_quiet_actions,
805 "actions");
806}
807
808/**********************************************************************/
812{
813 comment_entry_write(sfile, comments_storage.borders_radius_permanent,
814 "borders");
815}
816
817/**********************************************************************/
821{
822 comment_entry_write(sfile, comments_storage.research_tech_cost_style,
823 "research");
824}
825
826/**********************************************************************/
830{
831 comment_entry_write(sfile, comments_storage.research_base_tech_cost,
832 "research");
833}
834
835/**********************************************************************/
839{
840 comment_entry_write(sfile, comments_storage.research_min_tech_cost,
841 "research");
842}
843
844/**********************************************************************/
848{
849 comment_entry_write(sfile, comments_storage.research_tech_leakage,
850 "research");
851}
852
853/**********************************************************************/
857{
858 comment_entry_write(sfile, comments_storage.research_upkeep_style,
859 "research");
860}
861
862/**********************************************************************/
866{
867 comment_entry_write(sfile, comments_storage.research_free_tech_method,
868 "research");
869}
870
871/**********************************************************************/
875{
876 comment_entry_write(sfile, comments_storage.culture_history_interest,
877 "culture");
878}
879
880/**********************************************************************/
884{
885 comment_entry_write(sfile, comments_storage.culture_migration_pml,
886 "culture");
887}
888
889/**********************************************************************/
893{
894 comment_entry_write(sfile, comments_storage.world_peace_turns,
895 "world_peace");
896}
897
898/**********************************************************************/
902{
903 comment_entry_write(sfile, comments_storage.calendar_fragments,
904 "calendar");
905}
void comments_free(void)
Definition comments.c:272
char * calendar_fragments
Definition comments.c:100
char * nationgroups
Definition comments.c:58
void comment_borders_radius_permanent(struct section_file *sfile)
Definition comments.c:811
char * uflags_building
Definition comments.c:52
void comment_uflags_utype(struct section_file *sfile)
Definition comments.c:468
void comment_uflags_uclass(struct section_file *sfile)
Definition comments.c:476
char * resources
Definition comments.c:36
void comment_world_peace_turns(struct section_file *sfile)
Definition comments.c:892
char * combat_rules_low_fp_combat_bonus
Definition comments.c:82
char * nations_ruledit
Definition comments.c:64
void comment_combat_rules_nuke_defender_survival(struct section_file *sfile)
Definition comments.c:767
void comment_roads(struct section_file *sfile)
Definition comments.c:404
void comment_civstyle_granary(struct section_file *sfile)
Definition comments.c:597
char * uflags_terrain
Definition comments.c:49
void comment_research_tech_leakage(struct section_file *sfile)
Definition comments.c:847
void comment_actions_ui_names(struct section_file *sfile)
Definition comments.c:785
void comment_uclasses(struct section_file *sfile)
Definition comments.c:356
void comment_uflags_extra(struct section_file *sfile)
Definition comments.c:492
char * goods
Definition comments.c:54
char * culture_history_interest
Definition comments.c:97
char * specialists
Definition comments.c:56
char * achievements
Definition comments.c:46
char * terrains
Definition comments.c:35
void comment_calendar_fragments(struct section_file *sfile)
Definition comments.c:901
void comment_actions_quiet_actions(struct section_file *sfile)
Definition comments.c:802
void comment_uflags_terrain(struct section_file *sfile)
Definition comments.c:484
char * combat_rules_only_killing_veteran
Definition comments.c:76
char * combat_rules_tired_attack
Definition comments.c:75
char * civstyle_ransom_gold
Definition comments.c:68
char * styles
Definition comments.c:40
char * combat_rules_low_fp_pearl_harbour
Definition comments.c:81
char * combat_rules_only_real_fight_veteran
Definition comments.c:77
char * civstyle_airlift_always
Definition comments.c:72
void comment_citystyles(struct section_file *sfile)
Definition comments.c:420
char * extras
Definition comments.c:37
char * civstyle_gold_upkeep_style
Definition comments.c:70
void comment_govs(struct section_file *sfile)
Definition comments.c:340
void comment_combat_rules_low_fp_pearl_harbour(struct section_file *sfile)
Definition comments.c:728
char * enablers
Definition comments.c:55
void comment_research_base_tech_cost(struct section_file *sfile)
Definition comments.c:829
char * world_peace_turns
Definition comments.c:99
void comment_research_tech_cost_style(struct section_file *sfile)
Definition comments.c:820
char * actions_quiet_actions
Definition comments.c:89
void comment_combat_rules_only_killing_veteran(struct section_file *sfile)
Definition comments.c:678
char * research_base_tech_cost
Definition comments.c:92
void comment_bases(struct section_file *sfile)
Definition comments.c:396
void comment_terrains(struct section_file *sfile)
Definition comments.c:372
void comment_uflags_tech(struct section_file *sfile)
Definition comments.c:500
char * file_header
Definition comments.c:27
static void comment_write(struct section_file *sfile, const char *comment, const char *name)
Definition comments.c:280
void comment_file_header(struct section_file *sfile)
Definition comments.c:308
char * policies
Definition comments.c:32
void comment_effects(struct section_file *sfile)
Definition comments.c:436
char * actions_ui_names
Definition comments.c:87
void comment_actions_dc_initial_odds(struct section_file *sfile)
Definition comments.c:793
char * effects
Definition comments.c:43
char * civstyle_granary
Definition comments.c:67
void comment_combat_rules_scaled_veterancy(struct section_file *sfile)
Definition comments.c:698
void comment_research_upkeep_style(struct section_file *sfile)
Definition comments.c:856
void comment_disasters(struct section_file *sfile)
Definition comments.c:452
void comment_clauses(struct section_file *sfile)
Definition comments.c:572
void comment_goods(struct section_file *sfile)
Definition comments.c:524
char * uflags_tech
Definition comments.c:51
char * combat_rules_damage_reduces_bombard_rate
Definition comments.c:79
char * research_min_tech_cost
Definition comments.c:93
char * combat_rules_low_fp_nonnat_bombard
Definition comments.c:83
void comment_civstyle_gameloss_style(struct section_file *sfile)
Definition comments.c:615
char * uflags_extra
Definition comments.c:50
void comment_civstyle_gold_upkeep_style(struct section_file *sfile)
Definition comments.c:624
void comment_extras(struct section_file *sfile)
Definition comments.c:388
char * utypes
Definition comments.c:34
void comment_combat_rules_low_fp_nonnat_bombard(struct section_file *sfile)
Definition comments.c:748
char * clauses
Definition comments.c:60
void comment_ueffs(struct section_file *sfile)
Definition comments.c:444
char * nationsets
Definition comments.c:59
void comment_techs(struct section_file *sfile)
Definition comments.c:332
void comment_nations(struct section_file *sfile)
Definition comments.c:548
char * counters
Definition comments.c:61
void comment_trade_settings(struct section_file *sfile)
Definition comments.c:516
char * auto_attack
Definition comments.c:86
char * disasters
Definition comments.c:45
void comment_combat_rules_low_fp_combat_bonus(struct section_file *sfile)
Definition comments.c:738
char * research_tech_cost_style
Definition comments.c:91
void comment_nations_ruledit(struct section_file *sfile)
Definition comments.c:589
char * govs
Definition comments.c:31
void comment_civstyle_homeless_gold_upkeep(struct section_file *sfile)
Definition comments.c:633
void comment_nationgroups(struct section_file *sfile)
Definition comments.c:556
char * roads
Definition comments.c:39
static void comment_entry_write(struct section_file *sfile, const char *comment, const char *section)
Definition comments.c:294
char * bases
Definition comments.c:38
void comment_specialists(struct section_file *sfile)
Definition comments.c:540
char * combat_rules_nuke_pop_loss
Definition comments.c:84
char * ueffs
Definition comments.c:44
void comment_musicstyles(struct section_file *sfile)
Definition comments.c:428
char * research_upkeep_style
Definition comments.c:95
char * buildings
Definition comments.c:28
void comment_civstyle_airlift_always(struct section_file *sfile)
Definition comments.c:642
void comment_resources(struct section_file *sfile)
Definition comments.c:380
char * wonder_visibility_small_wonders
Definition comments.c:73
void comment_civstyle_ransom_gold(struct section_file *sfile)
Definition comments.c:606
void comment_tech_classes(struct section_file *sfile)
Definition comments.c:324
char * tech_classes
Definition comments.c:29
char * nations
Definition comments.c:57
void comment_culture_migration_pml(struct section_file *sfile)
Definition comments.c:883
void comment_combat_rules_only_real_fight_veteran(struct section_file *sfile)
Definition comments.c:688
char * uflags_uclass
Definition comments.c:48
void comment_research_free_tech_method(struct section_file *sfile)
Definition comments.c:865
char * borders_radius_permanent
Definition comments.c:90
void comment_combat_rules_nuke_pop_loss(struct section_file *sfile)
Definition comments.c:758
void comment_utypes(struct section_file *sfile)
Definition comments.c:364
char * uflags_utype
Definition comments.c:47
char * actions_dc_initial_odds
Definition comments.c:88
char * combat_rules_scaled_veterancy
Definition comments.c:78
#define comment_load(target, comment_file, comment_path)
void comment_research_min_tech_cost(struct section_file *sfile)
Definition comments.c:838
char * research_tech_leakage
Definition comments.c:94
bool comments_load(void)
Definition comments.c:106
char * civstyle_homeless_gold_upkeep
Definition comments.c:71
void comment_culture_history_interest(struct section_file *sfile)
Definition comments.c:874
char * musicstyles
Definition comments.c:42
char * culture_migration_pml
Definition comments.c:98
static struct @280 comments_storage
void comment_policies(struct section_file *sfile)
Definition comments.c:348
void comment_combat_rules_low_fp_badwallattacker(struct section_file *sfile)
Definition comments.c:718
void comment_achievements(struct section_file *sfile)
Definition comments.c:460
char * trade_settings
Definition comments.c:53
void comment_combat_rules_damage_reduces_bombard_rate(struct section_file *sfile)
Definition comments.c:708
char * combat_rules_low_fp_badwallattacker
Definition comments.c:80
char * citystyles
Definition comments.c:41
char * research_free_tech_method
Definition comments.c:96
void comment_counters(struct section_file *sfile)
Definition comments.c:580
void comment_styles(struct section_file *sfile)
Definition comments.c:412
void comment_combat_rules_tired_attack(struct section_file *sfile)
Definition comments.c:669
void comment_uflags_building(struct section_file *sfile)
Definition comments.c:508
char * techs
Definition comments.c:30
void comment_buildings(struct section_file *sfile)
Definition comments.c:316
void comment_enablers(struct section_file *sfile)
Definition comments.c:532
void comment_nationsets(struct section_file *sfile)
Definition comments.c:564
char * combat_rules_nuke_defender_survival
Definition comments.c:85
char * uclasses
Definition comments.c:33
void comment_wonder_visibility_small_wonders(struct section_file *sfile)
Definition comments.c:651
void comment_incite_cost(struct section_file *sfile)
Definition comments.c:660
void comment_auto_attack(struct section_file *sfile)
Definition comments.c:777
char * civstyle_gameloss_style
Definition comments.c:69
char * incite_cost
Definition comments.c:74
#define COMMENTS_FILE_NAME
Definition comments.h:20
const char * name
Definition inputfile.c:127
#define log_normal(message,...)
Definition log.h:107
#define log_error(message,...)
Definition log.h:103
struct section_file * secfile_load(const char *filename, bool allow_duplicates)
Definition registry.c:51
void secfile_destroy(struct section_file *secfile)
void secfile_check_unused(const struct section_file *secfile)
struct section * secfile_insert_long_comment(struct section_file *secfile, const char *comment)
struct entry * secfile_insert_comment(struct section_file *secfile, const char *str, const char *path,...)
const char * fileinfoname(const struct strvec *dirs, const char *filename)
Definition shared.c:1094
const struct strvec * get_data_dirs(void)
Definition shared.c:886
#define TRUE
Definition support.h:46
#define FALSE
Definition support.h:47