Update to new Arbutils
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -55,12 +55,12 @@ namespace CreatureLib::Battling {
|
||||
};
|
||||
|
||||
class DisplayTextEvent : public EventData {
|
||||
const std::string _text;
|
||||
const ArbUt::StringView _text;
|
||||
|
||||
public:
|
||||
DisplayTextEvent(const std::string& text) noexcept : _text(text) {}
|
||||
DisplayTextEvent(const ArbUt::StringView& text) noexcept : _text(text) {}
|
||||
EventDataKind GetKind() const noexcept override { return EventDataKind ::DisplayText; }
|
||||
const std::string& GetText() const noexcept { return _text; }
|
||||
const ArbUt::StringView& GetText() const noexcept { return _text; }
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "BattleLibrary.hpp"
|
||||
#include <Arbutils/Assert.hpp>
|
||||
|
||||
using namespace CreatureLib::Battling;
|
||||
|
||||
@@ -43,6 +44,6 @@ const std::unique_ptr<const DamageLibrary>& BattleLibrary::GetDamageLibrary() co
|
||||
|
||||
const std::unique_ptr<const MiscLibrary>& BattleLibrary::GetMiscLibrary() const noexcept { return _miscLibrary; }
|
||||
|
||||
Script* BattleLibrary::LoadScript(ScriptCategory category, const ArbUt::CaseInsensitiveConstString& scriptName) const {
|
||||
Script* BattleLibrary::LoadScript(ScriptCategory category, const ArbUt::BasicStringView& scriptName) const {
|
||||
return _scriptResolver->LoadScript(category, scriptName);
|
||||
}
|
||||
@@ -41,8 +41,7 @@ namespace CreatureLib::Battling {
|
||||
return _experienceLibrary;
|
||||
}
|
||||
|
||||
[[nodiscard]] Script* LoadScript(ScriptCategory category,
|
||||
const ArbUt::CaseInsensitiveConstString& scriptName) const;
|
||||
[[nodiscard]] Script* LoadScript(ScriptCategory category, const ArbUt::BasicStringView& scriptName) const;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ void Battle::ValidateBattleState() {
|
||||
this->_battleResult = BattleResult::Conclusive(winningSide);
|
||||
this->_hasEnded = true;
|
||||
}
|
||||
void Battle::AddVolatileScript(const ConstString& key) {
|
||||
void Battle::AddVolatileScript(const ArbUt::BasicStringView& key) {
|
||||
auto script = _volatile.Get(key);
|
||||
if (script != nullptr) {
|
||||
script->Stack();
|
||||
@@ -145,4 +145,4 @@ void Battle::AddVolatileScript(const ConstString& key) {
|
||||
}
|
||||
void Battle::AddVolatileScript(Script* script) { return _volatile.Add(script); }
|
||||
void Battle::RemoveVolatileScript(Script* script) { _volatile.Remove(script->GetName()); }
|
||||
void Battle::DisplayText(const std::string& text) const { TriggerEventListener(new DisplayTextEvent(text)); }
|
||||
void Battle::DisplayText(const ArbUt::StringView& text) const { TriggerEventListener(new DisplayTextEvent(text)); }
|
||||
|
||||
@@ -83,17 +83,17 @@ namespace CreatureLib::Battling {
|
||||
|
||||
const ArbUt::UniquePtrList<BattleParty>& GetParties() const noexcept { return _parties; }
|
||||
const ArbUt::UniquePtrList<BattleSide>& GetSides() const noexcept { return _sides; }
|
||||
ArbUt::BorrowedPtr<Script> GetVolatileScript(const ConstString& key) const { return _volatile.Get(key); }
|
||||
ArbUt::BorrowedPtr<Script> GetVolatileScript(const ArbUt::StringView& key) const { return _volatile.Get(key); }
|
||||
ArbUt::BorrowedPtr<Script> GetVolatileScript(uint32_t keyHash) const noexcept { return _volatile.Get(keyHash); }
|
||||
void AddVolatileScript(const ConstString& key);
|
||||
void AddVolatileScript(const ArbUt::BasicStringView& key);
|
||||
void AddVolatileScript(Script* script);
|
||||
void RemoveVolatileScript(const ConstString& name) { _volatile.Remove(name); }
|
||||
void RemoveVolatileScript(const ArbUt::BasicStringView& name) { _volatile.Remove(name); }
|
||||
void RemoveVolatileScript(uint32_t keyHash) { _volatile.Remove(keyHash); }
|
||||
void RemoveVolatileScript(Script* script);
|
||||
bool HasVolatileScript(const ConstString& name) const { return _volatile.Has(name); }
|
||||
bool HasVolatileScript(const ArbUt::BasicStringView& name) const { return _volatile.Has(name); }
|
||||
bool HasVolatileScript(uint32_t keyHash) const { return _volatile.Has(keyHash); }
|
||||
|
||||
void DisplayText(const std::string& text) const;
|
||||
void DisplayText(const ArbUt::StringView& text) const;
|
||||
void RegisterEventListener(EVENT_HOOK_FUNC(listener)) { this->_eventHook.RegisterListener(listener); }
|
||||
void TriggerEventListener(EventData* data) const { this->_eventHook.TriggerEvent(data); }
|
||||
};
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
using namespace CreatureLib::Battling;
|
||||
|
||||
CreateCreature CreateCreature::WithVariant(const ArbUt::CaseInsensitiveConstString& variant) {
|
||||
CreateCreature CreateCreature::WithVariant(const ArbUt::StringView& variant) {
|
||||
this->_variant = variant;
|
||||
return *this;
|
||||
}
|
||||
@@ -20,8 +20,7 @@ CreateCreature CreateCreature::WithGender(Library::Gender gender) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
CreateCreature CreateCreature::WithAttack(const ArbUt::CaseInsensitiveConstString& attackName,
|
||||
AttackLearnMethod learnMethod) {
|
||||
CreateCreature CreateCreature::WithAttack(const ArbUt::StringView& attackName, AttackLearnMethod learnMethod) {
|
||||
if (_attacks.Count() >= _library->GetSettings()->GetMaximalMoves())
|
||||
throw CreatureException("You have already set the maximum amount of allowed moves.");
|
||||
|
||||
|
||||
@@ -9,28 +9,27 @@
|
||||
namespace CreatureLib::Battling {
|
||||
class CreateCreature {
|
||||
ArbUt::BorrowedPtr<const BattleLibrary> _library;
|
||||
ArbUt::CaseInsensitiveConstString _species;
|
||||
ArbUt::CaseInsensitiveConstString _variant = "default"_cnc;
|
||||
ArbUt::StringView _species;
|
||||
ArbUt::StringView _variant = "default"_cnc;
|
||||
uint8_t _level;
|
||||
std::string _nickname = "";
|
||||
|
||||
ArbUt::CaseInsensitiveConstString _talent = ""_cnc;
|
||||
ArbUt::StringView _talent = ""_cnc;
|
||||
Library::Gender _gender = static_cast<Library::Gender>(-1);
|
||||
uint8_t _coloring = 0;
|
||||
ArbUt::CaseInsensitiveConstString _heldItem = ""_cnc;
|
||||
ArbUt::StringView _heldItem = ""_cnc;
|
||||
uint32_t _identifier = 0;
|
||||
ArbUt::List<std::tuple<ArbUt::BorrowedPtr<const Library::AttackData>, AttackLearnMethod>> _attacks;
|
||||
|
||||
public:
|
||||
CreateCreature(ArbUt::BorrowedPtr<const BattleLibrary> library,
|
||||
const ArbUt::CaseInsensitiveConstString& species, uint8_t level)
|
||||
CreateCreature(ArbUt::BorrowedPtr<const BattleLibrary> library, const ArbUt::StringView& species, uint8_t level)
|
||||
: _library(library), _species(species), _level(level), _attacks(library->GetSettings()->GetMaximalMoves()) {
|
||||
}
|
||||
|
||||
CreateCreature WithVariant(const ArbUt::CaseInsensitiveConstString& variant);
|
||||
CreateCreature WithVariant(const ArbUt::StringView& variant);
|
||||
CreateCreature WithNickname(std::string nickname);
|
||||
CreateCreature WithGender(Library::Gender gender);
|
||||
CreateCreature WithAttack(const ArbUt::CaseInsensitiveConstString& attackName, AttackLearnMethod learnMethod);
|
||||
CreateCreature WithAttack(const ArbUt::StringView& attackName, AttackLearnMethod learnMethod);
|
||||
|
||||
Creature* Create();
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@ Battling::Creature::Creature(ArbUt::BorrowedPtr<const BattleLibrary> library,
|
||||
const ArbUt::BorrowedPtr<const Library::CreatureSpecies>& species,
|
||||
const ArbUt::BorrowedPtr<const Library::SpeciesVariant>& variant, uint8_t level,
|
||||
uint32_t experience, uint32_t uid, Library::Gender gender, uint8_t coloring,
|
||||
const ArbUt::BorrowedPtr<const Library::Item> heldItem, std::string nickname,
|
||||
const ArbUt::BorrowedPtr<const Library::Item> heldItem, const std::string_view& nickname,
|
||||
const Library::TalentIndex& talent, const std::vector<LearnedAttack*>& attacks,
|
||||
bool allowedExperienceGain)
|
||||
: _library(library), _species(species), _variant(variant), _level(level), _experience(experience),
|
||||
@@ -68,7 +68,7 @@ void Battling::Creature::ChangeLevelBy(int8_t amount) {
|
||||
RecalculateFlatStats();
|
||||
}
|
||||
|
||||
const ConstString& Battling::Creature::GetActiveTalent() const {
|
||||
const ArbUt::StringView& Battling::Creature::GetActiveTalent() const {
|
||||
if (_hasOverridenTalent) {
|
||||
return _overridenTalentName;
|
||||
}
|
||||
@@ -169,7 +169,7 @@ void Battling::Creature::Heal(uint32_t amount, bool canRevive) {
|
||||
_currentHealth = newHealth;
|
||||
}
|
||||
|
||||
void Battling::Creature::OverrideActiveTalent(const ConstString& talent) {
|
||||
void Battling::Creature::OverrideActiveTalent(const ArbUt::StringView& talent) {
|
||||
_hasOverridenTalent = true;
|
||||
_activeTalent->OnRemove();
|
||||
_overridenTalentName = talent;
|
||||
@@ -224,7 +224,7 @@ ArbUt::BorrowedPtr<const Library::SpeciesVariant> Battling::Creature::GetDisplay
|
||||
variant = _variant;
|
||||
return variant;
|
||||
}
|
||||
void Battling::Creature::SetHeldItem(const ConstString& itemName) {
|
||||
void Battling::Creature::SetHeldItem(const ArbUt::BasicStringView& itemName) {
|
||||
ArbUt::BorrowedPtr<const Library::Item> item;
|
||||
if (!_library->GetItemLibrary()->TryGet(itemName.GetHash(), item)) {
|
||||
throw CreatureException("Item not found.");
|
||||
@@ -239,7 +239,7 @@ void Battling::Creature::SetHeldItem(uint32_t itemNameHash) {
|
||||
_heldItem = item;
|
||||
}
|
||||
|
||||
void Battling::Creature::AddVolatileScript(const ConstString& name) {
|
||||
void Battling::Creature::AddVolatileScript(const ArbUt::BasicStringView& name) {
|
||||
auto script = _volatile.Get(name);
|
||||
if (script != nullptr) {
|
||||
script->Stack();
|
||||
@@ -255,6 +255,6 @@ void Battling::Creature::AddVolatileScript(const ConstString& name) {
|
||||
}
|
||||
|
||||
void Battling::Creature::AddVolatileScript(Script* script) { _volatile.Add(script); }
|
||||
void Battling::Creature::RemoveVolatileScript(const ConstString& name) { _volatile.Remove(name); }
|
||||
void Battling::Creature::RemoveVolatileScript(const ArbUt::BasicStringView& name) { _volatile.Remove(name); }
|
||||
void Battling::Creature::RemoveVolatileScript(Battling::Script* script) { _volatile.Remove(script->GetName()); }
|
||||
bool Battling::Creature::HasVolatileScript(const ConstString& name) const { return _volatile.Has(name); }
|
||||
bool Battling::Creature::HasVolatileScript(const ArbUt::BasicStringView& name) const { return _volatile.Has(name); }
|
||||
@@ -45,12 +45,12 @@ namespace CreatureLib::Battling {
|
||||
ArbUt::BorrowedPtr<BattleSide> _side = nullptr;
|
||||
bool _onBattleField = false;
|
||||
|
||||
std::string _nickname = "";
|
||||
std::string_view _nickname = "";
|
||||
CreatureLib::Library::TalentIndex _talentIndex;
|
||||
std::unique_ptr<Script> _activeTalent = nullptr;
|
||||
|
||||
bool _hasOverridenTalent;
|
||||
ArbUt::CaseInsensitiveConstString _overridenTalentName = ""_cnc;
|
||||
ArbUt::StringView _overridenTalentName = ""_cnc;
|
||||
std::unordered_set<ArbUt::BorrowedPtr<Creature>> _seenOpponents;
|
||||
|
||||
ArbUt::UniquePtrList<LearnedAttack> _attacks;
|
||||
@@ -69,7 +69,7 @@ namespace CreatureLib::Battling {
|
||||
const ArbUt::BorrowedPtr<const Library::CreatureSpecies>& species,
|
||||
const ArbUt::BorrowedPtr<const Library::SpeciesVariant>& variant, uint8_t level, uint32_t experience,
|
||||
uint32_t uid, Library::Gender gender, uint8_t coloring,
|
||||
const ArbUt::BorrowedPtr<const Library::Item> heldItem, std::string nickname,
|
||||
const ArbUt::BorrowedPtr<const Library::Item> heldItem, const std::string_view& nickname,
|
||||
const Library::TalentIndex& talent, const std::vector<LearnedAttack*>& attacks,
|
||||
bool allowedExperienceGain = true);
|
||||
|
||||
@@ -89,14 +89,14 @@ namespace CreatureLib::Battling {
|
||||
inline uint32_t GetExperience() const noexcept { return _experience; }
|
||||
inline Library::Gender GetGender() const noexcept { return _gender; }
|
||||
inline uint8_t GetColoring() const noexcept { return _coloring; }
|
||||
inline bool HasHeldItem(const ArbUt::CaseInsensitiveConstString& name) const noexcept {
|
||||
inline bool HasHeldItem(const ArbUt::BasicStringView& name) const noexcept {
|
||||
return _heldItem != nullptr && _heldItem->GetName() == name;
|
||||
}
|
||||
inline bool HasHeldItem(uint32_t nameHash) const noexcept {
|
||||
return _heldItem != nullptr && _heldItem->GetName() == nameHash;
|
||||
}
|
||||
inline const ArbUt::BorrowedPtr<const Library::Item>& GetHeldItem() const noexcept { return _heldItem; }
|
||||
void SetHeldItem(const ArbUt::CaseInsensitiveConstString& itemName);
|
||||
void SetHeldItem(const ArbUt::BasicStringView& itemName);
|
||||
void SetHeldItem(uint32_t itemNameHash);
|
||||
inline void SetHeldItem(const ArbUt::BorrowedPtr<const Library::Item>& item) noexcept { _heldItem = item; };
|
||||
|
||||
@@ -108,8 +108,8 @@ namespace CreatureLib::Battling {
|
||||
inline void SetOnBattleField(bool value) { _onBattleField = value; }
|
||||
inline bool IsOnBattleField() const { return _onBattleField; }
|
||||
|
||||
inline const std::string& GetNickname() const noexcept { return _nickname; }
|
||||
const ArbUt::CaseInsensitiveConstString& GetActiveTalent() const;
|
||||
inline const std::string_view& GetNickname() const noexcept { return _nickname; }
|
||||
const ArbUt::StringView& GetActiveTalent() const;
|
||||
|
||||
[[nodiscard]] bool IsFainted() const noexcept;
|
||||
[[nodiscard]] const std::unordered_set<uint8_t>& GetTypes() const noexcept;
|
||||
@@ -119,7 +119,7 @@ namespace CreatureLib::Battling {
|
||||
void ChangeLevelBy(int8_t amount);
|
||||
void Damage(uint32_t damage, DamageSource source);
|
||||
void Heal(uint32_t amount, bool canRevive = false);
|
||||
void OverrideActiveTalent(const ArbUt::CaseInsensitiveConstString& talent);
|
||||
void OverrideActiveTalent(const ArbUt::StringView& talent);
|
||||
void AddExperience(uint32_t amount);
|
||||
|
||||
void MarkOpponentAsSeen(ArbUt::BorrowedPtr<Creature> creature) { _seenOpponents.insert(creature); }
|
||||
@@ -128,11 +128,11 @@ namespace CreatureLib::Battling {
|
||||
size_t ScriptCount() const override;
|
||||
void GetActiveScripts(ArbUt::List<ScriptWrapper>& scripts) override;
|
||||
void ClearVolatileScripts();
|
||||
void AddVolatileScript(const ArbUt::CaseInsensitiveConstString& name);
|
||||
void AddVolatileScript(const ArbUt::BasicStringView& name);
|
||||
void AddVolatileScript(Script* script);
|
||||
void RemoveVolatileScript(const ArbUt::CaseInsensitiveConstString& name);
|
||||
void RemoveVolatileScript(const ArbUt::BasicStringView& name);
|
||||
void RemoveVolatileScript(Script* script);
|
||||
bool HasVolatileScript(const ArbUt::CaseInsensitiveConstString& name) const;
|
||||
bool HasVolatileScript(const ArbUt::BasicStringView& name) const;
|
||||
|
||||
const ArbUt::UniquePtrList<LearnedAttack>& GetAttacks() noexcept { return _attacks; }
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define CREATURELIB_SCRIPT_HPP
|
||||
|
||||
#include <Arbutils/Collections/List.hpp>
|
||||
#include <Arbutils/ConstString.hpp>
|
||||
#include <Arbutils/StringView.hpp>
|
||||
#include "../../Library/EffectParameter.hpp"
|
||||
|
||||
namespace CreatureLib::Battling {
|
||||
@@ -19,13 +19,13 @@ namespace CreatureLib::Battling {
|
||||
virtual void Stack(){};
|
||||
virtual void OnRemove(){};
|
||||
|
||||
virtual const ArbUt::CaseInsensitiveConstString& GetName() const noexcept = 0;
|
||||
virtual const ArbUt::StringView& GetName() const noexcept = 0;
|
||||
|
||||
virtual void OnInitialize(const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters){};
|
||||
virtual void OnBeforeTurn(const BaseTurnChoice* choice){};
|
||||
|
||||
virtual void ChangePriority(AttackTurnChoice* choice, int8_t* priority){};
|
||||
virtual void ChangeAttack(AttackTurnChoice* choice, ArbUt::CaseInsensitiveConstString* outAttack){};
|
||||
virtual void ChangeAttack(AttackTurnChoice* choice, ArbUt::StringView* outAttack){};
|
||||
virtual void PreventAttack(ExecutingAttack* attack, bool* outResult){};
|
||||
virtual void FailAttack(ExecutingAttack* attack, bool* outFailed){};
|
||||
virtual void StopBeforeAttack(ExecutingAttack* attack, bool* outResult){};
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace CreatureLib::Battling {
|
||||
virtual ~ScriptResolver() = default;
|
||||
|
||||
virtual void Initialize(BattleLibrary* library){};
|
||||
virtual Script* LoadScript(ScriptCategory category, const ArbUt::CaseInsensitiveConstString& scriptName) {
|
||||
virtual Script* LoadScript(ScriptCategory category, const ArbUt::BasicStringView& scriptName) {
|
||||
return nullptr;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -29,9 +29,7 @@ namespace CreatureLib::Battling {
|
||||
_lookup.Insert(script->GetName(), _scripts.Count() - 1);
|
||||
}
|
||||
|
||||
ArbUt::BorrowedPtr<Script> Get(const ArbUt::CaseInsensitiveConstString& key) const {
|
||||
return Get(key.GetHash());
|
||||
}
|
||||
ArbUt::BorrowedPtr<Script> Get(const ArbUt::BasicStringView& key) const { return Get(key.GetHash()); }
|
||||
|
||||
ArbUt::BorrowedPtr<Script> Get(uint32_t keyHash) const noexcept {
|
||||
size_t v;
|
||||
@@ -41,7 +39,7 @@ namespace CreatureLib::Battling {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Remove(const ArbUt::CaseInsensitiveConstString& key) { Remove(key.GetHash()); }
|
||||
void Remove(const ArbUt::BasicStringView& key) { Remove(key.GetHash()); }
|
||||
|
||||
void Remove(uint32_t keyHash) {
|
||||
size_t v;
|
||||
@@ -62,7 +60,7 @@ namespace CreatureLib::Battling {
|
||||
_lookup.Clear();
|
||||
}
|
||||
|
||||
bool Has(const ArbUt::CaseInsensitiveConstString& key) const { return _lookup.Has(key); }
|
||||
bool Has(const ArbUt::BasicStringView& key) const { return _lookup.Has(key); }
|
||||
|
||||
bool Has(uint32_t keyHash) const { return _lookup.Has(keyHash); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user