|
|
|
@ -87,6 +87,20 @@ void ClassicSceneGraphicsManager::setGraphics(std::vector<ArrowElement>& element
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClassicSceneGraphicsManager::removeGraphics(std::vector<ArrowElement>& elements)
|
|
|
|
|
{
|
|
|
|
|
for (auto& element : elements)
|
|
|
|
|
{
|
|
|
|
|
_sprite_container.resetSprite(element.sprite, element.type);
|
|
|
|
|
element.sprite = nullptr;
|
|
|
|
|
|
|
|
|
|
element.animations[ClassicNote::State::NONE] = nullptr;
|
|
|
|
|
element.animations[ClassicNote::State::FLYING] = nullptr;
|
|
|
|
|
element.animations[ClassicNote::State::DYING] = nullptr;
|
|
|
|
|
element.animations[ClassicNote::State::DEAD] = nullptr;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClassicSceneGraphicsManager::display(const std::vector<MockElement>& elements) const
|
|
|
|
|
{
|
|
|
|
|
for (std::size_t i = 0; i < elements.size(); ++i)
|
|
|
|
@ -128,6 +142,20 @@ void ClassicSceneGraphicsManager::setGraphics(std::vector<MockElement>& elements
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClassicSceneGraphicsManager::removeGraphics(std::vector<MockElement>& elements)
|
|
|
|
|
{
|
|
|
|
|
for (auto& element : elements)
|
|
|
|
|
{
|
|
|
|
|
_sprite_container.resetSprite(element.sprite, element.type);
|
|
|
|
|
element.sprite = nullptr;
|
|
|
|
|
|
|
|
|
|
element.animations[ClassicNote::State::NONE] = nullptr;
|
|
|
|
|
element.animations[ClassicNote::State::FLYING] = nullptr;
|
|
|
|
|
element.animations[ClassicNote::State::DYING] = nullptr;
|
|
|
|
|
element.animations[ClassicNote::State::DEAD] = nullptr;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*sf::VertexArray ClassicSceneGraphicsSFML::makeLine(const kku::Point& c1, const kku::Point& c2) const
|
|
|
|
|
{
|
|
|
|
|
sf::VertexArray line(sf::LinesStrip, 2);
|
|
|
|
@ -147,21 +175,44 @@ void ClassicSceneGraphicsManager::updateVisibleNotes(const kku::microsec &offset
|
|
|
|
|
|
|
|
|
|
void ClassicSceneGraphicsManager::fetchFirstNote(const kku::microsec& offset)
|
|
|
|
|
{
|
|
|
|
|
(void)offset; // ????
|
|
|
|
|
|
|
|
|
|
if (nothingToDraw())
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (offset < (*_first)->getPerfectOffset())
|
|
|
|
|
{
|
|
|
|
|
Iterator note_iterator = _first;
|
|
|
|
|
while (note_iterator != _timeline->begin() && !isVisiblyClose(note_iterator, offset))
|
|
|
|
|
{
|
|
|
|
|
--note_iterator;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_first = note_iterator;
|
|
|
|
|
|
|
|
|
|
auto note = *_first;
|
|
|
|
|
if (note->getState() != ClassicNote::State::FLYING
|
|
|
|
|
&& note->getState() != ClassicNote::State::DYING
|
|
|
|
|
&& offset <= note->getPerfectOffset())
|
|
|
|
|
{
|
|
|
|
|
note->setState(ClassicNote::State::FLYING);
|
|
|
|
|
note->setGraphics(this, kku::TimeRange{offset, note->getPerfectOffset()});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Iterator note_iterator = _first;
|
|
|
|
|
while (note_iterator != _last)
|
|
|
|
|
{
|
|
|
|
|
auto note = *note_iterator;
|
|
|
|
|
if (note->getState() == ClassicNote::State::DEAD)
|
|
|
|
|
{
|
|
|
|
|
// note->removeGraphics(this);
|
|
|
|
|
++_first;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
++note_iterator;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClassicSceneGraphicsManager::fetchLastNote(const kku::microsec& offset)
|
|
|
|
|
{
|
|
|
|
@ -174,7 +225,8 @@ void ClassicSceneGraphicsManager::fetchLastNote(const kku::microsec& offset)
|
|
|
|
|
auto note = *note_iterator;
|
|
|
|
|
|
|
|
|
|
if (note->getState() != ClassicNote::State::FLYING
|
|
|
|
|
&& note->getState() != ClassicNote::State::DYING)
|
|
|
|
|
&& note->getState() != ClassicNote::State::DYING
|
|
|
|
|
&& offset <= note->getPerfectOffset())
|
|
|
|
|
{
|
|
|
|
|
note->setState(ClassicNote::State::FLYING);
|
|
|
|
|
note->setGraphics(this, kku::TimeRange{offset, note->getPerfectOffset()});
|
|
|
|
|