init_header(&terrains_header);
auto *parser = parse_terrains_info;
auto *retoucher = retouch_terrains_info;
- return init_info("TerrainDefinitions.txt", terrains_header, terrains_info, parser, retoucher);
+ auto &terrains = TerrainList::get_instance();
+ return init_info("TerrainDefinitions.txt", terrains_header, terrains.get_raw_vector(), parser, retoucher);
}
/*!
#include "system/terrain-type-definition.h"
-std::vector<TerrainType> terrains_info;
-
bool TerrainType::is_permanent_wall() const
{
return this->flags.has_all_of({ TerrainCharacteristics::WALL, TerrainCharacteristics::PERMANENT });
return instance;
}
+std::vector<TerrainType> &TerrainList::get_raw_vector()
+{
+ return this->terrains;
+}
+
TerrainType &TerrainList::operator[](short terrain_id)
{
- return terrains_info.at(terrain_id);
+ return this->terrains.at(terrain_id);
}
const TerrainType &TerrainList::operator[](short terrain_id) const
{
- return terrains_info.at(terrain_id);
+ return this->terrains.at(terrain_id);
}
std::vector<TerrainType>::iterator TerrainList::begin()
{
- return terrains_info.begin();
+ return this->terrains.begin();
}
const std::vector<TerrainType>::const_iterator TerrainList::begin() const
{
- return terrains_info.begin();
+ return this->terrains.begin();
}
std::vector<TerrainType>::iterator TerrainList::end()
{
- return terrains_info.end();
+ return this->terrains.end();
}
const std::vector<TerrainType>::const_iterator TerrainList::end() const
{
- return terrains_info.end();
+ return this->terrains.end();
}
size_t TerrainList::size() const
{
- return terrains_info.size();
+ return this->terrains.size();
}
bool TerrainList::empty() const
{
- return terrains_info.empty();
+ return this->terrains.empty();
}
void TerrainList::resize(size_t new_size)
{
- terrains_info.resize(new_size);
+ this->terrains.resize(new_size);
}
bool is_permanent_wall() const;
};
-extern std::vector<TerrainType> terrains_info;
-
class TerrainList {
public:
TerrainList(const TerrainList &) = delete;
const TerrainType &operator[](short terrain_id) const;
static TerrainList &get_instance();
+ std::vector<TerrainType> &get_raw_vector();
std::vector<TerrainType>::iterator begin();
const std::vector<TerrainType>::const_iterator begin() const;
std::vector<TerrainType>::iterator end();
TerrainList() = default;
static TerrainList instance;
+ std::vector<TerrainType> terrains{};
};