コード例 #1
0
        private void Initialize(Mobile m, int NewX, int NewY, int NewZ, int NewDir)
        {
            this.m_Mobile = m;
            this.m_NewX   = NewX;
            this.m_NewY   = NewY;
            this.m_NewZ   = NewZ;
            this.m_NewDir = NewDir;
            int x = 0;
            int y = 0;
            int z = 0;

            if (m.Walking.Count == 0)
            {
                x = m.X;
                y = m.Y;
                z = m.Z;
            }
            else
            {
                IEnumerator   enumerator = m.Walking.GetEnumerator();
                WalkAnimation current    = null;
                while (enumerator.MoveNext())
                {
                    current = (WalkAnimation)enumerator.Current;
                }
                if (current != null)
                {
                    x = current.m_NewX;
                    y = current.m_NewY;
                    z = current.m_NewZ;
                }
            }
            if (!m.Player)
            {
                Engine.EquipSort(m, NewDir & 0x87);
                m.Direction = (byte)NewDir;
            }
            this.m_Advance = false;
            this.m_Sync    = null;
            if (((x != NewX) || (y != NewY)) || (z != NewZ))
            {
                int num4 = NewX - x;
                int num5 = NewY - y;
                int num6 = NewZ - z;
                int num7 = (num4 - num5) * 0x16;
                int num8 = ((num4 + num5) * 0x16) - (num6 * 4);
                this.m_X = num7;
                this.m_Y = num8;
                int       idx     = (NewDir >> 7) & 1;
                ArrayList equip   = m.Equip;
                bool      mounted = (equip.Count > 0) && (((EquipEntry)equip[0]).m_Layer == Layer.Mount);
                if ((m.Player && Engine.GMPrivs) && ((Engine.m_WalkSpeed != 0.4f) || (Engine.m_RunSpeed != 0.2f)))
                {
                    this.m_Duration = (idx == 0) ? Engine.m_WalkSpeed : Engine.m_RunSpeed;
                }
                else
                {
                    this.m_Duration = GetDuration(mounted, idx);
                }
                if (m.Player && (m.Body == 0x3db))
                {
                    this.m_Duration *= 0.25f;
                }
                this.m_Frames = GetFrames(mounted, idx);
            }
            else
            {
                this.m_X        = 0;
                this.m_Y        = 0;
                this.m_Duration = 0.1f;
                this.m_Frames   = 0f;
            }
        }