Make the last couple classes use smart pointers.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-06-02 18:30:37 +02:00
parent 7262ae9e8b
commit 657d646fda
10 changed files with 33 additions and 25 deletions

View File

@@ -1,8 +1,10 @@
#ifndef CREATURELIB_EVENTDATA_HPP
#define CREATURELIB_EVENTDATA_HPP
#include <Arbutils/Memory/BorrowedPtr.hpp>
#include "../Models/DamageSource.hpp"
#include "EventDataKind.hpp"
namespace CreatureLib::Battling {
// Predeclare some classes.
class Creature;
@@ -14,7 +16,7 @@ namespace CreatureLib::Battling {
};
class DamageEvent : public EventData {
Creature* _creature;
ArbUt::BorrowedPtr<Creature> _creature;
DamageSource _damageSource;
uint32_t _originalHealth;
uint32_t _newHealth;
@@ -23,33 +25,33 @@ namespace CreatureLib::Battling {
DamageEvent(Creature* c, DamageSource s, uint32_t oHealth, uint32_t newHealth) noexcept
: _creature(c), _damageSource(s), _originalHealth(oHealth), _newHealth(newHealth) {}
EventDataKind GetKind() const noexcept override { return EventDataKind ::Damage; }
Creature* GetCreature() const noexcept { return _creature; }
const ArbUt::BorrowedPtr<Creature>& GetCreature() const noexcept { return _creature; }
DamageSource GetDamageSource() const noexcept { return _damageSource; }
uint32_t GetOriginalHealth() const noexcept { return _originalHealth; }
uint32_t GetNewHealth() const noexcept { return _newHealth; }
};
class HealEvent : public EventData {
Creature* _creature;
ArbUt::BorrowedPtr<Creature> _creature;
uint32_t _originalHealth;
uint32_t _newHealth;
public:
HealEvent(Creature* c, uint32_t oHealth, uint32_t newHealth) noexcept
HealEvent(ArbUt::BorrowedPtr<Creature> c, uint32_t oHealth, uint32_t newHealth) noexcept
: _creature(c), _originalHealth(oHealth), _newHealth(newHealth) {}
EventDataKind GetKind() const noexcept override { return EventDataKind ::Heal; }
Creature* GetCreature() const noexcept { return _creature; }
const ArbUt::BorrowedPtr<Creature>& GetCreature() const noexcept { return _creature; }
uint32_t GetOriginalHealth() const noexcept { return _originalHealth; }
uint32_t GetNewHealth() const noexcept { return _newHealth; }
};
class FaintEvent : public EventData {
Creature* _creature;
ArbUt::BorrowedPtr<Creature> _creature;
public:
FaintEvent(Creature* c) noexcept : _creature(c) {}
FaintEvent(ArbUt::BorrowedPtr<Creature> c) noexcept : _creature(c) {}
EventDataKind GetKind() const noexcept override { return EventDataKind ::Faint; }
Creature* GetCreature() const noexcept { return _creature; }
const ArbUt::BorrowedPtr<Creature>& GetCreature() const noexcept { return _creature; }
};
class DisplayTextEvent : public EventData {