public static string Dump(this ClanWarLeagueWarClan clan) { var sb = new StringBuilder(); sb.Append($"Clan {clan.Tag}/{clan.Name} [{clan.Stars}☆/{clan.DestructionPercentage:0.00}%/{clan.Attacks}]"); sb.Append(Environment.NewLine); var members = clan.Members.Where(m => m.Attacks != null || m.BestOpponentAttack != null).OrderBy(m => m.MapPosition); sb.Append(Dump("InWar", members)); members = clan.Members.Where(m => m.Attacks == null && m.BestOpponentAttack == null).OrderBy(m => m.MapPosition); sb.Append(Dump("Roster", members)); return(sb.ToString()); }
private async Task <ClanWarLeagueWar> GetClanCurrentLeagueWar(Clan selectedClan, CurrentWarLeagueGroup currentWarLeagueGroup) { ClanWarLeagueWar currentLeagueWar = null; foreach (InlineModel0 model in currentWarLeagueGroup.Rounds) { foreach (string warTag in model.WarTags) { if (warTag.Contains("#0")) // #0 = Round not started { continue; } ClanWarLeagueWar war = await _clashClient.Clans.GetClanWarLeaguesWarsAsync(warTag); if (war.Clan.Tag == selectedClan.Tag) { if (war.State == State.InWar) { currentLeagueWar = war; break; } } else if (war.Opponent.Tag == selectedClan.Tag) { // If the opponent in the war is the selected clan, we want to switch the opponent and the main clan ClanWarLeagueWarClan tempMainClan = war.Clan; war.Clan = war.Opponent; war.Opponent = tempMainClan; if (war.State == State.InWar) { currentLeagueWar = war; break; } } } } return(currentLeagueWar); }