Freeciv-3.2
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 */
101
102/**********************************************************************/
106{
108 const char *fullpath;
109
111
112 if (fullpath == NULL) {
113 log_normal("Can't find the comments file");
114 return FALSE;
115 }
116
118 if (comment_file == NULL) {
119 log_normal("Can't parse the comments file");
120 return FALSE;
121 }
122
123#define comment_load(target, comment_file, comment_path) \
124{ \
125 const char *comment; \
126 \
127 if ((comment = secfile_lookup_str(comment_file, comment_path))) { \
128 target = fc_strdup(comment); \
129 } else { \
130 log_normal("Can't read %s from comments file", comment_path); \
131 return FALSE; \
132 } \
133}
134
135 comment_load(comments_storage.file_header, comment_file, "common.header");
137 comment_file, "typedoc.buildings");
138 comment_load(comments_storage.tech_classes,
139 comment_file, "typedoc.tech_classes");
140 comment_load(comments_storage.techs, comment_file, "typedoc.techs");
141 comment_load(comments_storage.govs, comment_file, "typedoc.governments");
142 comment_load(comments_storage.policies, comment_file, "typedoc.policies");
143 comment_load(comments_storage.uclasses, comment_file, "typedoc.uclasses");
144 comment_load(comments_storage.utypes, comment_file, "typedoc.utypes");
145 comment_load(comments_storage.terrains, comment_file, "typedoc.terrains");
147 comment_file, "typedoc.resources");
148 comment_load(comments_storage.extras, comment_file, "typedoc.extras");
149 comment_load(comments_storage.bases, comment_file, "typedoc.bases");
150 comment_load(comments_storage.roads, comment_file, "typedoc.roads");
151 comment_load(comments_storage.styles, comment_file, "typedoc.styles");
153 comment_file, "typedoc.citystyles");
154 comment_load(comments_storage.musicstyles,
155 comment_file, "typedoc.musicstyles");
156 comment_load(comments_storage.effects, comment_file, "typedoc.effects");
157 comment_load(comments_storage.ueffs, comment_file, "typedoc.ueffs");
159 comment_file, "typedoc.disasters");
160 comment_load(comments_storage.achievements,
161 comment_file, "typedoc.achievements");
162 comment_load(comments_storage.uflags_utype,
163 comment_file, "uflag_types.utype");
164 comment_load(comments_storage.uflags_uclass,
165 comment_file, "uflag_types.uclass");
166 comment_load(comments_storage.uflags_terrain,
167 comment_file, "uflag_types.terrain");
168 comment_load(comments_storage.uflags_extra,
169 comment_file, "uflag_types.extra");
170 comment_load(comments_storage.uflags_tech,
171 comment_file, "uflag_types.tech");
172 comment_load(comments_storage.uflags_building,
173 comment_file, "uflag_types.building");
174 comment_load(comments_storage.trade_settings,
175 comment_file, "typedoc.trade_settings");
176 comment_load(comments_storage.goods, comment_file, "typedoc.goods");
177 comment_load(comments_storage.enablers, comment_file, "typedoc.enablers");
178 comment_load(comments_storage.specialists,
179 comment_file, "typedoc.specialists");
180 comment_load(comments_storage.nations, comment_file, "typedoc.nations");
181 comment_load(comments_storage.nationgroups,
182 comment_file, "typedoc.nationgroups");
184 comment_file, "typedoc.nationsets");
185 comment_load(comments_storage.clauses, comment_file, "typedoc.clauses");
187 "typedoc.counters");
188
190 "sectiondoc.nations_ruledit");
191
193 "entrydoc.granary");
194 comment_load(comments_storage.civstyle_ransom_gold, comment_file,
195 "entrydoc.ransom_gold");
196 comment_load(comments_storage.civstyle_gameloss_style, comment_file,
197 "entrydoc.gameloss_style");
198 comment_load(comments_storage.civstyle_gold_upkeep_style, comment_file,
199 "entrydoc.gold_upkeep_style");
200 comment_load(comments_storage.civstyle_homeless_gold_upkeep, comment_file,
201 "entrydoc.homeless_gold_upkeep");
202 comment_load(comments_storage.civstyle_airlift_always, comment_file,
203 "entrydoc.airlift_always_enabled");
204 comment_load(comments_storage.wonder_visibility_small_wonders, comment_file,
205 "entrydoc.wv_small_wonders");
207 "entrydoc.incite_cost");
208 comment_load(comments_storage.combat_rules_tired_attack, comment_file,
209 "entrydoc.tired_attack");
210 comment_load(comments_storage.combat_rules_only_killing_veteran, comment_file,
211 "entrydoc.only_killing_makes_veteran");
212 comment_load(comments_storage.combat_rules_only_real_fight_veteran, comment_file,
213 "entrydoc.only_real_fight_makes_veteran");
214 comment_load(comments_storage.combat_rules_scaled_veterancy, comment_file,
215 "entrydoc.combat_odds_scaled_veterancy");
216 comment_load(comments_storage.combat_rules_damage_reduces_bombard_rate, comment_file,
217 "entrydoc.damage_reduces_bombard_rate");
218 comment_load(comments_storage.combat_rules_low_fp_badwallattacker, comment_file,
219 "entrydoc.low_firepower_badwallattacker");
220 comment_load(comments_storage.combat_rules_low_fp_pearl_harbour, comment_file,
221 "entrydoc.low_firepower_pearl_harbour");
222 comment_load(comments_storage.combat_rules_low_fp_combat_bonus, comment_file,
223 "entrydoc.low_firepower_combat_bonus");
224 comment_load(comments_storage.combat_rules_low_fp_nonnat_bombard, comment_file,
225 "entrydoc.low_firepower_nonnat_bombard");
226 comment_load(comments_storage.combat_rules_nuke_pop_loss, comment_file,
227 "entrydoc.nuke_pop_loss_pct");
228 comment_load(comments_storage.combat_rules_nuke_defender_survival,
230 "entrydoc.nuke_defender_survival_chance_pct");
232 "entrydoc.auto_attack");
234 "entrydoc.ui_names");
235 comment_load(comments_storage.actions_dc_initial_odds, comment_file,
236 "entrydoc.dc_initial_odds");
237 comment_load(comments_storage.actions_quiet_actions, comment_file,
238 "entrydoc.quiet_actions");
239 comment_load(comments_storage.borders_radius_permanent, comment_file,
240 "entrydoc.radius_permanent");
241 comment_load(comments_storage.research_tech_cost_style, comment_file,
242 "entrydoc.tech_cost_style");
243 comment_load(comments_storage.research_base_tech_cost, comment_file,
244 "entrydoc.base_tech_cost");
245 comment_load(comments_storage.research_min_tech_cost, comment_file,
246 "entrydoc.min_tech_cost");
247 comment_load(comments_storage.research_tech_leakage, comment_file,
248 "entrydoc.tech_leakage");
249 comment_load(comments_storage.research_upkeep_style, comment_file,
250 "entrydoc.tech_upkeep_style");
251 comment_load(comments_storage.research_free_tech_method, comment_file,
252 "entrydoc.free_tech_method");
253 comment_load(comments_storage.culture_history_interest, comment_file,
254 "entrydoc.history_interest_pml");
255 comment_load(comments_storage.culture_migration_pml, comment_file,
256 "entrydoc.migration_pml");
257 comment_load(comments_storage.calendar_fragments, comment_file,
258 "entrydoc.calendar_fragments");
259
262
263 return TRUE;
264}
265
266/**********************************************************************/
270{
271 free(comments_storage.file_header);
272}
273
274/**********************************************************************/
277static void comment_write(struct section_file *sfile, const char *comment,
278 const char *name)
279{
280 if (comment == NULL) {
281 log_error("Comment for %s missing.", name);
282 return;
283 }
284
285 secfile_insert_long_comment(sfile, comment);
286}
287
288/**********************************************************************/
291static void comment_entry_write(struct section_file *sfile,
292 const char *comment, const char *section)
293{
294 if (comment == NULL) {
295 log_error("Comment to section %s missing.", section);
296 return;
297 }
298
299 secfile_insert_comment(sfile, comment, "%s", section);
300}
301
302/**********************************************************************/
306{
307 comment_write(sfile, comments_storage.file_header, "File header");
308}
309
310/**********************************************************************/
314{
315 comment_write(sfile, comments_storage.buildings, "Buildings");
316}
317
318/**********************************************************************/
322{
323 comment_write(sfile, comments_storage.tech_classes, "Tech Classes");
324}
325
326/**********************************************************************/
329void comment_techs(struct section_file *sfile)
330{
331 comment_write(sfile, comments_storage.techs, "Techs");
332}
333
334/**********************************************************************/
337void comment_govs(struct section_file *sfile)
338{
339 comment_write(sfile, comments_storage.govs, "Governments");
340}
341
342/**********************************************************************/
346{
347 comment_write(sfile, comments_storage.policies, "Policies");
348}
349
350/**********************************************************************/
354{
355 comment_write(sfile, comments_storage.uclasses, "Unit classes");
356}
357
358/**********************************************************************/
361void comment_utypes(struct section_file *sfile)
362{
363 comment_write(sfile, comments_storage.utypes, "Unit types");
364}
365
366/**********************************************************************/
370{
371 comment_write(sfile, comments_storage.terrains, "Terrains");
372}
373
374/**********************************************************************/
378{
379 comment_write(sfile, comments_storage.resources, "Resources");
380}
381
382/**********************************************************************/
385void comment_extras(struct section_file *sfile)
386{
387 comment_write(sfile, comments_storage.extras, "Extras");
388}
389
390/**********************************************************************/
393void comment_bases(struct section_file *sfile)
394{
395 comment_write(sfile, comments_storage.bases, "Bases");
396}
397
398/**********************************************************************/
401void comment_roads(struct section_file *sfile)
402{
403 comment_write(sfile, comments_storage.roads, "Roads");
404}
405
406/**********************************************************************/
409void comment_styles(struct section_file *sfile)
410{
411 comment_write(sfile, comments_storage.styles, "Styles");
412}
413
414/**********************************************************************/
418{
419 comment_write(sfile, comments_storage.citystyles, "City Styles");
420}
421
422/**********************************************************************/
426{
427 comment_write(sfile, comments_storage.musicstyles, "Music Styles");
428}
429
430/**********************************************************************/
433void comment_effects(struct section_file *sfile)
434{
435 comment_write(sfile, comments_storage.effects, "Effects");
436}
437
438/**********************************************************************/
441void comment_ueffs(struct section_file *sfile)
442{
443 comment_write(sfile, comments_storage.ueffs, "User Effects");
444}
445
446/**********************************************************************/
450{
451 comment_write(sfile, comments_storage.disasters, "Disasters");
452}
453
454/**********************************************************************/
458{
459 comment_write(sfile, comments_storage.achievements, "Achievements");
460}
461
462/**********************************************************************/
466{
467 comment_entry_write(sfile, comments_storage.uflags_utype, "control");
468}
469
470/**********************************************************************/
474{
475 comment_entry_write(sfile, comments_storage.uflags_uclass, "control");
476}
477
478/**********************************************************************/
482{
483 comment_entry_write(sfile, comments_storage.uflags_terrain, "control");
484}
485
486/**********************************************************************/
490{
491 comment_entry_write(sfile, comments_storage.uflags_extra, "control");
492}
493
494/**********************************************************************/
498{
499 comment_entry_write(sfile, comments_storage.uflags_tech, "control");
500}
501
502/**********************************************************************/
506{
507 comment_entry_write(sfile, comments_storage.uflags_building, "control");
508}
509
510/**********************************************************************/
514{
515 comment_write(sfile, comments_storage.trade_settings, "Trade settings");
516}
517
518/**********************************************************************/
521void comment_goods(struct section_file *sfile)
522{
523 comment_write(sfile, comments_storage.goods, "Goods");
524}
525
526/**********************************************************************/
530{
531 comment_write(sfile, comments_storage.enablers, "Action Enablers");
532}
533
534/**********************************************************************/
538{
539 comment_write(sfile, comments_storage.specialists, "Specialists");
540}
541
542/**********************************************************************/
545void comment_nations(struct section_file *sfile)
546{
547 comment_write(sfile, comments_storage.nations, "Nations");
548}
549
550/**********************************************************************/
554{
555 comment_write(sfile, comments_storage.nationgroups, "Nationgroups");
556}
557
558/**********************************************************************/
562{
563 comment_write(sfile, comments_storage.nationsets, "Nationsets");
564}
565
566/**********************************************************************/
569void comment_clauses(struct section_file *sfile)
570{
571 comment_write(sfile, comments_storage.clauses, "Clauses");
572}
573
574/**********************************************************************/
578{
579 comment_write(sfile, comments_storage.counters,
580 "counters");
581}
582
583/**********************************************************************/
587{
588 comment_write(sfile, comments_storage.nations_ruledit, "Ruledit");
589}
590
591/**********************************************************************/
595{
596 comment_entry_write(sfile, comments_storage.civstyle_granary,
597 "civstyle");
598}
599
600/**********************************************************************/
604{
605 comment_entry_write(sfile, comments_storage.civstyle_ransom_gold,
606 "civstyle");
607}
608
609/**********************************************************************/
613{
614 comment_entry_write(sfile, comments_storage.civstyle_gameloss_style,
615 "civstyle");
616}
617
618/**********************************************************************/
622{
623 comment_entry_write(sfile, comments_storage.civstyle_gold_upkeep_style,
624 "civstyle");
625}
626
627/**********************************************************************/
631{
632 comment_entry_write(sfile, comments_storage.civstyle_homeless_gold_upkeep,
633 "civstyle");
634}
635
636/**********************************************************************/
640{
641 comment_entry_write(sfile, comments_storage.civstyle_airlift_always,
642 "civstyle");
643}
644
645/**********************************************************************/
649{
650 comment_entry_write(sfile, comments_storage.wonder_visibility_small_wonders,
651 "wonder_visibility");
652}
653
654/**********************************************************************/
658{
659 comment_entry_write(sfile, comments_storage.incite_cost,
660 "incite_cost");
661}
662
663/**********************************************************************/
667{
668 comment_entry_write(sfile, comments_storage.combat_rules_tired_attack,
669 "combat_rules");
670}
671
672/**********************************************************************/
676{
678 comments_storage.combat_rules_only_killing_veteran,
679 "combat_rules");
680}
681
682/**********************************************************************/
686{
688 comments_storage.combat_rules_only_real_fight_veteran,
689 "combat_rules");
690}
691
692/**********************************************************************/
696{
698 comments_storage.combat_rules_scaled_veterancy,
699 "combat_rules");
700}
701
702/**********************************************************************/
706{
708 comments_storage.combat_rules_damage_reduces_bombard_rate,
709 "combat_rules");
710}
711
712/**********************************************************************/
716{
718 comments_storage.combat_rules_low_fp_badwallattacker,
719 "combat_rules");
720}
721
722/**********************************************************************/
726{
728 comments_storage.combat_rules_low_fp_pearl_harbour,
729 "combat_rules");
730}
731
732/**********************************************************************/
736{
738 comments_storage.combat_rules_low_fp_combat_bonus,
739 "combat_rules");
740}
741
742/**********************************************************************/
746{
748 comments_storage.combat_rules_low_fp_nonnat_bombard,
749 "combat_rules");
750}
751
752/**********************************************************************/
756{
757 comment_entry_write(sfile, comments_storage.combat_rules_nuke_pop_loss,
758 "combat_rules");
759}
760
761/**********************************************************************/
765{
767 comments_storage.combat_rules_nuke_defender_survival,
768 "combat_rules");
769}
770
771/**********************************************************************/
775{
776 comment_entry_write(sfile, comments_storage.auto_attack, "auto_attack");
777}
778
779/**********************************************************************/
783{
784 comment_entry_write(sfile, comments_storage.actions_ui_names, "actions");
785}
786
787/**********************************************************************/
791{
792 comment_entry_write(sfile, comments_storage.actions_dc_initial_odds,
793 "actions");
794}
795
796/**********************************************************************/
800{
801 comment_entry_write(sfile, comments_storage.actions_quiet_actions,
802 "actions");
803}
804
805/**********************************************************************/
809{
810 comment_entry_write(sfile, comments_storage.borders_radius_permanent,
811 "borders");
812}
813
814/**********************************************************************/
818{
819 comment_entry_write(sfile, comments_storage.research_tech_cost_style,
820 "research");
821}
822
823/**********************************************************************/
827{
828 comment_entry_write(sfile, comments_storage.research_base_tech_cost,
829 "research");
830}
831
832/**********************************************************************/
836{
837 comment_entry_write(sfile, comments_storage.research_min_tech_cost,
838 "research");
839}
840
841/**********************************************************************/
845{
846 comment_entry_write(sfile, comments_storage.research_tech_leakage,
847 "research");
848}
849
850/**********************************************************************/
854{
855 comment_entry_write(sfile, comments_storage.research_upkeep_style,
856 "research");
857}
858
859/**********************************************************************/
863{
864 comment_entry_write(sfile, comments_storage.research_free_tech_method,
865 "research");
866}
867
868/**********************************************************************/
872{
873 comment_entry_write(sfile, comments_storage.culture_history_interest,
874 "culture");
875}
876/**********************************************************************/
880{
881 comment_entry_write(sfile, comments_storage.culture_migration_pml,
882 "culture");
883}
884
885/**********************************************************************/
889{
890 comment_entry_write(sfile, comments_storage.calendar_fragments,
891 "calendar");
892}
void comments_free(void)
Definition comments.c:269
char * calendar_fragments
Definition comments.c:99
char * nationgroups
Definition comments.c:58
void comment_borders_radius_permanent(struct section_file *sfile)
Definition comments.c:808
char * uflags_building
Definition comments.c:52
void comment_uflags_utype(struct section_file *sfile)
Definition comments.c:465
void comment_uflags_uclass(struct section_file *sfile)
Definition comments.c:473
char * resources
Definition comments.c:36
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:764
void comment_roads(struct section_file *sfile)
Definition comments.c:401
void comment_civstyle_granary(struct section_file *sfile)
Definition comments.c:594
char * uflags_terrain
Definition comments.c:49
void comment_research_tech_leakage(struct section_file *sfile)
Definition comments.c:844
void comment_actions_ui_names(struct section_file *sfile)
Definition comments.c:782
void comment_uclasses(struct section_file *sfile)
Definition comments.c:353
void comment_uflags_extra(struct section_file *sfile)
Definition comments.c:489
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:888
void comment_actions_quiet_actions(struct section_file *sfile)
Definition comments.c:799
void comment_uflags_terrain(struct section_file *sfile)
Definition comments.c:481
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:417
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:337
void comment_combat_rules_low_fp_pearl_harbour(struct section_file *sfile)
Definition comments.c:725
char * enablers
Definition comments.c:55
void comment_research_base_tech_cost(struct section_file *sfile)
Definition comments.c:826
void comment_research_tech_cost_style(struct section_file *sfile)
Definition comments.c:817
char * actions_quiet_actions
Definition comments.c:89
void comment_combat_rules_only_killing_veteran(struct section_file *sfile)
Definition comments.c:675
char * research_base_tech_cost
Definition comments.c:92
void comment_bases(struct section_file *sfile)
Definition comments.c:393
void comment_terrains(struct section_file *sfile)
Definition comments.c:369
void comment_uflags_tech(struct section_file *sfile)
Definition comments.c:497
char * file_header
Definition comments.c:27
static void comment_write(struct section_file *sfile, const char *comment, const char *name)
Definition comments.c:277
void comment_file_header(struct section_file *sfile)
Definition comments.c:305
char * policies
Definition comments.c:32
void comment_effects(struct section_file *sfile)
Definition comments.c:433
char * actions_ui_names
Definition comments.c:87
void comment_actions_dc_initial_odds(struct section_file *sfile)
Definition comments.c:790
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:695
void comment_research_upkeep_style(struct section_file *sfile)
Definition comments.c:853
void comment_disasters(struct section_file *sfile)
Definition comments.c:449
void comment_clauses(struct section_file *sfile)
Definition comments.c:569
void comment_goods(struct section_file *sfile)
Definition comments.c:521
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:612
char * uflags_extra
Definition comments.c:50
void comment_civstyle_gold_upkeep_style(struct section_file *sfile)
Definition comments.c:621
void comment_extras(struct section_file *sfile)
Definition comments.c:385
char * utypes
Definition comments.c:34
void comment_combat_rules_low_fp_nonnat_bombard(struct section_file *sfile)
Definition comments.c:745
char * clauses
Definition comments.c:60
void comment_ueffs(struct section_file *sfile)
Definition comments.c:441
char * nationsets
Definition comments.c:59
static struct @255 comments_storage
void comment_techs(struct section_file *sfile)
Definition comments.c:329
void comment_nations(struct section_file *sfile)
Definition comments.c:545
char * counters
Definition comments.c:61
void comment_trade_settings(struct section_file *sfile)
Definition comments.c:513
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:735
char * research_tech_cost_style
Definition comments.c:91
void comment_nations_ruledit(struct section_file *sfile)
Definition comments.c:586
char * govs
Definition comments.c:31
void comment_civstyle_homeless_gold_upkeep(struct section_file *sfile)
Definition comments.c:630
void comment_nationgroups(struct section_file *sfile)
Definition comments.c:553
char * roads
Definition comments.c:39
static void comment_entry_write(struct section_file *sfile, const char *comment, const char *section)
Definition comments.c:291
char * bases
Definition comments.c:38
void comment_specialists(struct section_file *sfile)
Definition comments.c:537
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:425
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:639
void comment_resources(struct section_file *sfile)
Definition comments.c:377
char * wonder_visibility_small_wonders
Definition comments.c:73
void comment_civstyle_ransom_gold(struct section_file *sfile)
Definition comments.c:603
void comment_tech_classes(struct section_file *sfile)
Definition comments.c:321
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:879
void comment_combat_rules_only_real_fight_veteran(struct section_file *sfile)
Definition comments.c:685
char * uflags_uclass
Definition comments.c:48
void comment_research_free_tech_method(struct section_file *sfile)
Definition comments.c:862
char * borders_radius_permanent
Definition comments.c:90
void comment_combat_rules_nuke_pop_loss(struct section_file *sfile)
Definition comments.c:755
void comment_utypes(struct section_file *sfile)
Definition comments.c:361
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:835
char * research_tech_leakage
Definition comments.c:94
bool comments_load(void)
Definition comments.c:105
char * civstyle_homeless_gold_upkeep
Definition comments.c:71
void comment_culture_history_interest(struct section_file *sfile)
Definition comments.c:871
char * musicstyles
Definition comments.c:42
char * culture_migration_pml
Definition comments.c:98
void comment_policies(struct section_file *sfile)
Definition comments.c:345
void comment_combat_rules_low_fp_badwallattacker(struct section_file *sfile)
Definition comments.c:715
void comment_achievements(struct section_file *sfile)
Definition comments.c:457
char * trade_settings
Definition comments.c:53
void comment_combat_rules_damage_reduces_bombard_rate(struct section_file *sfile)
Definition comments.c:705
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:577
void comment_styles(struct section_file *sfile)
Definition comments.c:409
void comment_combat_rules_tired_attack(struct section_file *sfile)
Definition comments.c:666
void comment_uflags_building(struct section_file *sfile)
Definition comments.c:505
char * techs
Definition comments.c:30
void comment_buildings(struct section_file *sfile)
Definition comments.c:313
void comment_enablers(struct section_file *sfile)
Definition comments.c:529
void comment_nationsets(struct section_file *sfile)
Definition comments.c:561
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:648
void comment_incite_cost(struct section_file *sfile)
Definition comments.c:657
void comment_auto_attack(struct section_file *sfile)
Definition comments.c:774
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:50
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:1101
const struct strvec * get_data_dirs(void)
Definition shared.c:893
#define TRUE
Definition support.h:46
#define FALSE
Definition support.h:47