Ejemplo n.º 1
0
        public void TestLeavePool(Action success)
        {
            var poolName = Guid.NewGuid().ToString("N");

            OnPoolClient.OnPoolClient m2 = null;
            BuildClient(manager1 => {
                manager1.OnReady(() => {
                    int hitCount = 0;
                    manager1.OnPoolUpdated(poolName, (clients) => {
                        if (clients.Length == 1)
                        {
                            hitCount++;
                            if (hitCount == 2)
                            {
                                success();
                            }
                        }
                        else if (clients.Length == 2)
                        {
                            m2.LeavePool(poolName);
                        }
                    });

                    manager1.JoinPool(poolName);
                    BuildClient(manager2 => {
                        m2 = manager2;
                        manager2.OnReady(() => { manager2.JoinPool(poolName); });
                    });
                });
            });
        }
        private MasterVoteServerLogic()
        {
            Client = new OnPoolClient.OnPoolClient();
            Client.SetSerializerSettings(new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.All,
                Converters       = new List <JsonConverter>()
                {
                    new ObjectIdJsonConverter(),
                    new StringEnumConverter()
                },
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });
            Client.ConnectToServer(ConfigurationManager.AppSettings["onPoolServer"]);
            Client.JoinPool("VotePool").OnMessage((from, message, respond) =>
            {
                switch (message.Method)
                {
                case "AddVote":
                    {
                        var result = message.GetJson <GameVoteMessage>();
                        GameManager.AddVote(result.Vote);
                        respond(null);
                        break;
                    }

                default:
                    respond(null);
                    break;
                }
            });
            GameManager = new GameManager();
            gameTick(null);
        }
Ejemplo n.º 3
0
        private void BuildClient(Action <OnPoolClient.OnPoolClient> ready)
        {
            var c = new OnPoolClient.OnPoolClient();

            connectedClients.Add(c);
            c.ConnectToServer("127.0.0.1");
            ready(c);
        }
Ejemplo n.º 4
0
        private VoteServerLogic()
        {
            GameManager = new GameManager();

            Client = new OnPoolClient.OnPoolClient();
            Client.SetSerializerSettings(new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.All,
                Converters       = new List <JsonConverter>()
                {
                    new ObjectIdJsonConverter(),
                    new StringEnumConverter()
                },
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });
            Client.ConnectToServer(ConfigurationManager.AppSettings["onPoolServer"]);
            Client.JoinPool("VotePool").OnMessage((from, message, respond) =>
            {
                switch (message.Method)
                {
                case "AddVote":
                    {
                        var result = message.GetJson <GameVoteMessage>();
                        GameManager.AddVote(result.Vote);
                        respond(null);
                        break;
                    }

                case "StopVote":
                    {
                        GameManager.Locked = true;
                        respond(null);
                        break;
                    }

                case "NewRound":
                    {
                        var messageRound      = message.GetJson <NewRoundMessage>();
                        GameManager.GameState = messageRound.State;
                        GameManager.Reset();
                        Console.WriteLine("Got new round: " + messageRound.State.Generation);
                        GameManager.Locked = false;
                        respond(null);
                        break;
                    }
                }
            });
        }