public void PrintPlayerSelectionStatus(IEnumerable <PlayerMessage> players, PlayerSelectionTypers typers) { _output.WriteLine(new string('-', Width)); _output.WriteLine(); foreach (var player in players) { if (typers.Selected.Contains(player.PlayerId)) { Console.ForegroundColor = ConsoleColor.Green; } _output.Write($"{player.Name} "); Console.ForegroundColor = ConsoleColor.Gray; _output.WriteLine(typers.GetPlayerTyper(player.PlayerId)); _output.WriteLine(); } _output.Write($"Cancel - "); _output.Write(typers.CancelTyper); _output.Write(" OK - "); _output.WriteLine(typers.OkTyper); _output.WriteLine(); _output.WriteLine(new string('-', Width)); }
public void SetPlayerSelection(PlayerSelectionTypers playerSelectionTypers) { Reset(playerSelectionTypers); PlayerSelectionTypers = playerSelectionTypers; }
private void Update() { lock (_lock) { Console.Clear(); if (_status == null) { _printer.PrintLoadingScreen(); return; } _printer.PrintNotifications(_notifications); // Battle priority is higher than alerts. if (_status.BattleStatus != null) { if (_typers.BattleTypers == null) { var battleTypers = new BattleTypers(this, _status.BattleStatus.SkillIds, _status.BattleStatus.BattleNeighbors.Concat(new[] { _status.BattleStatus.Player }).Select(p => p.PlayerId)); _typers.SetBattle(battleTypers); } _printer.PrintBattleStatus(_status.BattleStatus, _typers.BattleTypers); return; } _printer.PrintPlayerStatus(_status.PlayerStatus); if (_typers.AlertTypers == null && _alerts.Any()) { _currentAlert = _alerts.Dequeue(); var alertTypers = new AlertTypers(this); _typers.OpenAlert(alertTypers); } if (_typers.AlertTypers != null) { _printer.PrintAlert(_currentAlert, _typers.AlertTypers); return; } if (_isPlayerSelecting) { var battleEligibleNeighbors = _status.ZoneStatus.Neighbors .Where(n => !n.IsInBattle && !n.IsDead); if (_typers.PlayerSelectionTypers == null) { var playerSelectionTypers = new PlayerSelectionTypers(this, battleEligibleNeighbors.Select(n => n.PlayerId)); _typers.SetPlayerSelection(playerSelectionTypers); } if (_selectedPlayers != null) // Typer is done. { _connection.Send(new StartBattleCommand { ParticipantsExceptMeIds = _selectedPlayers }); _selectedPlayers = null; _isPlayerSelecting = false; return; } _printer.PrintPlayerSelectionStatus(battleEligibleNeighbors, _typers.PlayerSelectionTypers); return; } if (_status.PlayerStatus.PassZone != null) { if (_typers.PassZoneTypers == null) { var passZoneTypers = new PassZoneTypers(this, _status.PlayerStatus.PassZone); _typers.SetPassZone(passZoneTypers); _previousDirection = _status.PlayerStatus.PassZone.Direction; } if (_previousDirection != _status.PlayerStatus.PassZone.Direction) { // Update for new direction and distance. var passZoneTypers = new PassZoneTypers(this, _status.PlayerStatus.PassZone); // Can't flip direction. Need to recreate because need smaller/bigger text for reverse direction. _typers.SetPassZone(passZoneTypers); _previousDirection = _status.PlayerStatus.PassZone.Direction; } _printer.PrintPassingStatus(_status.PassZoneStatus, _status.PlayerStatus.PassZone, _typers.PassZoneTypers); return; } var zone = Data.Data.GetZone(_status.PlayerStatus.Zone.ZoneId); if (_typers.ZoneTypers == null) { var zoneTypers = new ZoneTypers(this, zone.ZoneExits.Concat(zone.ZoneEntrances)); _typers.SetZone(zoneTypers); } _printer.PrintZoneInfo(_status.ZoneStatus, _status.PlayerStatus, _typers.ZoneTypers); } }