#include "animqueue.hpp" #include AnimStep::AnimStep() {} AnimStep::~AnimStep() {} AnimQueue::AnimQueue(int size_limit) { assert(size_limit >= 2); size_limit_ = size_limit; steps_.emplace_back(); AnimStep &init = steps_.back(); init.id_ = 0; init.facing_ = 0; init.xyz_ = util::XYZ(0,0,0); init.graphic_ = "nothing"; init.plane_ = "nowhere"; init.bits_ = 0; } void AnimQueue::add(int64_t id, const std::string &action) { steps_.emplace_back(); AnimStep &last = steps_.back(); last = steps_[steps_.size() - 2]; last.id_ = id; last.action_ = action; last.bits_ = 0; while (int(steps_.size()) > size_limit_) { steps_.pop_front(); } AnimStep &init = steps_.front(); init.id_ = 0; init.action_ = ""; init.bits_ = 0; } void AnimQueue::set_facing(float f) { AnimStep &last = steps_.back(); last.bits_ |= AnimStep::HAS_FACING; last.facing_ = f; } void AnimQueue::set_xyz(util::XYZ xyz) { AnimStep &last = steps_.back(); last.bits_ |= AnimStep::HAS_XYZ; last.xyz_ = xyz; } void AnimQueue::set_graphic(const std::string &g) { AnimStep &last = steps_.back(); last.bits_ |= AnimStep::HAS_GRAPHIC; last.graphic_ = g; } void AnimQueue::set_plane(const std::string &p) { AnimStep &last = steps_.back(); last.bits_ |= AnimStep::HAS_PLANE; last.plane_ = p; }