private void AutoMove(Settings settings, int horizontal, int vertical, Stopwatch t, MyItem item)
        {
            try
            {
                if (item.IsDestroyed)
                {
                    item.IsMoving = false;
                    return;
                }

                if (settings.AutoMove && this.Game.WorldEntered)
                {
                    if (t.ElapsedMilliseconds < settings.AutoMoveInterval)
                    {
                        if (false == item.MoveRelative(new Vector {
                            X = horizontal, Y = vertical
                        }, Vector.Zero))
                        {
                            Vector newPos = this.GetRandomPosition();
                            item.MoveAbsolute(newPos, Vector.Zero);
                        }

                        this.fiber.Schedule(() => this.AutoMove(settings, horizontal, vertical, t, item), settings.SendInterval);
                    }
                    else
                    {
                        item.IsMoving = false;
                        this.fiber.Schedule(() => this.AutoMoveStart(item), settings.SendInterval);
                    }
                }
                else
                {
                    item.IsMoving = false;
                }
            }
            catch (Exception e)
            {
                log.Error(e);
            }
        }
        /// <summary>
        /// The auto move.
        /// </summary>
        /// <param name="settings">
        /// The settings.
        /// </param>
        /// <param name="horizontal">
        /// The horizontal.
        /// </param>
        /// <param name="vertical">
        /// The vertical.
        /// </param>
        /// <param name="t">
        /// The stop watch.
        /// </param>
        /// <param name="item">
        /// The mmo item.
        /// </param>
        private void AutoMove(Settings settings, int horizontal, int vertical, Stopwatch t, MyItem item)
        {
            try
            {
                if (item.IsDestroyed)
                {
                    item.IsMoving = false;
                    return;
                }

                if (settings.AutoMove && this.Game.State == GameState.WorldEntered)
                {
                    if (t.ElapsedMilliseconds < settings.AutoMoveInterval)
                    {
                        if (false == item.MoveRelative(new float[] { horizontal, vertical }, null))
                        {
                            float[] newPos = this.GetRandomPosition();
                            item.MoveAbsolute(newPos, null);
                        }

                        this.fiber.Schedule(() => this.AutoMove(settings, horizontal, vertical, t, item), settings.SendInterval);
                    }
                    else
                    {
                        item.IsMoving = false;
                        this.fiber.Schedule(() => this.AutoMoveStart(item), settings.SendInterval);
                    }
                }
                else
                {
                    item.IsMoving = false;
                }
            }
            catch (Exception e)
            {
                log.Error(e);
            }
        }