upgrade sparkles..
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
package funkin.ui.mainmenu;
|
||||
|
||||
import flixel.FlxSprite;
|
||||
import flixel.tweens.FlxEase;
|
||||
import flixel.tweens.FlxTween;
|
||||
import flixel.util.FlxTimer;
|
||||
import flixel.math.FlxRect;
|
||||
|
||||
class UpgradeSparkle extends FlxSprite
|
||||
{
|
||||
var sparkleTimer:FlxTimer;
|
||||
|
||||
public var bounds:FlxRect;
|
||||
|
||||
public function new(_x:Float, _y:Float, _width:Float, _height:Float, big:Bool)
|
||||
{
|
||||
super(0, 0);
|
||||
bounds = FlxRect.get(_x, _y, _width, _height);
|
||||
if (big)
|
||||
{
|
||||
loadGraphic(Paths.image('mainmenu/upgradeshine_big'));
|
||||
}
|
||||
else
|
||||
{
|
||||
loadGraphic(Paths.image('mainmenu/upgradeshine_small'));
|
||||
}
|
||||
sparkleTimer = new FlxTimer().start(FlxG.random.float(2, 7), sparkleEffect);
|
||||
visible = false;
|
||||
}
|
||||
|
||||
public function cancelSparkle():Void
|
||||
{
|
||||
if (sparkleTimer != null) sparkleTimer.cancel();
|
||||
FlxTween.cancelTweensOf(this);
|
||||
alpha = 0;
|
||||
}
|
||||
|
||||
public function restartSparkle():Void
|
||||
{
|
||||
if (sparkleTimer != null) sparkleTimer.cancel();
|
||||
FlxTween.cancelTweensOf(this);
|
||||
alpha = 1;
|
||||
sparkleTimer = new FlxTimer().start(FlxG.random.float(2, 7), sparkleEffect);
|
||||
}
|
||||
|
||||
function sparkleEffect(timer:FlxTimer):Void
|
||||
{
|
||||
visible = true;
|
||||
alpha = 1;
|
||||
|
||||
trace('sparkle!', x, y);
|
||||
|
||||
flipX = !flipX;
|
||||
|
||||
var targetScale:Float = FlxG.random.float(0.6, 1);
|
||||
scale.set(targetScale, targetScale);
|
||||
updateHitbox();
|
||||
|
||||
setPosition(FlxG.random.float(bounds.x, bounds.x + bounds.width), FlxG.random.float(bounds.y, bounds.y + bounds.height));
|
||||
x -= width / 2;
|
||||
y -= height / 2;
|
||||
|
||||
angle += 70;
|
||||
|
||||
var targetVelocity:Float = FlxG.random.float(120, 300);
|
||||
if (FlxG.random.bool(50)) targetVelocity = targetVelocity * -1;
|
||||
angularVelocity = targetVelocity;
|
||||
angularDrag = 200;
|
||||
|
||||
var targetTime:Float = FlxG.random.float(0.3, 0.8);
|
||||
FlxTween.tween(this.scale, {x: targetScale * 0.001, y: targetScale * 0.001}, targetTime, {ease: FlxEase.backIn});
|
||||
FlxTween.tween(this, {alpha: 0}, targetTime, {ease: FlxEase.quintIn});
|
||||
|
||||
sparkleTimer = new FlxTimer().start(FlxG.random.float(2, 7), sparkleEffect);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user