Exemplo n.º 1
0
        private static void DoLogin(PlayerData player)
        {
            PlayerData.ExternalZ = false;

            ClientCommunication.ForceSendToClient(new LoginConfirm(player));
            ClientCommunication.ForceSendToClient(new MapChange(player.Map));
            ClientCommunication.ForceSendToClient(new MapPatches(player.MapPatches));
            ClientCommunication.ForceSendToClient(new SeasonChange(player.Season, true));
            ClientCommunication.ForceSendToClient(new SupportedFeatures(player.Features));
            ClientCommunication.ForceSendToClient(new MobileUpdate(player));
            ClientCommunication.ForceSendToClient(new MobileUpdate(player));

            ClientCommunication.ForceSendToClient(new GlobalLightLevel(player.GlobalLightLevel));
            ClientCommunication.ForceSendToClient(new PersonalLightLevel(player));

            ClientCommunication.ForceSendToClient(new MobileUpdate(player));
            ClientCommunication.ForceSendToClient(new MobileIncoming(player));
            ClientCommunication.ForceSendToClient(new MobileAttributes(player));
            ClientCommunication.ForceSendToClient(new SetWarMode(player.Warmode));

            foreach (Item i in World.Items.Values)
            {
                if (i.Container == null)
                {
                    ClientCommunication.ForceSendToClient(new WorldItem(i));
                    if (i.HouseRevision != 0)
                    {
                        ClientCommunication.ForceSendToClient(new DesignStateGeneral(i));
                    }
                }
            }

            foreach (Mobile m in World.Mobiles.Values)
            {
                ClientCommunication.ForceSendToClient(new MobileIncoming(m));
            }

            ClientCommunication.ForceSendToClient(new SupportedFeatures(player.Features));

            ClientCommunication.ForceSendToClient(new MobileUpdate(player));
            ClientCommunication.ForceSendToClient(new MobileIncoming(player));
            ClientCommunication.ForceSendToClient(new MobileAttributes(player));
            ClientCommunication.ForceSendToClient(new SetWarMode(player.Warmode));
            ClientCommunication.ForceSendToClient(new MobileIncoming(player));

            ClientCommunication.ForceSendToClient(new LoginComplete());
            ClientCommunication.ForceSendToClient(new CurrentTime());

            ClientCommunication.ForceSendToClient(new SeasonChange(player.Season, true));
            ClientCommunication.ForceSendToClient(new MapChange(player.Map));
            ClientCommunication.ForceSendToClient(new MobileUpdate(player));
            ClientCommunication.ForceSendToClient(new MobileIncoming(player));

            PacketHandlers.PlayCharTime = DateTime.UtcNow;

            ClientCommunication.BeginCalibratePosition();
        }
Exemplo n.º 2
0
        public static void OnScroll()
        {
            bool     wasRunning = m_PlayTimer.Running;
            TimeSpan delay      = TimeSpan.Zero;
            TimeSpan target     = TimeSpan.FromSeconds(tbPos.Value);

            try
            {
                if (!Playing)
                {
                    tbPos.Value = tbPos.Minimum;
                    return;
                }
                else if (target <= m_Elapsed)
                {
                    tbPos.Value = (int)m_Elapsed.TotalSeconds;
                    return;
                }
            }
            catch
            {
                return;
            }

            if (wasRunning)
            {
                m_PlayTimer.Stop();
            }

            PlayerData.ExternalZ = false;

            int sleepCount = 0;

            while (m_Elapsed < target && !m_GZIn.EndOfFile)
            {
                // peek ahead 1 byte... and no, BinaryReader doesnt have a peek function.
                byte peek = m_GZIn.Compressed.ReadByte();
                if (peek == 0xFF)
                {
                    break;
                }
                m_GZIn.Seek(-1, SeekOrigin.Current);

                ClientCommunication.ProcessPlaybackData(m_GZIn.Compressed);

                if (!m_GZIn.EndOfFile)
                {
                    delay      = TimeSpan.FromMilliseconds(m_GZIn.Compressed.ReadInt32());
                    m_Elapsed += delay;

                    if (((++sleepCount) % 5) == 0)
                    {
                        tbPos.Value = (int)m_Elapsed.TotalSeconds;
                        Application.DoEvents();
                        System.Threading.Thread.Sleep(TimeSpan.FromMilliseconds(1));
                    }
                }
            }

            try
            {
                tbPos.Value = (int)m_Elapsed.TotalSeconds;
            }
            catch
            {
            }

            UpdateTimeText();

            ClientCommunication.ForceSendToClient(new MobileUpdate(World.Player));
            ClientCommunication.ForceSendToClient(new MobileIncoming(World.Player));

            if (wasRunning)               // paused?
            {
                if (!m_GZIn.EndOfFile)
                {
                    m_PlayTimer = Timer.DelayedCallback(delay, m_SendNext);
                    m_PlayTimer.Start();
                }
                else
                {
                    Stop();
                }
            }

            ClientCommunication.BeginCalibratePosition();
        }