public void OnGameMessage(GameMessage message) { RegistrationOnServer registration = message as RegistrationOnServer; if (registration != null) { clientManager.UpdateTeamDetails(registration.Team, registration.TeamOrder); return; } UpdateTeamRoster updateTeams = message as UpdateTeamRoster; if (updateTeams != null) { clientManager.OnUpdateTeamRoster(updateTeams.RedTeam, updateTeams.BlueTeam); return; } ClientReadyToPlay readyToPlay = message as ClientReadyToPlay; if (readyToPlay != null) { clientManager.NetworkManager.ReadyToPlay(); return; } EnteredGame enteredGame = message as EnteredGame; if (enteredGame != null) { clientManager.ChangeState(clientManager.ClientGameSetupState); } }
public void OnGameMessage(GameMessage message) { RegisterClient registerClient = message as RegisterClient; if (registerClient != null) { IAIBase.ETeam team; int teamOrder; if (manager.RegisterClient(registerClient, out team, out teamOrder)) { IEnumerable <ClientDataOnServer> redTeam = manager.GetTeam(IAIBase.ETeam.TEAM_RED); TeamList redList = new TeamList(IAIBase.ETeam.TEAM_RED, redTeam.ToArray()); IEnumerable <ClientDataOnServer> blueTeam = manager.GetTeam(IAIBase.ETeam.TEAM_BLUE); TeamList blueList = new TeamList(IAIBase.ETeam.TEAM_BLUE, blueTeam.ToArray()); manager.networkManager.SendClientRegistration(registerClient.NetworkPlayer, team, teamOrder); manager.networkManager.SendTeamSetupUpdate(redList, blueList); return; } } ClientReadyToPlay clientReady = message as ClientReadyToPlay; if (clientReady != null) { manager.RegisteredClients.First(c => c.NetworkPlayer == clientReady.Player).ReadyToPlay = true; if (manager.RegisteredClients.Count() >= Constants.GAME_MIN_PLAYERS && manager.RegisteredClients.All(c => c.ReadyToPlay == true)) { manager.networkManager.StartMatch(); manager.ChangeState(manager.ServerGameSetupState); } return; } }