Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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;
        }