using System; using StarWarrior.Components; using Artemis; using Microsoft.Xna.Framework; namespace StarWarrior { public class EntityFactory { public static Entity CreateMissile(EntityWorld world) { Entity missile = world.CreateEntity(); GamePool pool = (GamePool)world.GetPool(); missile.SetGroup("BULLETS"); missile.AddComponent(pool.TakeComponent()); missile.AddComponent(pool.TakeComponent()); missile.AddComponent(pool.TakeComponent()); missile.AddComponent(pool.TakeComponent()); missile.GetComponent().SetSpatialFormFile("Missile"); missile.GetComponent().SetLifeTime(2000); return missile; } public static Entity CreateEnemyShip(EntityWorld world) { Entity e = world.CreateEntity(); e.SetGroup("SHIPS"); GamePool pool = (GamePool)world.GetPool(); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.GetComponent().SetSpatialFormFile("EnemyShip"); e.GetComponent().SetHealth(10); return e; } public static Entity CreateBulletExplosion(EntityWorld world, float x, float y) { Entity e = world.CreateEntity(); GamePool pool = (GamePool)world.GetPool(); e.SetGroup("EFFECTS"); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.GetComponent().SetSpatialFormFile("BulletExplosion"); e.GetComponent().SetLifeTime(1000); e.GetComponent().SetCoords(new Vector3(x, y, 0)); return e; } public static Entity CreateShipExplosion(EntityWorld world, float x, float y) { Entity e = world.CreateEntity(); GamePool pool = (GamePool)world.GetPool(); e.SetGroup("EFFECTS"); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.AddComponent(pool.TakeComponent()); e.GetComponent().SetSpatialFormFile("ShipExplosion"); e.GetComponent().SetCoords(new Vector3(x, y, 0)); e.GetComponent().SetLifeTime(1000); return e; } } }