diff --git a/assets/data/stages/limo.xml b/assets/data/stages/limo.xml index 502b9b59..64f8b0c8 100644 --- a/assets/data/stages/limo.xml +++ b/assets/data/stages/limo.xml @@ -37,7 +37,7 @@ - + diff --git a/source/funkin/backend/utils/XMLUtil.hx b/source/funkin/backend/utils/XMLUtil.hx index 66464dd2..d6ed7091 100644 --- a/source/funkin/backend/utils/XMLUtil.hx +++ b/source/funkin/backend/utils/XMLUtil.hx @@ -114,6 +114,9 @@ class XMLUtil { spr.zoomFactor = Std.parseFloat(node.getAtt("zoomfactor")).getDefault(spr.zoomFactor); + if (node.has.alpha) + spr.alpha = Std.parseFloat(node.getAtt("alpha")).getDefault(spr.alpha); + for(anim in node.nodes.anim) addXMLAnimation(spr, anim); diff --git a/source/funkin/game/Stage.hx b/source/funkin/game/Stage.hx index 695961b5..4ec0fa45 100644 --- a/source/funkin/game/Stage.hx +++ b/source/funkin/game/Stage.hx @@ -195,6 +195,7 @@ class Stage extends FlxBasic implements IBeatReceiver { charPos.camyoffset = Std.parseFloat(node.getAtt("camyoffset")).getDefault(charPos.camyoffset); charPos.skewX = Std.parseFloat(node.getAtt("skewx")).getDefault(charPos.skewX); charPos.skewY = Std.parseFloat(node.getAtt("skewy")).getDefault(charPos.skewY); + charPos.alpha = Std.parseFloat(node.getAtt("alpha")).getDefault(charPos.alpha); charPos.flipX = (node.has.flip || node.has.flipX) ? (node.getAtt("flip") == "true" || node.getAtt("flipX") == "true") : charPos.flipX; var scale = Std.parseFloat(node.getAtt("scale")).getDefault(charPos.scale.x); @@ -246,6 +247,7 @@ class StageCharPos extends FlxObject { public var camyoffset:Float = 0; public var skewX:Float = 0; public var skewY:Float = 0; + public var alpha:Float = 1; public var flipX:Bool = false; public var scale:FlxPoint = FlxPoint.get(1, 1); @@ -266,6 +268,7 @@ class StageCharPos extends FlxObject { char.scale.x *= scale.x; char.scale.y *= scale.y; char.cameraOffset += FlxPoint.weak(camxoffset, camyoffset); char.skew.x += skewX; char.skew.y += skewY; + char.alpha *= alpha; } } typedef StageCharPosInfo = {