diff --git a/assets/songs/stress/scripts/tankmenRun.hx b/assets/songs/stress/scripts/tankmenRun.hx index a7d7a3067..378483db4 100644 --- a/assets/songs/stress/scripts/tankmenRun.hx +++ b/assets/songs/stress/scripts/tankmenRun.hx @@ -1,19 +1,15 @@ import flixel.FlxSprite; -var tankmanRun:Array = []; -var grpTankmanRun:FlxTypedGroup = []; - var spawnTimes = []; // [[time, direction]] -var tankmanPool = []; - -function recycleTankman() { - if(tankmanPool.length == 0) { - return new TankmenBG(); - } else { - return tankmanPool.shift(); // can be pop but it causes it to be less random - } +var tankmanGroup:TankmenGroup = { + run: [], + pool: [], + group: new FlxTypedGroup() } +function recycleTankman() + return tankmanGroup.pool.length == 0 ? new TankmenBG(tankmanGroup) : tankmanGroup.pool.shift(); // can be pop but it causes it to be less random + function getTankman(data:Array) { var tankman:TankmenBG = recycleTankman(); tankman.strumTime = data[0]; @@ -22,9 +18,8 @@ function getTankman(data:Array) { } function postCreate() { - grpTankmanRun = new FlxTypedGroup(); - insert(members.indexOf(gf) - 1, grpTankmanRun); - if(inCutscene) grpTankmanRun.visible = false; + insert(members.indexOf(gf) - 1, tankmanGroup.group); + if (inCutscene) tankmanGroup.group.visible = false; /*var tempTankman:TankmenBG = recycleTankman(); tempTankman.strumTime = 10; @@ -42,9 +37,8 @@ function postCreate() { //spawnTimes.reverse(); // no need to reverse it since the notes are already reversed } -function onStartCountdown() { - if(PlayState.instance.seenCutscene) grpTankmanRun.visible = true; -} +function onStartCountdown() + if (PlayState.instance.seenCutscene) tankmanGroup.group.visible = true; function spawnTankmen() { var time = Conductor.songPosition; @@ -54,50 +48,46 @@ function spawnTankmen() { //trace("Spawning Tankman", tankmen.sprite.offset, tankmen.goingRight); - tankmanRun.push(tankmen); - grpTankmanRun.add(tankmen.sprite); + tankmanGroup.run.push(tankmen); + tankmanGroup.group.add(tankmen.sprite); } } function update(elapsed) { spawnTankmen(); - var length = tankmanRun.length; - for(i in 0...length) { + var length = tankmanGroup.run.length; + for (i in 0...length) { var reverseIndex = length - i - 1; - var tankmen = tankmanRun[reverseIndex]; + var tankmen = tankmanGroup.run[reverseIndex]; tankmen.update(elapsed); } } class TankmenBG { + public var sprite:FlxSprite; + var strumTime = 0; var goingRight = false; var tankSpeed = 0.7; - - var endingOffset = null; - var sprite = null; - + var endingOffset:Float; var killed = false; + var grp:TankmenGroup; // The reference to the current pool - function new() { - this.sprite = new FlxSprite(); - var sprite = this.sprite; + function new(grp:TankmenGroup) { + this.grp = grp; + sprite = new FlxSprite(); sprite.frames = Paths.getSparrowAtlas('stages/tank/tankmanKilled1'); sprite.antialiasing = true; sprite.animation.addByPrefix('run', 'tankman running', 24, true); - sprite.animation.play('run'); - sprite.updateHitbox(); - sprite.setGraphicSize(Std.int(sprite.width * 0.8)); sprite.updateHitbox(); } - function resetShit(x, y, isGoingRight) { - var sprite = this.sprite; + function resetShit(x:Float, y:Float, isGoingRight:Bool) { sprite.revive(); sprite.setPosition(x, y); sprite.offset.set(0, 0); @@ -114,7 +104,6 @@ class TankmenBG { } function update(elapsed) { - var sprite = this.sprite; sprite.visible = !(sprite.x >= FlxG.width * 1.5 || sprite.x <= FlxG.width * -0.5); if (sprite.animation.curAnim.name == 'run') @@ -124,8 +113,7 @@ class TankmenBG { if (goingRight) { endDirection = (FlxG.width * 0.02) - endingOffset; sprite.x = (endDirection + (Conductor.songPosition - strumTime) * tankSpeed); - } - else sprite.x = (endDirection - (Conductor.songPosition - strumTime) * tankSpeed); + } else sprite.x = (endDirection - (Conductor.songPosition - strumTime) * tankSpeed); } if (Conductor.songPosition > strumTime) @@ -133,10 +121,10 @@ class TankmenBG { sprite.animation.play('shot'); sprite.animation.finishCallback = function(_) { killed = true; - grpTankmanRun.remove(sprite, true); + grp.group.remove(sprite, true); sprite.kill(); - tankmanPool.push(this); - tankmanRun.remove(this); + grp.pool.push(this); + grp.run.remove(this); } if (goingRight) @@ -146,4 +134,4 @@ class TankmenBG { } } } -} \ No newline at end of file +} diff --git a/source/funkin/backend/scripting/HScript.hx b/source/funkin/backend/scripting/HScript.hx index 1b9238bb3..c3656478c 100644 --- a/source/funkin/backend/scripting/HScript.hx +++ b/source/funkin/backend/scripting/HScript.hx @@ -34,6 +34,7 @@ class HScript extends Script { __importedPaths = [path]; interp.errorHandler = _errorHandler; + interp.warnHandler = _warnHandler; interp.importFailedCallback = importFailedCallback; interp.staticVariables = Script.staticVariables; interp.allowStaticVariables = interp.allowPublicVariables = true; @@ -117,6 +118,24 @@ class HScript extends Script { ], ERROR); } + private function _warnHandler(error:Error) { + var fileName = error.origin; + var oldfn = '$fileName:${error.line}: '; + if(remappedNames.exists(fileName)) + fileName = remappedNames.get(fileName); + var fn = '$fileName:${error.line}: '; + var err = error.toString(); + while(err.startsWith(oldfn) || err.startsWith(fn)) { + if (err.startsWith(oldfn)) err = err.substr(oldfn.length); + if (err.startsWith(fn)) err = err.substr(fn.length); + } + + Logs.traceColored([ + Logs.logText(fn, GREEN), + Logs.logText(err, YELLOW) + ], WARNING); + } + public override function setParent(parent:Dynamic) { interp.scriptObject = parent; }