diff --git a/source/funkin/game/Splash.hx b/source/funkin/game/Splash.hx new file mode 100644 index 000000000..d181c8872 --- /dev/null +++ b/source/funkin/game/Splash.hx @@ -0,0 +1,39 @@ +package funkin.game; + +class Splash extends FunkinSprite +{ + /** + * The current splash strum + * WANRNING: It can be null + */ + public var strum:Null; + + /** + * Shortcut to `strum.ID` + * WARNING: It can be null + */ + public var strumID:Null; + + public static function copyFrom(source:Splash):Splash + { + var spr = new Splash(); + @:privateAccess { + spr.setPosition(source.x, source.y); + spr.frames = source.frames; + if (source.animateAtlas != null && source.atlasPath != null) + spr.loadSprite(source.atlasPath); + spr.animation.copyFrom(source.animation); + spr.visible = source.visible; + spr.alpha = source.alpha; + spr.antialiasing = source.antialiasing; + spr.scale.set(source.scale.x, source.scale.y); + spr.scrollFactor.set(source.scrollFactor.x, source.scrollFactor.y); + spr.skew.set(source.skew.x, source.skew.y); + spr.transformMatrix = source.transformMatrix; + spr.matrixExposed = source.matrixExposed; + spr.zoomFactor = source.zoomFactor; + spr.animOffsets = source.animOffsets.copy(); + } + return spr; + } +} diff --git a/source/funkin/game/SplashGroup.hx b/source/funkin/game/SplashGroup.hx index 75008a295..5f0c328e0 100644 --- a/source/funkin/game/SplashGroup.hx +++ b/source/funkin/game/SplashGroup.hx @@ -2,7 +2,7 @@ package funkin.game; import haxe.xml.Access; -class SplashGroup extends FlxTypedGroup { +class SplashGroup extends FlxTypedGroup { /** * Whenever the splash group has successfully loaded or not. */ @@ -46,7 +46,7 @@ class SplashGroup extends FlxTypedGroup { } function createSplash(imagePath:String) { - var splash = new FunkinSprite(); + var splash = new Splash(); splash.antialiasing = true; splash.active = splash.visible = false; splash.loadSprite(Paths.image(imagePath)); @@ -56,7 +56,7 @@ class SplashGroup extends FlxTypedGroup { return splash; } - function setupAnims(xml:Access, splash:FunkinSprite) { + function setupAnims(xml:Access, splash:Splash) { for(strum in xml.nodes.strum) { var id:Null = Std.parseInt(strum.att.id); if (id != null) { @@ -85,12 +85,14 @@ class SplashGroup extends FlxTypedGroup { }; } - function pregenerateSplashes(splash:FunkinSprite) { + function pregenerateSplashes(splash:Splash) { // make 7 additional splashes for(i in 0...7) { - var spr = FunkinSprite.copyFrom(splash); + var spr = Splash.copyFrom(splash); spr.animation.finishCallback = function(name:String) { spr.active = spr.visible = false; + spr.strum = null; + spr.strumID = null; }; add(spr); } @@ -103,11 +105,14 @@ class SplashGroup extends FlxTypedGroup { return animationNames[id][FlxG.random.int(0, animationNames[id].length - 1)]; } - var __splash:FunkinSprite; + var __splash:Splash; public function showOnStrum(strum:Strum) { if (!valid) return null; __splash = recycle(); + __splash.strum = strum; + __splash.strumID = strum.ID; + __splash.cameras = strum.lastDrawCameras; __splash.setPosition(strum.x + ((strum.width - __splash.width) / 2), strum.y + ((strum.height - __splash.height) / 2)); __splash.active = __splash.visible = true; diff --git a/source/funkin/game/SplashHandler.hx b/source/funkin/game/SplashHandler.hx index d7bc4e46d..b4512bbfe 100644 --- a/source/funkin/game/SplashHandler.hx +++ b/source/funkin/game/SplashHandler.hx @@ -1,7 +1,7 @@ package funkin.game; -class SplashHandler extends FlxTypedGroup { +class SplashHandler extends FlxTypedGroup { /** * Map containing all of the splashes group. */