public void PrintPassingStatus(PassZoneStatus status, PassZoneMessage passZone, PassZoneTypers passZoneTypers) { var info = Data.Data.GetPassZone(passZone.PassZoneId); var name = info.GetName(passZone.Direction); var description = info.GetDescription(passZone.Direction); _output.WriteLine(new string('-', HalfWidth)); _output.WriteLine(); _output.WriteLine(name); _output.WriteLine(); PrintWrapped(description); _output.WriteLine(); _output.WriteLine(new string('-', HalfWidth)); _output.WriteLine(); _output.Write(passZoneTypers.Typer); _output.WriteLine(); var index = 1; foreach (var wanderer in status.Neighbors) { _output.WriteLine($"{index} - {wanderer.Name}"); index++; } _output.WriteLine(); PrintPassingPosition(status.Me, "M"); index = 1; foreach (var wanderer in status.Neighbors) { PrintPassingPosition(wanderer, index.ToString()); index++; } _output.WriteLine(); _output.WriteLine(new string('-', HalfWidth)); _output.WriteLine(); _output.WriteLine(); _output.WriteLine(new string('-', HalfWidth)); _output.WriteLine(new string('_', Width)); }
public void SetPassZone(PassZoneTypers passZoneTypers) { Reset(passZoneTypers); PassZoneTypers = passZoneTypers; }
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); } }