Merge remote-tracking branch 'dev/main'

This commit is contained in:
NeeEoo
2023-07-17 10:01:30 +02:00
29 changed files with 1244 additions and 1750 deletions
+25 -1
View File
@@ -1,5 +1,6 @@
package funkin.backend;
import funkin.backend.utils.XMLUtil.AnimData;
import funkin.backend.utils.XMLUtil.IXMLEvents;
import flixel.system.FlxAssets.FlxGraphicAsset;
import flixel.addons.effects.FlxSkewedSprite;
@@ -37,6 +38,8 @@ class FunkinSprite extends FlxSkewedSprite implements IBeatReceiver implements I
public var name:String;
public var zoomFactor:Float = 1;
public var initialZoom:Float = 1;
public var debugMode:Bool = false;
public var animDatas:Map<String, AnimData> = [];
public var animateAtlas:FlxAnimate;
@:noCompletion public var atlasPlayingAnim:String;
@@ -287,7 +290,7 @@ class FunkinSprite extends FlxSkewedSprite implements IBeatReceiver implements I
}
else
{
if (!animation.exists(AnimName))
if (!animation.exists(AnimName) && !debugMode)
return;
animation.play(AnimName, Force, Reversed, Frame);
}
@@ -325,6 +328,27 @@ class FunkinSprite extends FlxSkewedSprite implements IBeatReceiver implements I
return name;
}
public inline function removeAnimation(name:String) {
if (animateAtlas != null)
@:privateAccess animateAtlas.anim.animsMap.remove(name);
else
animation.remove(name);
}
public inline function getNameList():Array<String> {
if (animateAtlas != null)
return [for (name in @:privateAccess animateAtlas.anim.animsMap.keys()) name];
else
return animation.getNameList();
}
public inline function stopAnimation() {
if (animateAtlas != null)
animateAtlas.anim.pause();
else
animation.stop();
}
public inline function isAnimFinished()
{
return animateAtlas != null ? (animateAtlas.anim.finished) : (animation.curAnim != null ? animation.curAnim.finished : true);
+4 -2
View File
@@ -1,5 +1,6 @@
package funkin.backend.utils;
import flixel.animation.FlxAnimation;
import funkin.backend.FunkinSprite;
import funkin.backend.system.ErrorCode;
import funkin.backend.FunkinSprite.XMLAnimType;
@@ -138,7 +139,7 @@ class XMLUtil {
if (anim.has.name) animData.name = anim.att.name;
if (anim.has.type) animData.animType = XMLAnimType.fromString(anim.att.type, animData.animType);
if (anim.has.anim) animData.anim = anim.att.anim;
if (anim.has.fps) animData.fps = Std.parseInt(anim.att.fps);
if (anim.has.fps) animData.fps = Std.parseFloat(anim.att.fps);
if (anim.has.x) animData.x = Std.parseFloat(anim.att.x);
if (anim.has.y) animData.y = Std.parseFloat(anim.att.y);
if (anim.has.loop) animData.loop = anim.att.loop == "true";
@@ -196,6 +197,7 @@ class XMLUtil {
default:
// nothing
}
xmlSpr.animDatas.set(animData.name, animData);
}
return OK;
}
@@ -211,7 +213,7 @@ class XMLUtil {
typedef AnimData = {
var name:String;
var anim:String;
var fps:Int;
var fps:Float;
var loop:Bool;
var x:Float;
var y:Float;