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(); }
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); }
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; }
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; } }
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(); } }