OpenXcom  1.0
Open-source clone of the original X-Com
ArticleDefinition.h
1 #pragma once
2 /*
3  * Copyright 2010-2016 OpenXcom Developers.
4  *
5  * This file is part of OpenXcom.
6  *
7  * OpenXcom is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * OpenXcom is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with OpenXcom. If not, see <http://www.gnu.org/licenses/>.
19  */
20 #include <string>
21 #include <vector>
22 #include <yaml-cpp/yaml.h>
23 
24 namespace OpenXcom
25 {
27  enum UfopaediaTypeId {
28  UFOPAEDIA_TYPE_UNKNOWN = 0,
29  UFOPAEDIA_TYPE_CRAFT = 1,
30  UFOPAEDIA_TYPE_CRAFT_WEAPON = 2,
31  UFOPAEDIA_TYPE_VEHICLE = 3,
32  UFOPAEDIA_TYPE_ITEM = 4,
33  UFOPAEDIA_TYPE_ARMOR = 5,
34  UFOPAEDIA_TYPE_BASE_FACILITY = 6,
35  UFOPAEDIA_TYPE_TEXTIMAGE = 7,
36  UFOPAEDIA_TYPE_TEXT = 8,
37  UFOPAEDIA_TYPE_UFO = 9,
38  UFOPAEDIA_TYPE_TFTD = 10,
39  UFOPAEDIA_TYPE_TFTD_CRAFT = 11,
40  UFOPAEDIA_TYPE_TFTD_CRAFT_WEAPON = 12,
41  UFOPAEDIA_TYPE_TFTD_VEHICLE = 13,
42  UFOPAEDIA_TYPE_TFTD_ITEM = 14,
43  UFOPAEDIA_TYPE_TFTD_ARMOR = 15,
44  UFOPAEDIA_TYPE_TFTD_BASE_FACILITY = 16,
45  UFOPAEDIA_TYPE_TFTD_USO = 17
46  };
47 
55  {
56  protected:
58  ArticleDefinition(UfopaediaTypeId type_id);
59 
60  public:
62  virtual ~ArticleDefinition();
64  UfopaediaTypeId getType() const;
66  virtual void load(const YAML::Node& node, int listOrder);
68  int getListOrder() const;
69 
70  std::string id;
71  std::string title;
72  std::string section;
73  std::vector<std::string> requires;
74 
75  protected:
76  UfopaediaTypeId _type_id;
77  private:
78  int _listOrder;
79  };
80 
82  {
83  public:
85 
86  void set(int set_x, int set_y, int set_width, int set_height);
87 
88  int x;
89  int y;
90  int width;
91  int height;
92  };
93 
100  {
101  public:
105  void load(const YAML::Node& node, int listOrder);
106 
107  std::string image_id;
108  ArticleDefinitionRect rect_stats;
109  ArticleDefinitionRect rect_text;
110  std::string text;
111  };
112 
119  {
120  public:
124  void load(const YAML::Node& node, int listOrder);
125 
126  std::string image_id;
127  std::string text;
128  };
129 
135  {
136  public:
140  void load(const YAML::Node& node, int listOrder);
141 
142  std::string text;
143  };
144 
151  {
152  public:
156  void load(const YAML::Node& node, int listOrder);
157 
158  std::string image_id;
159  std::string text;
160  int text_width;
161  };
162 
169  {
170  public:
174  void load(const YAML::Node& node, int listOrder);
175 
176  std::string image_id;
177  std::string text;
178  int text_width;
179  std::string weapon;
180  };
181 
188  {
189  public:
193  void load(const YAML::Node& node, int listOrder);
194 
195  std::string text;
196  };
197 
204  {
205  public:
209  void load(const YAML::Node& node, int listOrder);
210 
211  std::string text;
212  };
213 
220  {
221  public:
225  void load(const YAML::Node& node, int listOrder);
226 
227  std::string text;
228  };
229 
236  {
237  public:
241  void load(const YAML::Node& node, int listOrder);
242 
243  std::string text;
244  };
245 
252  {
253  public:
257  void load(const YAML::Node& node, int listOrder);
258 
259  std::string text;
260  std::string weapon;
261  };
262 
263 }
int getListOrder() const
Gets the article&#39;s list weight.
Definition: ArticleDefinition.cpp:99
ArticleDefinitionTFTD()
Constructor.
Definition: ArticleDefinition.cpp:201
ArticleDefinitionVehicle defines articles for Vehicles, e.g.
Definition: ArticleDefinition.h:251
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:230
ArticleDefinitionCraft()
Constructor.
Definition: ArticleDefinition.cpp:127
ArticleDefinitionCraftWeapon defines articles for craft weapons, e.g.
Definition: ArticleDefinition.h:118
ArticleDefinitionRect()
Constructor.
Definition: ArticleDefinition.cpp:107
ArticleDefinitionArmor()
Constructor.
Definition: ArticleDefinition.cpp:273
ArticleDefinitionItem()
Constructor.
Definition: ArticleDefinition.cpp:239
ArticleDefinitionTextImage defines articles with text on the left and an image on the right side of t...
Definition: ArticleDefinition.h:150
ArticleDefinitionVehicle()
Constructor.
Definition: ArticleDefinition.cpp:290
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:155
virtual void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:81
ArticleDefinitionTextImage()
Constructor.
Definition: ArticleDefinition.cpp:182
ArticleDefinitionText()
Constructor.
Definition: ArticleDefinition.cpp:165
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:264
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:247
ArticleDefinitionUfo()
Constructor.
Definition: ArticleDefinition.cpp:256
UfopaediaTypeId getType() const
Gets the type of article definition.
Definition: ArticleDefinition.cpp:71
ArticleDefinitionItem defines articles for all Items, e.g.
Definition: ArticleDefinition.h:203
ArticleDefinition(UfopaediaTypeId type_id)
Constructor (protected, so this class cannot be instantiated directly).
Definition: ArticleDefinition.cpp:58
ArticleDefinitionTextImage defines articles with text on the left and an image on the right side of t...
Definition: ArticleDefinition.h:168
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:190
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:281
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:173
ArticleDefinitionCraft defines articles for craft, e.g.
Definition: ArticleDefinition.h:99
ArticleDefinitionBaseFacility defines articles for base facilities, e.g.
Definition: ArticleDefinition.h:187
ArticleDefinitionArmor defines articles for Armor, e.g.
Definition: ArticleDefinition.h:235
Definition: ArticleDefinition.h:81
ArticleDefinition is the base class for all article types.
Definition: ArticleDefinition.h:54
virtual ~ArticleDefinition()
Destructor.
Definition: ArticleDefinition.cpp:64
ArticleDefinitionBaseFacility()
Constructor.
Definition: ArticleDefinition.cpp:222
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:135
ArticleDefinitionCraftWeapon()
Constructor.
Definition: ArticleDefinition.cpp:147
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:298
ArticleDefinitionText defines articles with only text, e.g.
Definition: ArticleDefinition.h:134
Definition: BaseInfoState.cpp:40
void load(const YAML::Node &node, int listOrder)
Loads the article from YAML.
Definition: ArticleDefinition.cpp:209
ArticleDefinitionUfo defines articles for UFOs, e.g.
Definition: ArticleDefinition.h:219