/// <summary>
        /// Creates a new <see>WarcraftLadderRecord</see>.
        /// </summary>
        /// <param name="teamType">The type of ladder represented by this record.</param>
        /// <param name="wins">The player's win count.</param>
        /// <param name="losses">The player's loss count.</param>
        /// <param name="level">The player's level.</param>
        /// <param name="hoursUntilExperienceDecay">The time (in hours) until the player's experience decays without playing.  For more information,
        /// see <see>HoursUntilExperienceDecay</see>.</param>
        /// <param name="totalExperience">The player's total experience value.</param>
        /// <param name="rank">The player's rank.</param>
        public WarcraftClanLadderRecord(WarcraftClanLadderType teamType, int wins, int losses,
            int level, int hoursUntilExperienceDecay, int totalExperience, int rank)
        {
            if (!Enum.IsDefined(typeof(WarcraftClanLadderType), teamType))
                throw new InvalidEnumArgumentException("teamType", (int)teamType, typeof(WarcraftClanLadderType));
            m_type = teamType;

            if (wins < 0)
                throw new ArgumentOutOfRangeException("wins", wins, "Cannot have a negative win count.");
            m_wins = wins;

            if (losses < 0)
                throw new ArgumentOutOfRangeException("losses", losses, "Cannot have a negative loss count.");
            m_losses = losses;

            if (level < 1)
                throw new ArgumentOutOfRangeException("level", level, "Level must be nonzero and nonnegative.");
            m_level = level;

            m_hoursToXpDecay = hoursUntilExperienceDecay;

            if (totalExperience < 0)
                throw new ArgumentOutOfRangeException("totalExperience", totalExperience, "Experience must be nonnegative.");
            m_totalExperience = totalExperience;

            if (rank < 0)
                throw new ArgumentOutOfRangeException("rank", rank, "Rank must be nonnegative.");
            m_rank = rank;
        }
Example #2
0
        private void HandleWarcraftClanInfoRequest(DataReader dr)
        {
            int cookie = dr.ReadInt32();

            if (!m_warcraftProfileRequests.ContainsKey(cookie))
            {
                Debug.WriteLine(string.Format(CultureInfo.InvariantCulture, "Unable to locate profile request with cookie {0:x2}", cookie));
                return;
            }
            WarcraftProfileEventArgs args = m_warcraftProfileRequests[cookie];

            int recordCount = dr.ReadByte();

            WarcraftClanLadderRecord[] ladderRecords = new WarcraftClanLadderRecord[recordCount];
            for (int i = 0; i < recordCount; i++)
            {
                WarcraftClanLadderType ladderType = (WarcraftClanLadderType)dr.ReadInt32();
                int wins   = dr.ReadInt16();
                int losses = dr.ReadInt16();
                int level  = dr.ReadByte();
                int hrs    = dr.ReadByte();
                int xp     = dr.ReadInt16();
                int rank   = dr.ReadInt32();

                WarcraftClanLadderRecord record = new WarcraftClanLadderRecord(ladderType, wins, losses, level, hrs, xp, rank);
                ladderRecords[i] = record;
            }

            int raceRecordCount = dr.ReadByte();

            Warcraft3IconRace[]  raceOrder   = new Warcraft3IconRace[] { Warcraft3IconRace.Random, Warcraft3IconRace.Human, Warcraft3IconRace.Orc, Warcraft3IconRace.Undead, Warcraft3IconRace.NightElf, Warcraft3IconRace.Tournament };
            WarcraftRaceRecord[] raceRecords = new WarcraftRaceRecord[raceRecordCount];
            for (int i = 0; i < raceRecordCount; i++)
            {
                int wins   = dr.ReadInt16();
                int losses = dr.ReadInt16();

                WarcraftRaceRecord record = new WarcraftRaceRecord(raceOrder[i], wins, losses);
                raceRecords[i] = record;
            }

            args.Clan.SetStats(ladderRecords, raceRecords);

            BncsPacket pck = new BncsPacket((byte)BncsPacketId.WarcraftGeneral);

            pck.InsertByte((byte)WarcraftCommands.UserInfoRequest);
            pck.InsertInt32(cookie);
            pck.InsertCString(args.Username);
            pck.InsertDwordString(args.Product.ProductCode);
            Send(pck);
        }
Example #3
0
        /// <summary>
        /// Creates a new <see>WarcraftLadderRecord</see>.
        /// </summary>
        /// <param name="teamType">The type of ladder represented by this record.</param>
        /// <param name="wins">The player's win count.</param>
        /// <param name="losses">The player's loss count.</param>
        /// <param name="level">The player's level.</param>
        /// <param name="hoursUntilExperienceDecay">The time (in hours) until the player's experience decays without playing.  For more information,
        /// see <see>HoursUntilExperienceDecay</see>.</param>
        /// <param name="totalExperience">The player's total experience value.</param>
        /// <param name="rank">The player's rank.</param>
        public WarcraftClanLadderRecord(WarcraftClanLadderType teamType, int wins, int losses,
                                        int level, int hoursUntilExperienceDecay, int totalExperience, int rank)
        {
            if (!Enum.IsDefined(typeof(WarcraftClanLadderType), teamType))
            {
                throw new InvalidEnumArgumentException("teamType", (int)teamType, typeof(WarcraftClanLadderType));
            }
            m_type = teamType;

            if (wins < 0)
            {
                throw new ArgumentOutOfRangeException("wins", wins, "Cannot have a negative win count.");
            }
            m_wins = wins;

            if (losses < 0)
            {
                throw new ArgumentOutOfRangeException("losses", losses, "Cannot have a negative loss count.");
            }
            m_losses = losses;

            if (level < 1)
            {
                throw new ArgumentOutOfRangeException("level", level, "Level must be nonzero and nonnegative.");
            }
            m_level = level;

            m_hoursToXpDecay = hoursUntilExperienceDecay;

            if (totalExperience < 0)
            {
                throw new ArgumentOutOfRangeException("totalExperience", totalExperience, "Experience must be nonnegative.");
            }
            m_totalExperience = totalExperience;

            if (rank < 0)
            {
                throw new ArgumentOutOfRangeException("rank", rank, "Rank must be nonnegative.");
            }
            m_rank = rank;
        }