/// <summary> /// 初始化通讯会话管理器 /// </summary> private static void InitializeSessionManager() { // 创建通讯会话管理器 var configuration = Repository.Repository.LoadConfiguation().information; var manager = new MQTTSessionManager(configuration.mqttServerIp, configuration.mqttServerPort, configuration.clientId); // 注册会话 Tls.Register("Session"); // 注册收到数据事件回调函数 manager.OnReceiveEvent += (session, data) => { // 设置会话 Tls.Set("Session", session); // 调用方法 try { var result = DynamicInvoker.JsonRpcInvoke(typeof(Controller), null, data); if (result != null) { session.Send(result, 0, -1); } } catch (Exception e) { Tracker.LogE(e); } }; }
internal static void SetupLauncher(string[] Args) { if (Texts.Count == 0) { Console.WriteLine("Write the Executable Name:"); Exe = Console.ReadLine(); Console.WriteLine("Write delay to find for new text in ms:"); Delay = int.Parse(Console.ReadLine()); Console.WriteLine("You Want Invalidate the game window when translate something? Y/N"); Console.WriteLine("(Can increase the CPU/GPU usage if the window change the text constantly.)"); Invalidate = Console.ReadKey().KeyChar.ToString().ToUpper()[0] == 'Y'; Console.WriteLine(); if (MTL) { Console.WriteLine("Translate From:"); SourceLang = Console.ReadLine(); Console.WriteLine("Translate To:"); TargetLang = Console.ReadLine(); Console.WriteLine("Executable Path:"); } } if (!MTL) { Console.WriteLine("Initializing Executable..."); ProgProc = new Process() { StartInfo = new ProcessStartInfo() { Arguments = ParseArguments(Args), FileName = AppDomain.CurrentDomain.BaseDirectory + Exe, WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory } }; Console.WriteLine("Initializing Hook..."); HookEnabler(); Console.WriteLine("Dumping Text..."); StreamWriter Writer = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "ProgramText.txt", false, Encoding.Unicode); for (int i = 0; i < Texts.Count(); i++) { string line = Tls.Count != 0 && i < Tls.Count ? Tls[i] : Texts[i]; Encode(ref line, true); Writer.WriteLine(line); } Writer.Flush(); Writer.Close(); Console.WriteLine("Dumped, Translate all lines and press a key to save the translation."); Console.WriteLine("If have any string who you don't want translate, set it to :IGNORE:"); Console.ReadKey(); Console.WriteLine("Reading Translation..."); Tls = new List <string>(); TextReader Reader = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "ProgramText.txt", Encoding.Unicode); int ID = -1; while (Reader.Peek() != -1) { string Line = Reader.ReadLine(); Encode(ref Line, false); if (++ID >= Texts.Count) { continue; } if (string.IsNullOrWhiteSpace(Line) || Line.Trim().ToLower() == ":ignore:") { Texts.RemoveAt(ID--); continue; } Tls.Add(Line); } Reader.Close(); } Console.WriteLine("Generating Configuration..."); Config LauncherData = new Config() { Signature = "TLLD", Executable = Exe, MTL = (byte)(MTL ? 1 : 0), SourceLang = SourceLang, TargetLang = TargetLang, Strings = Texts.ToArray(), TLs = Tls.ToArray(), Delay = Delay, Invalidate = (byte)(Invalidate ? 1 : 0) }; Console.WriteLine("Saving Configuration..."); StructWriter Output = new StructWriter(Setup); Output.WriteStruct(ref LauncherData); Output.Close(); Console.WriteLine("Settings Saved, Press a Key to Exit."); Console.ReadKey(); }