예제 #1
0
        public static void Main(string[] args)
        {
            Log.Logger.Information("GameMaster started");
            GMConfiguration config = GMConfiguration.ReadConfiguration(args);

            CreateLogger(config.LoggingMode);
            GameMaster gameMaster = new GameMaster(new GuiMantainer(), config, new ProxyMessageHandler());

            gameMaster.Start();
            gameMaster.WaitForEnd();
            Log.CloseAndFlush();
            gameMaster.Dispose();
        }
예제 #2
0
        public void TestReceiveRequest()
        {
            StubGuiMaintainer guiMantainer = new StubGuiMaintainer();
            GMConfiguration   config       = new GMConfiguration()
            {
                BoardX                     = 40,
                BoardY                     = 40,
                CsIP                       = "127.0.0.1",
                CsPort                     = 8081,
                MovePenalty                = 1500,
                DiscoveryPenalty           = 700,
                PutPenalty                 = 500,
                CheckForShamPenalty        = 700,
                InformationExchangePenalty = 1000,
                GoalAreaHeight             = 5,
                NumberOfGoals              = 5,
                NumberOfPieces             = 10,
                ShamPieceProbability       = 20
            };

            TcpListener serverSideListener = new TcpListener(IPAddress.Any, config.CsPort);

            serverSideListener.Start();
            TcpClient serverSide = null;
            var       task       = new Task(() => serverSide = serverSideListener.AcceptTcpClient());

            task.Start();


            GameMaster.GameMaster gm = new GameMaster.GameMaster(guiMantainer, config, new ProxyMessageHandler());
            gm.Start();
            guiMantainer.StartGame();
            var gmTask = new Task(() => gm.WaitForEnd());

            gmTask.Start();

            task.Wait();
            serverSideListener.Stop();
            IMessageSenderReceiver senderReceiver = new StreamMessageSenderReceiver(serverSide.GetStream(), new Parser());
            var message = new Message <DiscoveryRequest>()
            {
                AgentId        = 1,
                MessagePayload = new DiscoveryRequest()
            };

            senderReceiver.Send(message);
            senderReceiver.StartReceiving(m =>
            {
                Assert.AreEqual(m.MessageId, MessageType.DiscoveryResponse);
            });
        }