1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-26 22:57:00 +02:00
vcmi/lib/CMapInfo.cpp
Michał W. Urbańczyk 7dc0d6878e Rewritten battle obstacles. New file for lib: CObstacleInstance.cpp.
Now obstacles should be placed exactly like they were in OH3. 
All problems with displaying obstacles in battlefield should be gone. They should be now matched to the single pixel. 
If there are still some discrepancies, please report them.
2012-04-23 19:56:37 +00:00

72 lines
1.5 KiB
C++

#include "StdInc.h"
#include "CMapInfo.h"
#include "StartInfo.h"
#include "map.h"
#include "CCampaignHandler.h"
#include "GameConstants.h"
void CMapInfo::countPlayers()
{
actualHumanPlayers = playerAmnt = humenPlayers = 0;
for(int i=0;i<GameConstants::PLAYER_LIMIT;i++)
{
if(mapHeader->players[i].canHumanPlay)
{
playerAmnt++;
humenPlayers++;
}
else if(mapHeader->players[i].canComputerPlay)
{
playerAmnt++;
}
}
if(scenarioOpts)
for (std::map<int, PlayerSettings>::const_iterator i = scenarioOpts->playerInfos.begin(); i != scenarioOpts->playerInfos.end(); i++)
if(i->second.human)
actualHumanPlayers++;
}
CMapInfo::CMapInfo(bool map)
: mapHeader(NULL), campaignHeader(NULL), scenarioOpts(NULL)
{
}
void CMapInfo::mapInit(const std::string &fname, const ui8 *map )
{
filename = fname;
int i = 0;
mapHeader = new CMapHeader();
mapHeader->version = CMapHeader::invalid;
try
{
mapHeader->initFromMemory(map, i);
countPlayers();
}
catch (const std::exception &e)
{
tlog1 << "\t\tWarning: evil map file: " << fname << ": " << e.what() << std::endl;
delete mapHeader;
mapHeader = NULL;
}
}
CMapInfo::~CMapInfo()
{
delete mapHeader;
delete campaignHeader;
}
void CMapInfo::campaignInit()
{
campaignHeader = new CCampaignHeader( CCampaignHandler::getHeader(filename, lodCmpgn) );
}
void CMapInfo::setHeader(CMapHeader *header)
{
mapHeader = header;
}