protected override void Initialize() { // Create a new SpriteBatch, which can be used to draw textures. Type[] types = new Type[] {typeof(Enemy),typeof(Expires),typeof(Health),typeof(SpatialForm),typeof(Transform),typeof(Velocity),typeof(Weapon)}; pool = new GamePool(100,types); pool.Initialize(); spriteBatch = new SpriteBatch(GraphicsDevice); world = new EntityWorld(); world.GetEntityManager().RemovedComponentEvent += new RemovedComponentHandler(RemovedComponent); world.SetPool(pool); font = Content.Load<SpriteFont>("Arial"); SystemManager systemManager = world.GetSystemManager(); renderSystem = systemManager.SetSystem(new RenderSystem(GraphicsDevice,spriteBatch,Content),ExecutionType.Draw); hudRenderSystem = systemManager.SetSystem(new HudRenderSystem(spriteBatch, font), ExecutionType.Draw); controlSystem = systemManager.SetSystem(new MovementSystem(spriteBatch), ExecutionType.Update,1); movementSystem = systemManager.SetSystem(new PlayerShipControlSystem(spriteBatch),ExecutionType.Update); enemyShooterSystem = systemManager.SetSystem(new EnemyShipMovementSystem(spriteBatch), ExecutionType.Update,1); enemyShipMovementSystem = systemManager.SetSystem(new EnemyShooterSystem(), ExecutionType.Update); collisionSystem = systemManager.SetSystem(new CollisionSystem(), ExecutionType.Update,1); healthBarRenderSystem = systemManager.SetSystem(new HealthBarRenderSystem(spriteBatch, font), ExecutionType.Draw); enemySpawnSystem = systemManager.SetSystem(new EnemySpawnSystem(500, spriteBatch), ExecutionType.Update); expirationSystem = systemManager.SetSystem(new ExpirationSystem(), ExecutionType.Update); systemManager.InitializeAll(); InitPlayerShip(); InitEnemyShips(); base.Initialize(); }
public static long GetBitFor(EntitySystem es){ long bit; bool hasBit = systemBits.TryGetValue(es, out bit); if(!hasBit){ bit = 1L << POS; POS++; systemBits.Add(es, bit); } return bit; }
public static BigInteger GetBitFor(EntitySystem es) { BigInteger bit; bool hasBit = systemBits.TryGetValue(es, out bit); if(!hasBit){ #if WINDOWS_PHONE || XBOX bit = 1 << POS; #else bit = 1L << POS; #endif POS++; systemBits.Add(es, bit); } return bit; }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { // Create a new SpriteBatch, which can be used to draw textures. Type[] types = new Type[] {typeof(Enemy),typeof(Expires),typeof(Health),typeof(SpatialForm),typeof(Transform),typeof(Velocity),typeof(Weapon)}; spriteBatch = new SpriteBatch(GraphicsDevice); world = new EntityWorld(); font = Content.Load<SpriteFont>("myFont"); var systemManager = world.SystemManager; world.SetEntityTemplate("ShipExplosion", new ShipExplosionTemplate()); world.SetEntityTemplate("BulletExplosion", new BulletExplosionTemplate()); world.SetEntityTemplate("Missile", new MissileTemplate()); world.SetEntityTemplate("EnemyShip", new EnemyShipTemplate()); renderSystem = systemManager.SetSystem(new RenderSystem(GraphicsDevice,spriteBatch,Content),ExecutionType.Draw); hudRenderSystem = systemManager.SetSystem(new HudRenderSystem(spriteBatch, font), ExecutionType.Draw); controlSystem = systemManager.SetSystem(new MovementSystem(spriteBatch), ExecutionType.Update,1); movementSystem = systemManager.SetSystem(new PlayerShipControlSystem(spriteBatch),ExecutionType.Update); enemyShooterSystem = systemManager.SetSystem(new EnemyShipMovementSystem(spriteBatch), ExecutionType.Update,1); enemyShipMovementSystem = systemManager.SetSystem(new EnemyShooterSystem(), ExecutionType.Update); collisionSystem = systemManager.SetSystem(new CollisionSystem(), ExecutionType.Update,1); healthBarRenderSystem = systemManager.SetSystem(new HealthBarRenderSystem(spriteBatch, font), ExecutionType.Draw); enemySpawnSystem = systemManager.SetSystem(new EnemySpawnSystem(500, spriteBatch), ExecutionType.Update); expirationSystem = systemManager.SetSystem(new ExpirationSystem(), ExecutionType.Update); systemManager.InitializeAll(); InitPlayerShip(); InitEnemyShips(); base.Initialize(); }