Make battle class fields all smart pointers.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-05-31 19:01:45 +02:00
parent 29cb4eac37
commit 01f6e59cb6
5 changed files with 16 additions and 24 deletions

View File

@@ -18,13 +18,13 @@ namespace CreatureLib::Battling {
class Battle : public ScriptSource {
protected:
ArbUt::BorrowedPtr<const BattleLibrary> _library;
ArbUt::List<std::unique_ptr<BattleParty>> _parties;
ArbUt::UniquePtrList<BattleParty> _parties;
bool _canFlee;
uint8_t _numberOfSides;
uint8_t _creaturesPerSide;
ArbUt::List<BattleSide*> _sides;
ArbUt::UniquePtrList<BattleSide> _sides;
BattleRandom _random;
ChoiceQueue* _currentTurnQueue = nullptr;
std::unique_ptr<ChoiceQueue> _currentTurnQueue = nullptr;
bool _hasEnded = false;
BattleResult _battleResult = BattleResult::Empty();
EventHook _eventHook = EventHook();
@@ -35,26 +35,17 @@ namespace CreatureLib::Battling {
public:
Battle(const BattleLibrary* library, ArbUt::List<BattleParty*> parties, bool canFlee = true,
uint8_t numberOfSides = 2, uint8_t creaturesPerSide = 1)
: _library(library), _parties(parties.Count()), _canFlee(canFlee), _numberOfSides(numberOfSides),
_creaturesPerSide(creaturesPerSide) {
: _library(library), _parties(parties.GetStdList()), _canFlee(canFlee), _numberOfSides(numberOfSides),
_creaturesPerSide(creaturesPerSide), _sides(numberOfSides) {
AssertNotNull(_library);
AssertAllNotNull(parties);
for (size_t i = 0; i < parties.Count(); i++) {
_parties.GetStdList().push_back(std::unique_ptr<BattleParty>(parties[i]));
}
_sides = ArbUt::List<BattleSide*>(numberOfSides);
for (size_t i = 0; i < numberOfSides; i++) {
_sides.Append(new BattleSide(i, this, creaturesPerSide));
}
}
virtual ~Battle() {
for (auto s : _sides) {
delete s;
}
delete _currentTurnQueue;
}
virtual ~Battle() = default;
[[nodiscard]] const ArbUt::BorrowedPtr<const BattleLibrary>& GetLibrary() const noexcept;
[[nodiscard]] uint32_t GetCurrentTurn() const noexcept { return _currentTurn; }
@@ -66,7 +57,7 @@ namespace CreatureLib::Battling {
void CheckChoicesSetAndRun();
[[nodiscard]] ChoiceQueue* GetCurrentTurnQueue() const noexcept;
[[nodiscard]] ArbUt::BorrowedPtr<ChoiceQueue> GetCurrentTurnQueue() const noexcept;
BattleRandom* GetRandom() noexcept;
bool CreatureInField(const Creature* creature) const;
@@ -87,8 +78,8 @@ namespace CreatureLib::Battling {
inline bool HasEnded() const noexcept { return _hasEnded; }
inline const BattleResult& GetResult() const noexcept { return _battleResult; }
const ArbUt::List<std::unique_ptr<BattleParty>>& GetParties() const noexcept { return _parties; }
const ArbUt::List<BattleSide*>& GetSides() const noexcept { return _sides; }
const ArbUt::UniquePtrList<BattleParty>& GetParties() const noexcept { return _parties; }
const ArbUt::UniquePtrList<BattleSide>& GetSides() const noexcept { return _sides; }
Script* GetVolatileScript(const ConstString& key) const { return _volatile.Get(key); }
Script* GetVolatileScript(uint32_t keyHash) const noexcept { return _volatile.Get(keyHash); }
void AddVolatileScript(const ConstString& key);