Castle.Monster.PreviewMove C# (CSharp) Méthode

PreviewMove() public méthode

public PreviewMove ( Point playerLocation ) : Point
playerLocation Point
Résultat Point
        public virtual Point PreviewMove(Point playerLocation)
        {
            Point preview = new Point(position.X, position.Y);

            int xDistance = Math.Abs(playerLocation.X - preview.X);
            int yDistance = Math.Abs(playerLocation.Y - preview.Y);

            if(xDistance >= yDistance)
            {
                if (playerLocation.X > preview.X)
                {
                    preview.X += 1;
                }
                else if (playerLocation.X < preview.X)
                {
                    preview.X -= 1;
                }
            }
            else
            {
                if (playerLocation.Y > preview.Y)
                {
                    preview.Y += 1;
                }
                else if (playerLocation.Y < preview.Y)
                {
                    preview.Y -= 1;
                }
            }

            return preview;
        }

Usage Example

        private void MoveMonster(Monster monster)
        {
            Point previewMove = monster.PreviewMove(player.Position);

            if (previewMove.X == player.Position.X && previewMove.Y == player.Position.Y)
            {
                UserMessage message   = new UserMessage();
                bool        hasHelmet = false;
                CastleItem  helmet    = ItemManager.FindItemInInventory("helmet");
                if (helmet != null)
                {
                    hasHelmet = true;
                }

                if (player.Hit(hasHelmet))
                {
                    message.AddLine(String.Format("The {0}", monster.Name));
                    message.AddLine("killed you!");
                    PrintUserMessage(message);
                    GameResult = GameResult.Failed;
                    EndGame();
                    gameOver = true;
                }
                else
                {
                    message.AddLine(String.Format("The {0}", monster.Name));
                    message.AddLine("struck you!");
                    if (hasHelmet)
                    {
                        message.AddLine("The Helmet");
                        message.AddLine("helped.");
                    }

                    PrintUserMessage(message);
                }
            }
            else
            {
                switch (CollisionDetection(previewMove))
                {
                case ObjectType.None:
                    monster.Move(previewMove);
                    break;
                }
            }
        }
All Usage Examples Of Castle.Monster::PreviewMove