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