1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00
vcmi/lib/CBuildingHandler.cpp
Johannes Schauer Marin Rodrigues a1a5bc28c2
convert line endings from CRLF (Windows) to LF (Linux/Unix)
Mixed line endings cause problems when exporting patches with
git-format-patch and then trying to "git am" a patch with mixed and
non-matching line endings. In such a situation git will fail to apply
the patch.

This commit runs the dos2unix tools on the remaining files with CRLF
(\r\n) line endings to convert them to line-feeds (\n) only.

Files that are Windows specific like *.vcxproj and *.props files were
not converted.

Closes: #3073
2023-10-19 16:23:21 +02:00

86 lines
2.5 KiB
C++

/*
* CBuildingHandler.cpp, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#include "StdInc.h"
#include "CBuildingHandler.h"
VCMI_LIB_NAMESPACE_BEGIN
BuildingID CBuildingHandler::campToERMU(int camp, int townType, const std::set<BuildingID> & builtBuildings)
{
static const std::vector<BuildingID> campToERMU =
{
BuildingID::TOWN_HALL, BuildingID::CITY_HALL,
BuildingID::CAPITOL, BuildingID::FORT, BuildingID::CITADEL, BuildingID::CASTLE, BuildingID::TAVERN,
BuildingID::BLACKSMITH, BuildingID::MARKETPLACE, BuildingID::RESOURCE_SILO, BuildingID::NONE,
BuildingID::MAGES_GUILD_1, BuildingID::MAGES_GUILD_2, BuildingID::MAGES_GUILD_3, BuildingID::MAGES_GUILD_4,
BuildingID::MAGES_GUILD_5,
BuildingID::SHIPYARD, BuildingID::GRAIL,
BuildingID::SPECIAL_1, BuildingID::SPECIAL_2, BuildingID::SPECIAL_3, BuildingID::SPECIAL_4
}; //creature generators with banks - handled separately
if (camp < campToERMU.size())
{
return campToERMU[camp];
}
static const std::vector<int> hordeLvlsPerTType[GameConstants::F_NUMBER] =
{
{2}, {1}, {1,4}, {0,2}, {0}, {0}, {0}, {0}, {0}
};
int curPos = static_cast<int>(campToERMU.size());
for (int i=0; i<GameConstants::CREATURES_PER_TOWN; ++i)
{
if(camp == curPos) //non-upgraded
return BuildingID(30 + i);
curPos++;
if(camp == curPos) //upgraded
return BuildingID(37 + i);
curPos++;
if (i < 5) // last two levels don't have reserved horde ID. Yet another H3C weirdeness
{
if (vstd::contains(hordeLvlsPerTType[townType], i))
{
if (camp == curPos)
{
if (hordeLvlsPerTType[townType][0] == i)
{
BuildingID dwellingID(BuildingID::DWELL_UP_FIRST + hordeLvlsPerTType[townType][0]);
if(vstd::contains(builtBuildings, dwellingID)) //if upgraded dwelling is built
return BuildingID::HORDE_1_UPGR;
else //upgraded dwelling not presents
return BuildingID::HORDE_1;
}
else
{
if(hordeLvlsPerTType[townType].size() > 1)
{
BuildingID dwellingID(BuildingID::DWELL_UP_FIRST + hordeLvlsPerTType[townType][1]);
if(vstd::contains(builtBuildings, dwellingID)) //if upgraded dwelling is built
return BuildingID::HORDE_2_UPGR;
else //upgraded dwelling not presents
return BuildingID::HORDE_2;
}
}
}
}
curPos++;
}
}
assert(0);
return BuildingID::NONE; //not found
}
VCMI_LIB_NAMESPACE_END