/// <summary> /// Creates a new enemy and adds it to the game. (No other components created) /// </summary> /// <param name="type">The type of enemy to create.</param> public uint CreateEnemy(EnemyFactoryType type, Position position) { uint eid = Entity.NextEntity(); Enemy enemy = new Enemy(); Sprite sprite; Collideable collideable; switch (type) { case EnemyFactoryType.StationaryTarget: enemy.HurtOnTouch = false; enemy.Health = 1; sprite = new Sprite() { EntityID = eid, SpriteSheet = _game.Content.Load <Texture2D>("Spritesheets/target2"), SpriteBounds = new Rectangle(0, 0, 64, 64), }; break; case EnemyFactoryType.MovingTarget: enemy.HurtOnTouch = false; enemy.Health = 1; sprite = new Sprite() { EntityID = eid, SpriteSheet = _game.Content.Load <Texture2D>("Spritesheets/target2"), SpriteBounds = new Rectangle(0, 0, 64, 64), }; Movement move = new Movement() { EntityID = eid, }; _game.MovementComponent.Add(eid, move); EnemyAI ai = new EnemyAI() { EntityID = eid, }; _game.EnemyAIComponent.Add(eid, ai); break; default: throw new Exception("Unknown EnemyType"); } EnemyType enemyType; switch (type) { case EnemyFactoryType.MovingTarget: case EnemyFactoryType.StationaryTarget: enemyType = EnemyType.Target; break; default: throw new NotImplementedException(); } enemy.Type = enemyType; enemy.EntityID = eid; position.EntityID = eid; collideable = new Collideable() { EntityID = eid, RoomID = position.RoomID, Bounds = new CircleBounds(position.Center, position.Radius) }; _game.CollisionComponent[eid] = collideable; _game.EnemyComponent.Add(eid, enemy); //_game.MovementComponent.Add(eid, movement); _game.PositionComponent.Add(eid, position); _game.SpriteComponent.Add(eid, sprite); return(eid); }
/// <summary> /// Creates a new enemy and adds it to the game. (No other components created) /// </summary> /// <param name="type">The type of enemy to create.</param> public uint CreateEnemy(EnemyFactoryType type, Position position) { uint eid = Entity.NextEntity(); Enemy enemy = new Enemy(); Sprite sprite; Collideable collideable; switch (type) { case EnemyFactoryType.StationaryTarget: enemy.HurtOnTouch = false; enemy.Health = 1; sprite = new Sprite() { EntityID = eid, SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/target2"), SpriteBounds = new Rectangle(0, 0, 64, 64), }; break; case EnemyFactoryType.MovingTarget: enemy.HurtOnTouch = false; enemy.Health = 1; sprite = new Sprite() { EntityID = eid, SpriteSheet = _game.Content.Load<Texture2D>("Spritesheets/target2"), SpriteBounds = new Rectangle(0, 0, 64, 64), }; Movement move = new Movement() { EntityID = eid, }; _game.MovementComponent.Add(eid, move); EnemyAI ai = new EnemyAI() { EntityID = eid, }; _game.EnemyAIComponent.Add(eid, ai); break; default: throw new Exception("Unknown EnemyType"); } EnemyType enemyType; switch (type) { case EnemyFactoryType.MovingTarget: case EnemyFactoryType.StationaryTarget: enemyType = EnemyType.Target; break; default: throw new NotImplementedException(); } enemy.Type = enemyType; enemy.EntityID = eid; position.EntityID = eid; collideable = new Collideable() { EntityID = eid, RoomID = position.RoomID, Bounds = new CircleBounds(position.Center, position.Radius) }; _game.CollisionComponent[eid] = collideable; _game.EnemyComponent.Add(eid, enemy); //_game.MovementComponent.Add(eid, movement); _game.PositionComponent.Add(eid, position); _game.SpriteComponent.Add(eid, sprite); return eid; }