#ifndef CREATURELIB_CHOICEQUEUE_HPP #define CREATURELIB_CHOICEQUEUE_HPP #include #include #include #include "../TurnChoices/BaseTurnChoice.hpp" namespace CreatureLib::Battling { class ChoiceQueue { ArbUt::UniquePtrList _queue; size_t _current = 0; public: bool HasCompletedQueue = false; explicit ChoiceQueue(std::vector queue) : _queue(std::move(queue)) {} ArbUt::BorrowedPtr Dequeue() { auto b = _queue[_current]; _current++; return b; } ArbUt::BorrowedPtr Peek() { return _queue[_current]; } [[nodiscard]] bool HasNext() const { return _current < _queue.Count(); } ArbUt::UniquePtrList& GetInnerQueue() { return _queue; } bool MoveCreatureChoiceNext(Creature* creature); }; } #endif // CREATURELIB_CHOICEQUEUE_HPP