private void UpdateUiToReflectJoinedPlayers() { // To wipe any state that may come from Gum layout: MainMenuGum.UnjoinAll(); if (JoinedPlayerManager.JoinedPlayers.Any()) { // Max crashes if the list is empty var best = JoinedPlayerManager.JoinedPlayers.Max( item => item.LastGameKills - item.LastGameDeaths); foreach (var player in JoinedPlayerManager.JoinedPlayers) { var frame = MainMenuGum.JoinWith(player.ShipType.ToGum()); if (player.LastGameKills - player.LastGameDeaths == best) { frame.CurrentWinOrNormalState = GumRuntimes.JoinableShipAndStatusRuntime.WinOrNormal.Winner; } else { frame.CurrentWinOrNormalState = GumRuntimes.JoinableShipAndStatusRuntime.WinOrNormal.Normal; } frame.KillsText = $"Kills: {player.LastGameKills}"; frame.DeathsText = $"Deaths: {player.LastGameDeaths}"; } } }
private void UnjoinWith(IInputDevice gamePad) { var unjoined = JoinedPlayerManager.DropPlayer(gamePad); if (unjoined != null) { MainMenuGum.UnjoinWith(unjoined.ShipType.ToGum()); } }
private void JoinWith(IInputDevice gamePad) { var newPlayer = JoinedPlayerManager.Join(gamePad); if (newPlayer != null) { MainMenuGum.JoinWith(newPlayer.ShipType.ToGum()); } }