/// <summary> /// Groups tam and ally numbers, so that they both start from 0 /// </summary> public void GroupData(out List<GrPlayer> players, out List<GrTeam> teams, out List<GrAlly> alliances) { var teamNums = new Dictionary<int, int>(); var allyNums = new Dictionary<int, int>(); players = new List<GrPlayer>(); teams = new List<GrTeam>(); alliances = new List<GrAlly>(); foreach (var p in Users) { var u = (UserBattleStatus) p.Clone(); if (!u.IsSpectator) { if (!teamNums.ContainsKey(u.TeamNumber)) { teamNums.Add(u.TeamNumber, teams.Count); // add transformation of team teams.Add(new GrTeam(players.Count)); } u.TeamNumber = teamNums[u.TeamNumber]; if (!allyNums.ContainsKey(u.AllyNumber)) { allyNums.Add(u.AllyNumber, alliances.Count); // add transformation of ally alliances.Add(new GrAlly()); } u.AllyNumber = allyNums[u.AllyNumber]; } players.Add(new GrPlayer(u)); } foreach (var p in Bots) { var u = (BotBattleStatus) p.Clone(); if (!teamNums.ContainsKey(u.TeamNumber)) { teamNums.Add(u.TeamNumber, teams.Count); // add transformation of team int leader = 0; for (leader = 0; leader < players.Count; ++leader) if (players[leader].user.name == u.owner) break; var gr = new GrTeam(leader); gr.bot = u; teams.Add(gr); } u.TeamNumber = teamNums[u.TeamNumber]; if (!allyNums.ContainsKey(u.AllyNumber)) { allyNums.Add(u.AllyNumber, alliances.Count); // add transformation of ally alliances.Add(new GrAlly()); } u.AllyNumber = allyNums[u.AllyNumber]; } // now assign rectangles and skip unused foreach (var r in Rectangles) if (allyNums.ContainsKey(r.Key)) alliances[allyNums[r.Key]] = new GrAlly(r.Value); }
/// <summary> /// Groups tam and ally numbers, so that they both start from 0 /// </summary> public void GroupData(out List <GrPlayer> players, out List <GrTeam> teams, out List <GrAlly> alliances) { var teamNums = new Dictionary <int, int>(); var allyNums = new Dictionary <int, int>(); players = new List <GrPlayer>(); teams = new List <GrTeam>(); alliances = new List <GrAlly>(); foreach (var p in Users) { var u = (UserBattleStatus)p.Clone(); if (!u.IsSpectator) { if (!teamNums.ContainsKey(u.TeamNumber)) { teamNums.Add(u.TeamNumber, teams.Count); // add transformation of team teams.Add(new GrTeam(players.Count)); } u.TeamNumber = teamNums[u.TeamNumber]; if (!allyNums.ContainsKey(u.AllyNumber)) { allyNums.Add(u.AllyNumber, alliances.Count); // add transformation of ally alliances.Add(new GrAlly()); } u.AllyNumber = allyNums[u.AllyNumber]; } players.Add(new GrPlayer(u)); } foreach (var p in Bots) { var u = (BotBattleStatus)p.Clone(); if (!teamNums.ContainsKey(u.TeamNumber)) { teamNums.Add(u.TeamNumber, teams.Count); // add transformation of team int leader = 0; for (leader = 0; leader < players.Count; ++leader) { if (players[leader].user.name == u.owner) { break; } } var gr = new GrTeam(leader); gr.bot = u; teams.Add(gr); } u.TeamNumber = teamNums[u.TeamNumber]; if (!allyNums.ContainsKey(u.AllyNumber)) { allyNums.Add(u.AllyNumber, alliances.Count); // add transformation of ally alliances.Add(new GrAlly()); } u.AllyNumber = allyNums[u.AllyNumber]; } // now assign rectangles and skip unused foreach (var r in Rectangles) { if (allyNums.ContainsKey(r.Key)) { alliances[allyNums[r.Key]] = new GrAlly(r.Value); } } }