mirror of
https://github.com/vcmi/vcmi.git
synced 2025-02-03 13:01:33 +02:00
Fixed missing serialization of new types
This commit is contained in:
parent
e9b41cd3c6
commit
971a93b4f1
@ -337,6 +337,7 @@ CObjectClassesHandler::CObjectClassesHandler()
|
||||
#define SET_HANDLER(STRING, TYPENAME) handlerConstructors[STRING] = std::make_shared<CDefaultObjectTypeHandler<TYPENAME> >
|
||||
|
||||
// list of all known handlers, hardcoded for now since the only way to add new objects is via C++ code
|
||||
//WARNING: should be in sync with registerTypesMapObjectTypes function
|
||||
SET_HANDLER_CLASS("configurable", CObjectWithRewardConstructor);
|
||||
|
||||
SET_HANDLER("", CGObjectInstance);
|
||||
|
@ -113,6 +113,8 @@ protected:
|
||||
|
||||
virtual bool objectFilter(const CGObjectInstance *, const ObjectTemplate &) const;
|
||||
public:
|
||||
virtual ~AObjectTypeHandler(){}
|
||||
|
||||
void setType(si32 type, si32 subtype);
|
||||
|
||||
/// loads templates from Json structure using fields "base" and "templates"
|
||||
|
@ -10,6 +10,8 @@
|
||||
#include "../CHeroHandler.h"
|
||||
#include "../CTownHandler.h"
|
||||
#include "../CModHandler.h" //needed?
|
||||
#include "../CObjectClassesHandler.h"
|
||||
#include "../CObjectConstructor.h"
|
||||
|
||||
/*
|
||||
* RegisterTypes.h, part of VCMI engine
|
||||
@ -72,6 +74,61 @@ void registerTypesMapObjects1(Serializer &s)
|
||||
s.template registerType<CGSeerHut, CGQuestGuard>();
|
||||
}
|
||||
|
||||
template<typename Serializer>
|
||||
void registerTypesMapObjectTypes(Serializer &s)
|
||||
{
|
||||
s.template registerType<AObjectTypeHandler, CObjectWithRewardConstructor>();
|
||||
|
||||
#define REGISTER_GENERIC_HANDLER(TYPENAME) s.template registerType<AObjectTypeHandler, CDefaultObjectTypeHandler<TYPENAME> >()
|
||||
|
||||
REGISTER_GENERIC_HANDLER(CGObjectInstance);
|
||||
REGISTER_GENERIC_HANDLER(CGMarket);
|
||||
REGISTER_GENERIC_HANDLER(CBank);
|
||||
REGISTER_GENERIC_HANDLER(CCartographer);
|
||||
REGISTER_GENERIC_HANDLER(CGArtifact);
|
||||
REGISTER_GENERIC_HANDLER(CGBlackMarket);
|
||||
REGISTER_GENERIC_HANDLER(CGBoat);
|
||||
REGISTER_GENERIC_HANDLER(CGBonusingObject);
|
||||
REGISTER_GENERIC_HANDLER(CGBorderGate);
|
||||
REGISTER_GENERIC_HANDLER(CGBorderGuard);
|
||||
REGISTER_GENERIC_HANDLER(CGCreature);
|
||||
REGISTER_GENERIC_HANDLER(CGDenOfthieves);
|
||||
REGISTER_GENERIC_HANDLER(CGDwelling);
|
||||
REGISTER_GENERIC_HANDLER(CGEvent);
|
||||
REGISTER_GENERIC_HANDLER(CGGarrison);
|
||||
REGISTER_GENERIC_HANDLER(CGHeroInstance);
|
||||
REGISTER_GENERIC_HANDLER(CGHeroPlaceholder);
|
||||
REGISTER_GENERIC_HANDLER(CGKeymasterTent);
|
||||
REGISTER_GENERIC_HANDLER(CGLighthouse);
|
||||
REGISTER_GENERIC_HANDLER(CGMagi);
|
||||
REGISTER_GENERIC_HANDLER(CGMagicSpring);
|
||||
REGISTER_GENERIC_HANDLER(CGMagicWell);
|
||||
REGISTER_GENERIC_HANDLER(CGMarket);
|
||||
REGISTER_GENERIC_HANDLER(CGMine);
|
||||
REGISTER_GENERIC_HANDLER(CGObelisk);
|
||||
REGISTER_GENERIC_HANDLER(CGObservatory);
|
||||
REGISTER_GENERIC_HANDLER(CGOnceVisitable);
|
||||
REGISTER_GENERIC_HANDLER(CGPandoraBox);
|
||||
REGISTER_GENERIC_HANDLER(CGPickable);
|
||||
REGISTER_GENERIC_HANDLER(CGPyramid);
|
||||
REGISTER_GENERIC_HANDLER(CGQuestGuard);
|
||||
REGISTER_GENERIC_HANDLER(CGResource);
|
||||
REGISTER_GENERIC_HANDLER(CGScholar);
|
||||
REGISTER_GENERIC_HANDLER(CGSeerHut);
|
||||
REGISTER_GENERIC_HANDLER(CGShipyard);
|
||||
REGISTER_GENERIC_HANDLER(CGShrine);
|
||||
REGISTER_GENERIC_HANDLER(CGSignBottle);
|
||||
REGISTER_GENERIC_HANDLER(CGSirens);
|
||||
REGISTER_GENERIC_HANDLER(CGTeleport);
|
||||
REGISTER_GENERIC_HANDLER(CGTownInstance);
|
||||
REGISTER_GENERIC_HANDLER(CGUniversity);
|
||||
REGISTER_GENERIC_HANDLER(CGVisitableOPH);
|
||||
REGISTER_GENERIC_HANDLER(CGVisitableOPW);
|
||||
REGISTER_GENERIC_HANDLER(CGWitchHut);
|
||||
|
||||
#undef REGISTER_GENERIC_HANDLER
|
||||
}
|
||||
|
||||
template<typename Serializer>
|
||||
void registerTypesMapObjects2(Serializer &s)
|
||||
{
|
||||
@ -302,6 +359,7 @@ void registerTypes(Serializer &s)
|
||||
{
|
||||
registerTypesMapObjects1(s);
|
||||
registerTypesMapObjects2(s);
|
||||
registerTypesMapObjectTypes(s);
|
||||
registerTypesClientPacks1(s);
|
||||
registerTypesClientPacks2(s);
|
||||
registerTypesServerPacks(s);
|
||||
|
@ -18,6 +18,14 @@
|
||||
#include "../NetPacks.h"
|
||||
#include "../CObjectClassesHandler.h"
|
||||
|
||||
template void registerTypesMapObjectTypes<CISer<CConnection>>(CISer<CConnection>& s);
|
||||
template void registerTypesMapObjectTypes<COSer<CConnection>>(COSer<CConnection>& s);
|
||||
template void registerTypesMapObjectTypes<CISer<CMemorySerializer>>(CISer<CMemorySerializer>& s);
|
||||
template void registerTypesMapObjectTypes<COSer<CMemorySerializer>>(COSer<CMemorySerializer>& s);
|
||||
template void registerTypesMapObjectTypes<CSaveFile>(CSaveFile & s);
|
||||
template void registerTypesMapObjectTypes<CLoadFile>(CLoadFile & s);
|
||||
template void registerTypesMapObjectTypes<CTypeList>(CTypeList & s);
|
||||
template void registerTypesMapObjectTypes<CLoadIntegrityValidator>(CLoadIntegrityValidator & s);
|
||||
|
||||
template void registerTypesMapObjects1<CISer<CConnection>>(CISer<CConnection>& s);
|
||||
template void registerTypesMapObjects1<COSer<CConnection>>(COSer<CConnection>& s);
|
||||
|
Loading…
x
Reference in New Issue
Block a user