Repository navigation
Expand file tree
/
Copy pathRuleset.cpp
More file actions
213 lines (197 loc) · 5.05 KB
/
Copy pathRuleset.cpp
File metadata and controls
213 lines (197 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
/*
* Copyright 2010 OpenXcom Developers.
*
* This file is part of OpenXcom.
*
* OpenXcom is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* OpenXcom is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenXcom. If not, see <http://www.gnu.org/licenses/>.
*/
#include "Ruleset.h"
#include "SoldierNamePool.h"
#include "RuleCountry.h"
#include "RuleRegion.h"
#include "RuleBaseFacility.h"
#include "RuleCraft.h"
#include "RuleCraftWeapon.h"
#include "RuleItem.h"
#include "RuleUfo.h"
#include "RuleTerrain.h"
#include "MapDataSet.h"
#include "RuleUnitSprite.h"
namespace OpenXcom
{
/**
* Creates a ruleset with blank sets of rules.
*/
Ruleset::Ruleset() : _names(), _countries(), _regions(), _facilities(), _crafts(), _craftWeapons(), _items(), _ufos(), _terrains(), _mapDataFiles(), _unitSprites()
{
}
/**
* Deletes all the contained rules from memory.
*/
Ruleset::~Ruleset()
{
for (std::vector<SoldierNamePool*>::iterator i = _names.begin(); i != _names.end(); i++)
{
delete *i;
}
for (std::map<std::string, RuleCountry*>::iterator i = _countries.begin(); i != _countries.end(); i++)
{
delete i->second;
}
for (std::map<std::string, RuleRegion*>::iterator i = _regions.begin(); i != _regions.end(); i++)
{
delete i->second;
}
for (std::map<std::string, RuleBaseFacility*>::iterator i = _facilities.begin(); i != _facilities.end(); i++)
{
delete i->second;
}
for (std::map<std::string, RuleCraft*>::iterator i = _crafts.begin(); i != _crafts.end(); i++)
{
delete i->second;
}
for (std::map<std::string, RuleCraftWeapon*>::iterator i = _craftWeapons.begin(); i != _craftWeapons.end(); i++)
{
delete i->second;
}
for (std::map<std::string, RuleItem*>::iterator i = _items.begin(); i != _items.end(); i++)
{
delete i->second;
}
for (std::map<std::string, RuleUfo*>::iterator i = _ufos.begin(); i != _ufos.end(); i++)
{
delete i->second;
}
for (std::map<std::string, RuleTerrain*>::iterator i = _terrains.begin(); i != _terrains.end(); i++)
{
delete i->second;
}
for (std::map<std::string, MapDataSet*>::iterator i = _mapDataFiles.begin(); i != _mapDataFiles.end(); i++)
{
delete i->second;
}
for (std::map<std::string, RuleUnitSprite*>::iterator i = _unitSprites.begin(); i != _unitSprites.end(); i++)
{
delete i->second;
}
}
/**
* Generates a brand new blank saved game.
* @param diff Difficulty for the save.
* @return New saved game.
*/
SavedGame *Ruleset::newSave(GameDifficulty diff)
{
SavedGame *save = new SavedGame(diff);
return save;
}
/**
* Returns the list of soldier name pools.
* @return Pointer to soldier name pool list.
*/
std::vector<SoldierNamePool*> *const Ruleset::getPools()
{
return &_names;
}
/**
* Returns the rules for the specified country.
* @param id Country type.
* @return Rules for the country.
*/
RuleCountry *const Ruleset::getCountry(std::string id)
{
return _countries[id];
}
/**
* Returns the rules for the specified region.
* @param id Region type.
* @return Rules for the region.
*/
RuleRegion *const Ruleset::getRegion(std::string id)
{
return _regions[id];
}
/**
* Returns the rules for the specified base facility.
* @param id Facility type.
* @return Rules for the facility.
*/
RuleBaseFacility *const Ruleset::getBaseFacility(std::string id)
{
return _facilities[id];
}
/**
* Returns the rules for the specified craft.
* @param id Craft type.
* @return Rules for the craft.
*/
RuleCraft *const Ruleset::getCraft(std::string id)
{
return _crafts[id];
}
/**
* Returns the rules for the specified craft weapon.
* @param id Craft weapon type.
* @return Rules for the craft weapon.
*/
RuleCraftWeapon *const Ruleset::getCraftWeapon(std::string id)
{
return _craftWeapons[id];
}
/**
* Returns the rules for the specified item.
* @param id Item type.
* @return Rules for the item.
*/
RuleItem *const Ruleset::getItem(std::string id)
{
return _items[id];
}
/**
* Returns the rules for the specified UFO.
* @param id UFO type.
* @return Rules for the UFO.
*/
RuleUfo *const Ruleset::getUfo(std::string id)
{
return _ufos[id];
}
/**
* Returns the rules for the specified terrain.
* @param name terrain name.
* @return Rules for the terrain.
*/
RuleTerrain *Ruleset::getTerrain(std::string name)
{
return _terrains[name];
}
/**
* Returns the info about a specific map data file
* @param name datafile name.
* @return Rules for the datafile.
*/
MapDataSet *Ruleset::getMapDataSet(std::string name)
{
return _mapDataFiles[name];
}
/**
* Returns the info about a specific unit to draw it
* @param name datafile name.
* @return Rules for the datafile.
*/
RuleUnitSprite *Ruleset::getUnitSprites(std::string name)
{
return _unitSprites[name];
}
}