mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-22 22:13:35 +02:00
3dd4fa2528
Final goal (of multiple PR's) is to remove all remaining pointers from serializeable game state, and replace them with either identifiers or with shared/unique pointers. CGTownInstance::town and CGHeroInstance::type members have been removed. Now this data is computed dynamically using subID member. VLC entity of a town can now be accessed via following methods: - getFactionID() returns ID of a faction - getFaction() returns pointer to a faction - getTown() returns pointer to a town VLC entity of a hero can now be accessed via following methods: - getHeroTypeID() returns ID of a hero - getHeroClassID() returns ID of a hero class - getHeroType() returns pointer to a hero - getHeroClass() returns pointer to a hero class
86 lines
2.2 KiB
C++
86 lines
2.2 KiB
C++
/*
|
|
* 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>
|
|
|
|
#include "../../Point.h"
|
|
#include "../../constants/EntityIdentifiers.h"
|
|
#include "../../constants/Enumerations.h"
|
|
#include "../../filesystem/ResourcePath.h"
|
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
|
|
class CTown;
|
|
|
|
struct DLL_LINKAGE SPuzzleInfo
|
|
{
|
|
Point position;
|
|
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;
|
|
|
|
FactionID getFactionID() const override; //This function should not be used
|
|
|
|
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;
|
|
std::string getModScope() const override;
|
|
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
|