From 9c2ac2b8ea066f2f2d07137490ab20e0550f1d4e Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Sun, 3 May 2026 00:09:22 -0700 Subject: [PATCH] perf: Migrates New Guild System gumps from legacy Gump. (#2422) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Migrates the eight concrete New Guild System gumps (CreateGuild, GuildInfo, GuildMemberInfo, GuildRoster, GuildDiplomacy, WarDeclaration, GuildAdvancedSearch, GuildInvitationRequest) and three abstract bases (BaseGuildGump, BaseGuildListGump, OtherGuildInfo) from the legacy `Gump` class to `DynamicGump`. Layout work moves from constructor-side `AddX(...)` calls into `BuildLayout(ref DynamicGumpBuilder builder)` — the abstract `BaseGuildGump` now provides a `BuildContent` callout for shared tab-strip chrome, and `BaseGuildListGump` adds another `BuildListExtras` hook so subclasses can paint highlighted titles after the filter/sort/pagination chrome. The headline win is the **self-refresh pattern** on the list gumps and diplomacy advanced search. Previously each filter/sort/back/forward click allocated a brand new gump via `GetResentGump`. After migration, those handlers mutate `_filter`, `_startNumber`, `_comparer`, `_ascending`, or `_display` on the existing gump and call `from.SendGump(this)`, letting the singleton path in `NetStateGumps.Send` swap in the same instance with the new layout. The original list is preserved separately from the per-render filtered/sorted `_displayList`, so refreshes pick up the latest state without losing the source list. All guild gumps deal with per-instance dynamic strings (guild names, member names, war declarations, alliance names), which would defeat `StaticGump` caching per the cliloc rule, so every concrete subclass migrates to `DynamicGump`. `AllianceRosterGump` (in `Misc/Guild.cs`) is a `GuildDiplomacyGump` subclass and inherits the new behavior; its unused override and stored alliance reference were dropped along with the now-obsolete `GetResentGump` abstract. --- .../Guilds/New Guild System/AdvancedSearch.cs | 54 ++- .../Guilds/New Guild System/BaseGuildGump.cs | 79 +++-- .../New Guild System/BaseGuildListGump.cs | 189 +++++----- .../New Guild System/CreateGuildGump.cs | 52 +-- .../Guilds/New Guild System/DiplomacyGump.cs | 84 ++--- .../Guilds/New Guild System/GuildInfoGump.cs | 117 +++---- .../GuildInvitationRequest.cs | 57 ++- .../New Guild System/GuildMemberInfoGump.cs | 187 +++++----- .../New Guild System/GuildRosterGump.cs | 39 +-- .../Guilds/New Guild System/OtherGuildInfo.cs | 326 +++++++++--------- .../New Guild System/WarDeclarationGump.cs | 119 ++++--- Projects/UOContent/Misc/Guild.cs | 28 +- 12 files changed, 642 insertions(+), 689 deletions(-) diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/AdvancedSearch.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/AdvancedSearch.cs index 1f544881a..25f2a6779 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/AdvancedSearch.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/AdvancedSearch.cs @@ -8,55 +8,53 @@ namespace Server.Guilds public class GuildAdvancedSearchGump : BaseGuildGump { - private readonly SearchSelectionCallback m_Callback; - private readonly GuildDisplayType m_Display; + private readonly SearchSelectionCallback _callback; + private readonly GuildDisplayType _display; public GuildAdvancedSearchGump(PlayerMobile pm, Guild g, GuildDisplayType display, SearchSelectionCallback callback) : base(pm, g) { - m_Callback = callback; - m_Display = display; - PopulateGump(); + _callback = callback; + _display = display; } - public override void PopulateGump() + protected override void BuildContent(ref DynamicGumpBuilder builder) { - base.PopulateGump(); + builder.AddHtmlLocalized(431, 43, 110, 26, 1062978, 0xF); // Diplomacy - AddHtmlLocalized(431, 43, 110, 26, 1062978, 0xF); // Diplomacy + builder.AddHtmlLocalized(65, 80, 480, 26, 1063124, 0xF, true); // Advanced Search Options - AddHtmlLocalized(65, 80, 480, 26, 1063124, 0xF, true); // Advanced Search Options - - AddHtmlLocalized( + // Showing All Guilds/w/Relation/Waiting Relation + builder.AddHtmlLocalized( 65, 110, 480, 26, - 1063136 + (int)m_Display, + 1063136 + (int)_display, 0xF - ); // Showing All Guilds/w/Relation/Waiting Relation + ); - AddGroup(1); - AddRadio(75, 140, 0xD2, 0xD3, false, 2); - AddHtmlLocalized(105, 140, 200, 26, 1063006, 0x0); // Show Guilds with Relationship - AddRadio(75, 170, 0xD2, 0xD3, false, 1); - AddHtmlLocalized(105, 170, 200, 26, 1063005, 0x0); // Show Guilds Awaiting Action - AddRadio(75, 200, 0xD2, 0xD3, false, 0); - AddHtmlLocalized(105, 200, 200, 26, 1063007, 0x0); // Show All Guilds + builder.AddGroup(1); + builder.AddRadio(75, 140, 0xD2, 0xD3, false, 2); + builder.AddHtmlLocalized(105, 140, 200, 26, 1063006, 0x0); // Show Guilds with Relationship + builder.AddRadio(75, 170, 0xD2, 0xD3, false, 1); + builder.AddHtmlLocalized(105, 170, 200, 26, 1063005, 0x0); // Show Guilds Awaiting Action + builder.AddRadio(75, 200, 0xD2, 0xD3, false, 0); + builder.AddHtmlLocalized(105, 200, 200, 26, 1063007, 0x0); // Show All Guilds - AddBackground(450, 370, 100, 26, 0x2486); - AddButton(455, 375, 0x845, 0x846, 5); - AddHtmlLocalized(480, 373, 60, 26, 1006044, 0x0); // OK - AddBackground(340, 370, 100, 26, 0x2486); - AddButton(345, 375, 0x845, 0x846, 0); - AddHtmlLocalized(370, 373, 60, 26, 1006045, 0x0); // Cancel + builder.AddBackground(450, 370, 100, 26, 0x2486); + builder.AddButton(455, 375, 0x845, 0x846, 5); + builder.AddHtmlLocalized(480, 373, 60, 26, 1006044, 0x0); // OK + builder.AddBackground(340, 370, 100, 26, 0x2486); + builder.AddButton(345, 375, 0x845, 0x846, 0); + builder.AddHtmlLocalized(370, 373, 60, 26, 1006045, 0x0); // Cancel } public override void OnResponse(NetState sender, in RelayInfo info) { base.OnResponse(sender, info); - if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, guild)) + if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, Guild)) { return; } @@ -68,7 +66,7 @@ namespace Server.Guilds if (info.IsSwitched(i)) { var display = (GuildDisplayType)i; - m_Callback(display); + _callback(display); break; } } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/BaseGuildGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/BaseGuildGump.cs index 9aa1b5152..44c33e0f0 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/BaseGuildGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/BaseGuildGump.cs @@ -6,39 +6,49 @@ using Server.Network; namespace Server.Guilds { - public abstract class BaseGuildGump : Gump + public abstract class BaseGuildGump : DynamicGump { public override bool Singleton => true; - public BaseGuildGump(PlayerMobile pm, Guild g, int x = 10, int y = 10) : base(x, y) + protected BaseGuildGump(PlayerMobile pm, Guild g, int x = 10, int y = 10) : base(x, y) { - guild = g; - player = pm; + Guild = g; + Player = pm; } - protected Guild guild { get; } + protected Guild Guild { get; } - protected PlayerMobile player { get; } + protected PlayerMobile Player { get; } - // There's prolly a way to have all the vars set of inherited classes before something is called in the Ctor... but... I can't think of it right now, and I can't use Timer.DelayCall here :< + // Subclasses that draw their own background/layout (e.g. OtherGuildInfo, + // WarDeclarationGump, GuildMemberInfoGump) can opt out of the standard + // 600x440 frame and three-button tab strip drawn at the top of the gump. + protected virtual bool ShowTabStrip => true; - public virtual void PopulateGump() + protected override void BuildLayout(ref DynamicGumpBuilder builder) { - AddPage(0); + builder.AddPage(); - AddBackground(0, 0, 600, 440, 0x24AE); - AddBackground(66, 40, 150, 26, 0x2486); - AddButton(71, 45, 0x845, 0x846, 1); - AddHtmlLocalized(96, 43, 110, 26, 1063014, 0x0); // My Guild - AddBackground(236, 40, 150, 26, 0x2486); - AddButton(241, 45, 0x845, 0x846, 2); - AddHtmlLocalized(266, 43, 110, 26, 1062974, 0x0); // Guild Roster - AddBackground(401, 40, 150, 26, 0x2486); - AddButton(406, 45, 0x845, 0x846, 3); - AddHtmlLocalized(431, 43, 110, 26, 1062978, 0x0); // Diplomacy - AddPage(1); + if (ShowTabStrip) + { + builder.AddBackground(0, 0, 600, 440, 0x24AE); + builder.AddBackground(66, 40, 150, 26, 0x2486); + builder.AddButton(71, 45, 0x845, 0x846, 1); + builder.AddHtmlLocalized(96, 43, 110, 26, 1063014, 0x0); // My Guild + builder.AddBackground(236, 40, 150, 26, 0x2486); + builder.AddButton(241, 45, 0x845, 0x846, 2); + builder.AddHtmlLocalized(266, 43, 110, 26, 1062974, 0x0); // Guild Roster + builder.AddBackground(401, 40, 150, 26, 0x2486); + builder.AddButton(406, 45, 0x845, 0x846, 3); + builder.AddHtmlLocalized(431, 43, 110, 26, 1062978, 0x0); // Diplomacy + builder.AddPage(1); + } + + BuildContent(ref builder); } + protected abstract void BuildContent(ref DynamicGumpBuilder builder); + public override void OnResponse(NetState sender, in RelayInfo info) { if (sender.Mobile is not PlayerMobile pm) @@ -46,7 +56,7 @@ namespace Server.Guilds return; } - if (!IsMember(pm, guild)) + if (!IsMember(pm, Guild)) { return; } @@ -55,29 +65,27 @@ namespace Server.Guilds { case 1: { - pm.SendGump(new GuildInfoGump(pm, guild)); + pm.SendGump(new GuildInfoGump(pm, Guild)); break; } case 2: { - pm.SendGump(new GuildRosterGump(pm, guild)); + pm.SendGump(new GuildRosterGump(pm, Guild)); break; } case 3: { - pm.SendGump(new GuildDiplomacyGump(pm, guild)); + pm.SendGump(new GuildDiplomacyGump(pm, Guild)); break; } } } public static bool IsLeader(Mobile m, Guild g) => - !(m.Deleted || g.Disbanded || m is not PlayerMobile || - m.AccessLevel < AccessLevel.GameMaster && g.Leader != m); + !(m.Deleted || g.Disbanded || m is not PlayerMobile || m.AccessLevel < AccessLevel.GameMaster && g.Leader != m); public static bool IsMember(Mobile m, Guild g) => - !(m.Deleted || g.Disbanded || m is not PlayerMobile || - m.AccessLevel < AccessLevel.GameMaster && !g.IsMember(m)); + !(m.Deleted || g.Disbanded || m is not PlayerMobile || m.AccessLevel < AccessLevel.GameMaster && !g.IsMember(m)); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool CheckProfanity(string s, int maxLength = 50) => @@ -94,15 +102,24 @@ namespace Server.Guilds ProfanityProtection.DisallowedSearchValues ); - public void AddHtmlText(int x, int y, int width, int height, TextDefinition text, bool back, bool scroll) + protected static void AddHtmlText( + ref DynamicGumpBuilder builder, + int x, + int y, + int width, + int height, + TextDefinition text, + bool back, + bool scroll + ) { if (text?.Number > 0) { - AddHtmlLocalized(x, y, width, height, text.Number, back, scroll); + builder.AddHtmlLocalized(x, y, width, height, text.Number, back, scroll); } else if (text?.String != null) { - AddHtml(x, y, width, height, text.String, back, scroll); + builder.AddHtml(x, y, width, height, text.String, background: back, scrollbar: scroll); } } } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/BaseGuildListGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/BaseGuildListGump.cs index 35af040b7..c8c122a4f 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/BaseGuildListGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/BaseGuildListGump.cs @@ -9,137 +9,146 @@ namespace Server.Guilds public abstract class BaseGuildListGump : BaseGuildGump { private const int itemsPerPage = 8; - private readonly IComparer m_Comparer; - private readonly InfoField[] m_Fields; - private readonly string m_Filter; - private bool m_Ascending; - private List m_List; - private int m_StartNumber; - public BaseGuildListGump( + private readonly InfoField[] _fields; + private readonly List _originalList; + private List _displayList; + private IComparer _comparer; + private bool _ascending; + private string _filter; + private int _startNumber; + + protected BaseGuildListGump( PlayerMobile pm, Guild g, List list, IComparer currentComparer, bool ascending, string filter, int startNumber, InfoField[] fields - ) - : base(pm, g) + ) : base(pm, g) { - m_Filter = filter.Trim(); - - m_Comparer = currentComparer; - m_Fields = fields; - m_Ascending = ascending; - m_StartNumber = startNumber; - m_List = list; + _filter = filter.Trim(); + _comparer = currentComparer; + _fields = fields; + _ascending = ascending; + _startNumber = startNumber; + _originalList = list; } - public virtual bool WillFilter => m_Filter.Length > 0; + public virtual bool WillFilter => _filter.Length > 0; - public override void PopulateGump() + protected override void BuildContent(ref DynamicGumpBuilder builder) { - base.PopulateGump(); - - var list = m_List; + // Build the filtered/sorted display list per-render so refreshes pick up + // the latest filter/sort/pagination state. if (WillFilter) { - m_List = []; - for (var i = 0; i < list.Count; i++) + var filtered = new List(_originalList.Count); + for (var i = 0; i < _originalList.Count; i++) { - if (!IsFiltered(list[i], m_Filter)) + if (!IsFiltered(_originalList[i], _filter)) { - m_List.Add(list[i]); + filtered.Add(_originalList[i]); } } + + _displayList = filtered; } else { - m_List = new List(list); + _displayList = new List(_originalList); } - m_List.Sort(m_Comparer); - m_StartNumber = Math.Max(Math.Min(m_StartNumber, m_List.Count - 1), 0); + _displayList.Sort(_comparer); + _startNumber = Math.Max(Math.Min(_startNumber, _displayList.Count - 1), 0); - AddBackground(130, 75, 385, 30, 0xBB8); - AddTextEntry(135, 80, 375, 30, 0x481, 1, m_Filter); - AddButton(520, 75, 0x867, 0x868, 5); // Filter Button + builder.AddBackground(130, 75, 385, 30, 0xBB8); + builder.AddTextEntry(135, 80, 375, 30, 0x481, 1, _filter); + builder.AddButton(520, 75, 0x867, 0x868, 5); // Filter Button var width = 0; - for (var i = 0; i < m_Fields.Length; i++) + for (var i = 0; i < _fields.Length; i++) { - var f = m_Fields[i]; + var f = _fields[i]; - AddImageTiled(65 + width, 110, f.Width + 10, 26, 0xA40); - AddImageTiled(67 + width, 112, f.Width + 6, 22, 0xBBC); - AddHtmlText(70 + width, 113, f.Width, 20, f.Name, false, false); + builder.AddImageTiled(65 + width, 110, f.Width + 10, 26, 0xA40); + builder.AddImageTiled(67 + width, 112, f.Width + 6, 22, 0xBBC); + AddHtmlText(ref builder, 70 + width, 113, f.Width, 20, f.Name, false, false); - var isComparer = m_Fields[i].Comparer.GetType() == m_Comparer.GetType(); + var isComparer = _fields[i].Comparer.GetType() == _comparer.GetType(); - var ButtonID = isComparer ? m_Ascending ? 0x983 : 0x985 : 0x2716; + var buttonId = isComparer ? _ascending ? 0x983 : 0x985 : 0x2716; - AddButton(59 + width + f.Width, 117, ButtonID, ButtonID + (isComparer ? 1 : 0), 100 + i); + builder.AddButton(59 + width + f.Width, 117, buttonId, buttonId + (isComparer ? 1 : 0), 100 + i); width += f.Width + 12; } - if (m_StartNumber <= 0) + if (_startNumber <= 0) { - AddButton(65, 80, 0x15E3, 0x15E7, 0, GumpButtonType.Page); + builder.AddButton(65, 80, 0x15E3, 0x15E7, 0, GumpButtonType.Page); } else { - AddButton(65, 80, 0x15E3, 0x15E7, 6); // Back + builder.AddButton(65, 80, 0x15E3, 0x15E7, 6); // Back } - if (m_StartNumber + itemsPerPage > m_List.Count) + if (_startNumber + itemsPerPage > _displayList.Count) { - AddButton(95, 80, 0x15E1, 0x15E5, 0, GumpButtonType.Page); + builder.AddButton(95, 80, 0x15E1, 0x15E5, 0, GumpButtonType.Page); } else { - AddButton(95, 80, 0x15E1, 0x15E5, 7); // Forward + builder.AddButton(95, 80, 0x15E1, 0x15E5, 7); // Forward } var itemNumber = 0; - if (m_Ascending) + if (_ascending) { - for (var i = m_StartNumber; i < m_StartNumber + itemsPerPage && i < m_List.Count; i++) + for (var i = _startNumber; i < _startNumber + itemsPerPage && i < _displayList.Count; i++) { - DrawEntry(m_List[i], i, itemNumber++); + DrawEntry(ref builder, _displayList[i], i, itemNumber++); } } else // descending, go from bottom of list to the top { - for (var i = m_List.Count - 1 - m_StartNumber; - i >= 0 && i >= m_List.Count - itemsPerPage - m_StartNumber; + for (var i = _displayList.Count - 1 - _startNumber; + i >= 0 && i >= _displayList.Count - itemsPerPage - _startNumber; i--) { - DrawEntry(m_List[i], i, itemNumber++); + DrawEntry(ref builder, _displayList[i], i, itemNumber++); } } - DrawEndingEntry(itemNumber); + DrawEndingEntry(ref builder, itemNumber); + + BuildListExtras(ref builder); } - public virtual void DrawEndingEntry(int itemNumber) + protected virtual void BuildListExtras(ref DynamicGumpBuilder builder) + { + } + + protected virtual void DrawEndingEntry(ref DynamicGumpBuilder builder, int itemNumber) { } public virtual bool HasRelationship(T o) => false; - public virtual void DrawEntry(T o, int index, int itemNumber) + protected virtual void DrawEntry(ref DynamicGumpBuilder builder, T o, int index, int itemNumber) { var width = 0; - for (var j = 0; j < m_Fields.Length; j++) + var values = GetValuesFor(o, _fields.Length); + for (var j = 0; j < _fields.Length; j++) { - var f = m_Fields[j]; + var f = _fields[j]; - AddImageTiled(65 + width, 138 + itemNumber * 28, f.Width + 10, 26, 0xA40); - AddImageTiled(67 + width, 140 + itemNumber * 28, f.Width + 6, 22, 0xBBC); + builder.AddImageTiled(65 + width, 138 + itemNumber * 28, f.Width + 10, 26, 0xA40); + builder.AddImageTiled(67 + width, 140 + itemNumber * 28, f.Width + 6, 22, 0xBBC); AddHtmlText( + ref builder, 70 + width, 141 + itemNumber * 28, f.Width, 20, - GetValuesFor(o, m_Fields.Length)[j], + values[j], false, false ); @@ -149,22 +158,23 @@ namespace Server.Guilds if (HasRelationship(o)) { - AddButton(40, 143 + itemNumber * 28, 0x8AF, 0x8AF, 200 + index); // Info Button + builder.AddButton(40, 143 + itemNumber * 28, 0x8AF, 0x8AF, 200 + index); // Info Button } else { - AddButton(40, 143 + itemNumber * 28, 0x4B9, 0x4BA, 200 + index); // Info Button + builder.AddButton(40, 143 + itemNumber * 28, 0x4B9, 0x4BA, 200 + index); // Info Button } } protected abstract TextDefinition[] GetValuesFor(T o, int aryLength); + protected abstract bool IsFiltered(T o, string filter); public override void OnResponse(NetState sender, in RelayInfo info) { base.OnResponse(sender, info); - if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, guild)) + if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, Guild)) { return; } @@ -176,52 +186,59 @@ namespace Server.Guilds case 5: // Filter { var t = info.GetTextEntry(1); - pm.SendGump(GetResentGump(player, guild, m_Comparer, m_Ascending, t ?? "", 0)); - break; + _filter = (t ?? "").Trim(); + _startNumber = 0; + pm.SendGump(this); + return; } case 6: // Back { - pm.SendGump( - GetResentGump(player, guild, m_Comparer, m_Ascending, m_Filter, m_StartNumber - itemsPerPage) - ); - break; + _startNumber -= itemsPerPage; + pm.SendGump(this); + return; } case 7: // Forward { - pm.SendGump( - GetResentGump(player, guild, m_Comparer, m_Ascending, m_Filter, m_StartNumber + itemsPerPage) - ); - break; + _startNumber += itemsPerPage; + pm.SendGump(this); + return; } } - if (id >= 100 && id < 100 + m_Fields.Length) + if (id >= 100 && id < 100 + _fields.Length) { - var comparer = m_Fields[id - 100].Comparer; + var comparer = _fields[id - 100].Comparer; - if (m_Comparer.GetType() == comparer.GetType()) + if (_comparer.GetType() == comparer.GetType()) { - m_Ascending = !m_Ascending; + _ascending = !_ascending; + } + else + { + _comparer = comparer; } - pm.SendGump(GetResentGump(player, guild, comparer, m_Ascending, m_Filter, 0)); + _startNumber = 0; + pm.SendGump(this); } - else if (id >= 200 && id < 200 + m_List.Count) + else if (id >= 200) { - pm.SendGump(GetObjectInfoGump(player, guild, m_List[id - 200])); + // The display list is rebuilt every render, so we use the most recent + // build to resolve the clicked entry. + var list = _displayList ?? _originalList; + var idx = id - 200; + if (idx < list.Count) + { + pm.SendGump(GetObjectInfoGump(Player, Guild, list[idx])); + } } } - public abstract Gump GetResentGump( - PlayerMobile pm, Guild g, IComparer comparer, bool ascending, string filter, - int startNumber - ); - - public abstract Gump GetObjectInfoGump(PlayerMobile pm, Guild g, T o); + public abstract BaseGump GetObjectInfoGump(PlayerMobile pm, Guild g, T o); public void ResendGump() { - player.SendGump(GetResentGump(player, guild, m_Comparer, m_Ascending, m_Filter, m_StartNumber)); + Player.SendGump(this); } } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/CreateGuildGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/CreateGuildGump.cs index 0029f8b93..21d49b365 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/CreateGuildGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/CreateGuildGump.cs @@ -4,43 +4,55 @@ using Server.Network; namespace Server.Guilds { - public class CreateGuildGump : Gump + public class CreateGuildGump : DynamicGump { + private readonly PlayerMobile _player; + private readonly string _guildName; + private readonly string _guildAbbrev; + public override bool Singleton => true; public CreateGuildGump(PlayerMobile pm, string guildName = "Guild Name", string guildAbbrev = "") : base(10, 10) { + _player = pm; + _guildName = guildName; + _guildAbbrev = guildAbbrev; + pm.CloseGump(); + } - AddPage(0); + protected override void BuildLayout(ref DynamicGumpBuilder builder) + { + builder.AddPage(); - AddBackground(0, 0, 500, 300, 0x2422); - AddHtmlLocalized(25, 20, 450, 25, 1062939, 0x0, true); //
GUILD MENU
+ builder.AddBackground(0, 0, 500, 300, 0x2422); + builder.AddHtmlLocalized(25, 20, 450, 25, 1062939, 0x0, true); //
GUILD MENU
- // As you are not a member of any guild, you can create your own by providing a unique guild name and paying the standard guild registration fee. - AddHtmlLocalized(25, 60, 450, 60, 1062940, 0x0); + // As you are not a member of any guild, you can create your own by providing a unique guild name and + // paying the standard guild registration fee. + builder.AddHtmlLocalized(25, 60, 450, 60, 1062940, 0x0); - AddHtmlLocalized(25, 135, 120, 25, 1062941, 0x0); // Registration Fee: - AddLabel(155, 135, 0x481, Guild.RegistrationFee.ToString()); - AddHtmlLocalized(25, 165, 120, 25, 1011140, 0x0); // Enter Guild Name: - AddBackground(155, 160, 320, 26, 0xBB8); - AddTextEntry(160, 163, 315, 21, 0x481, 5, guildName); - AddHtmlLocalized(25, 191, 120, 26, 1063035, 0x0); // Abbreviation: - AddBackground(155, 186, 320, 26, 0xBB8); - AddTextEntry(160, 189, 315, 21, 0x481, 6, guildAbbrev); - AddButton(415, 217, 0xF7, 0xF8, 1); - AddButton(345, 217, 0xF2, 0xF1, 0); + builder.AddHtmlLocalized(25, 135, 120, 25, 1062941, 0x0); // Registration Fee: + builder.AddLabel(155, 135, 0x481, $"{Guild.RegistrationFee}"); + builder.AddHtmlLocalized(25, 165, 120, 25, 1011140, 0x0); // Enter Guild Name: + builder.AddBackground(155, 160, 320, 26, 0xBB8); + builder.AddTextEntry(160, 163, 315, 21, 0x481, 5, _guildName); + builder.AddHtmlLocalized(25, 191, 120, 26, 1063035, 0x0); // Abbreviation: + builder.AddBackground(155, 186, 320, 26, 0xBB8); + builder.AddTextEntry(160, 189, 315, 21, 0x481, 6, _guildAbbrev); + builder.AddButton(415, 217, 0xF7, 0xF8, 1); + builder.AddButton(345, 217, 0xF2, 0xF1, 0); - if (pm.AcceptGuildInvites) + if (_player.AcceptGuildInvites) { - AddButton(20, 260, 0xD2, 0xD3, 2); + builder.AddButton(20, 260, 0xD2, 0xD3, 2); } else { - AddButton(20, 260, 0xD3, 0xD2, 2); + builder.AddButton(20, 260, 0xD3, 0xD2, 2); } - AddHtmlLocalized(45, 260, 200, 30, 1062943, 0x0); // Ignore Guild Invites + builder.AddHtmlLocalized(45, 260, 200, 30, 1062943, 0x0); // Ignore Guild Invites } public override void OnResponse(NetState sender, in RelayInfo info) diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/DiplomacyGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/DiplomacyGump.cs index 8fafc228d..2fd3cec7e 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/DiplomacyGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/DiplomacyGump.cs @@ -14,8 +14,8 @@ namespace Server.Guilds public class GuildDiplomacyGump : BaseGuildListGump { - private readonly TextDefinition m_LowerText; - private GuildDisplayType m_Display; + private readonly TextDefinition _lowerText; + private GuildDisplayType _display; public GuildDiplomacyGump(PlayerMobile pm, Guild g) : this( @@ -85,9 +85,8 @@ namespace Server.Guilds ] ) { - m_Display = display; - m_LowerText = lowerText; - PopulateGump(); + _display = display; + _lowerText = lowerText; } protected virtual bool AllowAdvancedSearch => true; @@ -96,7 +95,7 @@ namespace Server.Guilds { get { - if (m_Display == GuildDisplayType.All) + if (_display == GuildDisplayType.All) { return base.WillFilter; } @@ -105,25 +104,23 @@ namespace Server.Guilds } } - public override void PopulateGump() + protected override void BuildListExtras(ref DynamicGumpBuilder builder) { - base.PopulateGump(); - - AddHtmlLocalized(431, 43, 110, 26, 1062978, 0xF); // Diplomacy + builder.AddHtmlLocalized(431, 43, 110, 26, 1062978, 0xF); // Diplomacy } protected override TextDefinition[] GetValuesFor(Guild g, int aryLength) { var defs = new TextDefinition[aryLength]; - defs[0] = g == guild ? g.Name.Color(0x006600) : g.Name; + defs[0] = g == Guild ? g.Name.Color(0x006600) : g.Name; defs[1] = g.Abbreviation; defs[2] = 3000085; // Peace - if (guild.IsAlly(g)) + if (Guild.IsAlly(g)) { - if (guild.Alliance.Leader == g) + if (Guild.Alliance.Leader == g) { defs[2] = 1063237; // Alliance Leader } @@ -132,7 +129,7 @@ namespace Server.Guilds defs[2] = 1062964; // Ally } } - else if (guild.IsWar(g)) + else if (Guild.IsWar(g)) { defs[2] = 3000086; // War } @@ -142,17 +139,17 @@ namespace Server.Guilds public override bool HasRelationship(Guild g) { - if (g == guild) + if (g == Guild) { return false; } - if (guild.FindPendingWar(g) != null) + if (Guild.FindPendingWar(g) != null) { return true; } - var alliance = guild.Alliance; + var alliance = Guild.Alliance; if (alliance != null) { @@ -160,7 +157,7 @@ namespace Server.Guilds if (leader != null) { - if (guild == leader && alliance.IsPendingMember(g) || g == leader && alliance.IsPendingMember(guild)) + if (Guild == leader && alliance.IsPendingMember(g) || g == leader && alliance.IsPendingMember(Guild)) { return true; } @@ -174,25 +171,22 @@ namespace Server.Guilds return false; } - public override void DrawEndingEntry(int itemNumber) + protected override void DrawEndingEntry(ref DynamicGumpBuilder builder, int itemNumber) { - // AddHtmlLocalized( 66, 153 + itemNumber * 28, 280, 26, 1063136 + (int)m_Display, 0xF, false, false ); // Showing All Guilds/Awaiting Action/ w/Relation Ship - // AddHtmlText( 66, 153 + itemNumber * 28, 280, 26, m_LowerText, false, false ); - - if (m_LowerText?.Number > 0) + if (_lowerText?.Number > 0) { - AddHtmlLocalized(66, 153 + itemNumber * 28, 280, 26, m_LowerText.Number, 0xF); + builder.AddHtmlLocalized(66, 153 + itemNumber * 28, 280, 26, _lowerText.Number, 0xF); } - else if (m_LowerText?.String != null) + else if (_lowerText?.String != null) { - AddHtml(66, 153 + itemNumber * 28, 280, 26, m_LowerText.String.Color(0x99)); + builder.AddHtml(66, 153 + itemNumber * 28, 280, 26, _lowerText.String.Color(0x99)); } if (AllowAdvancedSearch) { - AddBackground(350, 148 + itemNumber * 28, 200, 26, 0x2486); - AddButton(355, 153 + itemNumber * 28, 0x845, 0x846, 8); - AddHtmlLocalized(380, 151 + itemNumber * 28, 160, 26, 1063083, 0x0); // Advanced Search + builder.AddBackground(350, 148 + itemNumber * 28, 200, 26, 0x2486); + builder.AddButton(355, 153 + itemNumber * 28, 0x845, 0x846, 8); + builder.AddHtmlLocalized(380, 151 + itemNumber * 28, 160, 26, 1063083, 0x0); // Advanced Search } } @@ -203,12 +197,12 @@ namespace Server.Guilds return true; } - switch (m_Display) + switch (_display) { case GuildDisplayType.Relations: { // As per OSI, only the guild leader wars show up under the sorting by relation - return !(guild.FindActiveWar(g) != null || guild.IsAlly(g)); + return !(Guild.FindActiveWar(g) != null || Guild.IsAlly(g)); } case GuildDisplayType.AwaitingAction: { @@ -219,15 +213,9 @@ namespace Server.Guilds return !(g.Name.InsensitiveContains(filter) || g.Abbreviation.InsensitiveContains(filter)); } - public override Gump GetResentGump( - PlayerMobile pm, Guild g, IComparer comparer, bool ascending, - string filter, int startNumber - ) => - new GuildDiplomacyGump(pm, g, comparer, ascending, filter, startNumber, m_Display); - - public override Gump GetObjectInfoGump(PlayerMobile pm, Guild g, Guild o) + public override BaseGump GetObjectInfoGump(PlayerMobile pm, Guild g, Guild o) { - if (guild == o) + if (Guild == o) { return new GuildInfoGump(pm, g); } @@ -239,20 +227,20 @@ namespace Server.Guilds { base.OnResponse(sender, info); - if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, guild)) + if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, Guild)) { return; } if (AllowAdvancedSearch && info.ButtonID == 8) { - pm.SendGump(new GuildAdvancedSearchGump(pm, guild, m_Display, AdvancedSearch_Callback)); + pm.SendGump(new GuildAdvancedSearchGump(pm, Guild, _display, AdvancedSearch_Callback)); } } public void AdvancedSearch_Callback(GuildDisplayType display) { - m_Display = display; + _display = display; ResendGump(); } @@ -283,9 +271,9 @@ namespace Server.Guilds private class StatusComparer : IComparer { - private readonly Guild m_Guild; + private readonly Guild _guild; - public StatusComparer(Guild g) => m_Guild = g; + public StatusComparer(Guild g) => _guild = g; public int Compare(Guild x, Guild y) { @@ -307,20 +295,20 @@ namespace Server.Guilds var aStatus = GuildCompareStatus.Peace; var bStatus = GuildCompareStatus.Peace; - if (m_Guild.IsAlly(x)) + if (_guild.IsAlly(x)) { aStatus = GuildCompareStatus.Ally; } - else if (m_Guild.IsWar(x)) + else if (_guild.IsWar(x)) { aStatus = GuildCompareStatus.War; } - if (m_Guild.IsAlly(y)) + if (_guild.IsAlly(y)) { bStatus = GuildCompareStatus.Ally; } - else if (m_Guild.IsWar(y)) + else if (_guild.IsWar(y)) { bStatus = GuildCompareStatus.War; } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildInfoGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildInfoGump.cs index 8ef82dda7..35bd7f8f9 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildInfoGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildInfoGump.cs @@ -8,81 +8,76 @@ namespace Server.Guilds { public class GuildInfoGump : BaseGuildGump { - private readonly bool m_IsResigning; + private readonly bool _isResigning; - public GuildInfoGump(PlayerMobile pm, Guild g, bool isResigning = false) : base(pm, g) + public GuildInfoGump(PlayerMobile pm, Guild g, bool isResigning = false) : base(pm, g) => _isResigning = isResigning; + + protected override void BuildContent(ref DynamicGumpBuilder builder) { - m_IsResigning = isResigning; - PopulateGump(); - } + var isLeader = IsLeader(Player, Guild); - public override void PopulateGump() - { - var isLeader = IsLeader(player, guild); - base.PopulateGump(); + builder.AddHtmlLocalized(96, 43, 110, 26, 1063014, 0xF); // My Guild - AddHtmlLocalized(96, 43, 110, 26, 1063014, 0xF); // My Guild + builder.AddImageTiled(65, 80, 160, 26, 0xA40); + builder.AddImageTiled(67, 82, 156, 22, 0xBBC); + builder.AddHtmlLocalized(70, 83, 150, 20, 1062954, 0x0); // Guild Name + builder.AddHtml(233, 84, 320, 26, Guild.Name); - AddImageTiled(65, 80, 160, 26, 0xA40); - AddImageTiled(67, 82, 156, 22, 0xBBC); - AddHtmlLocalized(70, 83, 150, 20, 1062954, 0x0); // Guild Name - AddHtml(233, 84, 320, 26, guild.Name); + builder.AddImageTiled(65, 114, 160, 26, 0xA40); + builder.AddImageTiled(67, 116, 156, 22, 0xBBC); + builder.AddHtmlLocalized(70, 117, 150, 20, 1063025, 0x0); // Alliance - AddImageTiled(65, 114, 160, 26, 0xA40); - AddImageTiled(67, 116, 156, 22, 0xBBC); - AddHtmlLocalized(70, 117, 150, 20, 1063025, 0x0); // Alliance - - if (guild.Alliance?.IsMember(guild) == true) + if (Guild.Alliance?.IsMember(Guild) == true) { - AddHtml(233, 118, 320, 26, guild.Alliance.Name); - AddButton(40, 120, 0x4B9, 0x4BA, 6); // Alliance Roster + builder.AddHtml(233, 118, 320, 26, Guild.Alliance.Name); + builder.AddButton(40, 120, 0x4B9, 0x4BA, 6); // Alliance Roster } if (Guild.OrderChaos && isLeader) { - AddButton(40, 154, 0x4B9, 0x4BA, 100); // Guild Faction + builder.AddButton(40, 154, 0x4B9, 0x4BA, 100); // Guild Faction } - AddImageTiled(65, 148, 160, 26, 0xA40); - AddImageTiled(67, 150, 156, 22, 0xBBC); - AddHtmlLocalized(70, 151, 150, 20, 1063084, 0x0); // Guild Faction + builder.AddImageTiled(65, 148, 160, 26, 0xA40); + builder.AddImageTiled(67, 150, 156, 22, 0xBBC); + builder.AddHtmlLocalized(70, 151, 150, 20, 1063084, 0x0); // Guild Faction GuildType gt; Faction f; - if ((gt = guild.Type) != GuildType.Regular) + if ((gt = Guild.Type) != GuildType.Regular) { - AddHtml(233, 152, 320, 26, gt.ToString()); + builder.AddHtml(233, 152, 320, 26, $"{gt}"); } - else if ((f = Faction.Find(guild.Leader)) != null) + else if ((f = Faction.Find(Guild.Leader)) != null) { - AddHtml(233, 152, 320, 26, f.ToString()); + builder.AddHtml(233, 152, 320, 26, $"{f}"); } - AddImageTiled(65, 196, 480, 4, 0x238D); + builder.AddImageTiled(65, 196, 480, 4, 0x238D); - var s = guild.Charter.DefaultIfNullOrEmpty("The guild leader has not yet set the guild charter."); + var s = Guild.Charter.DefaultIfNullOrEmpty("The guild leader has not yet set the guild charter."); - AddHtml(65, 216, 480, 80, s, true, true); + builder.AddHtml(65, 216, 480, 80, s, background: true, scrollbar: true); if (isLeader) { - AddButton(40, 251, 0x4B9, 0x4BA, 4); // Charter Edit button + builder.AddButton(40, 251, 0x4B9, 0x4BA, 4); // Charter Edit button } - s = guild.Website.DefaultIfNullOrEmpty("Guild website not yet set."); + s = Guild.Website.DefaultIfNullOrEmpty("Guild website not yet set."); - AddHtml(65, 306, 480, 30, s, true); + builder.AddHtml(65, 306, 480, 30, s, background: true); if (isLeader) { - AddButton(40, 313, 0x4B9, 0x4BA, 5); // Website Edit button + builder.AddButton(40, 313, 0x4B9, 0x4BA, 5); // Website Edit button } - AddCheck(65, 370, 0xD2, 0xD3, player.DisplayGuildTitle, 0); - AddHtmlLocalized(95, 370, 150, 26, 1063085, 0x0); // Show Guild Title - AddBackground(450, 370, 100, 26, 0x2486); + builder.AddCheckbox(65, 370, 0xD2, 0xD3, Player.DisplayGuildTitle, 0); + builder.AddHtmlLocalized(95, 370, 150, 26, 1063085, 0x0); // Show Guild Title + builder.AddBackground(450, 370, 100, 26, 0x2486); - AddButton(455, 375, 0x845, 0x846, 7); - AddHtmlLocalized(480, 373, 60, 26, 3006115, m_IsResigning ? 0x5000 : 0); // Resign + builder.AddButton(455, 375, 0x845, 0x846, 7); + builder.AddHtmlLocalized(480, 373, 60, 26, 3006115, _isResigning ? 0x5000 : 0); // Resign } public override void OnResponse(NetState sender, in RelayInfo info) @@ -91,7 +86,7 @@ namespace Server.Guilds var pm = (PlayerMobile)sender.Mobile; - if (!IsMember(pm, guild)) + if (!IsMember(pm, Guild)) { return; } @@ -103,27 +98,23 @@ namespace Server.Guilds // 1-3 handled by base.OnResponse case 4: { - if (IsLeader(pm, guild)) + if (IsLeader(pm, Guild)) { pm.SendLocalizedMessage(1013071); // Enter the new guild charter (50 characters max): - pm.BeginPrompt( - SetCharter_Callback, - true - ); // Have the same callback handle both canceling and deletion cause the 2nd callback would just get a text of "" + // Have the same callback handle both canceling and deletion cause the 2nd callback would + // just get a text of "" + pm.BeginPrompt(SetCharter_Callback, true); } break; } case 5: { - if (IsLeader(pm, guild)) + if (IsLeader(pm, Guild)) { pm.SendLocalizedMessage(1013072); // Enter the new website for the guild (50 characters max): - pm.BeginPrompt( - SetWebsite_Callback, - true - ); // Have the same callback handle both canceling and deletion cause the 2nd callback would just get a text of "" + pm.BeginPrompt(SetWebsite_Callback, true); } break; @@ -131,9 +122,9 @@ namespace Server.Guilds case 6: { // Alliance Roster - if (guild.Alliance?.IsMember(guild) == true) + if (Guild.Alliance?.IsMember(Guild) == true) { - pm.SendGump(new AllianceInfo.AllianceRosterGump(pm, guild, guild.Alliance)); + pm.SendGump(new AllianceInfo.AllianceRosterGump(pm, Guild, Guild.Alliance)); } break; @@ -141,14 +132,14 @@ namespace Server.Guilds case 7: { // Resign - if (!m_IsResigning) + if (!_isResigning) { pm.SendLocalizedMessage(1063332); // Are you sure you wish to resign from your guild? - pm.SendGump(new GuildInfoGump(pm, guild, true)); + pm.SendGump(new GuildInfoGump(pm, Guild, true)); } else { - guild.RemoveMember(pm, 1063411); // You resign from your guild. + Guild.RemoveMember(pm, 1063411); // You resign from your guild. } break; @@ -156,9 +147,9 @@ namespace Server.Guilds case 100: // Custom code to support Order/Chaos in the new guild system { // Guild Faction - if (Guild.OrderChaos && IsLeader(pm, guild)) + if (Guild.OrderChaos && IsLeader(pm, Guild)) { - GuildChangeTypeGump.DisplayTo(pm, guild); + GuildChangeTypeGump.DisplayTo(pm, Guild); } break; @@ -168,7 +159,7 @@ namespace Server.Guilds public void SetCharter_Callback(Mobile from, string text) { - if (!IsLeader(from, guild)) + if (!IsLeader(from, Guild)) { return; } @@ -181,14 +172,14 @@ namespace Server.Guilds } else { - guild.Charter = charter; + Guild.Charter = charter; from.SendLocalizedMessage(1070775); // You submit a new guild charter. } } public void SetWebsite_Callback(Mobile from, string text) { - if (!IsLeader(from, guild)) + if (!IsLeader(from, Guild)) { return; } @@ -201,7 +192,7 @@ namespace Server.Guilds } else { - guild.Website = site; + Guild.Website = site; from.SendLocalizedMessage(1070778); // You submit a new guild website. } } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildInvitationRequest.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildInvitationRequest.cs index 6c7922fd6..8fb342ff9 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildInvitationRequest.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildInvitationRequest.cs @@ -6,39 +6,30 @@ namespace Server.Guilds { public class GuildInvitationRequest : BaseGuildGump { - private readonly PlayerMobile m_Inviter; + private readonly PlayerMobile _inviter; public GuildInvitationRequest(PlayerMobile pm, Guild g, PlayerMobile inviter) : base(pm, g) { - m_Inviter = inviter; - - PopulateGump(); + _inviter = inviter; } - public override void PopulateGump() - { - AddPage(0); + protected override bool ShowTabStrip => false; - AddBackground(0, 0, 350, 170, 0x2422); - AddHtmlLocalized( - 25, - 20, - 300, - 45, - 1062946, - 0x0, - true - ); //
You have been invited to join a guild! (Warning: Accepting will make you attackable!)
- AddHtml(25, 75, 300, 25, $"
{guild.Name}
", true); - AddButton(265, 130, 0xF7, 0xF8, 1); - AddButton(195, 130, 0xF2, 0xF1, 0); - AddButton(20, 130, 0xD2, 0xD3, 2); - AddHtmlLocalized(45, 130, 150, 30, 1062943, 0x0); // Ignore Guild Invites + protected override void BuildContent(ref DynamicGumpBuilder builder) + { + builder.AddBackground(0, 0, 350, 170, 0x2422); + //
You have been invited to join a guild! (Warning: Accepting will make you attackable!)
+ builder.AddHtmlLocalized(25, 20, 300, 45, 1062946, 0x0, true); + builder.AddHtml(25, 75, 300, 25, $"
{Guild.Name}
", background: true); + builder.AddButton(265, 130, 0xF7, 0xF8, 1); + builder.AddButton(195, 130, 0xF2, 0xF1, 0); + builder.AddButton(20, 130, 0xD2, 0xD3, 2); + builder.AddHtmlLocalized(45, 130, 150, 30, 1062943, 0x0); // Ignore Guild Invites } public override void OnResponse(NetState sender, in RelayInfo info) { - if (guild.Disbanded || player.Guild != null) + if (Guild.Disbanded || Player.Guild != null) { return; } @@ -47,27 +38,23 @@ namespace Server.Guilds { case 0: { - m_Inviter.SendLocalizedMessage( - 1063250, - $"{player.Name}\t{guild.Name}" - ); // ~1_val~ has declined your invitation to join ~2_val~. + // ~1_val~ has declined your invitation to join ~2_val~. + _inviter.SendLocalizedMessage(1063250, $"{Player.Name}\t{Guild.Name}"); break; } case 1: { - guild.AddMember(player); - player.SendLocalizedMessage(1063056, guild.Name); // You have joined ~1_val~. - m_Inviter.SendLocalizedMessage( - 1063249, - $"{player.Name}\t{guild.Name}" - ); // ~1_val~ has accepted your invitation to join ~2_val~. + Guild.AddMember(Player); + Player.SendLocalizedMessage(1063056, Guild.Name); // You have joined ~1_val~. + // ~1_val~ has accepted your invitation to join ~2_val~. + _inviter.SendLocalizedMessage(1063249, $"{Player.Name}\t{Guild.Name}"); break; } case 2: { - player.AcceptGuildInvites = false; - player.SendLocalizedMessage(1070698); // You are now ignoring guild invitations. + Player.AcceptGuildInvites = false; + Player.SendLocalizedMessage(1070698); // You are now ignoring guild invitations. break; } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildMemberInfoGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildMemberInfoGump.cs index 960988946..b26755187 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildMemberInfoGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildMemberInfoGump.cs @@ -7,75 +7,74 @@ namespace Server.Guilds { public class GuildMemberInfoGump : BaseGuildGump { - private readonly PlayerMobile m_Member; - private readonly bool m_toKick; - private readonly bool m_ToLeader; + private readonly PlayerMobile _member; + private readonly bool _toKick; + private readonly bool _toLeader; public GuildMemberInfoGump( PlayerMobile pm, Guild g, PlayerMobile member, bool toKick, bool toPromoteToLeader ) : base(pm, g, 10, 40) { - m_ToLeader = toPromoteToLeader; - m_toKick = toKick; - m_Member = member; - PopulateGump(); + _toLeader = toPromoteToLeader; + _toKick = toKick; + _member = member; } - public override void PopulateGump() + protected override bool ShowTabStrip => false; + + protected override void BuildContent(ref DynamicGumpBuilder builder) { - AddPage(0); + builder.AddBackground(0, 0, 350, 255, 0x242C); + builder.AddHtmlLocalized(20, 15, 310, 26, 1063018, 0x0); //
Guild Member Information
+ builder.AddImageTiled(20, 40, 310, 2, 0x2711); - AddBackground(0, 0, 350, 255, 0x242C); - AddHtmlLocalized(20, 15, 310, 26, 1063018, 0x0); //
Guild Member Information
- AddImageTiled(20, 40, 310, 2, 0x2711); + builder.AddHtmlLocalized(20, 50, 150, 26, 1062955, 0x0, true); // Name + builder.AddHtml(180, 53, 150, 26, _member.Name); - AddHtmlLocalized(20, 50, 150, 26, 1062955, 0x0, true); // Name - AddHtml(180, 53, 150, 26, m_Member.Name); + builder.AddHtmlLocalized(20, 80, 150, 26, 1062956, 0x0, true); // Rank + builder.AddHtmlLocalized(180, 83, 150, 26, _member.GuildRank.Name, 0x0); - AddHtmlLocalized(20, 80, 150, 26, 1062956, 0x0, true); // Rank - AddHtmlLocalized(180, 83, 150, 26, m_Member.GuildRank.Name, 0x0); + builder.AddHtmlLocalized(20, 110, 150, 26, 1062953, 0x0, true); // Guild Title + builder.AddHtml(180, 113, 150, 26, _member.GuildTitle); + builder.AddImageTiled(20, 142, 310, 2, 0x2711); - AddHtmlLocalized(20, 110, 150, 26, 1062953, 0x0, true); // Guild Title - AddHtml(180, 113, 150, 26, m_Member.GuildTitle); - AddImageTiled(20, 142, 310, 2, 0x2711); - - AddBackground(20, 150, 310, 26, 0x2486); - AddButton(25, 155, 0x845, 0x846, 4); - AddHtmlLocalized( + builder.AddBackground(20, 150, 310, 26, 0x2486); + builder.AddButton(25, 155, 0x845, 0x846, 4); + builder.AddHtmlLocalized( 50, 153, 270, 26, - m_Member == player.GuildFealty && guild.Leader != m_Member ? 1063082 : 1062996, + _member == Player.GuildFealty && Guild.Leader != _member ? 1063082 : 1062996, 0x0 ); // Clear/Cast Vote For This Member - AddBackground(20, 180, 150, 26, 0x2486); - AddButton(25, 185, 0x845, 0x846, 1); - AddHtmlLocalized(50, 183, 110, 26, 1062993, m_ToLeader ? 0x990000 : 0); // Promote + builder.AddBackground(20, 180, 150, 26, 0x2486); + builder.AddButton(25, 185, 0x845, 0x846, 1); + builder.AddHtmlLocalized(50, 183, 110, 26, 1062993, _toLeader ? 0x990000 : 0); // Promote - AddBackground(180, 180, 150, 26, 0x2486); - AddButton(185, 185, 0x845, 0x846, 3); - AddHtmlLocalized(210, 183, 110, 26, 1062995, 0x0); // Set Guild Title + builder.AddBackground(180, 180, 150, 26, 0x2486); + builder.AddButton(185, 185, 0x845, 0x846, 3); + builder.AddHtmlLocalized(210, 183, 110, 26, 1062995, 0x0); // Set Guild Title - AddBackground(20, 210, 150, 26, 0x2486); - AddButton(25, 215, 0x845, 0x846, 2); - AddHtmlLocalized(50, 213, 110, 26, 1062994, 0x0); // Demote + builder.AddBackground(20, 210, 150, 26, 0x2486); + builder.AddButton(25, 215, 0x845, 0x846, 2); + builder.AddHtmlLocalized(50, 213, 110, 26, 1062994, 0x0); // Demote - AddBackground(180, 210, 150, 26, 0x2486); - AddButton(185, 215, 0x845, 0x846, 5); - AddHtmlLocalized(210, 213, 110, 26, 1062997, m_toKick ? 0x5000 : 0); // Kick + builder.AddBackground(180, 210, 150, 26, 0x2486); + builder.AddButton(185, 215, 0x845, 0x846, 5); + builder.AddHtmlLocalized(210, 213, 110, 26, 1062997, _toKick ? 0x5000 : 0); // Kick } public override void OnResponse(NetState sender, in RelayInfo info) { - if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, guild) || !IsMember(m_Member, guild)) + if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, Guild) || !IsMember(_member, Guild)) { return; } var playerRank = pm.GuildRank; - var targetRank = m_Member.GuildRank; + var targetRank = _member.GuildRank; switch (info.ButtonID) { @@ -89,34 +88,26 @@ namespace Server.Guilds if (targetRank == RankDefinition.Leader) { - if (m_ToLeader) + if (_toLeader) { - m_Member.GuildRank = targetRank; - pm.SendLocalizedMessage( - 1063156, - m_Member.Name - ); // The guild information for ~1_val~ has been updated. - pm.SendLocalizedMessage( - 1063156, - pm.Name - ); // The guild information for ~1_val~ has been updated. - guild.Leader = m_Member; + _member.GuildRank = targetRank; + // The guild information for ~1_val~ has been updated. + pm.SendLocalizedMessage(1063156, _member.Name); + pm.SendLocalizedMessage(1063156, pm.Name); + Guild.Leader = _member; } else { - pm.SendLocalizedMessage( - 1063144 - ); // Are you sure you wish to make this member the new guild leader? - pm.SendGump(new GuildMemberInfoGump(player, guild, m_Member, false, true)); + // Are you sure you wish to make this member the new guild leader? + pm.SendLocalizedMessage(1063144); + pm.SendGump(new GuildMemberInfoGump(Player, Guild, _member, false, true)); } } else { - m_Member.GuildRank = targetRank; - pm.SendLocalizedMessage( - 1063156, - m_Member.Name - ); // The guild information for ~1_val~ has been updated. + _member.GuildRank = targetRank; + // The guild information for ~1_val~ has been updated. + pm.SendLocalizedMessage(1063156, _member.Name); } } else @@ -143,11 +134,9 @@ namespace Server.Guilds } else { - m_Member.GuildRank = RankDefinition.Ranks[targetRank.Rank - 1]; - pm.SendLocalizedMessage( - 1063156, - m_Member.Name - ); // The guild information for ~1_val~ has been updated. + _member.GuildRank = RankDefinition.Ranks[targetRank.Rank - 1]; + // The guild information for ~1_val~ has been updated. + pm.SendLocalizedMessage(1063156, _member.Name); } } else @@ -160,52 +149,47 @@ namespace Server.Guilds case 3: // Set Guild title { if (playerRank.GetFlag(RankFlags.CanSetGuildTitle) && - (playerRank.Rank > targetRank.Rank || m_Member == player)) + (playerRank.Rank > targetRank.Rank || _member == Player)) { - pm.SendLocalizedMessage( - 1011128 - ); // Enter the new title for this guild member or 'none' to remove a title: + // Enter the new title for this guild member or 'none' to remove a title: + pm.SendLocalizedMessage(1011128); pm.BeginPrompt(SetTitle_Callback); } - else if (m_Member.GuildTitle == null || m_Member.GuildTitle.Length <= 0) + else if (_member.GuildTitle == null || _member.GuildTitle.Length <= 0) { - pm.SendLocalizedMessage( - 1070746 - ); // You don't have the permission to set that member's guild title. + // You don't have the permission to set that member's guild title. + pm.SendLocalizedMessage(1070746); } else { - pm.SendLocalizedMessage( - 1063148 - ); // You don't have permission to change this member's guild title. + // You don't have permission to change this member's guild title. + pm.SendLocalizedMessage(1063148); } break; } case 4: // Vote { - if (m_Member == pm.GuildFealty && guild.Leader != m_Member) + if (_member == pm.GuildFealty && Guild.Leader != _member) { pm.SendLocalizedMessage(1063158); // You have cleared your vote for guild leader. } - else if (guild.CanVote(m_Member)) + else if (Guild.CanVote(_member)) { - if (m_Member == guild.Leader) + if (_member == Guild.Leader) { pm.SendLocalizedMessage(1063424); // You can't vote for the current guild leader. } - else if (!guild.CanBeVotedFor(m_Member)) + else if (!Guild.CanBeVotedFor(_member)) { pm.SendLocalizedMessage(1063425); // You can't vote for an inactive guild member. } else { - pm.GuildFealty = m_Member; - pm.SendLocalizedMessage( - 1063159, - m_Member.Name - ); // You cast your vote for ~1_val~ for guild leader. + pm.GuildFealty = _member; + // You cast your vote for ~1_val~ for guild leader. + pm.SendLocalizedMessage(1063159, _member.Name); } } else @@ -220,17 +204,16 @@ namespace Server.Guilds if (playerRank.GetFlag(RankFlags.RemovePlayers) && playerRank.Rank > targetRank.Rank || playerRank.GetFlag(RankFlags.RemoveLowestRank) && targetRank == RankDefinition.Lowest) { - if (m_toKick) + if (_toKick) { - guild.RemoveMember(m_Member); + Guild.RemoveMember(_member); pm.SendLocalizedMessage(1063157); // The member has been removed from your guild. } else { - pm.SendLocalizedMessage( - 1063152 - ); // Are you sure you wish to kick this member from the guild? - pm.SendGump(new GuildMemberInfoGump(player, guild, m_Member, true, false)); + // Are you sure you wish to kick this member from the guild? + pm.SendLocalizedMessage(1063152); + pm.SendGump(new GuildMemberInfoGump(Player, Guild, _member, true, false)); } } else @@ -245,22 +228,24 @@ namespace Server.Guilds public void SetTitle_Callback(Mobile from, string text) { - if (from is not PlayerMobile pm || m_Member == null) + if (from is not PlayerMobile pm || _member == null) { return; } - if (m_Member.Guild is not Guild g || !IsMember(pm, g) || + if (_member.Guild is not Guild g || !IsMember(pm, g) || !(pm.GuildRank.GetFlag(RankFlags.CanSetGuildTitle) && - (pm.GuildRank.Rank > m_Member.GuildRank.Rank || pm == m_Member))) + (pm.GuildRank.Rank > _member.GuildRank.Rank || pm == _member))) { - if (m_Member.GuildTitle == null || m_Member.GuildTitle.Length <= 0) + if (_member.GuildTitle == null || _member.GuildTitle.Length <= 0) { - pm.SendLocalizedMessage(1070746); // You don't have the permission to set that member's guild title. + // You don't have the permission to set that member's guild title. + pm.SendLocalizedMessage(1070746); } else { - pm.SendLocalizedMessage(1063148); // You don't have permission to change this member's guild title. + // You don't have permission to change this member's guild title. + pm.SendLocalizedMessage(1063148); } return; @@ -278,16 +263,10 @@ namespace Server.Guilds } else { - if (title.InsensitiveEquals("none")) - { - m_Member.GuildTitle = null; - } - else - { - m_Member.GuildTitle = title; - } + _member.GuildTitle = title.InsensitiveEquals("none") ? null : title; - pm.SendLocalizedMessage(1063156, m_Member.Name); // The guild information for ~1_val~ has been updated. + // The guild information for ~1_val~ has been updated. + pm.SendLocalizedMessage(1063156, _member.Name); } } } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildRosterGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildRosterGump.cs index 240ad3110..534b237da 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/GuildRosterGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/GuildRosterGump.cs @@ -9,7 +9,7 @@ namespace Server.Guilds { public class GuildRosterGump : BaseGuildListGump { - private static readonly InfoField[] m_Fields = + private static readonly InfoField[] _fields = [ new(1062955, 130, NameComparer.Instance), // Name new(1062956, 80, RankComparer.Instance), // Rank @@ -33,33 +33,30 @@ namespace Server.Guilds ascending, filter, startNumber, - m_Fields + _fields ) { - PopulateGump(); } - public override void PopulateGump() + protected override void BuildListExtras(ref DynamicGumpBuilder builder) { - base.PopulateGump(); - - AddHtmlLocalized(266, 43, 110, 26, 1062974, 0xF); // Guild Roster + builder.AddHtmlLocalized(266, 43, 110, 26, 1062974, 0xF); // Guild Roster } - public override void DrawEndingEntry(int itemNumber) + protected override void DrawEndingEntry(ref DynamicGumpBuilder builder, int itemNumber) { - AddBackground(225, 148 + itemNumber * 28, 150, 26, 0x2486); - AddButton(230, 153 + itemNumber * 28, 0x845, 0x846, 8); - AddHtmlLocalized(255, 151 + itemNumber * 28, 110, 26, 1062992, 0x0); // Invite Player + builder.AddBackground(225, 148 + itemNumber * 28, 150, 26, 0x2486); + builder.AddButton(230, 153 + itemNumber * 28, 0x845, 0x846, 8); + builder.AddHtmlLocalized(255, 151 + itemNumber * 28, 110, 26, 1062992, 0x0); // Invite Player } protected override TextDefinition[] GetValuesFor(PlayerMobile pm, int aryLength) { var defs = new TextDefinition[aryLength]; - var name = $"{pm.Name}{(player.GuildFealty == pm && player.GuildFealty != guild.Leader ? " *" : "")}"; + var name = $"{pm.Name}{(Player.GuildFealty == pm && Player.GuildFealty != Guild.Leader ? " *" : "")}"; - if (pm == player) + if (pm == Player) { name = name.Color(0x006600); } @@ -86,20 +83,14 @@ namespace Server.Guilds return !pm.Name.InsensitiveContains(filter); } - public override Gump GetResentGump( - PlayerMobile pm, Guild g, IComparer comparer, bool ascending, - string filter, int startNumber - ) => - new GuildRosterGump(pm, g, comparer, ascending, filter, startNumber); - - public override Gump GetObjectInfoGump(PlayerMobile pm, Guild g, PlayerMobile o) => + public override BaseGump GetObjectInfoGump(PlayerMobile pm, Guild g, PlayerMobile o) => new GuildMemberInfoGump(pm, g, o, false, false); public override void OnResponse(NetState sender, in RelayInfo info) { base.OnResponse(sender, info); - if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, guild)) + if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, Guild)) { return; } @@ -109,7 +100,7 @@ namespace Server.Guilds if (pm.GuildRank.GetFlag(RankFlags.CanInvitePlayer)) { pm.SendLocalizedMessage(1063048); // Whom do you wish to invite into your guild? - pm.BeginTarget(-1, false, TargetFlags.None, InvitePlayer_Callback, guild); + pm.BeginTarget(-1, false, TargetFlags.None, InvitePlayer_Callback, Guild); } else { @@ -129,7 +120,7 @@ namespace Server.Guilds var guildFaction = guildState?.Faction; var targetFaction = targetState?.Faction; - if (pm == null || !IsMember(pm, guild) || !pm.GuildRank.GetFlag(RankFlags.CanInvitePlayer)) + if (pm == null || !IsMember(pm, Guild) || !pm.GuildRank.GetFlag(RankFlags.CanInvitePlayer)) { from.SendLocalizedMessage(503301); // You don't have permission to do that. } @@ -181,7 +172,7 @@ namespace Server.Guilds else { pm.SendLocalizedMessage(1063053, targ.Name); // You invite ~1_val~ to join your guild. - targ.SendGump(new GuildInvitationRequest(targ, guild, pm)); + targ.SendGump(new GuildInvitationRequest(targ, Guild, pm)); } } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/OtherGuildInfo.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/OtherGuildInfo.cs index df1b8a36e..c8857c8a2 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/OtherGuildInfo.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/OtherGuildInfo.cs @@ -8,55 +8,55 @@ namespace Server.Guilds { public class OtherGuildInfo : BaseGuildGump { - private readonly Guild m_Other; + private readonly Guild _other; public OtherGuildInfo(PlayerMobile pm, Guild g, Guild otherGuild) : base(pm, g, 10, 40) { - m_Other = otherGuild; + _other = otherGuild; g.CheckExpiredWars(); - - PopulateGump(); } - public void AddButtonAndBackground(int x, int y, int buttonID, int locNum) + protected override bool ShowTabStrip => false; + + private static void AddButtonAndBackground(ref DynamicGumpBuilder builder, int x, int y, int buttonID, int locNum) { - AddBackground(x, y, 225, 26, 0x2486); - AddButton(x + 5, y + 5, 0x845, 0x846, buttonID); - AddHtmlLocalized(x + 30, y + 3, 185, 26, locNum, 0x0); + builder.AddBackground(x, y, 225, 26, 0x2486); + builder.AddButton(x + 5, y + 5, 0x845, 0x846, buttonID); + builder.AddHtmlLocalized(x + 30, y + 3, 185, 26, locNum, 0x0); } - public override void PopulateGump() + protected override void BuildContent(ref DynamicGumpBuilder builder) { - var g = Guild.GetAllianceLeader(guild); - var other = Guild.GetAllianceLeader(m_Other); + builder.AddBackground(0, 0, 520, 335, 0x242C); + + var g = Guild.GetAllianceLeader(Guild); + var other = Guild.GetAllianceLeader(_other); var war = g.FindPendingWar(other); var activeWar = g.FindActiveWar(other); - var alliance = guild.Alliance; - var otherAlliance = m_Other.Alliance; + var alliance = Guild.Alliance; + var otherAlliance = _other.Alliance; // NOTE TO SELF: Only only alliance leader can see pending guild alliance statuses - var PendingWar = war != null; - var ActiveWar = activeWar != null; - AddPage(0); + var pendingWar = war != null; + var activeWarFlag = activeWar != null; - AddBackground(0, 0, 520, 335, 0x242C); - AddHtmlLocalized(20, 15, 480, 26, 1062975, 0x0); //
Guild Relationship
- AddImageTiled(20, 40, 480, 2, 0x2711); - AddHtmlLocalized(20, 50, 120, 26, 1062954, 0x0, true); // Guild Name - AddHtml(150, 53, 360, 26, m_Other.Name); + builder.AddHtmlLocalized(20, 15, 480, 26, 1062975, 0x0); //
Guild Relationship
+ builder.AddImageTiled(20, 40, 480, 2, 0x2711); + builder.AddHtmlLocalized(20, 50, 120, 26, 1062954, 0x0, true); // Guild Name + builder.AddHtml(150, 53, 360, 26, _other.Name); - AddHtmlLocalized(20, 80, 120, 26, 1063025, 0x0, true); // Alliance + builder.AddHtmlLocalized(20, 80, 120, 26, 1063025, 0x0, true); // Alliance - if (otherAlliance?.IsMember(m_Other) == true) + if (otherAlliance?.IsMember(_other) == true) { - AddHtml(150, 83, 360, 26, otherAlliance.Name); + builder.AddHtml(150, 83, 360, 26, otherAlliance.Name); } - AddHtmlLocalized(20, 110, 120, 26, 1063139, 0x0, true); // Abbreviation - AddHtml(150, 113, 120, 26, m_Other.Abbreviation); + builder.AddHtmlLocalized(20, 110, 120, 26, 1063139, 0x0, true); // Abbreviation + builder.AddHtml(150, 113, 120, 26, _other.Abbreviation); var kills = "0/0"; var time = "00:00"; @@ -64,7 +64,7 @@ namespace Server.Guilds WarDeclaration otherWar; - if (ActiveWar) + if (activeWarFlag) { kills = $"{activeWar.Kills}/{activeWar.MaxKills}"; @@ -77,38 +77,38 @@ namespace Server.Guilds time = $"{timeRemaining.Hours:D2}:{DateTime.MinValue + timeRemaining:mm}"; - otherWar = m_Other.FindActiveWar(guild); + otherWar = _other.FindActiveWar(Guild); if (otherWar != null) { otherKills = $"{otherWar.Kills}/{otherWar.MaxKills}"; } } - else if (PendingWar) + else if (pendingWar) { kills = Html.Color($"{war.Kills}/{war.MaxKills}", 0x990000); time = Html.Color($"{war.WarLength.Hours:D2}:{DateTime.MinValue + war.WarLength:mm}", 0x990000); - otherWar = m_Other.FindPendingWar(guild); + otherWar = _other.FindPendingWar(Guild); if (otherWar != null) { otherKills = Html.Color($"{otherWar.Kills}/{otherWar.MaxKills}", 0x990000); } } - AddHtmlLocalized(280, 110, 120, 26, 1062966, 0x0, true); // Your Kills - AddHtml(410, 113, 120, 26, kills); + builder.AddHtmlLocalized(280, 110, 120, 26, 1062966, 0x0, true); // Your Kills + builder.AddHtml(410, 113, 120, 26, kills); - AddHtmlLocalized(20, 140, 120, 26, 1062968, 0x0, true); // Time Remaining - AddHtml(150, 143, 120, 26, time); + builder.AddHtmlLocalized(20, 140, 120, 26, 1062968, 0x0, true); // Time Remaining + builder.AddHtml(150, 143, 120, 26, time); - AddHtmlLocalized(280, 140, 120, 26, 1062967, 0x0, true); // Their Kills - AddHtml(410, 143, 120, 26, otherKills); + builder.AddHtmlLocalized(280, 140, 120, 26, 1062967, 0x0, true); // Their Kills + builder.AddHtml(410, 143, 120, 26, otherKills); - AddImageTiled(20, 172, 480, 2, 0x2711); + builder.AddImageTiled(20, 172, 480, 2, 0x2711); var number = 1062973; //
You are at peace with this guild.
- if (PendingWar) + if (pendingWar) { if (war.WarRequester) { @@ -118,92 +118,92 @@ namespace Server.Guilds { number = 1062969; //
This guild has challenged you to war!
- AddButtonAndBackground(20, 260, 5, 1062981); // Accept Challenge - AddButtonAndBackground(275, 260, 6, 1062983); // Modify Terms + AddButtonAndBackground(ref builder, 20, 260, 5, 1062981); // Accept Challenge + AddButtonAndBackground(ref builder, 275, 260, 6, 1062983); // Modify Terms } - AddButtonAndBackground(20, 290, 7, 1062982); // Dismiss Challenge + AddButtonAndBackground(ref builder, 20, 290, 7, 1062982); // Dismiss Challenge } - else if (ActiveWar) + else if (activeWarFlag) { number = 1062965; //
You are at war with this guild!
- AddButtonAndBackground(20, 290, 8, 1062980); // Surrender + AddButtonAndBackground(ref builder, 20, 290, 8, 1062980); // Surrender } else if (alliance != null && alliance == otherAlliance) // alliance, Same Alliance { - if (alliance.IsMember(guild) && alliance.IsMember(m_Other)) // Both in Same alliance, full members + if (alliance.IsMember(Guild) && alliance.IsMember(_other)) // Both in Same alliance, full members { number = 1062970; //
You are allied with this guild.
- if (alliance.Leader == guild) + if (alliance.Leader == Guild) { - AddButtonAndBackground(20, 260, 12, 1062984); // Remove Guild from Alliance + AddButtonAndBackground(ref builder, 20, 260, 12, 1062984); // Remove Guild from Alliance - //Note: No 'confirmation' like the other leader guild promotion things + // Note: No 'confirmation' like the other leader guild promotion things // Promote to Alliance Leader - AddButtonAndBackground(275, 260, 13, 1063433); + AddButtonAndBackground(ref builder, 275, 260, 13, 1063433); // Remove guild from alliance //Promote to Alliance Leader } // Show roster, Centered, up - AddButtonAndBackground(148, 215, 10, 1063164); // Show Alliance Roster + AddButtonAndBackground(ref builder, 148, 215, 10, 1063164); // Show Alliance Roster // Leave Alliance - AddButtonAndBackground(20, 290, 11, 1062985); // Leave Alliance + AddButtonAndBackground(ref builder, 20, 290, 11, 1062985); // Leave Alliance } - else if (alliance.Leader == guild && alliance.IsPendingMember(m_Other)) + else if (alliance.Leader == Guild && alliance.IsPendingMember(_other)) { number = 1062971; //
You have requested an alliance with this guild.
// Show Alliance Roster, Centered, down. - AddButtonAndBackground(148, 245, 10, 1063164); // Show Alliance Roster + AddButtonAndBackground(ref builder, 148, 245, 10, 1063164); // Show Alliance Roster // Withdraw Request - AddButtonAndBackground(20, 290, 14, 1062986); // Withdraw Request + AddButtonAndBackground(ref builder, 20, 290, 14, 1062986); // Withdraw Request - AddHtml(150, 83, 360, 26, alliance.Name.Color(0x99)); + builder.AddHtml(150, 83, 360, 26, alliance.Name.Color(0x99)); } - else if (alliance.Leader == m_Other && alliance.IsPendingMember(guild)) + else if (alliance.Leader == _other && alliance.IsPendingMember(Guild)) { number = 1062972; //
This guild has requested an alliance.
// Show alliance Roster, top - AddButtonAndBackground(148, 215, 10, 1063164); // Show Alliance Roster + AddButtonAndBackground(ref builder, 148, 215, 10, 1063164); // Show Alliance Roster // Deny Request // Accept Request - AddButtonAndBackground(20, 260, 15, 1062988); // Deny Request - AddButtonAndBackground(20, 290, 16, 1062987); // Accept Request + AddButtonAndBackground(ref builder, 20, 260, 15, 1062988); // Deny Request + AddButtonAndBackground(ref builder, 20, 290, 16, 1062987); // Accept Request - AddHtml(150, 83, 360, 26, alliance.Name.Color(0x99)); + builder.AddHtml(150, 83, 360, 26, alliance.Name.Color(0x99)); } } else { - AddButtonAndBackground(20, 260, 2, 1062990); // Request Alliance - AddButtonAndBackground(20, 290, 1, 1062989); // Declare War! + AddButtonAndBackground(ref builder, 20, 260, 2, 1062990); // Request Alliance + AddButtonAndBackground(ref builder, 20, 290, 1, 1062989); // Declare War! } - AddButtonAndBackground(275, 290, 0, 3000091); // Cancel + AddButtonAndBackground(ref builder, 275, 290, 0, 3000091); // Cancel - AddHtmlLocalized(20, 180, 480, 30, number, 0x0, true); - AddImageTiled(20, 245, 480, 2, 0x2711); + builder.AddHtmlLocalized(20, 180, 480, 30, number, 0x0, true); + builder.AddImageTiled(20, 245, 480, 2, 0x2711); } public override void OnResponse(NetState sender, in RelayInfo info) { - if (!(sender.Mobile is PlayerMobile pm && IsMember(pm, guild))) + if (!(sender.Mobile is PlayerMobile pm && IsMember(pm, Guild))) { return; } var playerRank = pm.GuildRank; - var guildLeader = Guild.GetAllianceLeader(guild); - var otherGuild = Guild.GetAllianceLeader(m_Other); + var guildLeader = Guild.GetAllianceLeader(Guild); + var otherGuild = Guild.GetAllianceLeader(_other); var war = guildLeader.FindPendingWar(otherGuild); var activeWar = guildLeader.FindActiveWar(otherGuild); var otherWar = otherGuild.FindPendingWar(guildLeader); - var alliance = guild.Alliance; + var alliance = Guild.Alliance; var otherAlliance = otherGuild.Alliance; switch (info.ButtonID) @@ -216,10 +216,10 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063440); // You don't have permission to negotiate wars. } - else if (alliance != null && alliance.Leader != guild) + else if (alliance != null && alliance.Leader != Guild) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{guild.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); // You need to negotiate via ~1_val~ instead. pm.SendLocalizedMessage(1070707, alliance.Leader.Name); @@ -227,11 +227,11 @@ namespace Server.Guilds else { // Accept the war - guild.PendingWars.Remove(war); + Guild.PendingWars.Remove(war); war.WarBeginning = Core.Now; - guild.AcceptedWars.Add(war); + Guild.AcceptedWars.Add(war); - if (alliance?.IsMember(guild) == true) + if (alliance?.IsMember(Guild) == true) { // Guild Message: Your guild is now at war with ~1_GUILDNAME~ alliance.AllianceMessage(1070769, otherAlliance?.Name ?? otherGuild.Name); @@ -240,8 +240,8 @@ namespace Server.Guilds else { // Guild Message: Your guild is now at war with ~1_GUILDNAME~ - guild.GuildMessage(1070769, otherAlliance?.Name ?? otherGuild.Name); - guild.InvalidateMemberProperties(); + Guild.GuildMessage(1070769, otherAlliance?.Name ?? otherGuild.Name); + Guild.InvalidateMemberProperties(); } // Technically SHOULD say Your guild is now at war w/out any info, intentional diff. @@ -249,16 +249,16 @@ namespace Server.Guilds otherWar.WarBeginning = Core.Now; otherGuild.AcceptedWars.Add(otherWar); - if (otherAlliance != null && m_Other.Alliance.IsMember(m_Other)) + if (otherAlliance != null && _other.Alliance.IsMember(_other)) { // Guild Message: Your guild is now at war with ~1_GUILDNAME~ - otherAlliance.AllianceMessage(1070769, alliance?.Name ?? guild.Name); + otherAlliance.AllianceMessage(1070769, alliance?.Name ?? Guild.Name); otherAlliance.InvalidateMemberProperties(); } else { // Guild Message: Your guild is now at war with ~1_GUILDNAME~ - otherGuild.GuildMessage(1070769, alliance?.Name ?? guild.Name); + otherGuild.GuildMessage(1070769, alliance?.Name ?? Guild.Name); otherGuild.InvalidateMemberProperties(); } } @@ -274,17 +274,17 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063440); // You don't have permission to negotiate wars. } - else if (alliance != null && alliance.Leader != guild) + else if (alliance != null && alliance.Leader != Guild) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{guild.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); // You need to negotiate via ~1_val~ instead. pm.SendLocalizedMessage(1070707, alliance.Leader.Name); } else { - pm.SendGump(new WarDeclarationGump(pm, guild, otherGuild)); + pm.SendGump(new WarDeclarationGump(pm, Guild, otherGuild)); } } @@ -298,10 +298,10 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063440); // You don't have permission to negotiate wars. } - else if (alliance != null && alliance.Leader != guild) + else if (alliance != null && alliance.Leader != Guild) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{guild.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); // You need to negotiate via ~1_val~ instead. pm.SendLocalizedMessage(1070707, alliance.Leader.Name); @@ -309,7 +309,7 @@ namespace Server.Guilds else { // Dismiss the war - guild.PendingWars.Remove(war); + Guild.PendingWars.Remove(war); otherGuild.PendingWars.Remove(otherWar); pm.SendLocalizedMessage(1070752); // The proposal has been updated. // Messages to opposing guild? (Testing on OSI says no) @@ -324,10 +324,10 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063440); // You don't have permission to negotiate wars. } - else if (alliance != null && alliance.Leader != guild) + else if (alliance != null && alliance.Leader != Guild) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{guild.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); // You need to negotiate via ~1_val~ instead. pm.SendLocalizedMessage(1070707, alliance.Leader.Name); @@ -336,7 +336,7 @@ namespace Server.Guilds { if (activeWar != null) { - if (alliance?.IsMember(guild) == true) + if (alliance?.IsMember(Guild) == true) { // You have lost the war with ~1_val~. alliance.AllianceMessage(1070740, otherAlliance?.Name ?? otherGuild.Name); @@ -345,26 +345,26 @@ namespace Server.Guilds else { // You have lost the war with ~1_val~. - guild.GuildMessage(1070740, otherAlliance?.Name ?? otherGuild.Name); - guild.InvalidateMemberProperties(); + Guild.GuildMessage(1070740, otherAlliance?.Name ?? otherGuild.Name); + Guild.InvalidateMemberProperties(); } - guild.AcceptedWars.Remove(activeWar); + Guild.AcceptedWars.Remove(activeWar); if (otherAlliance?.IsMember(otherGuild) == true) { // You have won the war against ~1_val~! - otherAlliance.AllianceMessage(1070739, guild.Alliance?.Name ?? guild.Name); + otherAlliance.AllianceMessage(1070739, Guild.Alliance?.Name ?? Guild.Name); otherAlliance.InvalidateMemberProperties(); } else { // You have won the war against ~1_val~! - otherGuild.GuildMessage(1070739, guild.Alliance?.Name ?? guild.Name); + otherGuild.GuildMessage(1070739, Guild.Alliance?.Name ?? Guild.Name); otherGuild.InvalidateMemberProperties(); } - otherGuild.AcceptedWars.Remove(otherGuild.FindActiveWar(guild)); + otherGuild.AcceptedWars.Remove(otherGuild.FindActiveWar(Guild)); } } @@ -378,25 +378,25 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063440); // You don't have permission to negotiate wars. } - else if (alliance != null && alliance.Leader != guild) + else if (alliance != null && alliance.Leader != Guild) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{guild.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); // You need to negotiate via ~1_val~ instead. pm.SendLocalizedMessage(1070707, alliance.Leader.Name); } - else if (otherAlliance != null && otherAlliance.Leader != m_Other) + else if (otherAlliance != null && otherAlliance.Leader != _other) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{m_Other.Name}\t{otherAlliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{_other.Name}\t{otherAlliance.Name}"); // You need to negotiate via ~1_val~ instead. pm.SendLocalizedMessage(1070707, otherAlliance.Leader.Name); } else { - pm.SendGump(new WarDeclarationGump(pm, guild, m_Other)); + pm.SendGump(new WarDeclarationGump(pm, Guild, _other)); } } @@ -411,33 +411,33 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1070747); // You don't have permission to create an alliance. } - else if (Faction.Find(guild.Leader) != Faction.Find(m_Other.Leader)) + else if (Faction.Find(Guild.Leader) != Faction.Find(_other.Leader)) { // You cannot propose an alliance to a guild with a different faction allegiance. pm.SendLocalizedMessage(1070758); } else if (otherAlliance != null) { - if (otherAlliance.IsPendingMember(m_Other)) + if (otherAlliance.IsPendingMember(_other)) { // ~1_val~ is currently considering another alliance proposal. - pm.SendLocalizedMessage(1063416, m_Other.Name); + pm.SendLocalizedMessage(1063416, _other.Name); } else { // ~1_val~ already belongs to an alliance. - pm.SendLocalizedMessage(1063426, m_Other.Name); + pm.SendLocalizedMessage(1063426, _other.Name); } } - else if (m_Other.AcceptedWars.Count > 0 || m_Other.PendingWars.Count > 0) + else if (_other.AcceptedWars.Count > 0 || _other.PendingWars.Count > 0) { // ~1_val~ is currently involved in a guild war. - pm.SendLocalizedMessage(1063427, m_Other.Name); + pm.SendLocalizedMessage(1063427, _other.Name); } - else if (guild.AcceptedWars.Count > 0 || guild.PendingWars.Count > 0) + else if (Guild.AcceptedWars.Count > 0 || Guild.PendingWars.Count > 0) { // ~1_val~ is currently involved in a guild war. - pm.SendLocalizedMessage(1063427, guild.Name); + pm.SendLocalizedMessage(1063427, Guild.Name); } else { @@ -451,40 +451,40 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063436); // You don't have permission to negotiate an alliance. } - else if (alliance.Leader != guild) + else if (alliance.Leader != Guild) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{guild.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); } else if (otherAlliance != null) { - if (otherAlliance.IsPendingMember(m_Other)) + if (otherAlliance.IsPendingMember(_other)) { // ~1_val~ is currently considering another alliance proposal. - pm.SendLocalizedMessage(1063416, m_Other.Name); + pm.SendLocalizedMessage(1063416, _other.Name); } else { // ~1_val~ already belongs to an alliance. - pm.SendLocalizedMessage(1063426, m_Other.Name); + pm.SendLocalizedMessage(1063426, _other.Name); } } - else if (alliance.IsPendingMember(guild)) + else if (alliance.IsPendingMember(Guild)) { // ~1_val~ is currently considering another alliance proposal. - pm.SendLocalizedMessage(1063416, guild.Name); + pm.SendLocalizedMessage(1063416, Guild.Name); } - else if (m_Other.AcceptedWars.Count > 0 || m_Other.PendingWars.Count > 0) + else if (_other.AcceptedWars.Count > 0 || _other.PendingWars.Count > 0) { // ~1_val~ is currently involved in a guild war. - pm.SendLocalizedMessage(1063427, m_Other.Name); + pm.SendLocalizedMessage(1063427, _other.Name); } - else if (guild.AcceptedWars.Count > 0 || guild.PendingWars.Count > 0) + else if (Guild.AcceptedWars.Count > 0 || Guild.PendingWars.Count > 0) { // ~1_val~ is currently involved in a guild war. - pm.SendLocalizedMessage(1063427, guild.Name); + pm.SendLocalizedMessage(1063427, Guild.Name); } - else if (Faction.Find(guild.Leader) != Faction.Find(m_Other.Leader)) + else if (Faction.Find(Guild.Leader) != Faction.Find(_other.Leader)) { // You cannot propose an alliance to a guild with a different faction allegiance. pm.SendLocalizedMessage(1070758); @@ -492,12 +492,11 @@ namespace Server.Guilds else { // An invitation to join your alliance has been sent to ~1_val~. - pm.SendLocalizedMessage(1070750, m_Other.Name); + pm.SendLocalizedMessage(1070750, _other.Name); - m_Other.GuildMessage(1070780, guild.Name); // ~1_val~ has proposed an alliance. + _other.GuildMessage(1070780, Guild.Name); // ~1_val~ has proposed an alliance. - m_Other.Alliance = alliance; // Calls addPendingGuild - // alliance.AddPendingGuild( m_Other ); + _other.Alliance = alliance; // Calls addPendingGuild } } @@ -507,7 +506,7 @@ namespace Server.Guilds { if (alliance != null && alliance == otherAlliance) { - pm.SendGump(new AllianceInfo.AllianceRosterGump(pm, guild, alliance)); + pm.SendGump(new AllianceInfo.AllianceRosterGump(pm, Guild, alliance)); } break; @@ -518,14 +517,13 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063436); // You don't have permission to negotiate an alliance. } - else if (alliance?.IsMember(guild) == true) + else if (alliance?.IsMember(Guild) == true) { - guild.Alliance = null; // Calls alliance.RemoveGuild - // alliance.RemoveGuild( guild ); + Guild.Alliance = null; // Calls alliance.RemoveGuild - m_Other.InvalidateWarNotoriety(); + _other.InvalidateWarNotoriety(); - guild.InvalidateMemberNotoriety(); + Guild.InvalidateMemberNotoriety(); } break; @@ -536,18 +534,18 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063436); // You don't have permission to negotiate an alliance. } - else if (alliance != null && alliance.Leader != guild) + else if (alliance != null && alliance.Leader != Guild) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{guild.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); } - else if (alliance?.IsMember(guild) == true && alliance.IsMember(m_Other)) + else if (alliance?.IsMember(Guild) == true && alliance.IsMember(_other)) { - m_Other.Alliance = null; + _other.Alliance = null; - m_Other.InvalidateMemberNotoriety(); + _other.InvalidateMemberNotoriety(); - guild.InvalidateWarNotoriety(); + Guild.InvalidateWarNotoriety(); } break; @@ -558,17 +556,17 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063436); // You don't have permission to negotiate an alliance. } - else if (alliance != null && alliance.Leader != guild) + else if (alliance != null && alliance.Leader != Guild) { // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage(1063239, $"{guild.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); } - else if (alliance?.IsMember(guild) == true && alliance.IsMember(m_Other)) + else if (alliance?.IsMember(Guild) == true && alliance.IsMember(_other)) { // ~1_val~ is now the leader of ~2_val~. - pm.SendLocalizedMessage(1063434, $"{m_Other.Name}\t{alliance.Name}"); + pm.SendLocalizedMessage(1063434, $"{_other.Name}\t{alliance.Name}"); - alliance.Leader = m_Other; + alliance.Leader = _other; } break; @@ -579,9 +577,9 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063436); // You don't have permission to negotiate an alliance. } - else if (alliance != null && alliance.Leader == guild && alliance.IsPendingMember(m_Other)) + else if (alliance != null && alliance.Leader == Guild && alliance.IsPendingMember(_other)) { - m_Other.Alliance = null; + _other.Alliance = null; pm.SendLocalizedMessage(1070752); // The proposal has been updated. } @@ -593,15 +591,15 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063436); // You don't have permission to negotiate an alliance. } - else if (alliance != null && otherAlliance != null && alliance.Leader == m_Other && - otherAlliance.IsPendingMember(guild)) + else if (alliance != null && otherAlliance != null && alliance.Leader == _other && + otherAlliance.IsPendingMember(Guild)) { // The proposal has been updated. - // m_Other.GuildMessage( 1070782 ); + // _other.GuildMessage( 1070782 ); // // ~1_val~ has responded to your proposal. - // //Per OSI commented out. + // // Per OSI commented out. pm.SendLocalizedMessage(1070752); - guild.Alliance = null; + Guild.Alliance = null; } break; @@ -612,15 +610,15 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1063436); // You don't have permission to negotiate an alliance. } - else if (otherAlliance != null && otherAlliance.Leader == m_Other && - otherAlliance.IsPendingMember(guild)) + else if (otherAlliance != null && otherAlliance.Leader == _other && + otherAlliance.IsPendingMember(Guild)) { pm.SendLocalizedMessage(1070752); // The proposal has been updated. // No need to verify it's in the guild or already a member, the function does this - otherAlliance.TurnToMember(m_Other); + otherAlliance.TurnToMember(_other); - otherAlliance.TurnToMember(guild); + otherAlliance.TurnToMember(Guild); } break; @@ -635,10 +633,10 @@ namespace Server.Guilds return; } - var alliance = guild.Alliance; - var otherAlliance = m_Other.Alliance; + var alliance = Guild.Alliance; + var otherAlliance = _other.Alliance; - if (!IsMember(from, guild) || alliance != null) + if (!IsMember(from, Guild) || alliance != null) { return; } @@ -649,7 +647,7 @@ namespace Server.Guilds { pm.SendLocalizedMessage(1070747); // You don't have permission to create an alliance. } - else if (Faction.Find(guild.Leader) != Faction.Find(m_Other.Leader)) + else if (Faction.Find(Guild.Leader) != Faction.Find(_other.Leader)) { // Notes about this: OSI only cares/checks when proposing, you can change your faction all you want later. // You cannot propose an alliance to a guild with a different faction allegiance. @@ -657,23 +655,23 @@ namespace Server.Guilds } else if (otherAlliance != null) { - if (otherAlliance.IsPendingMember(m_Other)) + if (otherAlliance.IsPendingMember(_other)) { // ~1_val~ is currently considering another alliance proposal. - pm.SendLocalizedMessage(1063416, m_Other.Name); + pm.SendLocalizedMessage(1063416, _other.Name); } else { - pm.SendLocalizedMessage(1063426, m_Other.Name); // ~1_val~ already belongs to an alliance. + pm.SendLocalizedMessage(1063426, _other.Name); // ~1_val~ already belongs to an alliance. } } - else if (m_Other.AcceptedWars.Count > 0 || m_Other.PendingWars.Count > 0) + else if (_other.AcceptedWars.Count > 0 || _other.PendingWars.Count > 0) { - pm.SendLocalizedMessage(1063427, m_Other.Name); // ~1_val~ is currently involved in a guild war. + pm.SendLocalizedMessage(1063427, _other.Name); // ~1_val~ is currently involved in a guild war. } - else if (guild.AcceptedWars.Count > 0 || guild.PendingWars.Count > 0) + else if (Guild.AcceptedWars.Count > 0 || Guild.PendingWars.Count > 0) { - pm.SendLocalizedMessage(1063427, guild.Name); // ~1_val~ is currently involved in a guild war. + pm.SendLocalizedMessage(1063427, Guild.Name); // ~1_val~ is currently involved in a guild war. } else { @@ -695,11 +693,11 @@ namespace Server.Guilds else { // An invitation to join your alliance has been sent to ~1_val~. - pm.SendLocalizedMessage(1070750, m_Other.Name); + pm.SendLocalizedMessage(1070750, _other.Name); - m_Other.GuildMessage(1070780, guild.Name); // ~1_val~ has proposed an alliance. + _other.GuildMessage(1070780, Guild.Name); // ~1_val~ has proposed an alliance. - new AllianceInfo(guild, name, m_Other); + new AllianceInfo(Guild, name, _other); } } } diff --git a/Projects/UOContent/Gumps/Guilds/New Guild System/WarDeclarationGump.cs b/Projects/UOContent/Gumps/Guilds/New Guild System/WarDeclarationGump.cs index b0a5749ae..2a2be3b73 100644 --- a/Projects/UOContent/Gumps/Guilds/New Guild System/WarDeclarationGump.cs +++ b/Projects/UOContent/Gumps/Guilds/New Guild System/WarDeclarationGump.cs @@ -7,40 +7,42 @@ namespace Server.Guilds { public class WarDeclarationGump : BaseGuildGump { - private readonly Guild m_Other; + private readonly Guild _other; - public WarDeclarationGump(PlayerMobile pm, Guild g, Guild otherGuild) : base(pm, g) + public WarDeclarationGump(PlayerMobile pm, Guild g, Guild otherGuild) : base(pm, g) => _other = otherGuild; + + protected override bool ShowTabStrip => false; + + protected override void BuildContent(ref DynamicGumpBuilder builder) { - m_Other = otherGuild; - var war = g.FindPendingWar(otherGuild); + var war = Guild.FindPendingWar(_other); - AddPage(0); - - AddBackground(0, 0, 500, 340, 0x24AE); - AddBackground(65, 50, 370, 30, 0x2486); - AddHtmlLocalized(75, 55, 370, 26, 1062979, 0x3C00); //
Declaration of War
- AddImage(410, 45, 0x232C); - AddHtmlLocalized(65, 95, 200, 20, 1063009, 0x14AF); // Duration of War - AddHtmlLocalized(65, 120, 400, 20, 1063010, 0x0); // Enter the number of hours the war will last. - AddBackground(65, 150, 40, 30, 0x2486); - AddTextEntry(70, 154, 50, 30, 0x481, 10, war?.WarLength.Hours.ToString() ?? "0"); - AddHtmlLocalized(65, 195, 200, 20, 1063011, 0x14AF); // Victory Condition - AddHtmlLocalized(65, 220, 400, 20, 1063012, 0x0); // Enter the winning number of kills. - AddBackground(65, 250, 40, 30, 0x2486); - AddTextEntry(70, 254, 50, 30, 0x481, 11, war?.MaxKills.ToString() ?? "0"); - AddBackground(190, 270, 130, 26, 0x2486); - AddButton(195, 275, 0x845, 0x846, 0); - AddHtmlLocalized(220, 273, 90, 26, 1006045, 0x0); // Cancel - AddBackground(330, 270, 130, 26, 0x2486); - AddButton(335, 275, 0x845, 0x846, 1); - AddHtmlLocalized(360, 273, 90, 26, 1062989, 0x5000); // Declare War! + builder.AddBackground(0, 0, 500, 340, 0x24AE); + builder.AddBackground(65, 50, 370, 30, 0x2486); + //
Declaration of War
+ builder.AddHtmlLocalized(75, 55, 370, 26, 1062979, 0x3C00); + builder.AddImage(410, 45, 0x232C); + builder.AddHtmlLocalized(65, 95, 200, 20, 1063009, 0x14AF); // Duration of War + builder.AddHtmlLocalized(65, 120, 400, 20, 1063010, 0x0); // Enter the number of hours the war will last. + builder.AddBackground(65, 150, 40, 30, 0x2486); + builder.AddTextEntry(70, 154, 50, 30, 0x481, 10, $"{war?.WarLength.Hours ?? 0}"); + builder.AddHtmlLocalized(65, 195, 200, 20, 1063011, 0x14AF); // Victory Condition + builder.AddHtmlLocalized(65, 220, 400, 20, 1063012, 0x0); // Enter the winning number of kills. + builder.AddBackground(65, 250, 40, 30, 0x2486); + builder.AddTextEntry(70, 254, 50, 30, 0x481, 11, $"{war?.MaxKills ?? 0}"); + builder.AddBackground(190, 270, 130, 26, 0x2486); + builder.AddButton(195, 275, 0x845, 0x846, 0); + builder.AddHtmlLocalized(220, 273, 90, 26, 1006045, 0x0); // Cancel + builder.AddBackground(330, 270, 130, 26, 0x2486); + builder.AddButton(335, 275, 0x845, 0x846, 1); + builder.AddHtmlLocalized(360, 273, 90, 26, 1062989, 0x5000); // Declare War! } public override void OnResponse(NetState sender, in RelayInfo info) { var pm = sender.Mobile as PlayerMobile; - if (!IsMember(pm, guild)) + if (!IsMember(pm, Guild)) { return; } @@ -51,45 +53,38 @@ namespace Server.Guilds { case 1: { - var alliance = guild.Alliance; - var otherAlliance = m_Other.Alliance; + var alliance = Guild.Alliance; + var otherAlliance = _other.Alliance; if (!playerRank.GetFlag(RankFlags.ControlWarStatus)) { pm.SendLocalizedMessage(1063440); // You don't have permission to negotiate wars. } - else if (alliance != null && alliance.Leader != guild) + else if (alliance != null && alliance.Leader != Guild) { - pm.SendLocalizedMessage( - 1063239, - $"{guild.Name}\t{alliance.Name}" - ); // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage( - 1070707, - alliance.Leader.Name - ); // You need to negotiate via ~1_val~ instead. + // ~1_val~ is not the leader of the ~2_val~ alliance. + pm.SendLocalizedMessage(1063239, $"{Guild.Name}\t{alliance.Name}"); + // You need to negotiate via ~1_val~ instead. + pm.SendLocalizedMessage(1070707, alliance.Leader.Name); } - else if (otherAlliance != null && otherAlliance.Leader != m_Other) + else if (otherAlliance != null && otherAlliance.Leader != _other) { - pm.SendLocalizedMessage( - 1063239, - $"{m_Other.Name}\t{otherAlliance.Name}" - ); // ~1_val~ is not the leader of the ~2_val~ alliance. - pm.SendLocalizedMessage( - 1070707, - otherAlliance.Leader.Name - ); // You need to negotiate via ~1_val~ instead. + // ~1_val~ is not the leader of the ~2_val~ alliance. + pm.SendLocalizedMessage(1063239, $"{_other.Name}\t{otherAlliance.Name}"); + // You need to negotiate via ~1_val~ instead. + pm.SendLocalizedMessage(1070707, otherAlliance.Leader.Name); } else { - var activeWar = guild.FindActiveWar(m_Other); + var activeWar = Guild.FindActiveWar(_other); if (activeWar == null) { - var war = guild.FindPendingWar(m_Other); - var otherWar = m_Other.FindPendingWar(guild); + var war = Guild.FindPendingWar(_other); + var otherWar = _other.FindPendingWar(Guild); - // Note: OSI differs from what it says on website. unlimited war = 0 kills/ 0 hrs. Not > 999. (sidenote: they both cap at 65535, 7.5 years, but, still.) + // Note: OSI differs from what it says on website. unlimited war = 0 kills/0 hrs. + // Not > 999. (sidenote: they both cap at 65535, 7.5 years, but, still.) var tKills = info.GetTextEntry(11); var tWarLength = info.GetTextEntry(10); @@ -110,7 +105,7 @@ namespace Server.Guilds } else { - guild.PendingWars.Add(new WarDeclaration(guild, m_Other, maxKills, warLength, true)); + Guild.PendingWars.Add(new WarDeclaration(Guild, _other, maxKills, warLength, true)); } if (otherWar != null) @@ -121,7 +116,7 @@ namespace Server.Guilds } else { - m_Other.PendingWars.Add(new WarDeclaration(m_Other, guild, maxKills, warLength, false)); + _other.PendingWars.Add(new WarDeclaration(_other, Guild, maxKills, warLength, false)); } if (war != null) @@ -130,20 +125,22 @@ namespace Server.Guilds } else { - m_Other.GuildMessage( + // ~1_val~ has proposed a war. + _other.GuildMessage( 1070781, - guild.Alliance != null - ? guild.Alliance.Name - : guild.Name - ); // ~1_val~ has proposed a war. + Guild.Alliance != null + ? Guild.Alliance.Name + : Guild.Name + ); } + // War proposal has been sent to ~1_val~. pm.SendLocalizedMessage( 1070751, - m_Other.Alliance != null - ? m_Other.Alliance.Name - : m_Other.Name - ); // War proposal has been sent to ~1_val~. + _other.Alliance != null + ? _other.Alliance.Name + : _other.Name + ); } } @@ -151,7 +148,7 @@ namespace Server.Guilds } default: { - pm.SendGump(new OtherGuildInfo(pm, guild, m_Other)); + pm.SendGump(new OtherGuildInfo(pm, Guild, _other)); break; } } diff --git a/Projects/UOContent/Misc/Guild.cs b/Projects/UOContent/Misc/Guild.cs index ca905ec4a..faf9914ab 100644 --- a/Projects/UOContent/Misc/Guild.cs +++ b/Projects/UOContent/Misc/Guild.cs @@ -351,8 +351,6 @@ namespace Server.Guilds public class AllianceRosterGump : GuildDiplomacyGump { - private readonly AllianceInfo m_Alliance; - public AllianceRosterGump(PlayerMobile pm, Guild g, AllianceInfo alliance) : base( pm, g, @@ -361,32 +359,12 @@ namespace Server.Guilds 0, alliance.m_Members, alliance.Name - ) => - m_Alliance = alliance; - - public AllianceRosterGump( - PlayerMobile pm, Guild g, AllianceInfo alliance, IComparer currentComparer, - bool ascending, string filter, int startNumber - ) : base( - pm, - g, - currentComparer, - ascending, - filter, - startNumber, - alliance.m_Members, - alliance.Name - ) => - m_Alliance = alliance; + ) + { + } protected override bool AllowAdvancedSearch => false; - public override Gump GetResentGump( - PlayerMobile pm, Guild g, IComparer comparer, bool ascending, - string filter, int startNumber - ) => - new AllianceRosterGump(pm, g, m_Alliance, comparer, ascending, filter, startNumber); - public override void OnResponse(NetState sender, in RelayInfo info) { if (info.ButtonID != 8) // So that they can't get to the AdvancedSearch button