From ce31309b2afd62da75a173bc291cbc27a49bc0c4 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Mon, 17 Feb 2020 17:16:28 +0100 Subject: [PATCH] Functions to set Creature Held Item, and helper function to check whether Creature is holding a specific held item. --- src/Battling/Models/Creature.cpp | 7 +++++++ src/Battling/Models/Creature.hpp | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/src/Battling/Models/Creature.cpp b/src/Battling/Models/Creature.cpp index e3c00f6..10e029b 100644 --- a/src/Battling/Models/Creature.cpp +++ b/src/Battling/Models/Creature.cpp @@ -178,3 +178,10 @@ const Library::SpeciesVariant* Battling::Creature::GetDisplayVariant() const { variant = _variant; return variant; } +void Battling::Creature::SetHeldItem(const std::string& itemName) { + const Library::Item* item; + if (!_library->GetItemLibrary()->TryGet(itemName, item)) { + throw CreatureException("Item not found."); + } + _heldItem = item; +} diff --git a/src/Battling/Models/Creature.hpp b/src/Battling/Models/Creature.hpp index f9ccc19..63c573a 100644 --- a/src/Battling/Models/Creature.hpp +++ b/src/Battling/Models/Creature.hpp @@ -82,7 +82,13 @@ namespace CreatureLib::Battling { inline uint32_t GetExperience() const { return _experience; } inline Library::Gender GetGender() const { return _gender; } inline uint8_t GetColoring() const { return _coloring; } + inline const bool HasHeldItem(const std::string& name) const { + return _heldItem != nullptr && _heldItem->GetName() == name; + } inline const Library::Item* GetHeldItem() const { return _heldItem; } + void SetHeldItem(const std::string& itemName); + inline void SetHeldItem(Library::Item* item) { _heldItem = item; }; + inline uint32_t GetCurrentHealth() const { return _currentHealth; } void SetBattleData(Battle* battle, BattleSide* side);