Trigger event hook on weather change/
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Deukhoofd 2020-04-18 16:21:38 +02:00
parent 6955c2c69f
commit aa1e6ae5b3
Signed by: Deukhoofd
GPG Key ID: ADF2E9256009EDCE
3 changed files with 32 additions and 0 deletions

View File

@ -2,6 +2,7 @@
#define PKMNLIB_BATTLE_HPP #define PKMNLIB_BATTLE_HPP
#include <CreatureLib/Battling/Models/Battle.hpp> #include <CreatureLib/Battling/Models/Battle.hpp>
#include "../EventHooks/WeatherChangeEvent.hpp"
#include "../Library/BattleLibrary.hpp" #include "../Library/BattleLibrary.hpp"
#include "../PkmnScriptCategory.hpp" #include "../PkmnScriptCategory.hpp"
@ -21,11 +22,13 @@ namespace PkmnLib::Battling {
delete _weatherScript; delete _weatherScript;
} }
_weatherScript = _library->LoadScript(static_cast<ScriptCategory>(PkmnScriptCategory::Weather), name); _weatherScript = _library->LoadScript(static_cast<ScriptCategory>(PkmnScriptCategory::Weather), name);
_eventHook.TriggerEvent(new WeatherChangeEvent(name));
} }
void ClearWeather() { void ClearWeather() {
_weatherScript->OnRemove(); _weatherScript->OnRemove();
delete _weatherScript; delete _weatherScript;
_weatherScript = nullptr; _weatherScript = nullptr;
_eventHook.TriggerEvent(new WeatherChangeEvent(""_cnc));
} }
const Arbutils::CaseInsensitiveConstString& GetWeatherName() noexcept { return _weatherScript->GetName(); } const Arbutils::CaseInsensitiveConstString& GetWeatherName() noexcept { return _weatherScript->GetName(); }

View File

@ -0,0 +1,9 @@
#ifndef PKMNLIB_PKMNEVENTKIND_HPP
#define PKMNLIB_PKMNEVENTKIND_HPP
#include <Arbutils/Enum.hpp>
#include <CreatureLib/Battling/EventHooks/EventDataKind.hpp>
ENUM_WITH_START_VALUE(PkmnEventDataKind, uint8_t, ((uint8_t)CreatureLib::Battling::EventDataKindHelper::Highest()) + 1,
WeatherChange)
#endif // PKMNLIB_PKMNEVENTKIND_HPP

View File

@ -0,0 +1,20 @@
#ifndef PKMNLIB_WEATHERCHANGEEVENT_HPP
#define PKMNLIB_WEATHERCHANGEEVENT_HPP
#include <Arbutils/ConstString.hpp>
#include <CreatureLib/Battling/EventHooks/EventData.hpp>
#include "PkmnEventKind.hpp"
namespace PkmnLib::Battling {
class WeatherChangeEvent : public CreatureLib::Battling::EventData {
Arbutils::CaseInsensitiveConstString _weatherName;
public:
explicit WeatherChangeEvent(const Arbutils::CaseInsensitiveConstString& name) : _weatherName(name) {}
[[nodiscard]] CreatureLib::Battling::EventDataKind GetKind() const noexcept override {
return static_cast<CreatureLib::Battling::EventDataKind>(PkmnEventDataKind::WeatherChange);
}
};
}
#endif // PKMNLIB_WEATHERCHANGEEVENT_HPP