diff --git a/conanfile.py b/conanfile.py index 926149a..5d3adb4 100644 --- a/conanfile.py +++ b/conanfile.py @@ -6,11 +6,12 @@ class CreatureLibConan(ConanFile): license = "TODO" url = "https://git.p-epsilon.com/Deukhoofd/CreatureLib" description = "The core implementation for turn based battling using creatures." - settings = "os", "compiler", "build_type", "arch" + settings = "compiler" options = {"shared": [True, False]} default_options = {"shared": False} generators = "cmake" exports_sources = "*" + compiler = "clang" def build(self): cmake = CMake(self) diff --git a/src/Battling/Models/Creature.cpp b/src/Battling/Models/Creature.cpp index afcffd8..3f82a84 100644 --- a/src/Battling/Models/Creature.cpp +++ b/src/Battling/Models/Creature.cpp @@ -2,6 +2,7 @@ #include #include #include "../Models/Battle.hpp" +#include "../ScriptHandling/ScriptMacros.cpp" using namespace CreatureLib; @@ -152,3 +153,13 @@ void Battling::Creature::AddExperience(uint32_t amount) { __Experience = exp; __Level = level; } +const Library::CreatureSpecies* Battling::Creature::GetDisplaySpecies() { + auto species = __Species; + HOOK(OverrideDisplaySpecies, this, this, &species); + return species; +} +const Library::SpeciesVariant* Battling::Creature::GetDisplayVariant() { + auto variant = __Variant; + HOOK(OverrideDisplayVariant, this, this, &variant); + return variant; +} diff --git a/src/Battling/Models/Creature.hpp b/src/Battling/Models/Creature.hpp index 2887297..8fb5b9d 100644 --- a/src/Battling/Models/Creature.hpp +++ b/src/Battling/Models/Creature.hpp @@ -95,6 +95,9 @@ namespace CreatureLib::Battling { std::vector& GetAttacks() { return _attacks; } + const Library::CreatureSpecies* GetDisplaySpecies(); + const Library::SpeciesVariant* GetDisplayVariant(); + // region Stat APIs void ChangeStatBoost(Core::Statistic stat, int8_t diffAmount); diff --git a/src/Battling/ScriptHandling/Script.hpp b/src/Battling/ScriptHandling/Script.hpp index ad45b94..1f0d4f2 100644 --- a/src/Battling/ScriptHandling/Script.hpp +++ b/src/Battling/ScriptHandling/Script.hpp @@ -5,6 +5,7 @@ #include #include #include +#include "../../Library/CreatureData/CreatureSpecies.hpp" namespace CreatureLib::Battling { class BaseTurnChoice; @@ -24,6 +25,10 @@ namespace CreatureLib::Battling { const std::string& GetName() { return _name; } + virtual void OverrideDisplaySpecies(Creature* creature, + const CreatureLib::Library::CreatureSpecies** species){}; + virtual void OverrideDisplayVariant(Creature* creature, const CreatureLib::Library::SpeciesVariant** variant){}; + virtual void OnBeforeTurn(const BaseTurnChoice* choice){}; virtual void ChangeAttack(AttackTurnChoice* choice, std::string& attack){};