1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Fixed compilation with MSVC.

This commit is contained in:
Michał W. Urbańczyk 2014-03-08 19:02:47 +00:00
parent d2ae847ecf
commit 7d1e54baa7
5 changed files with 64 additions and 64 deletions

View File

@ -542,7 +542,7 @@ std::vector<JsonNode> CSpellHandler::loadLegacyData(size_t dataSize)
return legacyData;
}
const std::string CSpellHandler::getTypeName()
const std::string CSpellHandler::getTypeName() const
{
return "spell";
}

View File

@ -257,7 +257,7 @@ public:
*/
std::vector<bool> getDefaultAllowed() const override;
const std::string getTypeName() override;
const std::string getTypeName() const override;
template <typename Handler> void serialize(Handler &h, const int version)
{

View File

@ -49,53 +49,53 @@ public:
template <class _ObjectID, class _Object> class CHandlerBase: public IHandlerBase
{
public:
virtual ~CHandlerBase()
{
for(auto & o : objects)
{
o.dellNull();
}
virtual ~CHandlerBase()
{
for(auto & o : objects)
{
o.dellNull();
}
}
}
void loadObject(std::string scope, std::string name, const JsonNode & data) override
{
auto type_name = getTypeName();
auto object = loadFromJson(data);
object->id = _ObjectID(objects.size());
auto type_name = getTypeName();
auto object = loadFromJson(data);
object->id = _ObjectID(objects.size());
objects.push_back(object);
objects.push_back(object);
VLC->modh->identifiers.registerObject(scope, type_name, name, object->id);
VLC->modh->identifiers.registerObject(scope, type_name, name, object->id);
}
void loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) override
{
auto type_name = getTypeName();
auto object = loadFromJson(data);
object->id = _ObjectID(index);
auto type_name = getTypeName();
auto object = loadFromJson(data);
object->id = _ObjectID(index);
assert(objects[index] == nullptr); // ensure that this id was not loaded before
objects[index] = object;
assert(objects[index] == nullptr); // ensure that this id was not loaded before
objects[index] = object;
VLC->modh->identifiers.registerObject(scope,type_name, name, object->id);
VLC->modh->identifiers.registerObject(scope,type_name, name, object->id);
}
ConstTransitivePtr<_Object> operator[] (const _ObjectID id) const
{
const auto raw_id = id.toEnum();
if (raw_id < 0 || raw_id >= objects.size())
{
logGlobal->errorStream() << getTypeName() << " id " << static_cast<si64>(raw_id) << "is invalid";
throw std::runtime_error ("internal error");
}
{
const auto raw_id = id.toEnum();
return objects[raw_id];
if (raw_id < 0 || raw_id >= objects.size())
{
logGlobal->errorStream() << getTypeName() << " id " << static_cast<si64>(raw_id) << "is invalid";
throw std::runtime_error ("internal error");
}
return objects[raw_id];
}
protected:
virtual _Object * loadFromJson(const JsonNode & json) = 0;
virtual const std::string getTypeName() = 0;
virtual _Object * loadFromJson(const JsonNode & json) = 0;
virtual const std::string getTypeName() const = 0;
public: //todo: make private
std::vector<ConstTransitivePtr<_Object>> objects;
std::vector<ConstTransitivePtr<_Object>> objects;
};

View File

@ -1,22 +1,22 @@
#include "StdInc.h"
#include "RegisterTypes.h"
#include "mapping/CMapInfo.h"
#include "StartInfo.h"
#include "BattleState.h"
#include "CGameState.h"
#include "mapping/CMap.h"
#include "CModHandler.h"
#include "CObjectHandler.h"
#include "CCreatureHandler.h"
#include "VCMI_Lib.h"
#include "CArtHandler.h"
#include "CHeroHandler.h"
#include "CSpellHandler.h"
#include "CTownHandler.h"
#include "mapping/CCampaignHandler.h"
#include "NetPacks.h"
#include "CDefObjInfoHandler.h"
#include "../mapping/CMapInfo.h"
#include "../StartInfo.h"
#include "../BattleState.h"
#include "../CGameState.h"
#include "../mapping/CMap.h"
#include "../CModHandler.h"
#include "../CObjectHandler.h"
#include "../CCreatureHandler.h"
#include "../VCMI_Lib.h"
#include "../CArtHandler.h"
#include "../CHeroHandler.h"
#include "../CSpellHandler.h"
#include "../CTownHandler.h"
#include "../mapping/CCampaignHandler.h"
#include "../NetPacks.h"
#include "../CDefObjInfoHandler.h"
template void registerTypesMapObjects1<CISer<CConnection>>(CISer<CConnection>& s);

View File

@ -1,22 +1,22 @@
#include "StdInc.h"
#include "RegisterTypes.h"
#include "mapping/CMapInfo.h"
#include "StartInfo.h"
#include "BattleState.h"
#include "CGameState.h"
#include "mapping/CMap.h"
#include "CModHandler.h"
#include "CObjectHandler.h"
#include "CCreatureHandler.h"
#include "VCMI_Lib.h"
#include "CArtHandler.h"
#include "CHeroHandler.h"
#include "CSpellHandler.h"
#include "CTownHandler.h"
#include "mapping/CCampaignHandler.h"
#include "NetPacks.h"
#include "CDefObjInfoHandler.h"
#include "../mapping/CMapInfo.h"
#include "../StartInfo.h"
#include "../BattleState.h"
#include "../CGameState.h"
#include "../mapping/CMap.h"
#include "../CModHandler.h"
#include "../CObjectHandler.h"
#include "../CCreatureHandler.h"
#include "../VCMI_Lib.h"
#include "../CArtHandler.h"
#include "../CHeroHandler.h"
#include "../CSpellHandler.h"
#include "../CTownHandler.h"
#include "../mapping/CCampaignHandler.h"
#include "../NetPacks.h"
#include "../CDefObjInfoHandler.h"
template void registerTypesMapObjects2<CISer<CConnection>>(CISer<CConnection>& s);