Example #1
0
        private static void Initialize()
        {
            StartupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            if (StartupPath == null)
            {
                throw new InvalidOperationException();
            }

            AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;

            PacketWaitEntries = new PacketWaitEntries();

            _incomingQueue = new ThreadQueue <Packet>(ProcessIncomingQueue);
            _outgoingQueue = new ThreadQueue <Packet>(ProcessOutgoingQueue);

            IncomingPacketHandlers.Initialize();
            OutgoingPacketHandlers.Initialize();

            IncomingPacketFilters.Initialize();
            OutgoingPacketFilters.Initialize();

            CommandsManager.Initialize();

            AssistantOptions.Load();
        }
Example #2
0
        private static void ProcessOutgoingQueue(Packet packet)
        {
            PacketSentEvent?.Invoke(packet.GetPacket(), packet.GetLength());

            PacketHandler handler = OutgoingPacketHandlers.GetHandler(packet.GetPacketID());

            int length = _getPacketLength(packet.GetPacketID());

            handler?.OnReceive?.Invoke(new PacketReader(packet.GetPacket(), packet.GetLength(), length > 0));

            PacketWaitEntries.CheckWait(packet.GetPacket(), PacketDirection.Outgoing);
        }
Example #3
0
        private static void Initialize()
        {
            StartupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            if (StartupPath == null)
            {
                throw new InvalidOperationException();
            }

            AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;

            PacketWaitEntries = new PacketWaitEntries();

            _incomingQueue = new ThreadQueue <Packet>(ProcessIncomingQueue);
            _outgoingQueue = new ThreadQueue <Packet>(ProcessOutgoingQueue);

            IncomingPacketHandlers.Initialize();
            OutgoingPacketHandlers.Initialize();

            OutgoingPacketFilters.Initialize();

            CommandsManager.Initialize();

            string langOverridePath = Path.Combine(StartupPath, "Data", "languageOverride.json");

            if (!File.Exists(langOverridePath))
            {
                return;
            }

            string fileText = File.ReadAllText(langOverridePath);

            JObject jsonObject = JObject.Parse(fileText);

            if (jsonObject?["Language"] == null)
            {
                return;
            }

            Language lang = (Language)jsonObject["Language"]?.ToObject <Language>();

            if (lang != Language.Default)
            {
                Options.SetLanguage(lang);
            }

            Options.LanguageOverride = lang;
        }
Example #4
0
        public static void SendPacketToServer(byte[] packet, int length)
        {
            lock ( _serverSendLock )
            {
                while (DateTime.Now < _nextPacketSendTime)
                {
                    Thread.Sleep(1);
                }

                InternalPacketSentEvent?.Invoke(packet, length);

                PacketWaitEntries?.CheckWait(packet, PacketDirection.Outgoing, true);

                _sendToServer?.Invoke(ref packet, ref length);

                _nextPacketSendTime = DateTime.Now + PACKET_SEND_DELAY;
            }
        }
Example #5
0
        private static void ProcessOutgoingQueue(Packet packet)
        {
            try
            {
                PacketSentEvent?.Invoke(packet.GetPacket(), packet.GetLength());

                PacketHandler handler = OutgoingPacketHandlers.GetHandler(packet.GetPacketID());

                int length = _getPacketLength(packet.GetPacketID());

                handler?.OnReceive?.Invoke(new PacketReader(packet.GetPacket(), packet.GetLength(), length > 0));

                PacketWaitEntries.CheckWait(packet.GetPacket(), PacketDirection.Outgoing);
            }
            catch (Exception e)
            {
                e.ToExceptionless().SetProperty("Packet", packet.GetPacket())
                .SetProperty("Player", Player.ToString()).SetProperty("WorldItemCount", Items.Count())
                .SetProperty("WorldMobileCount", Mobiles.Count()).Submit();
            }
        }