Esempio n. 1
0
        /// <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);
                }
            };
        }
Esempio n. 2
0
        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();
        }