示例#1
0
        private static void Main(string[] args)
        {
            bool ENEMY    = false; // isFriend is the bool, so enemy must be false.
            bool JUSTICAR = true;

            MakeCardNames();
            SetupEventHandlers();
            PipeClient.Connect();

            // make a empty board from base seed;
            Board _board = Board.FromSeed("10~5~37~0~0~20~19~2~True~7~True~8~EX1_536*0*0*3*3*0*2*37*2*0*0*2*0*False*False*False*False*False*False*False*False*False*False*False*False*False*0*False~0~HERO_06*0*0*0*0*0*30*37*30*0*0*30*0*False*False*False*False*False*False*False*False*False*False*False*False*False*0*False~HERO_06*0*0*0*0*0*30*37*30*0*0*30*0*False*False*False*False*False*False*False*False*False*False*False*False*False*0*False~CS2_017*0*0*0*2*0*0*37*0*0*0*0*0*False*False*False*False*False*False*False*False*False*False*False*False*False*0*False~AT_132_DRUID*0*0*0*2*0*0*37*0*0*0*0*0*False*False*False*False*False*False*False*False*False*False*False*False*False*0*False~0~0~0~0~0~0~0~0~True=True=False~0~0~0~False~AT_029,EX1_011,CS2_233,EX1_124,EX1_581,EX1_131,EX1_162,GVG_023,GVG_006,GVG_103,EX1_129,EX1_556,EX1_412,EX1_134,AT_100,GVG_091,AT_114,GVG_078,CS2_179,EX1_023,EX1_043,BRM_008,AT_090,AT_028,CS2_155,CS2_222,AT_103~");

            // Board _board = new Board();
            _board.IsOwnTurn = true; // can't sim if it's not your turn


            // define constants, modify as see fit
            _board.EnemyClass       = Card.CClass.HUNTER;
            _board.FriendClass      = Card.CClass.DRUID;
            _board.ManaAvailable    = 10;
            _board.SecretEnemy      = true;
            _board.SecretEnemyCount = 2; // TODO for profiles: if it's 5 secrects on a pally we kinda know what they are.


            SetUpHero(ref _board, _board.FriendClass);
            SetUpHero(ref _board, _board.EnemyClass, ENEMY, JUSTICAR);
            _board.HeroFriend.CurrentHealth = 30;
            _board.HeroFriend.CurrentArmor  = 0;
            _board.HeroEnemy.CurrentHealth  = 30;
            _board.HeroEnemy.CurrentArmor   = 0;
            SetUpSeed(ref _board);


            Card test = Card.Create(CardTemplate.StringToCard("CS2_179"), true, GlobalCounter);

            Console.WriteLine(test.Template.Name);


            Console.WriteLine("Pipe connected : " + PipeClient.IsConnected());

            string SeedStr     = _board.ToSeed();
            string ProfileStr  = "Default"; // NOTE: make sure your profiles don't have weird characters in their names
            bool   AutoConcede = false;


            SendSeedRequest(SeedStr, ProfileStr, AutoConcede);

            Console.ReadLine();

            PipeClient.Disconnect();
        }
示例#2
0
    public static void SendCommand(CommandType command, string[] args)
    {
        if (!PipeClient.IsConnected())
        {
            return;
        }

        List <string> argsToSend = new List <string> {
            command.ToString()
        };

        argsToSend.AddRange(args);

        PipeClient.SendMessage(string.Join(MessageSeparator.ToString(), argsToSend));
    }
示例#3
0
        public void TestClientToServerConnection()
        {
            Thread clientThd = new Thread(() =>
            {
                PipeClient client = new PipeClient();
                client.ConnectToAdminBolterService(4000);
                Assert.Equals(client.IsConnected(), true);
            });
            Thread serverThd = new Thread(() =>
            {
                PipeServer server = new PipeServer();
                server.Start();
            });

            serverThd.Start();
            Thread.Sleep(5000);
            clientThd.Start();
        }
示例#4
0
        private static void Main(string[] args)
        {
            SetupEventHandlers();
            PipeClient.Connect();

            Console.WriteLine("Pipe connected : " + PipeClient.IsConnected());

            string SeedStr =
                "2~2~1~0~0~24~25~0~False~2~False~5~0~0~HERO_04*-1*0*0*0*0*0*4*30*0*2*30*0*False*False*False*False*False*False*False*False*False*False*False*False*False*2*False~HERO_01*-1*2*0*0*0*0*36*30*0*2*32*0*False*False*False*False*False*False*False*False*False*False*False*False*False*2*False~CS2_101*-1*0*0*2*0*0*5*0*0*2*0*0*False*False*False*False*False*False*False*False*False*False*False*False*False*2*False~CS2_102*-1*0*0*2*0*0*37*0*0*2*0*0*False*False*False*False*True*False*False*False*False*False*False*False*False*2*False~EX1_080*0*0*1*1*0*0*9*2*0*1*2*0*False*False*False*False*False*False*False*False*False*False*False*False*False*1*False~0~GVG_061*0*0*0*3*0*0*24*0*0*0*0*0*False*False*False*False*False*False*True*False*False*False*False*False*False*0*False|AT_079*1*0*6*6*0*0*20*6*0*0*6*0*False*False*False*False*False*False*True*False*False*False*False*False*False*0*False|GVG_096*2*0*4*4*0*0*7*3*0*0*3*0*False*False*False*False*False*False*True*False*False*False*False*False*False*0*False|GAME_005*3*0*0*0*0*0*68*0*0*0*0*0*False*False*False*False*False*False*True*False*False*False*False*False*False*0*False|EX1_136*4*0*0*1*0*0*10*0*0*0*0*0*False*False*False*False*False*False*True*False*False*False*False*False*False*0*False|AT_073*5*0*0*1*0*0*32*0*0*0*0*0*False*False*False*False*False*False*True*False*False*False*False*False*False*0*False~0~0~0~0~0~False=False=False=False=False=False~0~0~0~False~GVG_096,GVG_096,GVG_059,CS2_092,CS2_092,EX1_383,FP1_002,GVG_110,AT_073,AT_073,EX1_379,EX1_080,EX1_080,FP1_030,EX1_136,FP1_012,EX1_130,EX1_130,NEW1_019,NEW1_019,FP1_020,FP1_020,GVG_058,GVG_058,GVG_061,GVG_061,AT_079,AT_079,CS2_093,CS2_097~";
            string ProfileStr = "Default";
            bool   AoESpells  = true;


            SendSeedRequest(SeedStr, ProfileStr, AoESpells);

            Console.ReadLine();

            PipeClient.Disconnect();
        }
示例#5
0
        public void SendMessageTest()
        {
            TearDown();
            Thread clientThd = new Thread(() =>
            {
                PipeClient client = new PipeClient();
                client.ConnectToAdminBolterService(4000);
                client.SendMessage("Hey");
                Assert.Equals(client.IsConnected(), true);
            });
            Thread serverThd = new Thread(() =>
            {
                PipeServer server = new PipeServer();
                server.Start();
            });

            serverThd.Start();
            Thread.Sleep(5000);
            clientThd.Start();
        }
示例#6
0
        /// <summary>
        /// Send a message to other bus instances
        /// </summary>
        /// <param name="msg">The message to send, should follow the define format</param>
        private static void SendMessage(string msg)
        {
            if (!_initialized)
            {
                InitializePipe();
            }
            if (!_initialized)
            {
                return;
            }

            if (_server != null && _server.IsRunning())
            {
                _server.SendMessage(msg);
            }

            if (_client != null && _client.IsConnected())
            {
                _client.SendMessage(msg);
            }
        }
示例#7
0
        public static void Main(string[] args)
        {
            App.args = args;

            mConsole = WinConsole.Initialize(TestArg("-console") || TestArg("-console-debug"));

            if (TestArg("-help") || TestArg("/?"))
            {
                ShowHelp();
                return;
            }
            else if (TestArg("-dbg_wait"))
            {
                MessageBox.Show("Waiting for debugger. (press ok when attached)");
            }

            Thread.CurrentThread.Name = "Main";

            Console.WriteLine("Starting...");

            AppLog Log = new AppLog();

            exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(exePath);

            mVersion = fvi.FileMajorPart + "." + fvi.FileMinorPart;
            if (fvi.FileBuildPart != 0)
            {
                mVersion += (char)('a' + (fvi.FileBuildPart - 1));
            }
            appPath  = Path.GetDirectoryName(exePath);
            mSession = Process.GetCurrentProcess().SessionId;

            Translate.Load();

            svc = new Service(mSvcName);

            if (TestArg("-engine"))
            {
                engine = new Engine();

                engine.Run();
                return;
            }
            else if (TestArg("-svc"))
            {
                if (TestArg("-install"))
                {
                    Console.WriteLine("Installing service...");
                    svc.Install(TestArg("-start"));
                    Console.WriteLine("... done");
                }
                else if (TestArg("-remove"))
                {
                    Console.WriteLine("Removing service...");
                    svc.Uninstall();
                    Console.WriteLine("... done");
                }
                else
                {
                    engine = new Engine();

                    ServiceBase.Run(svc);
                }
                return;
            }

            tweaks = new Tweaks();

            client = new PipeClient();

            if (!AdminFunc.IsDebugging())
            {
                Console.WriteLine("Trying to connect to Engine...");
                if (!client.Connect(1000))
                {
                    if (!AdminFunc.IsAdministrator())
                    {
                        Console.WriteLine("Trying to obtain Administrative proivilegs...");
                        if (AdminFunc.SkipUacRun(mName, App.args))
                        {
                            return;
                        }

                        Console.WriteLine("Trying to start with 'runas'...");
                        // Restart program and run as admin
                        var              exeName   = Process.GetCurrentProcess().MainModule.FileName;
                        string           arguments = "\"" + string.Join("\" \"", args) + "\"";
                        ProcessStartInfo startInfo = new ProcessStartInfo(exeName, arguments);
                        startInfo.UseShellExecute = true;
                        startInfo.Verb            = "runas";
                        try
                        {
                            Process.Start(startInfo);
                            return; // we restarted as admin
                        }
                        catch
                        {
                            MessageBox.Show(Translate.fmt("msg_admin_rights", mName), mName);
                            return; // no point in cintinuing without admin rights or an already running engine
                        }
                    }
                    else if (svc.IsInstalled())
                    {
                        Console.WriteLine("Trying to start service...");
                        if (svc.Startup())
                        {
                            Console.WriteLine("Trying to connect to service...");

                            if (client.Connect())
                            {
                                Console.WriteLine("Connected to service...");
                            }
                            else
                            {
                                Console.WriteLine("Failed to connect to service...");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Failed to start service...");
                        }
                    }
                }
            }

            // if we couldn't connect to the engine start it and connect
            if (!client.IsConnected() && AdminFunc.IsAdministrator())
            {
                Console.WriteLine("Starting Engine Thread...");

                engine = new Engine();

                engine.Start();

                Console.WriteLine("... engine started.");

                client.Connect();
            }

            // ToDo: use a more direct communication when running in one process

            itf = client;
            cb  = client;

            /*if (TestArg("-console-debug"))
             * {
             *  Console.WriteLine("Private WinTen reporting for duty, sir!");
             *  Console.WriteLine("");
             *
             *  for (bool running = true; running;)
             *  {
             *      String Line = Console.ReadLine();
             *      if (Line.Length == 0)
             *          continue;
             *
             *      String Command = TextHelpers.GetLeft(ref Line).ToLower();
             *
             *      if (Command == "quit" || Command == "exit")
             *          running = false;
             *
             *      if (Command == "test")
             *      {
             *      }
             *      else
             *      {
             *          Console.WriteLine("Unknown Command, sir!");
             *          continue;
             *      }
             *      Console.WriteLine("Yes, sir!");
             *  }
             *
             *  return;
             * }*/

            Console.WriteLine("Preparing GUI...");

            var app = new App();

            app.InitializeComponent();

            InitLicense();

            mTray         = new TrayIcon();
            mTray.Action += TrayAction;
            mTray.Visible = GetConfigInt("Startup", "Tray", 0) != 0;

            mMainWnd = new MainWindow();
            if (!App.TestArg("-autorun") || !mTray.Visible)
            {
                mMainWnd.Show();
            }

            app.Run();

            mTray.DestroyNotifyicon();

            client.Close();

            if (engine != null)
            {
                engine.Stop();
            }
        }