| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #define VCMI_DLL
- #include "CMapInfo.h"
- #include "../StartInfo.h"
- #include "map.h"
- #include "../hch/CCampaignHandler.h"
- void CMapInfo::countPlayers()
- {
- actualHumanPlayers = playerAmnt = humenPlayers = 0;
- for(int i=0;i<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 unsigned char *map )
- {
- filename = fname;
- int i = 0;
- mapHeader = new CMapHeader();
- mapHeader->version = CMapHeader::invalid;
- try
- {
- mapHeader->initFromMemory(map, i);
- countPlayers();
- }
- catch (const std::string &e)
- {
- tlog1 << "\t\tWarning: evil map file: " << fname << ": " << e << 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;
- }
|