Skip to content

Commit

Permalink
Merge pull request #1243 from shinji-yoshida/flx_group_revive
Browse files Browse the repository at this point in the history
FlxGroup: implement revive()
  • Loading branch information
Gama11 committed Jul 27, 2014
2 parents fc3dae5 + c9cc3d2 commit 177967e
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 2 deletions.
2 changes: 1 addition & 1 deletion flixel/effects/particles/FlxEmitter.hx
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ class FlxTypedEmitter<T:(FlxSprite, IFlxParticle)> extends FlxTypedGroup<T>
*/
public function start(Explode:Bool = true, Frequency:Float = 0.1, Quantity:Int = 0):FlxTypedEmitter<T>
{
revive();
exists = true;
visible = true;
emitting = true;

Expand Down
23 changes: 22 additions & 1 deletion flixel/group/FlxGroup.hx
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,28 @@ class FlxTypedGroup<T:FlxBasic> extends FlxBasic

super.kill();
}


/**
* Calls revive on the group's members and then on the group itself.
*/
override public function revive():Void
{
var i:Int = 0;
var basic:FlxBasic = null;

while (i < length)
{
basic = members[i++];

if (basic != null && ! basic.exists)
{
basic.revive();
}
}

super.revive();
}

/**
* Iterate through every member
*/
Expand Down
2 changes: 2 additions & 0 deletions tests/src/TestSuite.hx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import massive.munit.TestSuite;

import flixel.animation.FlxAnimationControllerTest;
import flixel.effects.particles.FlxEmitterTest;
import flixel.FlxCameraTest;
import flixel.FlxGTest;
import flixel.FlxSpriteTest;
Expand Down Expand Up @@ -30,6 +31,7 @@ class TestSuite extends massive.munit.TestSuite
super();

add(flixel.animation.FlxAnimationControllerTest);
add(flixel.effects.particles.FlxEmitterTest);
add(flixel.FlxCameraTest);
add(flixel.FlxGTest);
add(flixel.FlxSpriteTest);
Expand Down
31 changes: 31 additions & 0 deletions tests/src/flixel/effects/particles/FlxEmitterTest.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package flixel.effects.particles;

import flixel.effects.particles.FlxEmitter;
import massive.munit.Assert;

class FlxEmitterTest extends FlxTest
{
var emitter:FlxEmitter;

@Before
function before():Void
{
emitter = new FlxEmitter();

destroyable = emitter;
}

@Test
function testStartShouldNotReviveMembers():Void
{
emitter.makeParticles(1, 1, 1);
// precondition
Assert.isFalse(emitter.exists);
emitter.forEach(function(each){Assert.isFalse(each.exists);});
// exercise
emitter.start();
// verify
Assert.isTrue(emitter.exists);
emitter.forEach(function(each){Assert.isFalse(each.exists);});
}
}
13 changes: 13 additions & 0 deletions tests/src/flixel/group/FlxGroupTest.hx
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,17 @@ class FlxGroupTest extends FlxTest
}
group.members[0].exists = true;
}

@Test
function testKillAndRevive():Void
{
group.kill();
group.forEach(function(each){
Assert.isFalse(each.exists);
});
group.revive();
group.forEach(function(each){
Assert.isTrue(each.exists);
});
}
}

0 comments on commit 177967e

Please sign in to comment.