Example #1
0
 public EnemyHit(string hitID, Rectangle casterRect, Vector2 direction, GameplayScreen gpScreen, int dmgModifier) : base(hitID, casterRect, direction, gpScreen, dmgModifier)
 {
 }
Example #2
0
 public virtual void Update(GameTime gameTime, InputManager inputManager, GameplayScreen gpScreen, Map map, Layer layer)
 {
 }
Example #3
0
        private void DecideDirection(GameTime gameTime, GameplayScreen gpScreen, Map map)
        {
            int dist = (int)(Position - map.Player.Position).Length();

            if (decisionCounter == 0)
            {
                if (dist > VisionRange)
                {
                    randVal = GlobalRandom.Instance.Next(0, 9);
                }
                else
                {
                    if (dist <= range)
                    {
                        Attack(gpScreen, enemyID + "Hit");
                    }
                    if (map.Player.Position.X < Position.X && map.Player.Position.Y < Position.Y)
                    {
                        if (Math.Abs(map.Player.Position.Y - Position.Y) > moveAnimation.FrameHeight)
                        {
                            randVal = 5;
                        }
                        else
                        {
                            randVal = 1;
                        }
                    }
                    else if (map.Player.Position.X > Position.X && map.Player.Position.Y < Position.Y)
                    {
                        if (Math.Abs(map.Player.Position.Y - Position.Y) > moveAnimation.FrameHeight)
                        {
                            randVal = 4;
                        }
                        else
                        {
                            randVal = 0;
                        }
                    }
                    else if (map.Player.Position.Y > Position.Y)
                    {
                        if (Math.Abs(map.Player.Position.X - Position.X) > moveAnimation.FrameWidth)
                        {
                            randVal = 7;
                        }
                        else
                        {
                            randVal = 3;
                        }
                    }
                    else if (map.Player.Position.Y < Position.Y)
                    {
                        if (Math.Abs(map.Player.Position.X - Position.X) > moveAnimation.FrameWidth)
                        {
                            randVal = 6;
                        }
                        else
                        {
                            randVal = 2;
                        }
                    }

                    decisionCounter += 5;
                }
            }
            decisionCounter += (int)gameTime.ElapsedGameTime.TotalMilliseconds;
            if (decisionCounter > decisionCounterLimit)
            {
                decisionCounter = 0;
            }
        }
Example #4
0
        public override void Update(GameTime gameTime, InputManager inputManager, GameplayScreen gpScreen, Map map, Layer layer)
        {
            if (Health <= 0)
            {
                Dead = true;
            }
            if (inputManager.KeyPressed(Keys.Space))
            {
                Attack(gpScreen, "PlayerHit");
            }

            if (inputManager.KeyPressed(Keys.V))
            {
                Attack(gpScreen, "PlayerMeleeHit");
            }
            if (inputManager.KeyPressed(Keys.Y))
            {
                TakeDamage(40);
            }



            moveAnimation.IsActive = true;
            bool    keyDown      = false;
            Vector2 testPosition = Position;

            if (inputManager.KeyDown(Keys.Right))
            {
                moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 2);
                testPosition.X            += moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                keyDown = true;
            }
            if (inputManager.KeyDown(Keys.Left))
            {
                moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 1);
                testPosition.X            -= moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                keyDown = true;
            }
            if (inputManager.KeyDown(Keys.Up))
            {
                moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 3);
                testPosition.Y            -= moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                keyDown = true;
            }
            if (inputManager.KeyDown(Keys.Down))
            {
                moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 0);
                testPosition.Y            += moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                keyDown = true;
            }
            if (!keyDown)
            {
                moveAnimation.IsActive = false;
            }
            List <Collision.Type> collisionCheck = new List <Collision.Type>();

            foreach (List <Tile> tilesRow in layer.Tiles)
            {
                foreach (Tile tile in tilesRow)
                {
                    if (tile.State1 == Tile.State.Solid)
                    {
                        if (Collision.CheckCollision(
                                new Rectangle((int)testPosition.X, (int)testPosition.Y, moveAnimation.FrameWidth, moveAnimation.FrameHeight),
                                new Rectangle((int)tile.Position.X, (int)tile.Position.Y, tile.TileImage.Width, tile.TileImage.Height)))
                        {
                            if (Position.X > tile.Position.X - moveAnimation.FrameWidth && Position.X < tile.Position.X + tile.TileImage.Width)
                            {
                                testPosition.Y = Position.Y;
                            }
                            if (Position.Y > tile.Position.Y - moveAnimation.FrameHeight && Position.Y < tile.Position.Y + tile.TileImage.Height)
                            {
                                testPosition.X = Position.X;
                            }
                        }

                        collisionCheck.Clear();
                    }
                }
            }


            if (testPosition.X < 0)
            {
                testPosition.X = 0;
            }
            if (testPosition.Y < 0)
            {
                testPosition.Y = 0;
            }
            if (testPosition.X > layer.Bounds.X - moveAnimation.FrameWidth)
            {
                testPosition.X = layer.Bounds.X - moveAnimation.FrameWidth;
            }
            if (testPosition.Y > layer.Bounds.Y - moveAnimation.FrameHeight)
            {
                testPosition.Y = layer.Bounds.Y - moveAnimation.FrameHeight;
            }
            Position = testPosition;

            moveAnimation.Position = Position;
            ssAnimation.Update(gameTime, ref moveAnimation);

            Camera.Instance.SetFocalPoint(Position);
        }
Example #5
0
        public override void Update(GameTime gameTime, InputManager inputManager, GameplayScreen gpScreen, Map map, Layer layer)
        {
            if (Health <= 0)
            {
                Dead = true;
                DropItem(gpScreen);
            }
            if (InCameraRange())
            {
                moveAnimation.IsActive = true;
                bool keyDown = false;
                DecideDirection(gameTime, gpScreen, map);
                Vector2 testPosition = Position;

                switch (randVal)
                {
                case 0:
                    moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 2);
                    testPosition.X            += moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    keyDown = true;
                    break;

                case 1:
                    moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 1);
                    testPosition.X            -= moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    keyDown = true;
                    break;

                case 2:
                    moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 3);
                    testPosition.Y            -= moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    keyDown = true;
                    break;

                case 3:
                    moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 0);
                    testPosition.Y            += moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    keyDown = true;
                    break;

                case 4:
                    moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 3);
                    testPosition.X            += moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    testPosition.Y            -= moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    keyDown = true;
                    break;

                case 5:
                    moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 3);
                    testPosition.X            -= moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    testPosition.Y            -= moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    keyDown = true;
                    break;

                case 6:
                    moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 0);
                    testPosition.X            += moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    testPosition.Y            += moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    keyDown = true;
                    break;

                case 7:
                    moveAnimation.CurrentFrame = new Vector2(moveAnimation.CurrentFrame.X, 0);
                    testPosition.X            -= moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    testPosition.Y            += moveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
                    keyDown = true;
                    break;
                }
                if (!keyDown)
                {
                    moveAnimation.IsActive = false;
                }
                foreach (List <Tile> tilesRow in layer.Tiles)
                {
                    foreach (Tile tile in tilesRow)
                    {
                        if (tile.State1 == Tile.State.Solid)
                        {
                            if (Collision.CheckCollision(
                                    new Rectangle((int)testPosition.X, (int)testPosition.Y, moveAnimation.FrameWidth, moveAnimation.FrameHeight),
                                    new Rectangle((int)tile.Position.X, (int)tile.Position.Y, tile.TileImage.Width, tile.TileImage.Height)))
                            {
                                if (Position.X > tile.Position.X - moveAnimation.FrameWidth && Position.X < tile.Position.X + tile.TileImage.Width)
                                {
                                    testPosition.Y = Position.Y;
                                }
                                if (Position.Y > tile.Position.Y - moveAnimation.FrameHeight && Position.Y < tile.Position.Y + tile.TileImage.Height)
                                {
                                    testPosition.X = Position.X;
                                }
                            }
                        }
                    }
                }

                if (testPosition.X < 0)
                {
                    testPosition.X = 0;
                }
                if (testPosition.Y < 0)
                {
                    testPosition.Y = 0;
                }
                if (testPosition.X > layer.Bounds.X - moveAnimation.FrameWidth)
                {
                    testPosition.X = layer.Bounds.X - moveAnimation.FrameWidth;
                }
                if (testPosition.Y > layer.Bounds.Y - moveAnimation.FrameHeight)
                {
                    testPosition.Y = layer.Bounds.Y - moveAnimation.FrameHeight;
                }

                Position = testPosition;

                moveAnimation.Position = Position;
                ssAnimation.Update(gameTime, ref moveAnimation);
            }
            else
            {
                moveAnimation.IsActive = false;
            }
        }