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 "fcintl.h"
20#include "mem.h"
21#include "registry.h"
22#include "section_file.h"
23
24#include "comments.h"
25
26static struct {
27 /* Comment sections */
29 char *buildings;
31 char *techs;
32 char *govs;
33 char *policies;
34 char *uclasses;
35 char *utypes;
36 char *terrains;
37 char *resources;
38 char *extras;
39 char *bases;
40 char *roads;
41 char *styles;
44 char *effects;
45 char *ueffs;
46 char *disasters;
55 char *goods;
56 char *actions;
57 char *enablers;
59 char *nations;
62 char *clauses;
63 char *counters;
64
65 /* Other section entries */
67
68 /* Comment entries */
102
105
106/**********************************************************************/
110{
112 const char *fullpath;
113
115
116 if (fullpath == NULL) {
117 log_error(_("Can't find the comments file"));
118 return FALSE;
119 }
120
122 if (comment_file == NULL) {
123 log_error(_("Can't parse the comments file"));
124 return FALSE;
125 }
126
127#define comment_load(target, comment_file, comment_path) \
128{ \
129 const char *comment; \
130 \
131 if ((comment = secfile_lookup_str(comment_file, comment_path))) { \
132 target = fc_strdup(comment); \
133 } else { \
134 log_error(_("Can't read %s from comments file"), comment_path); \
135 return FALSE; \
136 } \
137}
138
139 comment_load(comments_storage.file_header, comment_file, "common.header");
141 comment_file, "typedoc.buildings");
142 comment_load(comments_storage.tech_classes,
143 comment_file, "typedoc.tech_classes");
144 comment_load(comments_storage.techs, comment_file, "typedoc.techs");
145 comment_load(comments_storage.govs, comment_file, "typedoc.governments");
146 comment_load(comments_storage.policies, comment_file, "typedoc.policies");
147 comment_load(comments_storage.uclasses, comment_file, "typedoc.uclasses");
148 comment_load(comments_storage.utypes, comment_file, "typedoc.utypes");
149 comment_load(comments_storage.terrains, comment_file, "typedoc.terrains");
151 comment_file, "typedoc.resources");
152 comment_load(comments_storage.extras, comment_file, "typedoc.extras");
153 comment_load(comments_storage.bases, comment_file, "typedoc.bases");
154 comment_load(comments_storage.roads, comment_file, "typedoc.roads");
155 comment_load(comments_storage.styles, comment_file, "typedoc.styles");
157 comment_file, "typedoc.citystyles");
158 comment_load(comments_storage.musicstyles,
159 comment_file, "typedoc.musicstyles");
160 comment_load(comments_storage.effects, comment_file, "typedoc.effects");
161 comment_load(comments_storage.ueffs, comment_file, "typedoc.ueffs");
163 comment_file, "typedoc.disasters");
164 comment_load(comments_storage.achievements,
165 comment_file, "typedoc.achievements");
166 comment_load(comments_storage.uflags_utype,
167 comment_file, "uflag_types.utype");
168 comment_load(comments_storage.uflags_uclass,
169 comment_file, "uflag_types.uclass");
170 comment_load(comments_storage.uflags_terrain,
171 comment_file, "uflag_types.terrain");
172 comment_load(comments_storage.uflags_extra,
173 comment_file, "uflag_types.extra");
174 comment_load(comments_storage.uflags_tech,
175 comment_file, "uflag_types.tech");
176 comment_load(comments_storage.uflags_building,
177 comment_file, "uflag_types.building");
178 comment_load(comments_storage.trade_settings,
179 comment_file, "typedoc.trade_settings");
180 comment_load(comments_storage.goods, comment_file, "typedoc.goods");
181 comment_load(comments_storage.actions, comment_file, "typedoc.actions");
182 comment_load(comments_storage.enablers, comment_file, "typedoc.enablers");
183 comment_load(comments_storage.specialists,
184 comment_file, "typedoc.specialists");
185 comment_load(comments_storage.nations, comment_file, "typedoc.nations");
186 comment_load(comments_storage.nationgroups,
187 comment_file, "typedoc.nationgroups");
189 comment_file, "typedoc.nationsets");
190 comment_load(comments_storage.clauses, comment_file, "typedoc.clauses");
192 "typedoc.counters");
193
195 "sectiondoc.nations_ruledit");
196
198 "entrydoc.granary");
199 comment_load(comments_storage.civstyle_ransom_gold, comment_file,
200 "entrydoc.ransom_gold");
201 comment_load(comments_storage.civstyle_gameloss_style, comment_file,
202 "entrydoc.gameloss_style");
203 comment_load(comments_storage.civstyle_gold_upkeep_style, comment_file,
204 "entrydoc.gold_upkeep_style");
205 comment_load(comments_storage.civstyle_homeless_gold_upkeep, comment_file,
206 "entrydoc.homeless_gold_upkeep");
207 comment_load(comments_storage.civstyle_airlift_always, comment_file,
208 "entrydoc.airlift_always_enabled");
209 comment_load(comments_storage.wonder_visibility_small_wonders, comment_file,
210 "entrydoc.wv_small_wonders");
212 "entrydoc.incite_cost");
213 comment_load(comments_storage.combat_rules_tired_attack, comment_file,
214 "entrydoc.tired_attack");
215 comment_load(comments_storage.combat_rules_only_killing_veteran, comment_file,
216 "entrydoc.only_killing_makes_veteran");
217 comment_load(comments_storage.combat_rules_only_real_fight_veteran, comment_file,
218 "entrydoc.only_real_fight_makes_veteran");
219 comment_load(comments_storage.combat_rules_scaled_veterancy, comment_file,
220 "entrydoc.combat_odds_scaled_veterancy");
221 comment_load(comments_storage.combat_rules_damage_reduces_bombard_rate, comment_file,
222 "entrydoc.damage_reduces_bombard_rate");
223 comment_load(comments_storage.combat_rules_low_fp_badwallattacker, comment_file,
224 "entrydoc.low_firepower_badwallattacker");
225 comment_load(comments_storage.combat_rules_low_fp_pearl_harbor, comment_file,
226 "entrydoc.low_firepower_pearl_harbor");
227 comment_load(comments_storage.combat_rules_low_fp_combat_bonus, comment_file,
228 "entrydoc.low_firepower_combat_bonus");
229 comment_load(comments_storage.combat_rules_low_fp_nonnat_bombard, comment_file,
230 "entrydoc.low_firepower_nonnat_bombard");
231 comment_load(comments_storage.combat_rules_nuke_pop_loss, comment_file,
232 "entrydoc.nuke_pop_loss_pct");
233 comment_load(comments_storage.combat_rules_nuke_defender_survival,
235 "entrydoc.nuke_defender_survival_chance_pct");
237 "entrydoc.auto_attack");
238 comment_load(comments_storage.actions_dc_initial_odds, comment_file,
239 "entrydoc.dc_initial_odds");
240 comment_load(comments_storage.actions_quiet_actions, comment_file,
241 "entrydoc.quiet_actions");
242 comment_load(comments_storage.borders_radius_permanent, comment_file,
243 "entrydoc.radius_permanent");
244 comment_load(comments_storage.research_tech_cost_style, comment_file,
245 "entrydoc.tech_cost_style");
246 comment_load(comments_storage.research_base_tech_cost, comment_file,
247 "entrydoc.base_tech_cost");
248 comment_load(comments_storage.research_min_tech_cost, comment_file,
249 "entrydoc.min_tech_cost");
250 comment_load(comments_storage.research_tech_leakage, comment_file,
251 "entrydoc.tech_leakage");
252 comment_load(comments_storage.research_upkeep_style, comment_file,
253 "entrydoc.tech_upkeep_style");
254 comment_load(comments_storage.research_free_tech_method, comment_file,
255 "entrydoc.free_tech_method");
256 comment_load(comments_storage.culture_history_interest, comment_file,
257 "entrydoc.history_interest_pml");
258 comment_load(comments_storage.culture_migration_pml, comment_file,
259 "entrydoc.migration_pml");
260 comment_load(comments_storage.world_peace_turns, comment_file,
261 "entrydoc.world_peace_turns");
262 comment_load(comments_storage.calendar_fragments, comment_file,
263 "entrydoc.calendar_fragments");
264 comment_load(comments_storage.std_tileset_compat, comment_file,
265 "entrydoc.std_tileset_compat");
266
269
270 return TRUE;
271}
272
273/**********************************************************************/
277{
278 free(comments_storage.file_header);
279}
280
281/**********************************************************************/
284static void comment_write(struct section_file *sfile, const char *comment,
285 const char *name)
286{
287 if (comment == NULL) {
288 log_error(_("Comment for %s missing."), name);
289 return;
290 }
291
292 secfile_insert_long_comment(sfile, comment);
293}
294
295/**********************************************************************/
298static void comment_entry_write(struct section_file *sfile,
299 const char *comment, const char *section)
300{
301 if (comment == NULL) {
302 log_error(_("Comment to section %s missing."), section);
303 return;
304 }
305
306 secfile_insert_comment(sfile, comment, "%s", section);
307}
308
309/**********************************************************************/
313{
314 comment_write(sfile, comments_storage.file_header, "File header");
315}
316
317/**********************************************************************/
321{
322 comment_write(sfile, comments_storage.buildings, "Buildings");
323}
324
325/**********************************************************************/
329{
330 comment_write(sfile, comments_storage.tech_classes, "Tech Classes");
331}
332
333/**********************************************************************/
336void comment_techs(struct section_file *sfile)
337{
338 comment_write(sfile, comments_storage.techs, "Techs");
339}
340
341/**********************************************************************/
344void comment_govs(struct section_file *sfile)
345{
346 comment_write(sfile, comments_storage.govs, "Governments");
347}
348
349/**********************************************************************/
353{
354 comment_write(sfile, comments_storage.policies, "Policies");
355}
356
357/**********************************************************************/
361{
362 comment_write(sfile, comments_storage.uclasses, "Unit classes");
363}
364
365/**********************************************************************/
368void comment_utypes(struct section_file *sfile)
369{
370 comment_write(sfile, comments_storage.utypes, "Unit types");
371}
372
373/**********************************************************************/
377{
378 comment_write(sfile, comments_storage.terrains, "Terrains");
379}
380
381/**********************************************************************/
385{
386 comment_write(sfile, comments_storage.resources, "Resources");
387}
388
389/**********************************************************************/
392void comment_extras(struct section_file *sfile)
393{
394 comment_write(sfile, comments_storage.extras, "Extras");
395}
396
397/**********************************************************************/
400void comment_bases(struct section_file *sfile)
401{
402 comment_write(sfile, comments_storage.bases, "Bases");
403}
404
405/**********************************************************************/
408void comment_roads(struct section_file *sfile)
409{
410 comment_write(sfile, comments_storage.roads, "Roads");
411}
412
413/**********************************************************************/
416void comment_styles(struct section_file *sfile)
417{
418 comment_write(sfile, comments_storage.styles, "Styles");
419}
420
421/**********************************************************************/
425{
426 comment_write(sfile, comments_storage.citystyles, "City Styles");
427}
428
429/**********************************************************************/
433{
434 comment_write(sfile, comments_storage.musicstyles, "Music Styles");
435}
436
437/**********************************************************************/
440void comment_effects(struct section_file *sfile)
441{
442 comment_write(sfile, comments_storage.effects, "Effects");
443}
444
445/**********************************************************************/
448void comment_ueffs(struct section_file *sfile)
449{
450 comment_write(sfile, comments_storage.ueffs, "User Effects");
451}
452
453/**********************************************************************/
457{
458 comment_write(sfile, comments_storage.disasters, "Disasters");
459}
460
461/**********************************************************************/
465{
466 comment_write(sfile, comments_storage.achievements, "Achievements");
467}
468
469/**********************************************************************/
473{
474 comment_entry_write(sfile, comments_storage.uflags_utype, "control");
475}
476
477/**********************************************************************/
481{
482 comment_entry_write(sfile, comments_storage.uflags_uclass, "control");
483}
484
485/**********************************************************************/
489{
490 comment_entry_write(sfile, comments_storage.uflags_terrain, "control");
491}
492
493/**********************************************************************/
497{
498 comment_entry_write(sfile, comments_storage.uflags_extra, "control");
499}
500
501/**********************************************************************/
505{
506 comment_entry_write(sfile, comments_storage.uflags_tech, "control");
507}
508
509/**********************************************************************/
513{
514 comment_entry_write(sfile, comments_storage.uflags_building, "control");
515}
516
517/**********************************************************************/
521{
522 comment_write(sfile, comments_storage.trade_settings, "Trade settings");
523}
524
525/**********************************************************************/
528void comment_goods(struct section_file *sfile)
529{
530 comment_write(sfile, comments_storage.goods, "Goods");
531}
532
533/**********************************************************************/
536void comment_actions(struct section_file *sfile)
537{
538 comment_write(sfile, comments_storage.actions, "Actions");
539}
540
541/**********************************************************************/
545{
546 comment_write(sfile, comments_storage.enablers, "Action Enablers");
547}
548
549/**********************************************************************/
553{
554 comment_write(sfile, comments_storage.specialists, "Specialists");
555}
556
557/**********************************************************************/
560void comment_nations(struct section_file *sfile)
561{
562 comment_write(sfile, comments_storage.nations, "Nations");
563}
564
565/**********************************************************************/
569{
570 comment_write(sfile, comments_storage.nationgroups, "Nationgroups");
571}
572
573/**********************************************************************/
577{
578 comment_write(sfile, comments_storage.nationsets, "Nationsets");
579}
580
581/**********************************************************************/
584void comment_clauses(struct section_file *sfile)
585{
586 comment_write(sfile, comments_storage.clauses, "Clauses");
587}
588
589/**********************************************************************/
593{
594 comment_write(sfile, comments_storage.counters,
595 "counters");
596}
597
598/**********************************************************************/
602{
603 comment_write(sfile, comments_storage.nations_ruledit, "Ruledit");
604}
605
606/**********************************************************************/
610{
611 comment_entry_write(sfile, comments_storage.civstyle_granary,
612 "civstyle");
613}
614
615/**********************************************************************/
619{
620 comment_entry_write(sfile, comments_storage.civstyle_ransom_gold,
621 "civstyle");
622}
623
624/**********************************************************************/
628{
629 comment_entry_write(sfile, comments_storage.civstyle_gameloss_style,
630 "civstyle");
631}
632
633/**********************************************************************/
637{
638 comment_entry_write(sfile, comments_storage.civstyle_gold_upkeep_style,
639 "civstyle");
640}
641
642/**********************************************************************/
646{
647 comment_entry_write(sfile, comments_storage.civstyle_homeless_gold_upkeep,
648 "civstyle");
649}
650
651/**********************************************************************/
655{
656 comment_entry_write(sfile, comments_storage.civstyle_airlift_always,
657 "civstyle");
658}
659
660/**********************************************************************/
664{
665 comment_entry_write(sfile, comments_storage.wonder_visibility_small_wonders,
666 "wonder_visibility");
667}
668
669/**********************************************************************/
673{
674 comment_entry_write(sfile, comments_storage.incite_cost,
675 "incite_cost");
676}
677
678/**********************************************************************/
682{
683 comment_entry_write(sfile, comments_storage.combat_rules_tired_attack,
684 "combat_rules");
685}
686
687/**********************************************************************/
691{
693 comments_storage.combat_rules_only_killing_veteran,
694 "combat_rules");
695}
696
697/**********************************************************************/
701{
703 comments_storage.combat_rules_only_real_fight_veteran,
704 "combat_rules");
705}
706
707/**********************************************************************/
711{
713 comments_storage.combat_rules_scaled_veterancy,
714 "combat_rules");
715}
716
717/**********************************************************************/
721{
723 comments_storage.combat_rules_damage_reduces_bombard_rate,
724 "combat_rules");
725}
726
727/**********************************************************************/
731{
733 comments_storage.combat_rules_low_fp_badwallattacker,
734 "combat_rules");
735}
736
737/**********************************************************************/
741{
743 comments_storage.combat_rules_low_fp_pearl_harbor,
744 "combat_rules");
745}
746
747/**********************************************************************/
751{
753 comments_storage.combat_rules_low_fp_combat_bonus,
754 "combat_rules");
755}
756
757/**********************************************************************/
761{
763 comments_storage.combat_rules_low_fp_nonnat_bombard,
764 "combat_rules");
765}
766
767/**********************************************************************/
771{
772 comment_entry_write(sfile, comments_storage.combat_rules_nuke_pop_loss,
773 "combat_rules");
774}
775
776/**********************************************************************/
780{
782 comments_storage.combat_rules_nuke_defender_survival,
783 "combat_rules");
784}
785
786/**********************************************************************/
790{
791 comment_entry_write(sfile, comments_storage.auto_attack, "auto_attack");
792}
793
794/**********************************************************************/
798{
799 comment_entry_write(sfile, comments_storage.actions_dc_initial_odds,
800 "actions");
801}
802
803/**********************************************************************/
807{
808 comment_entry_write(sfile, comments_storage.actions_quiet_actions,
809 "actions");
810}
811
812/**********************************************************************/
816{
817 comment_entry_write(sfile, comments_storage.borders_radius_permanent,
818 "borders");
819}
820
821/**********************************************************************/
825{
826 comment_entry_write(sfile, comments_storage.research_tech_cost_style,
827 "research");
828}
829
830/**********************************************************************/
834{
835 comment_entry_write(sfile, comments_storage.research_base_tech_cost,
836 "research");
837}
838
839/**********************************************************************/
843{
844 comment_entry_write(sfile, comments_storage.research_min_tech_cost,
845 "research");
846}
847
848/**********************************************************************/
852{
853 comment_entry_write(sfile, comments_storage.research_tech_leakage,
854 "research");
855}
856
857/**********************************************************************/
861{
862 comment_entry_write(sfile, comments_storage.research_upkeep_style,
863 "research");
864}
865
866/**********************************************************************/
870{
871 comment_entry_write(sfile, comments_storage.research_free_tech_method,
872 "research");
873}
874
875/**********************************************************************/
879{
880 comment_entry_write(sfile, comments_storage.culture_history_interest,
881 "culture");
882}
883
884/**********************************************************************/
888{
889 comment_entry_write(sfile, comments_storage.culture_migration_pml,
890 "culture");
891}
892
893/**********************************************************************/
897{
898 comment_entry_write(sfile, comments_storage.world_peace_turns,
899 "world_peace");
900}
901
902/**********************************************************************/
906{
907 comment_entry_write(sfile, comments_storage.calendar_fragments,
908 "calendar");
909}
910
911
912/**********************************************************************/
916{
917 comment_entry_write(sfile, comments_storage.std_tileset_compat,
918 "std_tileset_compat");
919}
void comments_free(void)
Definition comments.c:276
char * calendar_fragments
Definition comments.c:101
char * nationgroups
Definition comments.c:60
void comment_borders_radius_permanent(struct section_file *sfile)
Definition comments.c:815
char * uflags_building
Definition comments.c:53
void comment_uflags_utype(struct section_file *sfile)
Definition comments.c:472
void comment_uflags_uclass(struct section_file *sfile)
Definition comments.c:480
char * resources
Definition comments.c:37
void comment_world_peace_turns(struct section_file *sfile)
Definition comments.c:896
char * combat_rules_low_fp_combat_bonus
Definition comments.c:84
char * nations_ruledit
Definition comments.c:66
void comment_combat_rules_nuke_defender_survival(struct section_file *sfile)
Definition comments.c:779
void comment_roads(struct section_file *sfile)
Definition comments.c:408
void comment_civstyle_granary(struct section_file *sfile)
Definition comments.c:609
char * uflags_terrain
Definition comments.c:50
void comment_research_tech_leakage(struct section_file *sfile)
Definition comments.c:851
void comment_uclasses(struct section_file *sfile)
Definition comments.c:360
void comment_uflags_extra(struct section_file *sfile)
Definition comments.c:496
char * goods
Definition comments.c:55
char * culture_history_interest
Definition comments.c:98
char * specialists
Definition comments.c:58
char * achievements
Definition comments.c:47
char * terrains
Definition comments.c:36
void comment_calendar_fragments(struct section_file *sfile)
Definition comments.c:905
void comment_actions_quiet_actions(struct section_file *sfile)
Definition comments.c:806
void comment_uflags_terrain(struct section_file *sfile)
Definition comments.c:488
char * combat_rules_only_killing_veteran
Definition comments.c:78
char * combat_rules_tired_attack
Definition comments.c:77
char * civstyle_ransom_gold
Definition comments.c:70
char * styles
Definition comments.c:41
char * combat_rules_only_real_fight_veteran
Definition comments.c:79
void comment_combat_rules_low_fp_pearl_harbor(struct section_file *sfile)
Definition comments.c:740
char * civstyle_airlift_always
Definition comments.c:74
void comment_citystyles(struct section_file *sfile)
Definition comments.c:424
char * extras
Definition comments.c:38
void comment_std_tileset_compat(struct section_file *sfile)
Definition comments.c:915
char * civstyle_gold_upkeep_style
Definition comments.c:72
void comment_govs(struct section_file *sfile)
Definition comments.c:344
static struct @286 comments_storage
char * enablers
Definition comments.c:57
void comment_research_base_tech_cost(struct section_file *sfile)
Definition comments.c:833
char * world_peace_turns
Definition comments.c:100
void comment_research_tech_cost_style(struct section_file *sfile)
Definition comments.c:824
char * actions_quiet_actions
Definition comments.c:90
char * actions
Definition comments.c:56
void comment_combat_rules_only_killing_veteran(struct section_file *sfile)
Definition comments.c:690
char * research_base_tech_cost
Definition comments.c:93
void comment_bases(struct section_file *sfile)
Definition comments.c:400
void comment_terrains(struct section_file *sfile)
Definition comments.c:376
void comment_uflags_tech(struct section_file *sfile)
Definition comments.c:504
char * file_header
Definition comments.c:28
static void comment_write(struct section_file *sfile, const char *comment, const char *name)
Definition comments.c:284
void comment_file_header(struct section_file *sfile)
Definition comments.c:312
char * policies
Definition comments.c:33
void comment_effects(struct section_file *sfile)
Definition comments.c:440
void comment_actions_dc_initial_odds(struct section_file *sfile)
Definition comments.c:797
char * effects
Definition comments.c:44
char * civstyle_granary
Definition comments.c:69
void comment_combat_rules_scaled_veterancy(struct section_file *sfile)
Definition comments.c:710
void comment_research_upkeep_style(struct section_file *sfile)
Definition comments.c:860
void comment_disasters(struct section_file *sfile)
Definition comments.c:456
void comment_clauses(struct section_file *sfile)
Definition comments.c:584
void comment_goods(struct section_file *sfile)
Definition comments.c:528
char * uflags_tech
Definition comments.c:52
char * combat_rules_damage_reduces_bombard_rate
Definition comments.c:81
char * research_min_tech_cost
Definition comments.c:94
char * combat_rules_low_fp_nonnat_bombard
Definition comments.c:85
void comment_civstyle_gameloss_style(struct section_file *sfile)
Definition comments.c:627
char * uflags_extra
Definition comments.c:51
void comment_civstyle_gold_upkeep_style(struct section_file *sfile)
Definition comments.c:636
void comment_extras(struct section_file *sfile)
Definition comments.c:392
char * utypes
Definition comments.c:35
void comment_combat_rules_low_fp_nonnat_bombard(struct section_file *sfile)
Definition comments.c:760
char * clauses
Definition comments.c:62
char * combat_rules_low_fp_pearl_harbor
Definition comments.c:83
void comment_ueffs(struct section_file *sfile)
Definition comments.c:448
char * nationsets
Definition comments.c:61
void comment_techs(struct section_file *sfile)
Definition comments.c:336
void comment_nations(struct section_file *sfile)
Definition comments.c:560
char * counters
Definition comments.c:63
void comment_trade_settings(struct section_file *sfile)
Definition comments.c:520
char * auto_attack
Definition comments.c:88
char * disasters
Definition comments.c:46
void comment_combat_rules_low_fp_combat_bonus(struct section_file *sfile)
Definition comments.c:750
char * research_tech_cost_style
Definition comments.c:92
void comment_nations_ruledit(struct section_file *sfile)
Definition comments.c:601
char * govs
Definition comments.c:32
void comment_civstyle_homeless_gold_upkeep(struct section_file *sfile)
Definition comments.c:645
void comment_nationgroups(struct section_file *sfile)
Definition comments.c:568
char * roads
Definition comments.c:40
static void comment_entry_write(struct section_file *sfile, const char *comment, const char *section)
Definition comments.c:298
char * bases
Definition comments.c:39
void comment_specialists(struct section_file *sfile)
Definition comments.c:552
char * combat_rules_nuke_pop_loss
Definition comments.c:86
char * ueffs
Definition comments.c:45
void comment_musicstyles(struct section_file *sfile)
Definition comments.c:432
char * research_upkeep_style
Definition comments.c:96
char * buildings
Definition comments.c:29
void comment_civstyle_airlift_always(struct section_file *sfile)
Definition comments.c:654
void comment_resources(struct section_file *sfile)
Definition comments.c:384
char * wonder_visibility_small_wonders
Definition comments.c:75
void comment_civstyle_ransom_gold(struct section_file *sfile)
Definition comments.c:618
void comment_tech_classes(struct section_file *sfile)
Definition comments.c:328
char * tech_classes
Definition comments.c:30
char * nations
Definition comments.c:59
void comment_culture_migration_pml(struct section_file *sfile)
Definition comments.c:887
void comment_combat_rules_only_real_fight_veteran(struct section_file *sfile)
Definition comments.c:700
char * uflags_uclass
Definition comments.c:49
void comment_research_free_tech_method(struct section_file *sfile)
Definition comments.c:869
char * borders_radius_permanent
Definition comments.c:91
void comment_combat_rules_nuke_pop_loss(struct section_file *sfile)
Definition comments.c:770
void comment_utypes(struct section_file *sfile)
Definition comments.c:368
char * uflags_utype
Definition comments.c:48
char * actions_dc_initial_odds
Definition comments.c:89
char * combat_rules_scaled_veterancy
Definition comments.c:80
#define comment_load(target, comment_file, comment_path)
void comment_research_min_tech_cost(struct section_file *sfile)
Definition comments.c:842
char * research_tech_leakage
Definition comments.c:95
bool comments_load(void)
Definition comments.c:109
char * civstyle_homeless_gold_upkeep
Definition comments.c:73
void comment_culture_history_interest(struct section_file *sfile)
Definition comments.c:878
char * musicstyles
Definition comments.c:43
char * culture_migration_pml
Definition comments.c:99
void comment_policies(struct section_file *sfile)
Definition comments.c:352
void comment_combat_rules_low_fp_badwallattacker(struct section_file *sfile)
Definition comments.c:730
void comment_achievements(struct section_file *sfile)
Definition comments.c:464
char * trade_settings
Definition comments.c:54
void comment_combat_rules_damage_reduces_bombard_rate(struct section_file *sfile)
Definition comments.c:720
char * combat_rules_low_fp_badwallattacker
Definition comments.c:82
char * citystyles
Definition comments.c:42
char * research_free_tech_method
Definition comments.c:97
void comment_actions(struct section_file *sfile)
Definition comments.c:536
void comment_counters(struct section_file *sfile)
Definition comments.c:592
void comment_styles(struct section_file *sfile)
Definition comments.c:416
void comment_combat_rules_tired_attack(struct section_file *sfile)
Definition comments.c:681
void comment_uflags_building(struct section_file *sfile)
Definition comments.c:512
char * techs
Definition comments.c:31
void comment_buildings(struct section_file *sfile)
Definition comments.c:320
void comment_enablers(struct section_file *sfile)
Definition comments.c:544
void comment_nationsets(struct section_file *sfile)
Definition comments.c:576
char * combat_rules_nuke_defender_survival
Definition comments.c:87
char * uclasses
Definition comments.c:34
void comment_wonder_visibility_small_wonders(struct section_file *sfile)
Definition comments.c:663
void comment_incite_cost(struct section_file *sfile)
Definition comments.c:672
void comment_auto_attack(struct section_file *sfile)
Definition comments.c:789
char * civstyle_gameloss_style
Definition comments.c:71
char * incite_cost
Definition comments.c:76
char * std_tileset_compat
Definition comments.c:103
#define COMMENTS_FILE_NAME
Definition comments.h:20
#define _(String)
Definition fcintl.h:67
const char * name
Definition inputfile.c:127
#define log_error(message,...)
Definition log.h:104
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