1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2025-09-01 03:15:53 +00:00
Funkin/source/funkin/ui/mainmenu/UpgradeSparkle.hx
2025-06-09 21:19:11 +01:00

75 lines
2 KiB
Haxe

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;
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);
}
}