Freeciv21
Develop your civilization from humble roots to a global empire
multipliers.h
Go to the documentation of this file.
1 /***********************************************************************
2 Copyright (c) 1996-2020 Freeciv21 and Freeciv contributors. This file is
3  /\/\ part of Freeciv21. Freeciv21 is free software: you can
4  \_\ _..._ redistribute it and/or modify it under the terms of the
5  (" )(_..._) GNU General Public License as published by the Free
6  ^^ // \\ Software Foundation, either version 3 of the License,
7  or (at your option) any later version. You should have
8 received a copy of the GNU General Public License along with Freeciv21.
9  If not, see https://www.gnu.org/licenses/.
10 ***********************************************************************/
11 
12 #pragma once
13 
14 struct multiplier {
16  struct name_translation name;
17  bool ruledit_disabled; /* Does not really exist - hole in multipliers array
18  */
19  int start; // display units
20  int stop; // display units
21  int step; // display units
22  int def; // default value, in display units
23  int offset;
24  int factor;
25  struct requirement_vector reqs;
27 };
28 
29 void multipliers_init();
30 void multipliers_free();
31 
35 
37 
38 const char *multiplier_name_translation(const struct multiplier *pmul);
39 const char *multiplier_rule_name(const struct multiplier *pmul);
40 struct multiplier *multiplier_by_rule_name(const char *name);
41 
42 bool multiplier_can_be_changed(struct multiplier *pmul,
43  struct player *pplayer);
44 
45 #define multipliers_iterate(_mul_) \
46  { \
47  Multiplier_type_id _i; \
48  for (_i = 0; _i < multiplier_count(); _i++) { \
49  struct multiplier *_mul_ = multiplier_by_number(_i);
50 
51 #define multipliers_iterate_end \
52  } \
53  }
54 
55 #define multipliers_re_active_iterate(_mul_) \
56  multipliers_iterate(_mul_) \
57  { \
58  if (!_mul_->ruledit_disabled) {
59 
60 #define multipliers_re_active_iterate_end \
61  } \
62  } \
63  multipliers_iterate_end;
int Multiplier_type_id
Definition: fc_types.h:303
const char * name
Definition: inputfile.cpp:118
struct multiplier * multiplier_by_number(Multiplier_type_id id)
Returns multiplier associated to given number.
Definition: multipliers.cpp:54
const char * multiplier_rule_name(const struct multiplier *pmul)
Return the (untranslated) rule name of the multiplier.
void multipliers_free()
Free all multipliers.
Definition: multipliers.cpp:40
const char * multiplier_name_translation(const struct multiplier *pmul)
Return the (translated) name of the multiplier.
Definition: multipliers.cpp:94
bool multiplier_can_be_changed(struct multiplier *pmul, struct player *pplayer)
Can player change multiplier value.
Multiplier_type_id multiplier_number(const struct multiplier *pmul)
Returns multiplier number.
Definition: multipliers.cpp:64
Multiplier_type_id multiplier_count()
Return number of loaded multipliers in the ruleset.
Definition: multipliers.cpp:85
struct multiplier * multiplier_by_rule_name(const char *name)
Returns multiplier matching rule name, or nullptr if there is no multiplier with such a name.
void multipliers_init()
Initialize all multipliers.
Definition: multipliers.cpp:25
Multiplier_type_id multiplier_index(const struct multiplier *pmul)
Returns multiplier index.
Definition: multipliers.cpp:77
struct requirement_vector reqs
Definition: multipliers.h:25
QVector< QString > * helptext
Definition: multipliers.h:26
Multiplier_type_id id
Definition: multipliers.h:15
bool ruledit_disabled
Definition: multipliers.h:17
struct name_translation name
Definition: multipliers.h:16
Definition: player.h:231