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); }
private void BuildClient(Action <OnPoolClient.OnPoolClient> ready) { var c = new OnPoolClient.OnPoolClient(); connectedClients.Add(c); c.ConnectToServer("127.0.0.1"); ready(c); }
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; } } }); }