Performance improvement for collecting scripts, by reserving size in ScriptSource.
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:
@@ -85,6 +85,7 @@ bool Battle::CreatureInField(const Creature* creature) const {
|
||||
|
||||
void Battle::ForceRecall(uint8_t side, uint8_t index) { _sides[side]->SetCreature(nullptr, index); }
|
||||
|
||||
size_t Battle::ScriptCount() const { return 1; }
|
||||
void Battle::GetActiveScripts(Arbutils::Collections::List<ScriptWrapper>& scripts) {
|
||||
scripts.Append(ScriptWrapper::FromSet(&_volatile));
|
||||
}
|
||||
|
||||
@@ -81,6 +81,7 @@ namespace CreatureLib::Battling {
|
||||
void SwitchCreature(uint8_t side, uint8_t index, Creature* c);
|
||||
bool CanSlotBeFilled(uint8_t side, uint8_t index) const;
|
||||
|
||||
size_t ScriptCount() const override;
|
||||
void GetActiveScripts(Arbutils::Collections::List<ScriptWrapper>& scripts) override;
|
||||
|
||||
void ValidateBattleState();
|
||||
|
||||
@@ -73,6 +73,8 @@ void BattleSide::GetActiveScripts(Arbutils::Collections::List<ScriptWrapper>& sc
|
||||
scripts.Append(ScriptWrapper::FromSet(&_volatile));
|
||||
_battle->GetActiveScripts(scripts);
|
||||
}
|
||||
size_t BattleSide::ScriptCount() const { return _battle->ScriptCount() + 1; }
|
||||
|
||||
uint8_t BattleSide::GetRandomCreatureIndex() {
|
||||
// TODO: Consider adding parameter to only get index for available creatures.
|
||||
AssertNotNull(_battle)
|
||||
|
||||
@@ -48,6 +48,7 @@ namespace CreatureLib::Battling {
|
||||
Creature* GetCreature(uint8_t index) const;
|
||||
bool CreatureOnSide(const Creature* creature) const;
|
||||
|
||||
size_t ScriptCount() const override;
|
||||
void GetActiveScripts(Arbutils::Collections::List<ScriptWrapper>& scripts) override;
|
||||
|
||||
const List<Creature*>& GetCreatures() { return _creatures; }
|
||||
|
||||
@@ -166,6 +166,14 @@ bool Battling::Creature::HasType(uint8_t type) const noexcept {
|
||||
return std::find(t.begin(), t.end(), type) != t.end();
|
||||
}
|
||||
|
||||
size_t Battling::Creature::ScriptCount() const {
|
||||
auto c = 3;
|
||||
if (_side != nullptr) {
|
||||
c += _side->ScriptCount();
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
void Battling::Creature::GetActiveScripts(Arbutils::Collections::List<ScriptWrapper>& scripts) {
|
||||
scripts.Append(ScriptWrapper::FromScript(&_activeTalent));
|
||||
scripts.Append(ScriptWrapper::FromScript(&_status));
|
||||
|
||||
@@ -122,6 +122,7 @@ namespace CreatureLib::Battling {
|
||||
void MarkOpponentAsSeen(Creature* creature) { _seenOpponents.insert(creature); }
|
||||
const std::unordered_set<Creature*>& GetSeenOpponents() const { return _seenOpponents; }
|
||||
|
||||
size_t ScriptCount() const override;
|
||||
void GetActiveScripts(Arbutils::Collections::List<ScriptWrapper>& scripts) override;
|
||||
void ClearVolatileScripts();
|
||||
void AddVolatileScript(const ConstString& name);
|
||||
|
||||
@@ -80,6 +80,7 @@ namespace CreatureLib::Battling {
|
||||
Creature* GetUser() noexcept { return _user; }
|
||||
|
||||
LearnedAttack* GetAttack() noexcept { return _attack; }
|
||||
size_t ScriptCount() const override { return _user->ScriptCount() + 1; }
|
||||
|
||||
protected:
|
||||
void GetActiveScripts(Arbutils::Collections::List<ScriptWrapper>& scripts) override {
|
||||
|
||||
Reference in New Issue
Block a user