Example #1
0
		/// <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);
		}
Example #2
0
        /// <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);
                }
            }
        }