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 "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 *enablers;
58 char *nations;
61 char *clauses;
62 char *counters;
63
64 /* Other section entries */
66
67 /* Comment entries */
102
103/**********************************************************************/
107{
109 const char *fullpath;
110
112
113 if (fullpath == NULL) {
114 log_error(_("Can't find the comments file"));
115 return FALSE;
116 }
117
119 if (comment_file == NULL) {
120 log_error(_("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_error(_("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.calendar_fragments, comment_file,
259 "entrydoc.calendar_fragments");
260
263
264 return TRUE;
265}
266
267/**********************************************************************/
271{
272 free(comments_storage.file_header);
273}
274
275/**********************************************************************/
278static void comment_write(struct section_file *sfile, const char *comment,
279 const char *name)
280{
281 if (comment == NULL) {
282 log_error(_("Comment for %s missing."), name);
283 return;
284 }
285
286 secfile_insert_long_comment(sfile, comment);
287}
288
289/**********************************************************************/
292static void comment_entry_write(struct section_file *sfile,
293 const char *comment, const char *section)
294{
295 if (comment == NULL) {
296 log_error(_("Comment to section %s missing."), section);
297 return;
298 }
299
300 secfile_insert_comment(sfile, comment, "%s", section);
301}
302
303/**********************************************************************/
307{
308 comment_write(sfile, comments_storage.file_header, "File header");
309}
310
311/**********************************************************************/
315{
316 comment_write(sfile, comments_storage.buildings, "Buildings");
317}
318
319/**********************************************************************/
323{
324 comment_write(sfile, comments_storage.tech_classes, "Tech Classes");
325}
326
327/**********************************************************************/
330void comment_techs(struct section_file *sfile)
331{
332 comment_write(sfile, comments_storage.techs, "Techs");
333}
334
335/**********************************************************************/
338void comment_govs(struct section_file *sfile)
339{
340 comment_write(sfile, comments_storage.govs, "Governments");
341}
342
343/**********************************************************************/
347{
348 comment_write(sfile, comments_storage.policies, "Policies");
349}
350
351/**********************************************************************/
355{
356 comment_write(sfile, comments_storage.uclasses, "Unit classes");
357}
358
359/**********************************************************************/
362void comment_utypes(struct section_file *sfile)
363{
364 comment_write(sfile, comments_storage.utypes, "Unit types");
365}
366
367/**********************************************************************/
371{
372 comment_write(sfile, comments_storage.terrains, "Terrains");
373}
374
375/**********************************************************************/
379{
380 comment_write(sfile, comments_storage.resources, "Resources");
381}
382
383/**********************************************************************/
386void comment_extras(struct section_file *sfile)
387{
388 comment_write(sfile, comments_storage.extras, "Extras");
389}
390
391/**********************************************************************/
394void comment_bases(struct section_file *sfile)
395{
396 comment_write(sfile, comments_storage.bases, "Bases");
397}
398
399/**********************************************************************/
402void comment_roads(struct section_file *sfile)
403{
404 comment_write(sfile, comments_storage.roads, "Roads");
405}
406
407/**********************************************************************/
410void comment_styles(struct section_file *sfile)
411{
412 comment_write(sfile, comments_storage.styles, "Styles");
413}
414
415/**********************************************************************/
419{
420 comment_write(sfile, comments_storage.citystyles, "City Styles");
421}
422
423/**********************************************************************/
427{
428 comment_write(sfile, comments_storage.musicstyles, "Music Styles");
429}
430
431/**********************************************************************/
434void comment_effects(struct section_file *sfile)
435{
436 comment_write(sfile, comments_storage.effects, "Effects");
437}
438
439/**********************************************************************/
442void comment_ueffs(struct section_file *sfile)
443{
444 comment_write(sfile, comments_storage.ueffs, "User Effects");
445}
446
447/**********************************************************************/
451{
452 comment_write(sfile, comments_storage.disasters, "Disasters");
453}
454
455/**********************************************************************/
459{
460 comment_write(sfile, comments_storage.achievements, "Achievements");
461}
462
463/**********************************************************************/
467{
468 comment_entry_write(sfile, comments_storage.uflags_utype, "control");
469}
470
471/**********************************************************************/
475{
476 comment_entry_write(sfile, comments_storage.uflags_uclass, "control");
477}
478
479/**********************************************************************/
483{
484 comment_entry_write(sfile, comments_storage.uflags_terrain, "control");
485}
486
487/**********************************************************************/
491{
492 comment_entry_write(sfile, comments_storage.uflags_extra, "control");
493}
494
495/**********************************************************************/
499{
500 comment_entry_write(sfile, comments_storage.uflags_tech, "control");
501}
502
503/**********************************************************************/
507{
508 comment_entry_write(sfile, comments_storage.uflags_building, "control");
509}
510
511/**********************************************************************/
515{
516 comment_write(sfile, comments_storage.trade_settings, "Trade settings");
517}
518
519/**********************************************************************/
522void comment_goods(struct section_file *sfile)
523{
524 comment_write(sfile, comments_storage.goods, "Goods");
525}
526
527/**********************************************************************/
531{
532 comment_write(sfile, comments_storage.enablers, "Action Enablers");
533}
534
535/**********************************************************************/
539{
540 comment_write(sfile, comments_storage.specialists, "Specialists");
541}
542
543/**********************************************************************/
546void comment_nations(struct section_file *sfile)
547{
548 comment_write(sfile, comments_storage.nations, "Nations");
549}
550
551/**********************************************************************/
555{
556 comment_write(sfile, comments_storage.nationgroups, "Nationgroups");
557}
558
559/**********************************************************************/
563{
564 comment_write(sfile, comments_storage.nationsets, "Nationsets");
565}
566
567/**********************************************************************/
570void comment_clauses(struct section_file *sfile)
571{
572 comment_write(sfile, comments_storage.clauses, "Clauses");
573}
574
575/**********************************************************************/
579{
580 comment_write(sfile, comments_storage.counters,
581 "counters");
582}
583
584/**********************************************************************/
588{
589 comment_write(sfile, comments_storage.nations_ruledit, "Ruledit");
590}
591
592/**********************************************************************/
596{
597 comment_entry_write(sfile, comments_storage.civstyle_granary,
598 "civstyle");
599}
600
601/**********************************************************************/
605{
606 comment_entry_write(sfile, comments_storage.civstyle_ransom_gold,
607 "civstyle");
608}
609
610/**********************************************************************/
614{
615 comment_entry_write(sfile, comments_storage.civstyle_gameloss_style,
616 "civstyle");
617}
618
619/**********************************************************************/
623{
624 comment_entry_write(sfile, comments_storage.civstyle_gold_upkeep_style,
625 "civstyle");
626}
627
628/**********************************************************************/
632{
633 comment_entry_write(sfile, comments_storage.civstyle_homeless_gold_upkeep,
634 "civstyle");
635}
636
637/**********************************************************************/
641{
642 comment_entry_write(sfile, comments_storage.civstyle_airlift_always,
643 "civstyle");
644}
645
646/**********************************************************************/
650{
651 comment_entry_write(sfile, comments_storage.wonder_visibility_small_wonders,
652 "wonder_visibility");
653}
654
655/**********************************************************************/
659{
660 comment_entry_write(sfile, comments_storage.incite_cost,
661 "incite_cost");
662}
663
664/**********************************************************************/
668{
669 comment_entry_write(sfile, comments_storage.combat_rules_tired_attack,
670 "combat_rules");
671}
672
673/**********************************************************************/
677{
679 comments_storage.combat_rules_only_killing_veteran,
680 "combat_rules");
681}
682
683/**********************************************************************/
687{
689 comments_storage.combat_rules_only_real_fight_veteran,
690 "combat_rules");
691}
692
693/**********************************************************************/
697{
699 comments_storage.combat_rules_scaled_veterancy,
700 "combat_rules");
701}
702
703/**********************************************************************/
707{
709 comments_storage.combat_rules_damage_reduces_bombard_rate,
710 "combat_rules");
711}
712
713/**********************************************************************/
717{
719 comments_storage.combat_rules_low_fp_badwallattacker,
720 "combat_rules");
721}
722
723/**********************************************************************/
727{
729 comments_storage.combat_rules_low_fp_pearl_harbour,
730 "combat_rules");
731}
732
733/**********************************************************************/
737{
739 comments_storage.combat_rules_low_fp_combat_bonus,
740 "combat_rules");
741}
742
743/**********************************************************************/
747{
749 comments_storage.combat_rules_low_fp_nonnat_bombard,
750 "combat_rules");
751}
752
753/**********************************************************************/
757{
758 comment_entry_write(sfile, comments_storage.combat_rules_nuke_pop_loss,
759 "combat_rules");
760}
761
762/**********************************************************************/
766{
768 comments_storage.combat_rules_nuke_defender_survival,
769 "combat_rules");
770}
771
772/**********************************************************************/
776{
777 comment_entry_write(sfile, comments_storage.auto_attack, "auto_attack");
778}
779
780/**********************************************************************/
784{
785 comment_entry_write(sfile, comments_storage.actions_ui_names, "actions");
786}
787
788/**********************************************************************/
792{
793 comment_entry_write(sfile, comments_storage.actions_dc_initial_odds,
794 "actions");
795}
796
797/**********************************************************************/
801{
802 comment_entry_write(sfile, comments_storage.actions_quiet_actions,
803 "actions");
804}
805
806/**********************************************************************/
810{
811 comment_entry_write(sfile, comments_storage.borders_radius_permanent,
812 "borders");
813}
814
815/**********************************************************************/
819{
820 comment_entry_write(sfile, comments_storage.research_tech_cost_style,
821 "research");
822}
823
824/**********************************************************************/
828{
829 comment_entry_write(sfile, comments_storage.research_base_tech_cost,
830 "research");
831}
832
833/**********************************************************************/
837{
838 comment_entry_write(sfile, comments_storage.research_min_tech_cost,
839 "research");
840}
841
842/**********************************************************************/
846{
847 comment_entry_write(sfile, comments_storage.research_tech_leakage,
848 "research");
849}
850
851/**********************************************************************/
855{
856 comment_entry_write(sfile, comments_storage.research_upkeep_style,
857 "research");
858}
859
860/**********************************************************************/
864{
865 comment_entry_write(sfile, comments_storage.research_free_tech_method,
866 "research");
867}
868
869/**********************************************************************/
873{
874 comment_entry_write(sfile, comments_storage.culture_history_interest,
875 "culture");
876}
877/**********************************************************************/
881{
882 comment_entry_write(sfile, comments_storage.culture_migration_pml,
883 "culture");
884}
885
886/**********************************************************************/
890{
891 comment_entry_write(sfile, comments_storage.calendar_fragments,
892 "calendar");
893}
void comments_free(void)
Definition comments.c:270
char * calendar_fragments
Definition comments.c:100
char * nationgroups
Definition comments.c:59
void comment_borders_radius_permanent(struct section_file *sfile)
Definition comments.c:809
char * uflags_building
Definition comments.c:53
void comment_uflags_utype(struct section_file *sfile)
Definition comments.c:466
void comment_uflags_uclass(struct section_file *sfile)
Definition comments.c:474
char * resources
Definition comments.c:37
char * combat_rules_low_fp_combat_bonus
Definition comments.c:83
char * nations_ruledit
Definition comments.c:65
void comment_combat_rules_nuke_defender_survival(struct section_file *sfile)
Definition comments.c:765
void comment_roads(struct section_file *sfile)
Definition comments.c:402
void comment_civstyle_granary(struct section_file *sfile)
Definition comments.c:595
char * uflags_terrain
Definition comments.c:50
void comment_research_tech_leakage(struct section_file *sfile)
Definition comments.c:845
void comment_actions_ui_names(struct section_file *sfile)
Definition comments.c:783
void comment_uclasses(struct section_file *sfile)
Definition comments.c:354
void comment_uflags_extra(struct section_file *sfile)
Definition comments.c:490
char * goods
Definition comments.c:55
char * culture_history_interest
Definition comments.c:98
char * specialists
Definition comments.c:57
char * achievements
Definition comments.c:47
char * terrains
Definition comments.c:36
void comment_calendar_fragments(struct section_file *sfile)
Definition comments.c:889
void comment_actions_quiet_actions(struct section_file *sfile)
Definition comments.c:800
void comment_uflags_terrain(struct section_file *sfile)
Definition comments.c:482
char * combat_rules_only_killing_veteran
Definition comments.c:77
char * combat_rules_tired_attack
Definition comments.c:76
char * civstyle_ransom_gold
Definition comments.c:69
char * styles
Definition comments.c:41
char * combat_rules_low_fp_pearl_harbour
Definition comments.c:82
char * combat_rules_only_real_fight_veteran
Definition comments.c:78
char * civstyle_airlift_always
Definition comments.c:73
void comment_citystyles(struct section_file *sfile)
Definition comments.c:418
char * extras
Definition comments.c:38
char * civstyle_gold_upkeep_style
Definition comments.c:71
void comment_govs(struct section_file *sfile)
Definition comments.c:338
void comment_combat_rules_low_fp_pearl_harbour(struct section_file *sfile)
Definition comments.c:726
char * enablers
Definition comments.c:56
void comment_research_base_tech_cost(struct section_file *sfile)
Definition comments.c:827
void comment_research_tech_cost_style(struct section_file *sfile)
Definition comments.c:818
char * actions_quiet_actions
Definition comments.c:90
void comment_combat_rules_only_killing_veteran(struct section_file *sfile)
Definition comments.c:676
char * research_base_tech_cost
Definition comments.c:93
void comment_bases(struct section_file *sfile)
Definition comments.c:394
void comment_terrains(struct section_file *sfile)
Definition comments.c:370
void comment_uflags_tech(struct section_file *sfile)
Definition comments.c:498
char * file_header
Definition comments.c:28
static void comment_write(struct section_file *sfile, const char *comment, const char *name)
Definition comments.c:278
void comment_file_header(struct section_file *sfile)
Definition comments.c:306
char * policies
Definition comments.c:33
void comment_effects(struct section_file *sfile)
Definition comments.c:434
char * actions_ui_names
Definition comments.c:88
void comment_actions_dc_initial_odds(struct section_file *sfile)
Definition comments.c:791
char * effects
Definition comments.c:44
char * civstyle_granary
Definition comments.c:68
void comment_combat_rules_scaled_veterancy(struct section_file *sfile)
Definition comments.c:696
void comment_research_upkeep_style(struct section_file *sfile)
Definition comments.c:854
void comment_disasters(struct section_file *sfile)
Definition comments.c:450
void comment_clauses(struct section_file *sfile)
Definition comments.c:570
void comment_goods(struct section_file *sfile)
Definition comments.c:522
char * uflags_tech
Definition comments.c:52
char * combat_rules_damage_reduces_bombard_rate
Definition comments.c:80
char * research_min_tech_cost
Definition comments.c:94
char * combat_rules_low_fp_nonnat_bombard
Definition comments.c:84
void comment_civstyle_gameloss_style(struct section_file *sfile)
Definition comments.c:613
char * uflags_extra
Definition comments.c:51
void comment_civstyle_gold_upkeep_style(struct section_file *sfile)
Definition comments.c:622
void comment_extras(struct section_file *sfile)
Definition comments.c:386
char * utypes
Definition comments.c:35
void comment_combat_rules_low_fp_nonnat_bombard(struct section_file *sfile)
Definition comments.c:746
char * clauses
Definition comments.c:61
void comment_ueffs(struct section_file *sfile)
Definition comments.c:442
char * nationsets
Definition comments.c:60
static struct @257 comments_storage
void comment_techs(struct section_file *sfile)
Definition comments.c:330
void comment_nations(struct section_file *sfile)
Definition comments.c:546
char * counters
Definition comments.c:62
void comment_trade_settings(struct section_file *sfile)
Definition comments.c:514
char * auto_attack
Definition comments.c:87
char * disasters
Definition comments.c:46
void comment_combat_rules_low_fp_combat_bonus(struct section_file *sfile)
Definition comments.c:736
char * research_tech_cost_style
Definition comments.c:92
void comment_nations_ruledit(struct section_file *sfile)
Definition comments.c:587
char * govs
Definition comments.c:32
void comment_civstyle_homeless_gold_upkeep(struct section_file *sfile)
Definition comments.c:631
void comment_nationgroups(struct section_file *sfile)
Definition comments.c:554
char * roads
Definition comments.c:40
static void comment_entry_write(struct section_file *sfile, const char *comment, const char *section)
Definition comments.c:292
char * bases
Definition comments.c:39
void comment_specialists(struct section_file *sfile)
Definition comments.c:538
char * combat_rules_nuke_pop_loss
Definition comments.c:85
char * ueffs
Definition comments.c:45
void comment_musicstyles(struct section_file *sfile)
Definition comments.c:426
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:640
void comment_resources(struct section_file *sfile)
Definition comments.c:378
char * wonder_visibility_small_wonders
Definition comments.c:74
void comment_civstyle_ransom_gold(struct section_file *sfile)
Definition comments.c:604
void comment_tech_classes(struct section_file *sfile)
Definition comments.c:322
char * tech_classes
Definition comments.c:30
char * nations
Definition comments.c:58
void comment_culture_migration_pml(struct section_file *sfile)
Definition comments.c:880
void comment_combat_rules_only_real_fight_veteran(struct section_file *sfile)
Definition comments.c:686
char * uflags_uclass
Definition comments.c:49
void comment_research_free_tech_method(struct section_file *sfile)
Definition comments.c:863
char * borders_radius_permanent
Definition comments.c:91
void comment_combat_rules_nuke_pop_loss(struct section_file *sfile)
Definition comments.c:756
void comment_utypes(struct section_file *sfile)
Definition comments.c:362
char * uflags_utype
Definition comments.c:48
char * actions_dc_initial_odds
Definition comments.c:89
char * combat_rules_scaled_veterancy
Definition comments.c:79
#define comment_load(target, comment_file, comment_path)
void comment_research_min_tech_cost(struct section_file *sfile)
Definition comments.c:836
char * research_tech_leakage
Definition comments.c:95
bool comments_load(void)
Definition comments.c:106
char * civstyle_homeless_gold_upkeep
Definition comments.c:72
void comment_culture_history_interest(struct section_file *sfile)
Definition comments.c:872
char * musicstyles
Definition comments.c:43
char * culture_migration_pml
Definition comments.c:99
void comment_policies(struct section_file *sfile)
Definition comments.c:346
void comment_combat_rules_low_fp_badwallattacker(struct section_file *sfile)
Definition comments.c:716
void comment_achievements(struct section_file *sfile)
Definition comments.c:458
char * trade_settings
Definition comments.c:54
void comment_combat_rules_damage_reduces_bombard_rate(struct section_file *sfile)
Definition comments.c:706
char * combat_rules_low_fp_badwallattacker
Definition comments.c:81
char * citystyles
Definition comments.c:42
char * research_free_tech_method
Definition comments.c:97
void comment_counters(struct section_file *sfile)
Definition comments.c:578
void comment_styles(struct section_file *sfile)
Definition comments.c:410
void comment_combat_rules_tired_attack(struct section_file *sfile)
Definition comments.c:667
void comment_uflags_building(struct section_file *sfile)
Definition comments.c:506
char * techs
Definition comments.c:31
void comment_buildings(struct section_file *sfile)
Definition comments.c:314
void comment_enablers(struct section_file *sfile)
Definition comments.c:530
void comment_nationsets(struct section_file *sfile)
Definition comments.c:562
char * combat_rules_nuke_defender_survival
Definition comments.c:86
char * uclasses
Definition comments.c:34
void comment_wonder_visibility_small_wonders(struct section_file *sfile)
Definition comments.c:649
void comment_incite_cost(struct section_file *sfile)
Definition comments.c:658
void comment_auto_attack(struct section_file *sfile)
Definition comments.c:775
char * civstyle_gameloss_style
Definition comments.c:70
char * incite_cost
Definition comments.c:75
#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: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