diff --git a/examples/game/lib/game_object_factory.dart b/examples/game/lib/game_object_factory.dart index b4508c018..807ae9067 100644 --- a/examples/game/lib/game_object_factory.dart +++ b/examples/game/lib/game_object_factory.dart @@ -1,14 +1,5 @@ part of game; -enum GameObjectType { - asteroidBig, - asteroidSmall, - asteroidPowerUp, - enemyScout, - enemyDestroyer, - coin, -} - class GameObjectFactory { GameObjectFactory(this.sheet, this.sounds, this.level, this.playerState); @@ -19,11 +10,17 @@ class GameObjectFactory { void addAsteroids(int numAsteroids, double yPos, double distribution) { for (int i = 0; i < numAsteroids; i++) { - GameObjectType type = (randomDouble() < distribution) ? GameObjectType.asteroidBig : GameObjectType.asteroidSmall; - if (i == 0) type = GameObjectType.asteroidPowerUp; + GameObject obj; + if (i == 0) + obj = new AsteroidPowerUp(this); + else if (randomDouble() < distribution) + obj = new AsteroidBig(this); + else + obj = new AsteroidSmall(this); + Point pos = new Point(randomSignedDouble() * 160.0, yPos + _chunkSpacing * randomDouble()); - addGameObject(type, pos); + addGameObject(obj, pos); } } @@ -31,31 +28,17 @@ class GameObjectFactory { for (int i = 0; i < numEnemies; i++) { double spacing = math.max(_chunkSpacing / (numEnemies + 1.0), 80.0); double y = yPos + _chunkSpacing / 2.0 - (numEnemies - 1) * spacing / 2.0 + i * spacing; - addGameObject(GameObjectType.enemyScout, new Point(0.0, y)); + addGameObject(new EnemyScout(this), new Point(0.0, y)); } } void addEnemyDestroyerSwarm(int numEnemies, double yPos) { for (int i = 0; i < numEnemies; i++) { - addGameObject(GameObjectType.enemyDestroyer, new Point(randomSignedDouble() * 120.0 , yPos + _chunkSpacing * randomDouble())); + addGameObject(new EnemyDestroyer(this), new Point(randomSignedDouble() * 120.0 , yPos + _chunkSpacing * randomDouble())); } } - void addGameObject(GameObjectType type, Point pos) { - GameObject obj; - if (type == GameObjectType.asteroidBig) - obj = new AsteroidBig(this); - else if (type == GameObjectType.asteroidSmall) - obj = new AsteroidSmall(this); - else if (type == GameObjectType.asteroidPowerUp) - obj = new AsteroidPowerUp(this); - else if (type == GameObjectType.enemyScout) - obj = new EnemyScout(this); - else if (type == GameObjectType.enemyDestroyer) - obj = new EnemyDestroyer(this); - else if (type == GameObjectType.coin) - obj = new Coin(this); - + void addGameObject(GameObject obj, Point pos) { obj.position = pos; obj.setupActions(); @@ -64,10 +47,10 @@ class GameObjectFactory { void addBossFight(int l, double yPos) { EnemyBoss boss = new EnemyBoss(this); - boss.position = new Point(0.0, yPos + _chunkSpacing / 2.0); - boss.setupActions(); + Point pos = new Point(0.0, yPos + _chunkSpacing / 2.0); + + addGameObject(boss, pos); - level.addChild(boss); playerState.boss = boss; } } diff --git a/examples/game/lib/game_objects.dart b/examples/game/lib/game_objects.dart index 2cb1ccf8e..80e15d962 100644 --- a/examples/game/lib/game_objects.dart +++ b/examples/game/lib/game_objects.dart @@ -44,9 +44,7 @@ abstract class GameObject extends Node { Collectable powerUp = createPowerUp(); if (powerUp != null) { - powerUp.position = position; - powerUp.setupActions(); - parent.addChild(powerUp); + f.addGameObject(powerUp, position); } removeFromParent();