2024-07-21 12:49:40 +02:00
|
|
|
/*
|
|
|
|
* CFaction.h, part of VCMI engine
|
|
|
|
*
|
|
|
|
* Authors: listed in file AUTHORS in main folder
|
|
|
|
*
|
|
|
|
* License: GNU General Public License v2.0 or later
|
|
|
|
* Full text of license available in license.txt file, in main folder
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <vcmi/Faction.h>
|
|
|
|
|
2024-08-12 20:26:30 +02:00
|
|
|
#include "../../Point.h"
|
2024-07-21 12:49:40 +02:00
|
|
|
#include "../../constants/EntityIdentifiers.h"
|
|
|
|
#include "../../constants/Enumerations.h"
|
|
|
|
#include "../../filesystem/ResourcePath.h"
|
|
|
|
|
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
|
|
|
|
|
|
class CTown;
|
|
|
|
|
|
|
|
struct DLL_LINKAGE SPuzzleInfo
|
|
|
|
{
|
2024-08-12 20:26:30 +02:00
|
|
|
Point position;
|
2024-07-21 12:49:40 +02:00
|
|
|
ui16 number; //type of puzzle
|
|
|
|
ui16 whenUncovered; //determines the sequence of discovering (the lesser it is the sooner puzzle will be discovered)
|
|
|
|
ImagePath filename; //file with graphic of this puzzle
|
|
|
|
};
|
|
|
|
|
|
|
|
class DLL_LINKAGE CFaction : public Faction
|
|
|
|
{
|
|
|
|
friend class CTownHandler;
|
|
|
|
friend class CBuilding;
|
|
|
|
friend class CTown;
|
|
|
|
|
|
|
|
std::string modScope;
|
|
|
|
std::string identifier;
|
|
|
|
|
|
|
|
FactionID index = FactionID::NEUTRAL;
|
|
|
|
|
2024-10-05 21:37:52 +02:00
|
|
|
FactionID getFactionID() const override; //This function should not be used
|
2024-07-21 12:49:40 +02:00
|
|
|
|
|
|
|
public:
|
|
|
|
TerrainId nativeTerrain;
|
|
|
|
EAlignment alignment = EAlignment::NEUTRAL;
|
|
|
|
bool preferUndergroundPlacement = false;
|
|
|
|
bool special = false;
|
|
|
|
|
|
|
|
/// Boat that will be used by town shipyard (if any)
|
|
|
|
/// and for placing heroes directly on boat (in map editor, water prisons & taverns)
|
|
|
|
BoatId boatType = BoatId::CASTLE;
|
|
|
|
|
|
|
|
CTown * town = nullptr; //NOTE: can be null
|
|
|
|
|
|
|
|
ImagePath creatureBg120;
|
|
|
|
ImagePath creatureBg130;
|
|
|
|
|
|
|
|
std::vector<SPuzzleInfo> puzzleMap;
|
|
|
|
|
|
|
|
CFaction() = default;
|
|
|
|
~CFaction();
|
|
|
|
|
|
|
|
int32_t getIndex() const override;
|
|
|
|
int32_t getIconIndex() const override;
|
|
|
|
std::string getJsonKey() const override;
|
2024-08-10 16:08:04 +02:00
|
|
|
std::string getModScope() const override;
|
2024-07-21 12:49:40 +02:00
|
|
|
void registerIcons(const IconRegistar & cb) const override;
|
|
|
|
FactionID getId() const override;
|
|
|
|
|
|
|
|
std::string getNameTranslated() const override;
|
|
|
|
std::string getNameTextID() const override;
|
|
|
|
std::string getDescriptionTranslated() const;
|
|
|
|
std::string getDescriptionTextID() const;
|
|
|
|
|
|
|
|
bool hasTown() const override;
|
|
|
|
TerrainId getNativeTerrain() const override;
|
|
|
|
EAlignment getAlignment() const override;
|
|
|
|
BoatId getBoatType() const override;
|
|
|
|
|
|
|
|
void updateFrom(const JsonNode & data);
|
|
|
|
void serializeJson(JsonSerializeFormat & handler);
|
|
|
|
};
|
|
|
|
|
|
|
|
VCMI_LIB_NAMESPACE_END
|