1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-17 01:32:21 +02:00

Firts working version that launches original maps

This commit is contained in:
Tomasz Zieliński
2022-09-21 13:43:57 +02:00
parent 11e1bb44a2
commit c9c4603f75
4 changed files with 29 additions and 21 deletions

View File

@ -74,10 +74,10 @@ TerrainTypeHandler::TerrainTypeHandler()
} }
else else
{ {
auto rockTerrainType = terr.second["rockTerrain"].String(); auto rockTerrainName = terr.second["rockTerrain"].String();
resolveLater.push_back([this, rockTerrainType, info]() resolveLater.push_back([this, rockTerrainName, info]()
{ {
info->rockTerrain = getInfoByName(rockTerrainType)->id; info->rockTerrain = getInfoByName(rockTerrainName)->id;
}); });
} }
@ -159,6 +159,7 @@ TerrainTypeHandler::TerrainTypeHandler()
id = objects.size(); id = objects.size();
objects.push_back(info); objects.push_back(info);
} }
info->id = id;
} }
} }
@ -168,7 +169,8 @@ TerrainTypeHandler::TerrainTypeHandler()
assert(objects(i)); assert(objects(i));
} }
//TODO: add ids to resolve recreateTerrainMaps();
for (auto& functor : resolveLater) for (auto& functor : resolveLater)
{ {
functor(); functor();
@ -216,7 +218,7 @@ TerrainType::operator std::string() const
} }
TerrainType::TerrainType(const std::string& _name): TerrainType::TerrainType(const std::string& _name):
name(name), name(_name),
id(Terrain::WRONG), id(Terrain::WRONG),
rockTerrain(Terrain::ROCK), rockTerrain(Terrain::ROCK),
moveCost(100), moveCost(100),

View File

@ -193,10 +193,10 @@ void LibClasses::init(bool onlyEssential)
createHandler(bth, "Bonus type", pomtime); createHandler(bth, "Bonus type", pomtime);
createHandler(generaltexth, "General text", pomtime);
createHandler(terrainTypeHandler, "Terrain", pomtime); createHandler(terrainTypeHandler, "Terrain", pomtime);
createHandler(generaltexth, "General text", pomtime);
createHandler(heroh, "Hero", pomtime); createHandler(heroh, "Hero", pomtime);
createHandler(arth, "Artifact", pomtime); createHandler(arth, "Artifact", pomtime);

View File

@ -483,6 +483,8 @@ void AObjectTypeHandler::init(const JsonNode & input, boost::optional<std::strin
} // else block is not needed - set in constructor } // else block is not needed - set in constructor
for (auto entry : input["templates"].Struct()) for (auto entry : input["templates"].Struct())
{
try
{ {
entry.second.setType(JsonNode::JsonType::DATA_STRUCT); entry.second.setType(JsonNode::JsonType::DATA_STRUCT);
JsonUtils::inherit(entry.second, base); JsonUtils::inherit(entry.second, base);
@ -494,6 +496,11 @@ void AObjectTypeHandler::init(const JsonNode & input, boost::optional<std::strin
tmpl->readJson(entry.second); tmpl->readJson(entry.second);
templates.push_back(std::shared_ptr<const ObjectTemplate>(tmpl)); templates.push_back(std::shared_ptr<const ObjectTemplate>(tmpl));
} }
catch (const std::exception & e)
{
logGlobal->warn("Failed to load terrains for object %s: %s", entry.first, e.what());
}
}
if (input["name"].isNull()) if (input["name"].isNull())
objectName = name; objectName = name;

View File

@ -300,7 +300,6 @@ void ObjectTemplate::readJson(const JsonNode &node, const bool withTerrain)
if (withTerrain && allowedTerrains.empty()) if (withTerrain && allowedTerrains.empty())
logGlobal->warn("Loaded template without allowed terrains!"); logGlobal->warn("Loaded template without allowed terrains!");
auto charToTile = [&](const char & ch) -> ui8 auto charToTile = [&](const char & ch) -> ui8
{ {
switch (ch) switch (ch)