diff --git a/Project.xml b/Project.xml
index b24a6fc7..ecc9439e 100644
--- a/Project.xml
+++ b/Project.xml
@@ -43,16 +43,16 @@
-
+
-
+
-
+
-
+
@@ -60,13 +60,13 @@
-
+
-
+
@@ -127,7 +127,7 @@
-
+
@@ -135,12 +135,12 @@
-
+
-
+
@@ -148,11 +148,11 @@
-
+
-
+
-
+
-
+
diff --git a/assets/data/titlescreen/titlescreen.xml b/assets/data/titlescreen/titlescreen.xml
index f6a3fc0b..763db8e4 100644
--- a/assets/data/titlescreen/titlescreen.xml
+++ b/assets/data/titlescreen/titlescreen.xml
@@ -17,7 +17,7 @@
-
+
@@ -25,7 +25,7 @@
-
+
@@ -37,7 +37,7 @@
-
+
@@ -61,7 +61,7 @@
-
+
diff --git a/buildnumber.txt b/buildnumber.txt
index 4d2b2566..37b767d4 100644
--- a/buildnumber.txt
+++ b/buildnumber.txt
@@ -1 +1 @@
-2042
\ No newline at end of file
+2044
\ No newline at end of file
diff --git a/source/flx3d/Flx3DUtil.hx b/source/flx3d/Flx3DUtil.hx
index b4749cc1..53d6bf44 100644
--- a/source/flx3d/Flx3DUtil.hx
+++ b/source/flx3d/Flx3DUtil.hx
@@ -14,7 +14,7 @@ import flixel.FlxG;
class Flx3DUtil
{
/**
- * Returns the total amount of 3D stages (not exculding the ones in use)
+ * Returns the total amount of 3D stages (not excluding the ones in use)
* @return Int
*/
public static inline function getTotal3D():Int
@@ -38,7 +38,7 @@ class Flx3DUtil
/**
* Calls dispose() (destroy) on a Away3D asset
- * @param obj
+ * @param obj
* @return null
*/
public static inline function dispose(obj:Null):T
diff --git a/source/flx3d/Flx3DView.hx b/source/flx3d/Flx3DView.hx
index 3d414184..18bed7c1 100644
--- a/source/flx3d/Flx3DView.hx
+++ b/source/flx3d/Flx3DView.hx
@@ -44,7 +44,7 @@ class Flx3DView extends FlxView3D {
var model = Assets.getBytes(assetPath);
if (model == null)
throw 'Model at ${assetPath} was not found.';
-
+
var context = new AssetLoaderContext();
var noExt = Path.withoutExtension(assetPath);
trace(noExt);
@@ -113,7 +113,7 @@ class Flx3DView extends FlxView3D {
if (onAssetCallback != null)
onAssetCallback(event);
});
-
+
token.addEventListener(LoaderEvent.RESOURCE_COMPLETE, (_) -> {
trace("Loader Finished...");
diff --git a/source/flx3d/FlxView3D.hx b/source/flx3d/FlxView3D.hx
index 681ff900..416a87f8 100644
--- a/source/flx3d/FlxView3D.hx
+++ b/source/flx3d/FlxView3D.hx
@@ -7,10 +7,10 @@ import flixel.FlxSprite;
import openfl.display.BitmapData;
/**
- * @author Ne_Eo
+ * @author Ne_Eo
* @see https://twitter.com/Ne_Eo_Twitch
- *
- * @author lunarclient
+ *
+ * @author lunarcleint
* @see https://twitter.com/lunarcleint
*/
class FlxView3D extends FlxSprite
@@ -18,20 +18,20 @@ class FlxView3D extends FlxSprite
@:noCompletion private var bmp:BitmapData;
/**
- * The Away3D View
+ * The Away3D View
*/
public var view:View3D;
/**
* Set this flag to true to force the View3D to update during the `draw()` call.
*/
- public var dirty3D:Bool = true;
+ public var dirty3D:Bool = true;
/**
* Creates a new instance of a View3D from Away3D and renders it as a FlxSprite
* ! Call Flx3DUtil.is3DAvailable(); to make sure a 3D stage is usable
- * @param x
- * @param y
+ * @param x
+ * @param y
* @param width Leave as -1 for screen width
* @param height Leave as -1 for screen height
*/
@@ -54,7 +54,7 @@ class FlxView3D extends FlxSprite
/**
* Disposes (destroys) the asset and returns null
- * @param obj
+ * @param obj
* @return T null
*/
public static function dispose(obj:Null):T
@@ -76,12 +76,11 @@ class FlxView3D extends FlxSprite
bmp = null;
}
- if (view != null)
+ if (view != null)
{
view.dispose();
view = null;
}
-
}
@:noCompletion override function draw()
diff --git a/source/funkin/desktop/editors/CharacterEditor.hx b/source/funkin/desktop/editors/CharacterEditor.hx
index c986eb4a..e62b8aff 100644
--- a/source/funkin/desktop/editors/CharacterEditor.hx
+++ b/source/funkin/desktop/editors/CharacterEditor.hx
@@ -75,7 +75,7 @@ class CharacterEditor extends WindowContent {
add(bg);
add(stageFront);
add(char);
-
+
title = 'Character Editor - ${char.curCharacter}.xml';
// character setup & following
@@ -143,13 +143,13 @@ class CharacterEditor extends WindowContent {
callback: resetCamZoom
},
{
- name: "Show a Boyfriend Silouhette"
+ name: "Show a Boyfriend Silhouette"
},
{
- name: "Show a Dad Silouhette"
+ name: "Show a Dad Silhouette"
},
{
- name: "Show a Girlfriend Silouhette"
+ name: "Show a Girlfriend Silhouette"
}
]
},
@@ -197,7 +197,7 @@ class CharacterEditor extends WindowContent {
content.push(animPrefixInput = new InputBox(10, label.y + label.height, 380, ""));
content.push(animLoopCheckbox = new Checkbox(10, animPrefixInput.y + animPrefixInput.height + 10, 380, "Loop"));
-
+
content.push(label = new WindowText(10, animLoopCheckbox.y + animLoopCheckbox.height + 10, 0, "Animation FPS (Frames per second)"));
content.push(animFpsStepper = new NumericStepper(10, label.y + label.height, 380, 0));
@@ -207,7 +207,7 @@ class CharacterEditor extends WindowContent {
for(e in [animOffsetX, animOffsetY])
e.increment = 10;
-
+
for(spr in content)
tabView.tabs[0].add(spr);
}
@@ -221,18 +221,18 @@ class CharacterEditor extends WindowContent {
content.push(label = new WindowText(10, content.last().y + content.last().height, 0, "Icon Name (images/icons/)"));
content.push(charIconInput = new InputBox(10, label.y + label.height, 380, char.icon.getDefault("")));
-
+
content.push(charIsPlayerCheckbox = new Checkbox(10, content.last().y + content.last().height + 10, 380, "Playable character"));
content.push(label = new WindowText(10, content.last().y + content.last().height, 380, "(Offsets are automatically fixed when playing as a non-playable character and vice versa)"));
charIsPlayerCheckbox.checked = char.xml.getAtt("isPlayer") == "true";
-
+
content.push(charIsGFCheckbox = new Checkbox(10, content.last().y + content.last().height + 10, 380, "Is Girlfriend"));
content.push(label = new WindowText(10, content.last().y + content.last().height, 380, "(Characters marked as Girlfriend will replace GF when used as opponent)"));
charIsGFCheckbox.checked = char.isGF;
-
+
content.push(charFlipXCheckbox = new Checkbox(10, content.last().y + content.last().height + 10, 380, "Flip Horizontally"));
charFlipXCheckbox.checked = char.__baseFlipped != char.isPlayer;
-
+
for(spr in content)
tabView.tabs[1].add(spr);
}
@@ -306,7 +306,7 @@ class CharacterEditor extends WindowContent {
/**
* =========== CONTEXT MENU OPTIONS ===========
*/
-
+
/**
* View
*/
diff --git a/source/funkin/game/Note.hx b/source/funkin/game/Note.hx
index 5336849d..cfb7be14 100644
--- a/source/funkin/game/Note.hx
+++ b/source/funkin/game/Note.hx
@@ -11,9 +11,6 @@ import flixel.math.FlxRect;
import flixel.math.FlxPoint;
import funkin.system.Conductor;
import funkin.scripting.events.*;
-#if polymod
-import polymod.format.ParseRules.TargetSignatureElement;
-#end
using StringTools;
diff --git a/source/funkin/menus/TitleState.hx b/source/funkin/menus/TitleState.hx
index b3766a10..67fa72c6 100644
--- a/source/funkin/menus/TitleState.hx
+++ b/source/funkin/menus/TitleState.hx
@@ -92,6 +92,7 @@ class TitleState extends MusicBeatState
blackScreen = new FlxSprite().makeGraphic(FlxG.width, FlxG.height, FlxColor.BLACK);
add(blackScreen);
+ #if !TITLESCREEN_XML
ngSpr = new FlxSprite(0, FlxG.height * 0.52).loadAnimatedGraphic(Paths.image('newgrounds_logo'));
add(ngSpr);
ngSpr.visible = false;
@@ -99,6 +100,7 @@ class TitleState extends MusicBeatState
ngSpr.updateHitbox();
ngSpr.screenCenter(X);
ngSpr.antialiasing = true;
+ #end
FlxG.mouse.visible = false;
@@ -213,7 +215,10 @@ class TitleState extends MusicBeatState
public function deleteCoolText()
{
- while (textGroup.members.length > 0) textGroup.remove(textGroup.members[0], true);
+ while (textGroup.members.length > 0) {
+ textGroup.members[0].destroy();
+ textGroup.remove(textGroup.members[0], true);
+ }
}
override function beatHit(curBeat:Int)
@@ -258,7 +263,7 @@ class TitleState extends MusicBeatState
5 => new IntroText(['In association', 'with']),
7 => new IntroText(['In association', 'with', 'newgrounds', {
name: "newgroundsLogo",
- path: "titlescreen/newgrounds_logo",
+ path: "menus/titlescreen/newgrounds_logo",
scale: 0.8
}]),
8 => new IntroText(),
@@ -330,7 +335,9 @@ class TitleState extends MusicBeatState
{
if (!skippedIntro)
{
+ #if !TITLESCREEN_XML
remove(ngSpr);
+ #end
FlxG.camera.flash(FlxColor.WHITE, 4);
remove(blackScreen);
@@ -363,7 +370,13 @@ class IntroText {
var scale:Float = CoolUtil.getDefault(image.scale, 1);
- var sprite = new FlxSprite(0, 200).loadAnimatedGraphic(Paths.image(image.path));
+ var yPos:Float = 200;
+ if(state.textGroup.members.length > 0) {
+ var lastLine:FlxSprite = cast state.textGroup.members[state.textGroup.members.length-1];
+ yPos = lastLine.y + lastLine.height + 10;
+ }
+
+ var sprite = new FlxSprite(0, yPos).loadAnimatedGraphic(Paths.image(image.path));
sprite.flipX = CoolUtil.getDefault(image.flipX, false);
sprite.flipY = CoolUtil.getDefault(image.flipY, false);
sprite.scale.set(scale, scale);
diff --git a/source/funkin/scripting/Script.hx b/source/funkin/scripting/Script.hx
index 9a39a702..843b2dc4 100644
--- a/source/funkin/scripting/Script.hx
+++ b/source/funkin/scripting/Script.hx
@@ -12,7 +12,7 @@ import openfl.utils.Assets;
class Script extends FlxBasic implements IFlxDestroyable {
/**
* Use "static var thing = true;" in hscript to use those!!
- * are reset every mod switch so once youre done with them make sure to make them null!!
+ * are reset every mod switch so once you're done with them make sure to make them null!!
*/
public static var staticVariables:Map = [];
@@ -155,7 +155,7 @@ class Script extends FlxBasic implements IFlxDestroyable {
/**
* Creates a new instance of the script class.
- * @param path
+ * @param path
*/
public function new(path:String) {
super();
@@ -184,14 +184,14 @@ class Script extends FlxBasic implements IFlxDestroyable {
* Sets the "public" variables map for ScriptPack
*/
public function setPublicMap(map:Map) {
-
+
}
/**
* Hot-reloads the script, if possible
*/
public function reload() {
-
+
}
/**
@@ -204,7 +204,7 @@ class Script extends FlxBasic implements IFlxDestroyable {
], TRACE);
}
-
+
/**
* Calls the function `func` defined in the script.
* @param func Name of the function
@@ -216,13 +216,13 @@ class Script extends FlxBasic implements IFlxDestroyable {
curScript = this;
var result = onCall(func, parameters == null ? [] : parameters);
-
+
curScript = oldScript;
return result;
}
/**
- * Sets a script's parent object so that its properties can be accessed easily. Ex: Passing `PlayState.instace` will allow `boyfriend` to be typed instead of `PlayState.instance.boyfriend`.
+ * Sets a script's parent object so that its properties can be accessed easily. Ex: Passing `PlayState.instance` will allow `boyfriend` to be typed instead of `PlayState.instance.boyfriend`.
* @param variable Parent variable.
*/
public function setParent(variable:Dynamic) {}
diff --git a/source/funkin/scripting/events/CancellableEvent.hx b/source/funkin/scripting/events/CancellableEvent.hx
index 5c0f651e..ecb6f84c 100644
--- a/source/funkin/scripting/events/CancellableEvent.hx
+++ b/source/funkin/scripting/events/CancellableEvent.hx
@@ -14,7 +14,7 @@ class CancellableEvent implements IFlxDestroyable {
public var data:Dynamic = {};
/**
- * Prevents default action from occuring.
+ * Prevents default action from occurring.
* @param c Whenever the scripts following this one should be called or not. (Defaults to `true`)
*/
public function preventDefault(c:Bool = false) {
diff --git a/source/funkin/scripting/events/NoteHitEvent.hx b/source/funkin/scripting/events/NoteHitEvent.hx
index 951383bd..e7aafb7e 100644
--- a/source/funkin/scripting/events/NoteHitEvent.hx
+++ b/source/funkin/scripting/events/NoteHitEvent.hx
@@ -12,16 +12,16 @@ class NoteHitEvent extends CancellableEvent {
@:dox(hide) public var autoHitLastSustain:Bool = true;
/**
- Whenever a miss should be added.
- **/
+ * Whenever a miss should be added.
+ */
public var misses:Bool = true;
/**
- Whenever a miss should be added.
- **/
+ * Whenever a miss should be added.
+ */
public var countAsCombo:Bool = true;
/**
- Whenever ratings should be shown or not.
- **/
+ * Whenever ratings should be shown or not.
+ */
public var showRating:Null = null;
/**
* Note that has been pressed
@@ -141,7 +141,7 @@ class NoteHitEvent extends CancellableEvent {
}
@:dox(hide)
public function cancelCamZooming() {preventCamZooming();}
-
+
/**
* Prevents the sustain tail (the last one) from being automatically hit when the sustain before it is hit.
*/
@@ -150,7 +150,7 @@ class NoteHitEvent extends CancellableEvent {
}
@:dox(hide)
public function cancelLastSustainHit() {preventLastSustainHit();}
-
+
/**
* Prevents the strum from glowing after this note has been pressed.
*/
@@ -160,7 +160,7 @@ class NoteHitEvent extends CancellableEvent {
@:dox(hide)
public function cancelStrumGlow() {preventStrumGlow();}
- private inline function get_character()
+ private inline function get_character()
return characters[0];
private function set_character(char:Character) {
characters = [char];
diff --git a/source/funkin/system/Controls.hx b/source/funkin/system/Controls.hx
index 25d6fc9b..2466146d 100644
--- a/source/funkin/system/Controls.hx
+++ b/source/funkin/system/Controls.hx
@@ -55,7 +55,7 @@ enum Device
/**
* Since, in many cases multiple actions should use similar keys, we don't want the
- * rebinding UI to list every action. ActionBinders are what the user percieves as
+ * rebinding UI to list every action. ActionBinders are what the user perceives as
* an input so, for instance, they can't set jump-press and jump-release to different keys.
*/
enum Control
diff --git a/source/funkin/system/MusicBeatState.hx b/source/funkin/system/MusicBeatState.hx
index 64d572b7..fb618d09 100644
--- a/source/funkin/system/MusicBeatState.hx
+++ b/source/funkin/system/MusicBeatState.hx
@@ -86,7 +86,7 @@ class MusicBeatState extends FlxUIState implements IBeatReceiver
if (stateScript == null || stateScript is DummyScript) {
var className = Type.getClassName(Type.getClass(this));
var scriptName = this.scriptName != null ? this.scriptName : className.substr(className.lastIndexOf(".")+1);
-
+
stateScript = Script.create(Paths.script('data/states/${scriptName}'));
stateScript.setParent(this);
stateScript.load();
@@ -144,7 +144,7 @@ class MusicBeatState extends FlxUIState implements IBeatReceiver
Logs.trace('State script successfully reloaded', WARNING, GREEN);
}
call("update", [elapsed]);
-
+
super.update(elapsed);
}
@@ -165,7 +165,7 @@ class MusicBeatState extends FlxUIState implements IBeatReceiver
* @param v1 Value 1
* @param v2 Value 2
* @param ratio Ratio
- * @param fpsSensitive Whenever the ratio should not be adjusted to run at the same speed independant of framerate.
+ * @param fpsSensitive Whenever the ratio should not be adjusted to run at the same speed independent of framerate.
*/
public function lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false) {
if (fpsSensitive)
@@ -175,7 +175,7 @@ class MusicBeatState extends FlxUIState implements IBeatReceiver
}
/**
- * SCRIPTING STUFF
+ * SCRIPTING STUFF
*/
public override function openSubState(subState:FlxSubState) {
var e = event("onOpenSubState", EventManager.get(StateEvent).recycle(subState));
@@ -191,7 +191,7 @@ class MusicBeatState extends FlxUIState implements IBeatReceiver
public override function destroy() {
if (parentWindow == null)
super.destroy();
-
+
call("onDestroy");
if (stateScript != null)
stateScript.destroy();
diff --git a/source/funkin/system/MusicBeatSubstate.hx b/source/funkin/system/MusicBeatSubstate.hx
index 06de0add..714bb0d0 100644
--- a/source/funkin/system/MusicBeatSubstate.hx
+++ b/source/funkin/system/MusicBeatSubstate.hx
@@ -17,7 +17,7 @@ class MusicBeatSubstate extends FlxSubState implements IBeatReceiver
private var lastBeat:Float = 0;
private var lastStep:Float = 0;
-
+
/**
* Current step
*/
@@ -37,19 +37,19 @@ class MusicBeatSubstate extends FlxSubState implements IBeatReceiver
/**
* Current song position (in milliseconds).
*/
- public var songPos(get, never):Float;
-
- inline function get_curStep():Int
- return Conductor.curStep;
- inline function get_curBeat():Int
- return Conductor.curBeat;
- inline function get_curStepFloat():Float
- return Conductor.curStepFloat;
- inline function get_curBeatFloat():Float
- return Conductor.curBeatFloat;
- inline function get_songPos():Float
- return Conductor.songPosition;
-
+ public var songPos(get, never):Float;
+
+ inline function get_curStep():Int
+ return Conductor.curStep;
+ inline function get_curBeat():Int
+ return Conductor.curBeat;
+ inline function get_curStepFloat():Float
+ return Conductor.curStepFloat;
+ inline function get_curBeatFloat():Float
+ return Conductor.curBeatFloat;
+ inline function get_songPos():Float
+ return Conductor.songPosition;
+
/**
* Current injected script attached to the state. To add one, create a file at path "data/states/stateName" (ex: "data/states/PauseMenuSubstate.hx")
@@ -81,7 +81,7 @@ class MusicBeatSubstate extends FlxSubState implements IBeatReceiver
if (stateScript == null || stateScript is DummyScript) {
var className = Type.getClassName(Type.getClass(this));
var scriptName = this.scriptName != null ? this.scriptName : className.substr(className.lastIndexOf(".")+1);
-
+
stateScript = Script.create(Paths.script('data/states/${scriptName}'));
stateScript.setParent(this);
stateScript.load();
@@ -168,7 +168,7 @@ class MusicBeatSubstate extends FlxSubState implements IBeatReceiver
* @param v1 Value 1
* @param v2 Value 2
* @param ratio Ratio
- * @param fpsSensitive Whenever the ratio should not be adjusted to run at the same speed independant of framerate.
+ * @param fpsSensitive Whenever the ratio should not be adjusted to run at the same speed independent of framerate.
*/
public function lerp(v1:Float, v2:Float, ratio:Float, fpsSensitive:Bool = false) {
if (fpsSensitive)
@@ -178,7 +178,7 @@ class MusicBeatSubstate extends FlxSubState implements IBeatReceiver
}
/**
- * SCRIPTING STUFF
+ * SCRIPTING STUFF
*/
public override function openSubState(subState:FlxSubState) {
var e = event("onOpenSubState", EventManager.get(StateEvent).recycle(subState));
diff --git a/source/funkin/system/Paths.hx b/source/funkin/system/Paths.hx
index a0c2779a..274c0cbd 100644
--- a/source/funkin/system/Paths.hx
+++ b/source/funkin/system/Paths.hx
@@ -254,7 +254,7 @@ class Paths
var content:Array = [];
#if MOD_SUPPORT
if (library is funkin.mods.ModsAssetLibrary) {
- // easy task, can immediatly scan for files!
+ // easy task, can immediately scan for files!
var lib = cast(library, funkin.mods.ModsAssetLibrary);
content = lib.getFiles(libThing.symbolName);
if (addPath)
diff --git a/source/funkin/system/Song.hx b/source/funkin/system/Song.hx
index 82d1d65b..0f06360b 100644
--- a/source/funkin/system/Song.hx
+++ b/source/funkin/system/Song.hx
@@ -34,11 +34,7 @@ class Song
PlayState.fromMods = Paths.assetsTree.existsSpecific(assetPath, "TEXT", MODS);
var rawJson = Assets.getText(assetPath).trim();
- while (!rawJson.endsWith("}"))
- {
- rawJson = rawJson.substr(0, rawJson.length - 1);
- // LOL GOING THROUGH THE BULLSHIT TO CLEAN IDK WHATS STRANGE
- }
+ rawJson = rawJson.substr(0, rawJson.lastIndexOf('}') + 1);
return parseJSONshit(rawJson);
}
diff --git a/source/funkin/ui/Alphabet.hx b/source/funkin/ui/Alphabet.hx
index b52376a9..da67c575 100644
--- a/source/funkin/ui/Alphabet.hx
+++ b/source/funkin/ui/Alphabet.hx
@@ -16,7 +16,7 @@ import flixel.util.FlxColor;
using StringTools;
/**
- * Loosley based on FlxTypeText lolol
+ * Loosely based on FlxTypeText lolol
*/
class Alphabet extends FlxSpriteGroup
{
diff --git a/source/funkin/utils/CoolUtil.hx b/source/funkin/utils/CoolUtil.hx
index 7bf5f982..c2d6f8af 100644
--- a/source/funkin/utils/CoolUtil.hx
+++ b/source/funkin/utils/CoolUtil.hx
@@ -61,7 +61,7 @@ class CoolUtil
var f:Null = Reflect.field(v, name);
if (f != null)
return cast f;
- }
+ }
Reflect.setField(v, name, defaultValue);
return defaultValue;
}
@@ -90,7 +90,7 @@ class CoolUtil
* @param color1 Color 1
* @param color2 Color 2
* @param ratio Ratio
- * @param fpsSensitive Whenever the ratio should be case sentivive (adapted when game is running at 120 instead of 60)
+ * @param fpsSensitive Whenever the ratio should be fps sensitive (adapted when game is running at 120 instead of 60)
*/
public static inline function lerpColor(color1:FlxColor, color2:FlxColor, ratio:Float, fpsSensitive:Bool = false) {
if (!fpsSensitive)
@@ -114,7 +114,7 @@ class CoolUtil
public static function getColorFromDynamic(c:Dynamic):Null {
// -1
if (c is Int) return c;
-
+
// -1.0
if (c is Float) return Std.int(c);
@@ -263,9 +263,9 @@ class CoolUtil
}
public static function loadWeek(weekData:WeekData, difficulty:String = "normal") {
- PlayState.storyWeek = weekData;
- PlayState.storyPlaylist = [for(e in weekData.songs) e.name];
- PlayState.isStoryMode = true;
+ PlayState.storyWeek = weekData;
+ PlayState.storyPlaylist = [for(e in weekData.songs) e.name];
+ PlayState.isStoryMode = true;
PlayState.campaignScore = 0;
__loadSong(PlayState.storyPlaylist[0], difficulty);
}
@@ -331,10 +331,10 @@ class CoolUtil
return null;
return graph.imageFrame;
}
-
+
public static function loadAnimatedGraphic(spr:FlxSprite, path:String) {
spr.frames = loadFrames(path);
-
+
if (spr.frames != null && spr.frames.frames != null) {
spr.animation.add("idle", [for(i in 0...spr.frames.frames.length) i], 24, true);
spr.animation.play("idle");
@@ -376,7 +376,7 @@ class CoolUtil
public static function clear(array:Array):Array {
while(array.length > 0)
array.shift();
- return array;
+ return array;
}
public static function pushGroup(array:Array, ...args:T):Array {