DarkEmu_GameServer.Systems.Player_Movement C# (CSharp) Метод

Player_Movement() публичный Метод

public Player_Movement ( object e ) : void
e object
Результат void
        void Player_Movement(object e)
        {
            try
            {
                if (Character.Position.RecordedTime <= 0)
                {
                    if(Timer.Movement != null)
                        Timer.Movement.Dispose();

                    Character.Position.Walking = false;

                    if (Character.Action.PickUping)
                        Player_PickUpItem();

                    Character.Position.z = Character.Position.wZ;

                    if (Timer.SpawnWatch.ElapsedMilliseconds >= 10)
                    {
                        ObjectSpawnCheck();
                        Timer.SpawnWatch.Restart();
                    }

                    Movement_CaveTeleport();
                }
                else
                {
                    //If player is in a party send location update packet to each member
                    if (Character.Network.Party != null)
                    {
                        foreach (int member in Character.Network.Party.Members)
                        {
                            if (member != Character.Information.UniqueID)
                            {
                                Systems memberinfo = GetPlayer(member);
                                memberinfo.client.Send(Packet.Party_Data(6, member));
                            }
                        }
                    }

                    if (Character.Action.nAttack)
                    {
                        Character.Position.kX -= (Character.Position.wX * 10) / 100;
                        Character.Position.kY -= (Character.Position.wY * 10) / 100;

                        if (Character.Information.Item.wID != 0)
                        {
                            if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) <= Data.ItemBase[Character.Information.Item.wID].ATTACK_DISTANCE)
                            {
                                Character.Position.RecordedTime = 0;

                                if (Character.Action.nAttack)
                                    ActionAttack();

                                if (Timer.SpawnWatch.ElapsedMilliseconds >= 150)
                                {
                                    this.ObjectSpawnCheck();
                                    Timer.SpawnWatch.Restart();
                                }

                                Timer.Movement.Dispose();
                                Character.Position.z = Character.Position.wZ;
                                Character.Action.PickUping = false;
                                Character.Position.Walking = false;
                                return;
                            }
                        }
                        else
                        {
                            if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) <= 1)
                            {
                                Character.Position.RecordedTime = 0;

                                if (Character.Action.nAttack) ActionAttack();

                                if (Timer.SpawnWatch.ElapsedMilliseconds >= 1000)
                                {
                                    this.ObjectSpawnCheck();
                                    Timer.SpawnWatch.Restart();
                                }

                                Timer.Movement.Dispose();
                                Character.Position.z = Character.Position.wZ;
                                Character.Action.PickUping = false;
                                Character.Position.Walking = false;
                                return;
                            }
                        }
                    }
                    else if (Character.Action.sAttack)
                    {
                        Character.Position.kX -= (Character.Position.wX * 10) / 100;
                        Character.Position.kY -= (Character.Position.wY * 10) / 100;
                        double test = Character.Action.Skill.Distance;
                        if (test == 0)
                            test = Data.ItemBase[Character.Information.Item.wID].ATTACK_DISTANCE;
                        if (Math.Sqrt(Character.Position.kX * Character.Position.kX + Character.Position.kY * Character.Position.kY) < test)
                        {
                            if (Character.Action.sAttack) StartSkill();
                            Character.Position.RecordedTime = 0;
                            Character.aRound = new bool[10];

                            if (Timer.SpawnWatch.ElapsedMilliseconds >= 1000)
                            {
                                this.ObjectSpawnCheck();
                                Timer.SpawnWatch.Restart();
                            }

                            Timer.Movement.Dispose();
                            Character.Position.z = Character.Position.wZ;
                            Character.Action.PickUping = false;
                            Character.Position.Walking = false;
                            return;
                        }
                    }

                    Character.aRound = new bool[10];
                    Character.Position.x += (Character.Position.wX * 10) / 100;
                    Character.Position.y += (Character.Position.wY * 10) / 100;

                    if (Character.Transport.Right)
                    {
                        Character.Transport.Horse.x = Character.Position.x;
                        Character.Transport.Horse.y = Character.Position.y;
                    }
                    Character.Position.RecordedTime -= (Character.Position.Time * 0.1);

                    if (Timer.SpawnWatch.ElapsedMilliseconds >= 10)
                    {
                        this.ObjectSpawnCheck();
                        this.ObjectAttackCheck();
                        Timer.SpawnWatch.Restart();
                    }

                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Move call error: {0}", ex);
                Systems.Debugger.Write(ex);
            }
        }
Systems