From 4d796204f8254e2f7f8b68f672b92f86293d2cd1 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Mon, 18 Nov 2019 08:29:17 +0100 Subject: [PATCH] Implements functionality for loading scripts. --- src/Battling/Library/BattleLibrary.cpp | 11 +++++-- src/Battling/Library/BattleLibrary.hpp | 22 ++++++++------ .../ScriptHandling/ScriptResolver.cpp | 3 ++ .../ScriptHandling/ScriptResolver.hpp | 29 +++++++++++++++++++ tests/TestLibrary/TestLibrary.cpp | 2 +- 5 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 src/Battling/ScriptHandling/ScriptResolver.cpp create mode 100644 src/Battling/ScriptHandling/ScriptResolver.hpp diff --git a/src/Battling/Library/BattleLibrary.cpp b/src/Battling/Library/BattleLibrary.cpp index 02f8a31..2b8f7fd 100644 --- a/src/Battling/Library/BattleLibrary.cpp +++ b/src/Battling/Library/BattleLibrary.cpp @@ -3,9 +3,10 @@ CreatureLib::Battling::BattleLibrary::BattleLibrary(CreatureLib::Library::DataLibrary *staticLib, CreatureLib::Battling::BattleStatCalculator *statCalculator, DamageLibrary* damageLibrary, - CriticalLibrary* criticalLibrary) + CriticalLibrary* criticalLibrary, ScriptResolver* scriptResolver) : _staticLib(staticLib), _statCalculator(statCalculator), - _damageLibrary(damageLibrary), _criticalLibrary(criticalLibrary) + _damageLibrary(damageLibrary), _criticalLibrary(criticalLibrary), + _scriptResolver(scriptResolver) {} CreatureLib::Battling::BattleLibrary::~BattleLibrary() { @@ -47,3 +48,9 @@ const CreatureLib::Battling::CriticalLibrary *CreatureLib::Battling::BattleLibra return _criticalLibrary; } +CreatureLib::Battling::Script * +CreatureLib::Battling::BattleLibrary::LoadScript(CreatureLib::Battling::ScriptResolver::ScriptCategory category, + const std::string &scriptName) { + return _scriptResolver->LoadScript(category, scriptName); +} + diff --git a/src/Battling/Library/BattleLibrary.hpp b/src/Battling/Library/BattleLibrary.hpp index 67f2833..21ff797 100644 --- a/src/Battling/Library/BattleLibrary.hpp +++ b/src/Battling/Library/BattleLibrary.hpp @@ -5,6 +5,7 @@ #include "../../Library/DataLibrary.hpp" #include "DamageLibrary.hpp" #include "CriticalLibrary.hpp" +#include "../ScriptHandling/ScriptResolver.hpp" namespace CreatureLib::Battling { class BattleLibrary { @@ -12,20 +13,23 @@ namespace CreatureLib::Battling { BattleStatCalculator* _statCalculator; DamageLibrary* _damageLibrary; CriticalLibrary* _criticalLibrary; + ScriptResolver* _scriptResolver; public: BattleLibrary(Library::DataLibrary* staticLib, BattleStatCalculator* statCalculator, DamageLibrary* damageLibrary, - CriticalLibrary* criticalLibrary); + CriticalLibrary* criticalLibrary, ScriptResolver* scriptResolver); ~BattleLibrary(); - const Library::LibrarySettings& GetSettings() const; - const Library::SpeciesLibrary* GetSpeciesLibrary() const; - const Library::ItemLibrary* GetItemLibrary() const; - const Library::AttackLibrary* GetAttackLibrary() const; - const Library::TypeLibrary* GetTypeLibrary() const; + [[nodiscard]] const Library::LibrarySettings& GetSettings() const; + [[nodiscard]] const Library::SpeciesLibrary* GetSpeciesLibrary() const; + [[nodiscard]] const Library::ItemLibrary* GetItemLibrary() const; + [[nodiscard]] const Library::AttackLibrary* GetAttackLibrary() const; + [[nodiscard]] const Library::TypeLibrary* GetTypeLibrary() const; - const BattleStatCalculator* GetStatCalculator() const; - const DamageLibrary* GetDamageLibrary() const; - const CriticalLibrary* GetCriticalLibrary() const; + [[nodiscard]] const BattleStatCalculator* GetStatCalculator() const; + [[nodiscard]] const DamageLibrary* GetDamageLibrary() const; + [[nodiscard]] const CriticalLibrary* GetCriticalLibrary() const; + + [[nodiscard]] Script* LoadScript(ScriptResolver::ScriptCategory category, const std::string& scriptName); }; } diff --git a/src/Battling/ScriptHandling/ScriptResolver.cpp b/src/Battling/ScriptHandling/ScriptResolver.cpp new file mode 100644 index 0000000..4cf99cc --- /dev/null +++ b/src/Battling/ScriptHandling/ScriptResolver.cpp @@ -0,0 +1,3 @@ + + +#include "ScriptResolver.hpp" diff --git a/src/Battling/ScriptHandling/ScriptResolver.hpp b/src/Battling/ScriptHandling/ScriptResolver.hpp new file mode 100644 index 0000000..dd24827 --- /dev/null +++ b/src/Battling/ScriptHandling/ScriptResolver.hpp @@ -0,0 +1,29 @@ +#ifndef CREATURELIB_SCRIPTRESOLVER_HPP +#define CREATURELIB_SCRIPTRESOLVER_HPP + +#include +#include "Script.hpp" + +namespace CreatureLib::Battling{ + class ScriptResolver { + public: + virtual ~ScriptResolver() = default; + + enum class ScriptCategory{ + Attack, + Talent, + Status, + Creature, + Battle, + Side, + + }; + + virtual Script* LoadScript(ScriptCategory category, const std::string& scriptName){ + return nullptr; + }; + }; +} + + +#endif //CREATURELIB_SCRIPTRESOLVER_HPP diff --git a/tests/TestLibrary/TestLibrary.cpp b/tests/TestLibrary/TestLibrary.cpp index 9e9c4f8..674afaa 100644 --- a/tests/TestLibrary/TestLibrary.cpp +++ b/tests/TestLibrary/TestLibrary.cpp @@ -53,7 +53,7 @@ static BattleLibrary* BuildLibrary(){ auto l = new DataLibrary(LibrarySettings(100, 4), BuildSpeciesLibrary(), BuildAttackLibrary(), BuildItemLibrary(), BuildGrowthRateLibrary(), BuildTypeLibrary()); auto battleLib = new BattleLibrary(l, new BattleStatCalculator(), new DamageLibrary(), - new CriticalLibrary()); + new CriticalLibrary(), new ScriptResolver()); return battleLib; }