2019-10-31 11:02:23 +00:00
|
|
|
#ifndef CREATURELIB_CHOICEQUEUE_HPP
|
|
|
|
#define CREATURELIB_CHOICEQUEUE_HPP
|
|
|
|
|
2019-11-06 17:04:00 +00:00
|
|
|
#include <utility>
|
2019-10-31 11:02:23 +00:00
|
|
|
#include <vector>
|
|
|
|
#include "../TurnChoices/BaseTurnChoice.hpp"
|
|
|
|
|
|
|
|
namespace CreatureLib::Battling{
|
|
|
|
class ChoiceQueue {
|
2019-11-10 16:08:42 +00:00
|
|
|
std::vector<BaseTurnChoice*> _queue;
|
2019-10-31 11:02:23 +00:00
|
|
|
size_t _current = 0;
|
|
|
|
public:
|
2019-11-06 17:04:00 +00:00
|
|
|
bool HasCompletedQueue = false;
|
|
|
|
|
2019-11-10 16:08:42 +00:00
|
|
|
explicit ChoiceQueue(std::vector<BaseTurnChoice*> queue)
|
2019-11-06 17:04:00 +00:00
|
|
|
:_queue(std::move(queue)){}
|
2019-10-31 11:02:23 +00:00
|
|
|
|
|
|
|
const BaseTurnChoice* Dequeue(){
|
|
|
|
auto b = _queue[_current];
|
|
|
|
_current++;
|
|
|
|
return b;
|
|
|
|
}
|
|
|
|
|
2019-11-06 17:04:00 +00:00
|
|
|
[[nodiscard]] bool HasNext() const{
|
2019-10-31 11:02:23 +00:00
|
|
|
return _current < _queue.size();
|
|
|
|
}
|
2019-11-10 13:32:05 +00:00
|
|
|
|
2019-11-10 16:08:42 +00:00
|
|
|
std::vector<BaseTurnChoice*>& GetInnerQueue(){
|
2019-11-10 13:32:05 +00:00
|
|
|
return _queue;
|
|
|
|
}
|
2019-10-31 11:02:23 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif //CREATURELIB_CHOICEQUEUE_HPP
|