package funkin; import flixel.FlxSprite; import haxe.io.Path; import flixel.graphics.frames.FlxAtlasFrames; class NoteSplash extends FlxSprite { public function new(x:Float, y:Float, noteData:Int = 0):Void { super(x, y); animation.addByPrefix('note0-0', 'note impact 1 purple', 24, false); animation.addByPrefix('note1-0', 'note impact 1 blue', 24, false); animation.addByPrefix('note2-0', 'note impact 1 green', 24, false); animation.addByPrefix('note3-0', 'note impact 1 red', 24, false); animation.addByPrefix('note0-1', 'note impact 2 purple', 24, false); animation.addByPrefix('note1-1', 'note impact 2 blue', 24, false); animation.addByPrefix('note2-1', 'note impact 2 green', 24, false); animation.addByPrefix('note3-1', 'note impact 2 red', 24, false); setupNoteSplash(x, y, noteData); // alpha = 0.75; } public override function update(elapsed:Float):Void { super.update(elapsed); if (animation.finished) { kill(); } } public static function buildSplashFrames(force:Bool = false):FlxAtlasFrames { // static variables inside functions are a cool of Haxe 4.3.0. static var splashFrames:FlxAtlasFrames = null; if (splashFrames != null && !force) return splashFrames; splashFrames = Paths.getSparrowAtlas('noteSplashes'); splashFrames.parent.persist = true; return splashFrames; } public function setupNoteSplash(x:Float, y:Float, noteData:Int = 0) { setPosition(x, y); alpha = 0.6; animation.play('note' + noteData + '-' + FlxG.random.int(0, 1), true); animation.curAnim.frameRate = 24 + FlxG.random.int(-2, 2); animation.finishCallback = function(name) { kill(); }; updateHitbox(); offset.set(width * 0.3, height * 0.3); } }