/// <summary> /// Создать текстовое описание итогов игры. /// </summary> /// <param name="scores"> Объект, содержащий очки игры. </param> /// <param name="botName"> Имя бота, который играл. Не указывать, если выводятся очки игрока-человека. </param> /// <returns> Возвращает текстовое представление итогов игры в виде строки. </returns> //TODO Вместо botName передавать объект BotInfo. Так будет более очевидно. public static string CreateTextSummary([NotNull] Scores scores, [CanBeNull] string botName) { var summaryStringBuilder = new StringBuilder(); if (botName == null) { summaryStringBuilder.AppendLine("YOU DIED"); } else { summaryStringBuilder.AppendLine($"YOU (BOT {botName}) DIED"); } summaryStringBuilder.AppendLine($"SCORES: {scores.BaseScores}"); summaryStringBuilder.AppendLine("=== You survived ==="); var lifetime = ScoreCalculator.ConvertTurnsToDetailed(scores.Turns); summaryStringBuilder.AppendLine($"{lifetime.Days} days {lifetime.Hours} hours"); if (botName != null) { summaryStringBuilder.AppendLine($"Turns: {scores.Turns}"); } summaryStringBuilder.AppendLine("=== You visited ==="); summaryStringBuilder.AppendLine($"{scores.Places.Count} places"); foreach (var placeType in scores.PlaceTypes) { summaryStringBuilder.AppendLine($"{placeType.Key.Name?.En ?? placeType.Key.Name?.Ru ?? placeType.Key.ToString()}: {placeType.Value} turns"); } summaryStringBuilder.AppendLine("=== You killed ==="); foreach (var frag in scores.Frags) { summaryStringBuilder.AppendLine($"{frag.Key.Name?.En ?? frag.Key.Name?.Ru ?? frag.Key.ToString()}: {frag.Value}"); } return(summaryStringBuilder.ToString()); }
/// <summary> /// Создать текстовое описание итогов игры. /// </summary> /// <param name="scores"> Объект, содержащий очки игры. </param> /// <param name="botName"> Имя бота, который играл. Не указывать, если выводятся очки игрока-человека. </param> /// <returns> Возвращает текстовое представление итогов игры в виде строки. </returns> //TODO Вместо botName передавать объект BotInfo. Так будет более очевидно. public static string CreateTextSummary(Scores scores, string?botName, string lang) { var summaryStringBuilder = new StringBuilder(); if (botName is null) { if (string.Equals(lang, "en", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine("YOU DIED"); } else if (string.Equals(lang, "ru", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine("ВЫ МЕРТВЫ"); } } else { if (string.Equals(lang, "en", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine($"YOU (BOT {botName}) DIED"); } else if (string.Equals(lang, "ru", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine($"ВЫ (БОТ {botName}) МЕРТВЫ"); } } if (string.Equals(lang, "en", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine($"SCORES: {scores.BaseScores}"); summaryStringBuilder.AppendLine("=== You survived ==="); } else if (string.Equals(lang, "ru", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine($"ОЧКИ: {scores.BaseScores}"); summaryStringBuilder.AppendLine("=== Вы прожили ==="); } var lifetime = ScoreCalculator.ConvertTurnsToDetailed(scores.Turns); if (string.Equals(lang, "en", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine($"{lifetime.Days} days {lifetime.Hours} hours"); } else if (string.Equals(lang, "ru", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine($"{lifetime.Days} дней {lifetime.Hours} часов"); } if (botName != null) { summaryStringBuilder.AppendLine($"Turns: {scores.Turns}"); } //summaryStringBuilder.AppendLine("=== You visited ==="); //foreach (var placeType in scores.PlaceTypes) //{ // summaryStringBuilder.AppendLine( // $"{placeType.Key.Name?.En ?? placeType.Key.Name?.Ru ?? placeType.Key.ToString()}: {placeType.Value} turns"); //} if (scores.Diseases.Any()) { if (string.Equals(lang, "en", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine("=== Infections ==="); foreach (var disease in scores.Diseases) { var name = $"{disease.Name.Secondary?.En} {disease.Name.PrimaryPrefix?.En}{disease.Name.Primary?.En} {disease.Name.Subject?.En}"; summaryStringBuilder.AppendLine(name); } } else if (string.Equals(lang, "ru", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine("=== Инфекции ==="); foreach (var disease in scores.Diseases) { var name = $"{disease.Name.Secondary?.Ru} {disease.Name.PrimaryPrefix?.Ru}{disease.Name.Primary?.Ru} {disease.Name.Subject?.Ru}"; summaryStringBuilder.AppendLine(name); } } } if (string.Equals(lang, "en", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine("=== You killed ==="); foreach (var frag in scores.Frags) { summaryStringBuilder.AppendLine( $"{frag.Key.Name?.En ?? frag.Key.ToString()}: {frag.Value}"); } } else if (string.Equals(lang, "ru", StringComparison.InvariantCultureIgnoreCase)) { summaryStringBuilder.AppendLine("=== Вы убили ==="); foreach (var frag in scores.Frags) { summaryStringBuilder.AppendLine( $"{frag.Key.Name?.Ru ?? frag.Key.ToString()}: {frag.Value}"); } } return(summaryStringBuilder.ToString()); }