project-kyoku/modes/classicmode/editor/mockclassicnote.cpp

42 lines
1012 B
C++

#include "mockclassicnote.h"
#include "graphics/classicgraphicsmanager.h"
#include "graphics/animations/classicanimationscenario.h"
MockClassicNote::MockClassicNote(MockArrowNoteInitializer&& init) :
ClassicNote({nullptr, {}, init.initializer.perfect_offset}),
_state(State::NONE),
_context(init.initializer.context)
{
_elements.resize(init.elements.size());
for (std::size_t i = 0; i < _elements.size(); ++i)
{
_elements[i].coordinates = init.elements[i].coordinates;
_elements[i].type = init.elements[i].type;
}
}
void MockClassicNote::putToGame()
{
_state = State::FLYING;
}
void MockClassicNote::update(const microsec &music_offset)
{
switch (_state)
{
default: return;
break;
case State::FLYING:
if (music_offset > offset())
_state = State::DEAD;
break;
}
for (auto& element : _elements)
if (element.animations[_state])
element.animations[_state]->update(music_offset);
}