Support for adding and replacing attacks.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: Deukhoofd <Deukhoofd@gmail.com>
This commit is contained in:
@@ -271,3 +271,36 @@ void Battling::Creature::AddVolatileScript(Script* script) { _volatile.Add(scrip
|
||||
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 ArbUt::BasicStringView& name) const { return _volatile.Has(name); }
|
||||
void Battling::Creature::AddAttack(Battling::LearnedAttack* attack) {
|
||||
for (size_t i = 0; i < _attacks.Count(); i++) {
|
||||
if (_attacks[i] == nullptr) {
|
||||
_attacks.Set(i, attack);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (_attacks.Count() < _library->GetStaticLib()->GetSettings()->GetMaximalAttacks()) {
|
||||
_attacks.Append(attack);
|
||||
}
|
||||
THROW_CREATURE("Can't add attack. The creature already has the maximum amount of attacks.");
|
||||
}
|
||||
uint8_t Battling::Creature::GetAvailableAttackSlot() const noexcept {
|
||||
for (uint8_t i = 0; i < (uint8_t)_attacks.Count(); i++) {
|
||||
if (_attacks[i] == nullptr) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
if (_attacks.Count() < _library->GetStaticLib()->GetSettings()->GetMaximalAttacks()) {
|
||||
return _attacks.Count();
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
void Battling::Creature::ReplaceAttack(size_t index, Battling::LearnedAttack* attack) {
|
||||
if (_attacks.Count() <= index) {
|
||||
if (_attacks.Count() < _library->GetStaticLib()->GetSettings()->GetMaximalAttacks()) {
|
||||
_attacks.Append(attack);
|
||||
}
|
||||
THROW_CREATURE("Can't replace attack at index " << index << ". Number of attacks is " << _attacks.Count()
|
||||
<< ".");
|
||||
}
|
||||
_attacks.Set(index, attack);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user