|
|
|
@ -3,6 +3,7 @@
|
|
|
|
|
#include <sstream>
|
|
|
|
|
#include <fstream>
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
|
template<typename D, typename B> // [D]erived - [B]ase
|
|
|
|
|
std::unique_ptr<D> static_unique_pointer_cast(std::unique_ptr<B>&& old)
|
|
|
|
@ -28,6 +29,7 @@ void Level::Map::init(const std::string &map_file_name)
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sstr.clear();
|
|
|
|
|
sstr.str(cur_line);
|
|
|
|
|
switch (cur_section)
|
|
|
|
|
{
|
|
|
|
@ -74,10 +76,11 @@ void Level::Map::readMapSize(std::istringstream &sstr)
|
|
|
|
|
|
|
|
|
|
void Level::Map::readMapRow(std::istringstream &sstr)
|
|
|
|
|
{
|
|
|
|
|
data.push_back(Row());
|
|
|
|
|
for (int cell_type; sstr >> cell_type;)
|
|
|
|
|
data.emplace_back(Row());
|
|
|
|
|
int cell_type;
|
|
|
|
|
while (sstr >> cell_type)
|
|
|
|
|
{
|
|
|
|
|
data.back().push_back(default_cells[cell_type]->clone());
|
|
|
|
|
data.back().emplace_back(default_cells[cell_type]->clone());
|
|
|
|
|
data.back().back()->setPosition(data.size()-1, data.back().size()-1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|