You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
project-kyoku/modes/classicmode/game/classicflyinganimationscena...

43 lines
1.1 KiB
C++

#include "classicflyinganimationscenario.h"
#include "classicsprite.h"
void ClassicFlyingAnimationScenario::launch(const std::shared_ptr<ClassicSprite> sprite, const microsec& time_begin, const microsec &time_end)
{
_sprite = sprite;
_time_begin = time_begin;
_time_end = time_end;
_percentage = ((_time_end - _time_begin) * 0.01);
}
int ClassicFlyingAnimationScenario::getPoint(float n1, float n2, float perc) const
{
float diff = n2 - n1;
return n1 + ( diff * perc );
}
void ClassicFlyingAnimationScenario::update(const microsec& music_offset)
{
float i;
const auto crd = _sprite->coordinates();
auto update_time = music_offset - _time_begin;
i = update_time / _percentage * 0.01;
float xa = getPoint( crd.x + 20. , crd.x + 90. , i );
float ya = getPoint( crd.y - 600. , crd.y - 150. , i );
float xb = getPoint( crd.x + 90. , crd.x , i );
float yb = getPoint( crd.y - 150. , crd.y , i );
_sprite->update(getPoint( xa , xb , i ), getPoint( ya , yb , i ));
if (i >= 1)
{
_sprite->trailFade();
}
}
bool ClassicFlyingAnimationScenario::isDone() const
{
return false;
}