Index: sky/examples/game/lib/game_tests.dart |
diff --git a/sky/examples/game/lib/game_tests.dart b/sky/examples/game/lib/game_tests.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c9800df8d001b20d524d59049744e95d303ea1ca |
--- /dev/null |
+++ b/sky/examples/game/lib/game_tests.dart |
@@ -0,0 +1,67 @@ |
+part of game; |
+ |
+Math.Random _rand; |
+ |
+class GameTests extends TransformNode{ |
+ |
+ Image _imgAsteroid; |
+ Image _imgBg; |
+ Image _imgShip; |
+ |
+ GameTests(ImageMap images) { |
+ // Setup random number generator |
+ _rand = new Math.Random(); |
+ |
+ // Fetch images |
+ _imgBg = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/resources-auto/BurnTexture.png"]; |
+ _imgAsteroid = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources-auto/asteroid_big_002.png"]; |
+ _imgShip = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources-auto/GG_blueship_Lv3.png"]; |
+ |
+ for (int i = 0; i < 100; i++) { |
+ addSprite(i/100.0); |
+ } |
+ } |
+ |
+ void addSprite([double scale = null]) { |
+ TestAsteroidSprite sprt = new TestAsteroidSprite.withImage(_imgAsteroid); |
+ sprt.width = 64.0; |
+ sprt.height = 64.0; |
+ |
+ if (scale == null) { |
+ scale = _rand.nextDouble(); |
+ } |
+ |
+ sprt.zPosition = scale; |
+ sprt.scale = scale; |
+ sprt.position = new Vector2(_rand.nextDouble()*1024.0, _rand.nextDouble()*1024.0); |
+ |
+ this.addChild(sprt); |
+ } |
+ |
+ void update(double dt) { |
+ for (TransformNode child in children) { |
+ child.update(dt); |
+ } |
+ } |
+} |
+ |
+class TestAsteroidSprite extends SpriteNode { |
+ |
+ Vector2 _movementVector; |
+ double _rotationalSpeed; |
+ |
+ TestAsteroidSprite.withImage(Image img) : super.withImage(img) { |
+ _movementVector = new Vector2(_rand.nextDouble() * 4.0 - 2.0, _rand.nextDouble() * 4.0 - 2.0); |
+ _rotationalSpeed = _rand.nextDouble() * 2.0 - 1.0; |
+ } |
+ |
+ void update(double dt) { |
+ position = position + _movementVector * scale; |
+ |
+ // Bounce at edges |
+ if (position[0] < 0 || position[0] > 1024.0) _movementVector[0] = -_movementVector[0]; |
+ if (position[1] < 0 || position[1] > 1024.0) _movementVector[1] = -_movementVector[1]; |
+ |
+ rotation += _rotationalSpeed; |
+ } |
+} |