diff --git a/CInterface/Battling/EventData.cpp b/CInterface/Battling/EventData.cpp new file mode 100644 index 0000000..cfc59a2 --- /dev/null +++ b/CInterface/Battling/EventData.cpp @@ -0,0 +1,19 @@ +#include "../../src/Battling/EventHooks/EventData.hpp" +#define export extern "C" +using namespace CreatureLib::Battling; + +export void CreatureLib_EventData_Destruct(const EventData* p) { delete p; } + +#define SIMPLE_GET_FUNC(type, name, returnType) \ + export returnType CreatureLib_##type##_##name(const type* p) { return p->name(); } + +SIMPLE_GET_FUNC(EventData, GetKind, EventDataKind); + +SIMPLE_GET_FUNC(DamageEvent, GetCreature, Creature*); +SIMPLE_GET_FUNC(DamageEvent, GetDamageSource, DamageSource); +SIMPLE_GET_FUNC(DamageEvent, GetOriginalHealth, uint32_t); +SIMPLE_GET_FUNC(DamageEvent, GetNewHealth, uint32_t); + +SIMPLE_GET_FUNC(HealEvent, GetCreature, Creature*); +SIMPLE_GET_FUNC(HealEvent, GetOriginalHealth, uint32_t); +SIMPLE_GET_FUNC(HealEvent, GetNewHealth, uint32_t); diff --git a/src/Battling/EventHooks/EventData.hpp b/src/Battling/EventHooks/EventData.hpp index 32bc0f9..1ff7bc9 100644 --- a/src/Battling/EventHooks/EventData.hpp +++ b/src/Battling/EventHooks/EventData.hpp @@ -10,7 +10,7 @@ namespace CreatureLib::Battling { class EventData { public: virtual ~EventData() = default; - virtual EventDataKind GetKind() = 0; + virtual EventDataKind GetKind() const = 0; }; class DamageEvent : public EventData { @@ -22,7 +22,7 @@ namespace CreatureLib::Battling { public: DamageEvent(Creature* c, DamageSource s, uint32_t oHealth, uint32_t newHealth) : _creature(c), _damageSource(s), _originalHealth(oHealth), _newHealth(newHealth) {} - EventDataKind GetKind() override { return EventDataKind ::Damage; } + EventDataKind GetKind() const override { return EventDataKind ::Damage; } Creature* GetCreature() const { return _creature; } DamageSource GetDamageSource() const { return _damageSource; } uint32_t GetOriginalHealth() const { return _originalHealth; } @@ -37,7 +37,7 @@ namespace CreatureLib::Battling { public: HealEvent(Creature* c, uint32_t oHealth, uint32_t newHealth) : _creature(c), _originalHealth(oHealth), _newHealth(newHealth) {} - EventDataKind GetKind() override { return EventDataKind ::Damage; } + EventDataKind GetKind() const override { return EventDataKind ::Heal; } Creature* GetCreature() const { return _creature; } uint32_t GetOriginalHealth() const { return _originalHealth; } uint32_t GetNewHealth() const { return _newHealth; } diff --git a/src/Battling/EventHooks/EventDataKind.hpp b/src/Battling/EventHooks/EventDataKind.hpp index 6d850f8..29d1a46 100644 --- a/src/Battling/EventHooks/EventDataKind.hpp +++ b/src/Battling/EventHooks/EventDataKind.hpp @@ -1,8 +1,9 @@ #ifndef CREATURELIB_EVENTDATAKIND_HPP #define CREATURELIB_EVENTDATAKIND_HPP +#include namespace CreatureLib::Battling { - enum EventDataKind { Damage }; + ENUM(EventDataKind, uint8_t, Damage, Heal) } #endif // CREATURELIB_EVENTDATAKIND_HPP