1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-23 21:29:13 +02:00

Show per-type object names in editor

This commit is contained in:
Ivan Savenko 2023-07-15 14:50:09 +03:00
parent dddb599bf9
commit 8ed5f412e2
4 changed files with 66 additions and 2 deletions

View File

@ -57,6 +57,8 @@ CObjectClassesHandler::CObjectClassesHandler()
SET_HANDLER_CLASS("shrine", ShrineInstanceConstructor); SET_HANDLER_CLASS("shrine", ShrineInstanceConstructor);
SET_HANDLER_CLASS("hillFort", HillFortInstanceConstructor); SET_HANDLER_CLASS("hillFort", HillFortInstanceConstructor);
SET_HANDLER_CLASS("shipyard", ShipyardInstanceConstructor); SET_HANDLER_CLASS("shipyard", ShipyardInstanceConstructor);
SET_HANDLER_CLASS("monster", CreatureInstanceConstructor);
SET_HANDLER_CLASS("resource", ResourceInstanceConstructor);
SET_HANDLER_CLASS("static", CObstacleConstructor); SET_HANDLER_CLASS("static", CObstacleConstructor);
SET_HANDLER_CLASS("", CObstacleConstructor); SET_HANDLER_CLASS("", CObstacleConstructor);
@ -73,7 +75,6 @@ CObjectClassesHandler::CObjectClassesHandler()
SET_HANDLER("artifact", CGArtifact); SET_HANDLER("artifact", CGArtifact);
SET_HANDLER("borderGate", CGBorderGate); SET_HANDLER("borderGate", CGBorderGate);
SET_HANDLER("borderGuard", CGBorderGuard); SET_HANDLER("borderGuard", CGBorderGuard);
SET_HANDLER("monster", CGCreature);
SET_HANDLER("denOfThieves", CGDenOfthieves); SET_HANDLER("denOfThieves", CGDenOfthieves);
SET_HANDLER("event", CGEvent); SET_HANDLER("event", CGEvent);
SET_HANDLER("garrison", CGGarrison); SET_HANDLER("garrison", CGGarrison);
@ -87,7 +88,6 @@ CObjectClassesHandler::CObjectClassesHandler()
SET_HANDLER("pandora", CGPandoraBox); SET_HANDLER("pandora", CGPandoraBox);
SET_HANDLER("prison", CGHeroInstance); SET_HANDLER("prison", CGHeroInstance);
SET_HANDLER("questGuard", CGQuestGuard); SET_HANDLER("questGuard", CGQuestGuard);
SET_HANDLER("resource", CGResource);
SET_HANDLER("scholar", CGScholar); SET_HANDLER("scholar", CGScholar);
SET_HANDLER("seerHut", CGSeerHut); SET_HANDLER("seerHut", CGSeerHut);
SET_HANDLER("sign", CGSignBottle); SET_HANDLER("sign", CGSignBottle);

View File

@ -20,6 +20,7 @@
#include "../TerrainHandler.h" #include "../TerrainHandler.h"
#include "../VCMI_Lib.h" #include "../VCMI_Lib.h"
#include "../mapObjects/CGCreature.h"
#include "../mapObjects/CGHeroInstance.h" #include "../mapObjects/CGHeroInstance.h"
#include "../mapObjects/CGMarket.h" #include "../mapObjects/CGMarket.h"
#include "../mapObjects/CGTownInstance.h" #include "../mapObjects/CGTownInstance.h"
@ -35,6 +36,26 @@ bool CObstacleConstructor::isStaticObject()
return true; return true;
} }
bool CreatureInstanceConstructor::hasNameTextID() const
{
return true;
}
std::string CreatureInstanceConstructor::getNameTextID() const
{
return VLC->creatures()->getByIndex(getSubIndex())->getNamePluralTextID();
}
bool ResourceInstanceConstructor::hasNameTextID() const
{
return true;
}
std::string ResourceInstanceConstructor::getNameTextID() const
{
return TextIdentifier("core", "restypes", getSubIndex()).get();
}
void CTownInstanceConstructor::initTypeData(const JsonNode & input) void CTownInstanceConstructor::initTypeData(const JsonNode & input)
{ {
VLC->modh->identifiers.requestIdentifier("faction", input["faction"], [&](si32 index) VLC->modh->identifiers.requestIdentifier("faction", input["faction"], [&](si32 index)
@ -86,6 +107,16 @@ void CTownInstanceConstructor::randomizeObject(CGTownInstance * object, CRandomG
object->appearance = templ; object->appearance = templ;
} }
bool CTownInstanceConstructor::hasNameTextID() const
{
return true;
}
std::string CTownInstanceConstructor::getNameTextID() const
{
return faction->getNameTextID();
}
void CHeroInstanceConstructor::initTypeData(const JsonNode & input) void CHeroInstanceConstructor::initTypeData(const JsonNode & input)
{ {
VLC->modh->identifiers.requestIdentifier( VLC->modh->identifiers.requestIdentifier(
@ -133,6 +164,16 @@ void CHeroInstanceConstructor::randomizeObject(CGHeroInstance * object, CRandomG
} }
bool CHeroInstanceConstructor::hasNameTextID() const
{
return true;
}
std::string CHeroInstanceConstructor::getNameTextID() const
{
return heroClass->getNameTextID();
}
void BoatInstanceConstructor::initTypeData(const JsonNode & input) void BoatInstanceConstructor::initTypeData(const JsonNode & input)
{ {
layer = EPathfindingLayer::SAIL; layer = EPathfindingLayer::SAIL;

View File

@ -22,6 +22,7 @@ class CGTownInstance;
class CGHeroInstance; class CGHeroInstance;
class CGMarket; class CGMarket;
class CHeroClass; class CHeroClass;
class CGCreature;
class CBank; class CBank;
class CGBoat; class CGBoat;
class CFaction; class CFaction;
@ -33,6 +34,20 @@ public:
bool isStaticObject() override; bool isStaticObject() override;
}; };
class CreatureInstanceConstructor : public CDefaultObjectTypeHandler<CGCreature>
{
public:
bool hasNameTextID() const override;
std::string getNameTextID() const override;
};
class ResourceInstanceConstructor : public CDefaultObjectTypeHandler<CGResource>
{
public:
bool hasNameTextID() const override;
std::string getNameTextID() const override;
};
class CTownInstanceConstructor : public CDefaultObjectTypeHandler<CGTownInstance> class CTownInstanceConstructor : public CDefaultObjectTypeHandler<CGTownInstance>
{ {
JsonNode filtersJson; JsonNode filtersJson;
@ -48,6 +63,9 @@ public:
void randomizeObject(CGTownInstance * object, CRandomGenerator & rng) const override; void randomizeObject(CGTownInstance * object, CRandomGenerator & rng) const override;
void afterLoadFinalization() override; void afterLoadFinalization() override;
bool hasNameTextID() const override;
std::string getNameTextID() const override;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & filtersJson; h & filtersJson;
@ -72,6 +90,9 @@ public:
void randomizeObject(CGHeroInstance * object, CRandomGenerator & rng) const override; void randomizeObject(CGHeroInstance * object, CRandomGenerator & rng) const override;
void afterLoadFinalization() override; void afterLoadFinalization() override;
bool hasNameTextID() const override;
std::string getNameTextID() const override;
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & filtersJson; h & filtersJson;

View File

@ -107,6 +107,8 @@ void registerTypesMapObjectTypes(Serializer &s)
s.template registerType<AObjectTypeHandler, ShrineInstanceConstructor>(); s.template registerType<AObjectTypeHandler, ShrineInstanceConstructor>();
s.template registerType<AObjectTypeHandler, ShipyardInstanceConstructor>(); s.template registerType<AObjectTypeHandler, ShipyardInstanceConstructor>();
s.template registerType<AObjectTypeHandler, HillFortInstanceConstructor>(); s.template registerType<AObjectTypeHandler, HillFortInstanceConstructor>();
s.template registerType<AObjectTypeHandler, CreatureInstanceConstructor>();
s.template registerType<AObjectTypeHandler, ResourceInstanceConstructor>();
#define REGISTER_GENERIC_HANDLER(TYPENAME) s.template registerType<AObjectTypeHandler, CDefaultObjectTypeHandler<TYPENAME> >() #define REGISTER_GENERIC_HANDLER(TYPENAME) s.template registerType<AObjectTypeHandler, CDefaultObjectTypeHandler<TYPENAME> >()