1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

add mines support

This commit is contained in:
Laserlicht
2025-09-28 22:47:41 +02:00
parent 076f7ba5b5
commit 5ae4db60e3
11 changed files with 79 additions and 17 deletions

View File

@@ -67,6 +67,7 @@ CObjectClassesHandler::CObjectClassesHandler()
SET_HANDLER_CLASS("shipyard", ShipyardInstanceConstructor);
SET_HANDLER_CLASS("monster", CreatureInstanceConstructor);
SET_HANDLER_CLASS("resource", ResourceInstanceConstructor);
SET_HANDLER_CLASS("mine", MineInstanceConstructor);
SET_HANDLER_CLASS("static", CObstacleConstructor);
SET_HANDLER_CLASS("", CObstacleConstructor);
@@ -88,7 +89,6 @@ CObjectClassesHandler::CObjectClassesHandler()
SET_HANDLER("heroPlaceholder", CGHeroPlaceholder);
SET_HANDLER("keymaster", CGKeymasterTent);
SET_HANDLER("magi", CGMagi);
SET_HANDLER("mine", CGMine);
SET_HANDLER("obelisk", CGObelisk);
SET_HANDLER("pandora", CGPandoraBox);
SET_HANDLER("prison", CGHeroInstance);

View File

@@ -90,6 +90,22 @@ void ResourceInstanceConstructor::randomizeObject(CGResource * object, IGameRand
object->amount = 5 * getAmountMultiplier();
}
void MineInstanceConstructor::initTypeData(const JsonNode & input)
{
config = input;
resourceType = GameResID::NONE; //set up fallback
LIBRARY->identifiers()->requestIdentifierIfNotNull("resource", input["resource"], [&](si32 index)
{
resourceType = GameResID(index);
});
}
GameResID MineInstanceConstructor::getResourceType() const
{
return resourceType;
}
void CTownInstanceConstructor::initTypeData(const JsonNode & input)
{
LIBRARY->identifiers()->requestIdentifier("faction", input["faction"], [&](si32 index)

View File

@@ -62,6 +62,16 @@ public:
void randomizeObject(CGResource * object, IGameRandomizer & gameRandomizer) const override;
};
class DLL_LINKAGE MineInstanceConstructor : public CDefaultObjectTypeHandler<CGMine>
{
JsonNode config;
GameResID resourceType;
public:
void initTypeData(const JsonNode & input) override;
GameResID getResourceType() const;
};
class CTownInstanceConstructor : public CDefaultObjectTypeHandler<CGTownInstance>
{
JsonNode filtersJson;