private static void InternalLoad(GenericReader reader) { int version = reader.ReadEncodedInt(); switch (version) { case 1: { m_Enabled = reader.ReadBool(); m_Instance.m_DuelLengthInSeconds = reader.ReadEncodedInt(); m_Instance.m_MaxDistance = reader.ReadEncodedInt(); goto case 0; } case 0: { int count = reader.ReadEncodedInt(); for (int i = 0; i < count; i++) { Serial serial = (Serial)reader.ReadInt(); DuelPoints points = new DuelPoints(reader); m_PointsTable.Add(serial, points); } m_DeclineDuelList = reader.ReadStrongMobileList(); break; } } }
private static void InternalSave(GenericWriter writer) { writer.WriteEncodedInt(1); // version writer.Write((bool)m_Enabled); writer.WriteEncodedInt(m_Instance.m_DuelLengthInSeconds); writer.WriteEncodedInt(m_Instance.m_MaxDistance); int count = m_PointsTable.Count; writer.WriteEncodedInt(count); IDictionaryEnumerator myEnum = m_PointsTable.GetEnumerator(); int i = 0; while (myEnum.MoveNext()) { Serial serial = (Serial)myEnum.Key; DuelPoints duelPoints = (DuelPoints)myEnum.Value; writer.Write((int)serial); duelPoints.Serialize(writer); i++; } writer.WriteMobileList <Mobile>(m_DeclineDuelList); }
protected override void OnTarget(Mobile from, object targeted) { if (from != null) { if (targeted != null && targeted is PlayerMobile) { PlayerMobile pm = (PlayerMobile)targeted; DuelPoints dp = null; if (DuelController.PointsTable.TryGetValue(pm.Serial, out dp)) { from.SendGump(new DuelPlayerInfoGump(dp)); } else { if (from == pm) { from.SendMessage(53, "You have no dueling record."); } else { from.SendMessage(53, "That player has no dueling record."); } } } else { from.SendMessage(32, "That's not a player!"); } } }
public DuelPlayerInfoGump(DuelPoints duelPoints) : base(200, 00) { this.Closable = true; this.Disposable = true; this.Dragable = true; this.Resizable = false; this.AddPage(0); this.AddBackground(36, 25, 402, 480, 3500); this.AddButton(401, 46, 3, 4, (int)Buttons.closeBtn, GumpButtonType.Reply, 0); this.AddLabel(105, 43, 36, @"Onsite Duel System Player Duel Information"); this.AddLabel(105, 42, 36, @"Onsite Duel System Player Duel Information"); this.AddLabel(168, 91, 36, @"Wins:"); this.AddLabel(168, 90, 36, @"Wins:"); this.AddLabel(122, 69, 36, @"Player Name: " + duelPoints.Mobile.Name); this.AddLabel(122, 68, 36, @"Player Name: " + duelPoints.Mobile.Name); this.AddLabel(163, 189, 36, @"Loses:"); this.AddLabel(163, 188, 36, @"Loses:"); this.AddLabel(81, 289, 36, @"Quickest Duel Time:"); this.AddLabel(81, 288, 36, @"Quickest Duel Time:"); this.AddLabel(87, 383, 36, @"Longest Duel Time:"); this.AddLabel(87, 382, 36, @"Longest Duel Time:"); this.AddHtml(206, 91, 215, 93, GetWins(duelPoints), (bool)true, (bool)true); this.AddHtml(206, 189, 215, 93, GetLoses(duelPoints), (bool)true, (bool)true); this.AddHtml(206, 287, 215, 93, GetQuickestTimes(duelPoints), (bool)true, (bool)true); this.AddHtml(206, 385, 215, 93, GetLongestTimes(duelPoints), (bool)true, (bool)true); }
public static string GetLongestTimes(DuelPoints duelPoints) { if (duelPoints == null || (duelPoints.LongestLoses.Count == 0 && duelPoints.LongestWins.Count == 0)) { return("No records"); } StringBuilder sb = new StringBuilder(); if (duelPoints.LongestWins.Count > 0) { sb.Append("Longest Wins" + br); IDictionaryEnumerator myEnum = duelPoints.LongestWins.GetEnumerator(); while (myEnum.MoveNext()) { int players = (int)myEnum.Key; DuelInfo dInfo = (DuelInfo)myEnum.Value; if (dInfo.DuelTime.Minutes == 0) { sb.Append(String.Format("{0}vs{0} - {1} seconds{2}", players, dInfo.DuelTime.Seconds, br)); } else { sb.Append(String.Format("{0}vs{0} - {1} minutes {2} seconds{3}", players, dInfo.DuelTime.Minutes, dInfo.DuelTime.Seconds, br)); } } } if (duelPoints.LongestLoses.Count > 0) { sb.Append(br); sb.Append("Longest Loses" + br); IDictionaryEnumerator myEnum = duelPoints.LongestLoses.GetEnumerator(); while (myEnum.MoveNext()) { int players = (int)myEnum.Key; DuelInfo dInfo = (DuelInfo)myEnum.Value; if (dInfo.DuelTime.Minutes == 0) { sb.Append(String.Format("{0}vs{0} - {1} seconds{2}", players, dInfo.DuelTime.Seconds, br)); } else { sb.Append(String.Format("{0}vs{0} - {1} minutes {2} seconds{3}", players, dInfo.DuelTime.Minutes, dInfo.DuelTime.Seconds, br)); } } } return(sb.ToString()); }
protected override void OnTargetCancel(Mobile from, TargetCancelType cancelType) { if (from != null && cancelType == TargetCancelType.Canceled && from is PlayerMobile) { PlayerMobile pm = (PlayerMobile)from; DuelPoints dp = null; if (DuelController.PointsTable.TryGetValue(from.Serial, out dp)) { from.SendGump(new DuelPlayerInfoGump(dp)); } else { from.SendMessage(53, "You have no dueling record."); } } }
public static void AddLoss(Duel duel, Mobile m) { DuelPoints dPoints; if (m_PointsTable.TryGetValue(m.Serial, out dPoints)) { DuelInfo dInfo = new DuelInfo(duel.Attackers.Contains(m) ? duel.Attackers : duel.Defenders, TimeSpan.FromSeconds(DuelController.Instance.DuelLengthInSeconds - duel.DuelTimer.SecondsRemaining)); dPoints.AddLoss(duel.Attackers.Count, dInfo); } else { dPoints = new DuelPoints(m); DuelInfo dInfo = new DuelInfo(duel.Attackers.Contains(m) ? duel.Attackers : duel.Defenders, TimeSpan.FromSeconds(DuelController.Instance.DuelLengthInSeconds - duel.DuelTimer.SecondsRemaining)); dPoints.AddLoss(duel.Attackers.Count, dInfo); m_PointsTable[m.Serial] = dPoints; } }
public static string GetWins(DuelPoints duelPoints) { if (duelPoints == null || duelPoints.Wins.Count == 0) { return("No records"); } StringBuilder sb = new StringBuilder(); IDictionaryEnumerator myEnum = duelPoints.Wins.GetEnumerator(); while (myEnum.MoveNext()) { int players = (int)myEnum.Key; int loses = (int)myEnum.Value; sb.Append(String.Format("{0}vs{0} - {1} wins{2}", players, loses, br)); } return(sb.ToString()); }
public static string GetWins(DuelPoints duelPoints) { if (duelPoints == null || duelPoints.Wins.Count == 0) return "No records"; StringBuilder sb = new StringBuilder(); IDictionaryEnumerator myEnum = duelPoints.Wins.GetEnumerator(); while (myEnum.MoveNext()) { int players = (int)myEnum.Key; int loses = (int)myEnum.Value; sb.Append(String.Format("{0}vs{0} - {1} wins{2}", players, loses, br)); } return sb.ToString(); }
public static string GetQuickestTimes(DuelPoints duelPoints) { if (duelPoints == null || (duelPoints.FastestWins.Count == 0 && duelPoints.FastestLoses.Count == 0)) return "No records"; StringBuilder sb = new StringBuilder(); if (duelPoints.FastestWins.Count > 0) { sb.Append("Fastest Wins" + br); IDictionaryEnumerator myEnum = duelPoints.FastestWins.GetEnumerator(); while (myEnum.MoveNext()) { int players = (int)myEnum.Key; DuelInfo dInfo = (DuelInfo)myEnum.Value; if (dInfo.DuelTime.Minutes == 0) sb.Append(String.Format("{0}vs{0} - {1} seconds{2}", players, dInfo.DuelTime.Seconds, br)); else sb.Append(String.Format("{0}vs{0} - {1} minutes {2} seconds{3}", players, dInfo.DuelTime.Minutes, dInfo.DuelTime.Seconds, br)); } } if (duelPoints.FastestLoses.Count > 0) { sb.Append(br); sb.Append("Fastest Loses" + br); IDictionaryEnumerator myEnum = duelPoints.FastestLoses.GetEnumerator(); while (myEnum.MoveNext()) { int players = (int)myEnum.Key; DuelInfo dInfo = (DuelInfo)myEnum.Value; if (dInfo.DuelTime.Minutes == 0) sb.Append(String.Format("{0}vs{0} - {1} seconds{2}", players, dInfo.DuelTime.Seconds, br)); else sb.Append(String.Format("{0}vs{0} - {1} minutes {2} seconds{3}", players, dInfo.DuelTime.Minutes, dInfo.DuelTime.Seconds, br)); } } return sb.ToString(); }
public DuelPlayerInfoGump( DuelPoints duelPoints ) : base( 200, 00 ) { this.Closable=true; this.Disposable=true; this.Dragable=true; this.Resizable=false; this.AddPage(0); this.AddBackground(36, 25, 402, 480, 3500); this.AddButton(401, 46, 3, 4, (int)Buttons.closeBtn, GumpButtonType.Reply, 0); this.AddLabel( 105, 43, 36, @"Onsite Duel System Player Duel Information" ); this.AddLabel( 105, 42, 36, @"Onsite Duel System Player Duel Information" ); this.AddLabel( 168, 91, 36, @"Wins:" ); this.AddLabel( 168, 90, 36, @"Wins:" ); this.AddLabel( 122, 69, 36, @"Player Name: " + duelPoints.Mobile.Name ); this.AddLabel( 122, 68, 36, @"Player Name: " + duelPoints.Mobile.Name ); this.AddLabel( 163, 189, 36, @"Loses:" ); this.AddLabel( 163, 188, 36, @"Loses:" ); this.AddLabel( 81, 289, 36, @"Quickest Duel Time:" ); this.AddLabel( 81, 288, 36, @"Quickest Duel Time:" ); this.AddLabel( 87, 383, 36, @"Longest Duel Time:" ); this.AddLabel( 87, 382, 36, @"Longest Duel Time:" ); this.AddHtml(206, 91, 215, 93, GetWins( duelPoints ), (bool)true, (bool)true); this.AddHtml(206, 189, 215, 93, GetLoses( duelPoints ), (bool)true, (bool)true); this.AddHtml(206, 287, 215, 93, GetQuickestTimes(duelPoints), (bool)true, (bool)true); this.AddHtml(206, 385, 215, 93, GetLongestTimes(duelPoints), (bool)true, (bool)true); }
public DuelScoreBoardGump(int contestants) : base(200, 200) { m_Contestants = contestants; Closable = true; Disposable = true; Dragable = true; Resizable = false; AddPage(0); AddBackground(36, 25, 732, 375, 3500); AddButton(733, 46, 3, 4, (int)Buttons.CloseBtn, GumpButtonType.Reply, 0); AddLabel(292, 39, LabelHue, @"Onsite Duel System Top 10 Scoreboard"); AddLabel(292, 38, LabelHue, @"Onsite Duel System Top 10 Scoreboard"); AddLabel(104, 82, LabelHue, @"Name"); AddLabel(104, 81, LabelHue, @"Name"); AddLabel(207, 82, LabelHue, @"Wins"); AddLabel(207, 81, LabelHue, @"Wins"); AddLabel(270, 82, LabelHue, @"Loses"); AddLabel(270, 81, LabelHue, @"Loses"); AddLabel(343, 82, LabelHue, @"Longest Duel"); AddLabel(343, 81, LabelHue, @"Longest Duel"); AddLabel(476, 82, LabelHue, @"Quickest Duel"); AddLabel(476, 81, LabelHue, @"Quickest Duel"); AddLabel(590, 82, LabelHue, @"Total Wins"); AddLabel(590, 81, LabelHue, @"Total Wins"); AddLabel(674, 82, LabelHue, @"Total Loses"); AddLabel(674, 81, LabelHue, @"Total Loses"); string duelType = string.Format("Duel Type: {0}vs{0}", m_Contestants / 2); AddLabel(371, 60, LabelHue, duelType); AddLabel(371, 59, LabelHue, duelType); AddButton(291, 368, 5603, 5607, (int)Buttons.prevBtn, GumpButtonType.Reply, 0); AddButton(494, 368, 5601, 5605, (int)Buttons.nextBtn, GumpButtonType.Reply, 0); AddLabel(314, 366, LabelHue, @"Previous"); AddLabel(461, 366, LabelHue, @"Next"); // fill in the data try { IDictionaryEnumerator myEnum = DuelController.PointsTable.GetEnumerator(); while (myEnum.MoveNext()) { DuelPoints dp = (DuelPoints)myEnum.Value; m_DuelRankData.Add(new DuelRankData(m_Contestants / 2, dp.Mobile)); } List <DuelRankData> badEntries = new List <DuelRankData>(); foreach (DuelRankData d in m_DuelRankData) { if (!d.IsValid) { badEntries.Add(d); } } foreach (DuelRankData d in badEntries) { m_DuelRankData.Remove(d); } badEntries.Clear(); m_DuelRankData.Sort(new DuelRankData()); if (m_DuelRankData.Count > 0) { for (int i = 0; i < 10 && i < m_DuelRankData.Count; i++) { AddLine(i, m_DuelRankData[i]); } } else { AddLabel(319, 202, 53, "No data for this dueling class."); } } catch (Exception e) { AddLabel(200, 202, 53, "An error occured creating the scoreboard, please try again in a moment."); Console.WriteLine("Caught an exception creating Dueling scoreboard!"); Console.WriteLine(e.ToString()); } }