11import flixel .FlxSprite ;
22
3- var tankmanRun : Array <TankmenBG > = [];
4- var grpTankmanRun : FlxTypedGroup <FlxSprite > = [];
5-
63var spawnTimes = []; // [[time, direction]]
7- var tankmanPool = [];
8-
9- function recycleTankman () {
10- if (tankmanPool .length == 0 ) {
11- return new TankmenBG ();
12- } else {
13- return tankmanPool .shift (); // can be pop but it causes it to be less random
14- }
4+ var tankmanGroup : TankmenGroup = {
5+ run : [],
6+ pool : [],
7+ group : new FlxTypedGroup <FlxSprite >()
158}
169
10+ function recycleTankman ()
11+ return tankmanGroup .pool .length == 0 ? new TankmenBG (tankmanGroup ) : tankmanGroup .pool .shift (); // can be pop but it causes it to be less random
12+
1713function getTankman (data : Array <Float >) {
1814 var tankman : TankmenBG = recycleTankman ();
1915 tankman .strumTime = data [0 ];
@@ -22,9 +18,8 @@ function getTankman(data:Array<Float>) {
2218}
2319
2420function postCreate () {
25- grpTankmanRun = new FlxTypedGroup ();
26- insert (members .indexOf (gf ) - 1 , grpTankmanRun );
27- if (inCutscene ) grpTankmanRun .visible = false ;
21+ insert (members .indexOf (gf ) - 1 , tankmanGroup .group );
22+ if (inCutscene ) tankmanGroup .group .visible = false ;
2823
2924 /* var tempTankman:TankmenBG = recycleTankman();
3025 tempTankman.strumTime = 10;
@@ -42,9 +37,8 @@ function postCreate() {
4237 // spawnTimes.reverse(); // no need to reverse it since the notes are already reversed
4338}
4439
45- function onStartCountdown () {
46- if (PlayState .instance .seenCutscene ) grpTankmanRun .visible = true ;
47- }
40+ function onStartCountdown ()
41+ if (PlayState .instance .seenCutscene ) tankmanGroup .group .visible = true ;
4842
4943function spawnTankmen () {
5044 var time = Conductor .songPosition ;
@@ -54,50 +48,46 @@ function spawnTankmen() {
5448
5549 // trace("Spawning Tankman", tankmen.sprite.offset, tankmen.goingRight);
5650
57- tankmanRun .push (tankmen );
58- grpTankmanRun .add (tankmen .sprite );
51+ tankmanGroup . run .push (tankmen );
52+ tankmanGroup . group .add (tankmen .sprite );
5953 }
6054}
6155
6256function update (elapsed ) {
6357 spawnTankmen ();
6458
65- var length = tankmanRun .length ;
66- for (i in 0 ... length ) {
59+ var length = tankmanGroup . run .length ;
60+ for (i in 0 ... length ) {
6761 var reverseIndex = length - i - 1 ;
68- var tankmen = tankmanRun [reverseIndex ];
62+ var tankmen = tankmanGroup . run [reverseIndex ];
6963 tankmen .update (elapsed );
7064 }
7165}
7266
7367class TankmenBG {
68+ public var sprite : FlxSprite ;
69+
7470 var strumTime = 0 ;
7571 var goingRight = false ;
7672 var tankSpeed = 0.7 ;
77-
78- var endingOffset = null ;
79- var sprite = null ;
80-
73+ var endingOffset : Float ;
8174 var killed = false ;
75+ var grp : TankmenGroup ; // The reference to the current pool
8276
83- function new () {
84- this .sprite = new FlxSprite ();
85- var sprite = this .sprite ;
77+ function new (grp : TankmenGroup ) {
78+ this .grp = grp ;
8679
80+ sprite = new FlxSprite ();
8781 sprite .frames = Paths .getSparrowAtlas (' stages/tank/tankmanKilled1' );
8882 sprite .antialiasing = true ;
8983 sprite .animation .addByPrefix (' run' , ' tankman running' , 24 , true );
90-
9184 sprite .animation .play (' run' );
92-
9385 sprite .updateHitbox ();
94-
9586 sprite .setGraphicSize (Std .int (sprite .width * 0.8 ));
9687 sprite .updateHitbox ();
9788 }
9889
99- function resetShit (x , y , isGoingRight ) {
100- var sprite = this .sprite ;
90+ function resetShit (x : Float , y : Float , isGoingRight : Bool ) {
10191 sprite .revive ();
10292 sprite .setPosition (x , y );
10393 sprite .offset .set (0 , 0 );
@@ -114,7 +104,6 @@ class TankmenBG {
114104 }
115105
116106 function update (elapsed ) {
117- var sprite = this .sprite ;
118107 sprite .visible = ! (sprite .x >= FlxG .width * 1.5 || sprite .x <= FlxG .width * - 0.5 );
119108
120109 if (sprite .animation .curAnim .name == ' run' )
@@ -124,19 +113,18 @@ class TankmenBG {
124113 if (goingRight ) {
125114 endDirection = (FlxG .width * 0.02 ) - endingOffset ;
126115 sprite .x = (endDirection + (Conductor .songPosition - strumTime ) * tankSpeed );
127- }
128- else sprite .x = (endDirection - (Conductor .songPosition - strumTime ) * tankSpeed );
116+ } else sprite .x = (endDirection - (Conductor .songPosition - strumTime ) * tankSpeed );
129117 }
130118
131119 if (Conductor .songPosition > strumTime )
132120 {
133121 sprite .animation .play (' shot' );
134122 sprite .animation .finishCallback = function (_ ) {
135123 killed = true ;
136- grpTankmanRun .remove (sprite , true );
124+ grp . group .remove (sprite , true );
137125 sprite .kill ();
138- tankmanPool .push (this );
139- tankmanRun .remove (this );
126+ grp . pool .push (this );
127+ grp . run .remove (this );
140128 }
141129
142130 if (goingRight )
@@ -146,4 +134,4 @@ class TankmenBG {
146134 }
147135 }
148136 }
149- }
137+ }
0 commit comments