/// <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; }
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); }
/// <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; }