From d7786ce586bcfdcf91d40200fe339b2376e9b3a8 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Sat, 12 Feb 2022 22:42:50 -0800 Subject: [PATCH] fix: Fixes TextDefinition and optimizes CraftItem (#930) --- .../Data/Decoration/Britannia/wind.cfg | 2 +- .../UOContent/Engines/ConPVP/DuelContext.cs | 2 +- .../UOContent/Engines/Craft/Core/CraftGump.cs | 38 ++++++------- .../Engines/Craft/Core/CraftGumpItem.cs | 20 +++---- .../UOContent/Engines/Craft/Core/CraftItem.cs | 53 ++++++++++--------- .../UOContent/Engines/Craft/Core/CraftRes.cs | 23 +++----- .../Engines/Craft/Core/CraftSubRes.cs | 13 ++--- .../Engines/Craft/Core/CraftSubResCol.cs | 4 +- .../Engines/Craft/Core/CraftSystem.cs | 45 ++++------------ .../UOContent/Engines/Craft/Core/Enhance.cs | 4 +- .../UOContent/Engines/Craft/DefAlchemy.cs | 2 +- .../UOContent/Engines/Craft/DefBlacksmithy.cs | 2 +- .../Engines/Craft/DefBowFletching.cs | 2 +- .../UOContent/Engines/Craft/DefCarpentry.cs | 2 +- .../UOContent/Engines/Craft/DefCartography.cs | 2 +- .../UOContent/Engines/Craft/DefCooking.cs | 2 +- .../Engines/Craft/DefGlassblowing.cs | 2 +- .../UOContent/Engines/Craft/DefInscription.cs | 2 +- .../UOContent/Engines/Craft/DefMasonry.cs | 2 +- .../UOContent/Engines/Craft/DefTailoring.cs | 2 +- .../UOContent/Engines/Craft/DefTinkering.cs | 2 +- .../UOContent/Engines/Doom/GenGauntlet.cs | 2 +- .../Factions/Gumps/FactionImbueGump.cs | 12 ++--- .../Engines/Harvest/Core/HarvestResource.cs | 10 ++-- Projects/UOContent/Gumps/NoticeGump.cs | 10 ++-- Projects/UOContent/Gumps/WarningGump.cs | 12 ++--- .../Skill Items/Magical/Misc/Moongate.cs | 39 ++++++++------ 27 files changed, 138 insertions(+), 173 deletions(-) diff --git a/Distribution/Data/Decoration/Britannia/wind.cfg b/Distribution/Data/Decoration/Britannia/wind.cfg index 695d46747..93746ee8a 100644 --- a/Distribution/Data/Decoration/Britannia/wind.cfg +++ b/Distribution/Data/Decoration/Britannia/wind.cfg @@ -770,4 +770,4 @@ Static 0x1F3C # Arch Cure Static 0x1F45 -5304 88 19 \ No newline at end of file +5304 88 19 diff --git a/Projects/UOContent/Engines/ConPVP/DuelContext.cs b/Projects/UOContent/Engines/ConPVP/DuelContext.cs index 9e763c767..8217c5af8 100644 --- a/Projects/UOContent/Engines/ConPVP/DuelContext.cs +++ b/Projects/UOContent/Engines/ConPVP/DuelContext.cs @@ -2749,7 +2749,7 @@ namespace Server.Engines.ConPVP GumpWidth = 300; GumpHeight = 150; MessageColor = 0xFFC000; - MessageString = "Are you sure you wish to spectate this duel?"; + Message = "Are you sure you wish to spectate this duel?"; TitleColor = 0x7800; TitleNumber = 1062051; // Gate Warning diff --git a/Projects/UOContent/Engines/Craft/Core/CraftGump.cs b/Projects/UOContent/Engines/Craft/Core/CraftGump.cs index 9feeadb5a..653444076 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftGump.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftGump.cs @@ -24,7 +24,7 @@ namespace Server.Engines.Craft private readonly BaseTool m_Tool; public CraftGump( - Mobile from, CraftSystem craftSystem, BaseTool tool, object notice, CraftPage page = CraftPage.None + Mobile from, CraftSystem craftSystem, BaseTool tool, TextDefinition notice, CraftPage page = CraftPage.None ) : base(40, 40) { m_From = from; @@ -48,13 +48,13 @@ namespace Server.Engines.Craft AddImageTiled(215, 37, 305, 250, 2624); AddAlphaRegion(10, 10, 510, 417); - if (craftSystem.GumpTitleNumber > 0) + if (craftSystem.GumpTitle.Number > 0) { - AddHtmlLocalized(10, 12, 510, 20, craftSystem.GumpTitleNumber, LabelColor); + AddHtmlLocalized(10, 12, 510, 20, craftSystem.GumpTitle.Number, LabelColor); } else { - AddHtml(10, 12, 510, 20, craftSystem.GumpTitleString); + AddHtml(10, 12, 510, 20, craftSystem.GumpTitle.String); } AddHtmlLocalized(10, 37, 200, 22, 1044010, LabelColor); //
CATEGORIES
@@ -106,20 +106,20 @@ namespace Server.Engines.Craft } // **************************************** - if (notice is int noticeInt && noticeInt > 0) + if (notice.Number > 0) { - AddHtmlLocalized(170, 295, 350, 40, noticeInt, LabelColor); + AddHtmlLocalized(170, 295, 350, 40, notice.Number, LabelColor); } - else if (notice is string) + else { - AddHtml(170, 295, 350, 40, $"{notice}"); + AddHtml(170, 295, 350, 40, $"{notice.String}"); } // If the system has more than one resource if (craftSystem.CraftSubRes.Init) { - var nameString = craftSystem.CraftSubRes.NameString; - var nameNumber = craftSystem.CraftSubRes.NameNumber; + var nameString = craftSystem.CraftSubRes.Name.String; + var nameNumber = craftSystem.CraftSubRes.Name.Number; var resIndex = context?.LastResourceIndex ?? -1; @@ -129,8 +129,8 @@ namespace Server.Engines.Craft { var subResource = craftSystem.CraftSubRes.GetAt(resIndex); - nameString = subResource.NameString; - nameNumber = subResource.NameNumber; + nameString = subResource.Name.String; + nameNumber = subResource.Name.Number; resourceType = subResource.ItemType; } @@ -162,8 +162,8 @@ namespace Server.Engines.Craft // For dragon scales if (craftSystem.CraftSubRes2.Init) { - var nameString = craftSystem.CraftSubRes2.NameString; - var nameNumber = craftSystem.CraftSubRes2.NameNumber; + var nameString = craftSystem.CraftSubRes2.Name.String; + var nameNumber = craftSystem.CraftSubRes2.Name.Number; var resIndex = context?.LastResourceIndex2 ?? -1; @@ -173,8 +173,8 @@ namespace Server.Engines.Craft { var subResource = craftSystem.CraftSubRes2.GetAt(resIndex); - nameString = subResource.NameString; - nameNumber = subResource.NameNumber; + nameString = subResource.Name.String; + nameNumber = subResource.Name.Number; resourceType = subResource.ItemType; } @@ -270,21 +270,21 @@ namespace Server.Engines.Craft AddButton(220, 60 + index * 20, 4005, 4007, GetButtonID(5, i)); - if (subResource.NameNumber > 0) + if (subResource.Name.Number > 0) { AddHtmlLocalized( 255, 63 + index * 20, 250, 18, - subResource.NameNumber, + subResource.Name.Number, resourceCount.ToString(), LabelColor ); } else { - AddLabel(255, 60 + index * 20, LabelHue, $"{subResource.NameString} ({resourceCount})"); + AddLabel(255, 60 + index * 20, LabelHue, $"{subResource.Name.String} ({resourceCount})"); } } } diff --git a/Projects/UOContent/Engines/Craft/Core/CraftGumpItem.cs b/Projects/UOContent/Engines/Craft/Core/CraftGumpItem.cs index ec0a307e5..ad8ccfd87 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftGumpItem.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftGumpItem.cs @@ -58,13 +58,13 @@ namespace Server.Engines.Craft AddHtmlLocalized(10, 277, 150, 22, 1044055, LabelColor); //
MATERIALS
AddHtmlLocalized(10, 362, 150, 22, 1044056, LabelColor); //
OTHER
- if (craftSystem.GumpTitleNumber > 0) + if (craftSystem.GumpTitle.Number > 0) { - AddHtmlLocalized(10, 12, 510, 20, craftSystem.GumpTitleNumber, LabelColor); + AddHtmlLocalized(10, 12, 510, 20, craftSystem.GumpTitle.Number, LabelColor); } else { - AddHtml(10, 12, 510, 20, craftSystem.GumpTitleString); + AddHtml(10, 12, 510, 20, craftSystem.GumpTitle.String); } AddButton(15, 387, 4014, 4016, 0); @@ -230,15 +230,11 @@ namespace Server.Engines.Craft for (var i = 0; i < m_CraftItem.Resources.Count - (cropScroll ? 1 : 0) && i < 4; i++) { - Type type; - string nameString; - int nameNumber; - var craftResource = m_CraftItem.Resources[i]; - type = craftResource.ItemType; - nameString = craftResource.NameString; - nameNumber = craftResource.NameNumber; + var type = craftResource.ItemType; + var nameString = craftResource.Name.String; + var nameNumber = craftResource.Name.Number; // Resource Mutation if (type == res.ResType && resIndex > -1) @@ -247,12 +243,12 @@ namespace Server.Engines.Craft type = subResource.ItemType; - nameString = subResource.NameString; + nameString = subResource.Name.String; nameNumber = subResource.GenericNameNumber; if (nameNumber <= 0) { - nameNumber = subResource.NameNumber; + nameNumber = subResource.Name.Number; } } // ****************** diff --git a/Projects/UOContent/Engines/Craft/Core/CraftItem.cs b/Projects/UOContent/Engines/Craft/Core/CraftItem.cs index aab182f4c..9e738f8dc 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftItem.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftItem.cs @@ -279,7 +279,7 @@ namespace Server.Engines.Craft Skills.Add(craftSkill); } - public bool ConsumeAttributes(Mobile from, ref object message, bool consume) + public bool ConsumeAttributes(Mobile from, ref TextDefinition message, bool consume) { bool consumMana; bool consumHits; @@ -393,7 +393,7 @@ namespace Server.Engines.Craft return inResourceTable; } - public bool Find(Mobile from, int[] itemIDs) + public static bool Find(Mobile from, int[] itemIDs) { var map = from.Map; @@ -474,6 +474,7 @@ namespace Server.Engines.Craft throw new ArgumentOutOfRangeException(nameof(types)); } + // TODO: Optimize allocation var items = new Item[types.Length][]; var totals = new int[types.Length]; @@ -576,13 +577,13 @@ namespace Server.Engines.Craft public bool ConsumeRes( Mobile from, Type typeRes, CraftSystem craftSystem, ref int resHue, ref int maxAmount, - ConsumeType consumeType, ref object message + ConsumeType consumeType, ref TextDefinition message ) => ConsumeRes(from, typeRes, craftSystem, ref resHue, ref maxAmount, consumeType, ref message, false); public bool ConsumeRes( Mobile from, Type typeRes, CraftSystem craftSystem, ref int resHue, ref int maxAmount, - ConsumeType consumeType, ref object message, bool isFailure + ConsumeType consumeType, ref TextDefinition message, bool isFailure ) { var ourPack = from.Backpack; @@ -662,13 +663,13 @@ namespace Server.Engines.Craft { res = Resources[i]; - if (res.MessageNumber > 0) + if (res.Message.Number > 0) { - message = res.MessageNumber; + message = res.Message.Number; } - else if (!string.IsNullOrEmpty(res.MessageString)) + else if (!string.IsNullOrEmpty(res.Message.String)) { - message = res.MessageString; + message = res.Message.String; } else { @@ -720,10 +721,12 @@ namespace Server.Engines.Craft { index = -1; + var isQuantityType = IsQuantityType(types); + // TODO: Optimize this for (var i = 0; i < types.Length; i++) { - var quantity = IsQuantityType(types) + var quantity = isQuantityType ? GetQuantity(ourPack, types[i]) : ourPack.GetBestGroupAmount(types[i], true, CheckHueGrouping); @@ -772,13 +775,13 @@ namespace Server.Engines.Craft res = Resources[index]; - if (res.MessageNumber > 0) + if (res.Message.Number > 0) { - message = res.MessageNumber; + message = res.Message.Number; } - else if (!string.IsNullOrEmpty(res.MessageString)) + else if (!string.IsNullOrEmpty(res.Message.String)) { - message = res.MessageString; + message = res.Message.String; } else { @@ -975,7 +978,7 @@ namespace Server.Engines.Craft var resHue = 0; var maxAmount = 0; - object message = null; + TextDefinition message = null; if (!ConsumeRes(from, typeRes, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref message)) { @@ -1036,7 +1039,7 @@ namespace Server.Engines.Craft } int checkResHue = 0, checkMaxAmount = 0; - object checkMessage = null; + TextDefinition checkMessage = null; // Not enough resource to craft it if (!(ConsumeRes( @@ -1054,13 +1057,13 @@ namespace Server.Engines.Craft { from.SendGump(new CraftGump(from, craftSystem, tool, checkMessage)); } - else if (checkMessage is int messageInt && messageInt > 0) + else if (checkMessage.Number > 0) { - from.SendLocalizedMessage(messageInt); + from.SendLocalizedMessage(checkMessage.Number); } else { - from.SendMessage(checkMessage.ToString()); + from.SendMessage(checkMessage.String); } return; @@ -1072,7 +1075,7 @@ namespace Server.Engines.Craft var endquality = 1; var resHue = 0; var maxAmount = 0; - object message = null; + TextDefinition message = null; var num = 0; if (CheckSkills(from, typeRes, craftSystem, ref ignored, out var allRequiredSkills)) @@ -1085,13 +1088,13 @@ namespace Server.Engines.Craft { from.SendGump(new CraftGump(from, craftSystem, tool, message)); } - else if (message is int messageIn && messageIn > 0) + else if (message.Number > 0) { - from.SendLocalizedMessage(messageIn); + from.SendLocalizedMessage(message.Number); } else { - from.SendMessage(message.ToString()); + from.SendMessage(message.String); } return; @@ -1265,13 +1268,13 @@ namespace Server.Engines.Craft { from.SendGump(new CraftGump(from, craftSystem, tool, message)); } - else if (message is int messageInt && messageInt > 0) + else if (message.Number > 0) { - from.SendLocalizedMessage(messageInt); + from.SendLocalizedMessage(message.Number); } else { - from.SendMessage(message.ToString()); + from.SendMessage(message.String); } return; diff --git a/Projects/UOContent/Engines/Craft/Core/CraftRes.cs b/Projects/UOContent/Engines/Craft/Core/CraftRes.cs index b4f60eb5c..f3fd089e6 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftRes.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftRes.cs @@ -9,34 +9,27 @@ namespace Server.Engines.Craft ItemType = type; Amount = amount; - NameNumber = name; - MessageNumber = message; - - NameString = name; - MessageString = message; + Name = name; + Message = message; } public Type ItemType { get; } - public string MessageString { get; } + public TextDefinition Message { get; } - public int MessageNumber { get; } - - public string NameString { get; } - - public int NameNumber { get; } + public TextDefinition Name { get; } public int Amount { get; } public void SendMessage(Mobile from) { - if (MessageNumber > 0) + if (Message.Number > 0) { - from.SendLocalizedMessage(MessageNumber); + from.SendLocalizedMessage(Message.Number); } - else if (!string.IsNullOrEmpty(MessageString)) + else if (!string.IsNullOrEmpty(Message.String)) { - from.SendMessage(MessageString); + from.SendMessage(Message.String); } else { diff --git a/Projects/UOContent/Engines/Craft/Core/CraftSubRes.cs b/Projects/UOContent/Engines/Craft/Core/CraftSubRes.cs index c0c552029..69d4768b2 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftSubRes.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftSubRes.cs @@ -4,7 +4,7 @@ namespace Server.Engines.Craft { public class CraftSubRes { - public CraftSubRes(Type type, TextDefinition name, double reqSkill, object message) : this( + public CraftSubRes(Type type, TextDefinition name, double reqSkill, TextDefinition message) : this( type, name, reqSkill, @@ -14,11 +14,10 @@ namespace Server.Engines.Craft { } - public CraftSubRes(Type type, TextDefinition name, double reqSkill, int genericNameNumber, object message) + public CraftSubRes(Type type, TextDefinition name, double reqSkill, int genericNameNumber, TextDefinition message) { ItemType = type; - NameNumber = name; - NameString = name; + Name = name; RequiredSkill = reqSkill; GenericNameNumber = genericNameNumber; Message = message; @@ -26,13 +25,11 @@ namespace Server.Engines.Craft public Type ItemType { get; } - public string NameString { get; } - - public int NameNumber { get; } + public TextDefinition Name { get; } public int GenericNameNumber { get; } - public object Message { get; } + public TextDefinition Message { get; } public double RequiredSkill { get; } } diff --git a/Projects/UOContent/Engines/Craft/Core/CraftSubResCol.cs b/Projects/UOContent/Engines/Craft/Core/CraftSubResCol.cs index 2079f9e0b..b52ad86ad 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftSubResCol.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftSubResCol.cs @@ -11,9 +11,7 @@ namespace Server.Engines.Craft public Type ResType { get; set; } - public string NameString { get; set; } - - public int NameNumber { get; set; } + public TextDefinition Name { get; set; } public CraftSubRes GetAt(int index) => this[index]; diff --git a/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs b/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs index 4b00e03e3..1805aeed3 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftSystem.cs @@ -50,8 +50,7 @@ namespace Server.Engines.Craft public abstract SkillName MainSkill { get; } - public virtual int GumpTitleNumber => 0; - public virtual string GumpTitleString => ""; + public virtual TextDefinition GumpTitle => 0; public virtual CraftECA ECA => CraftECA.ChanceMinusSixty; @@ -269,65 +268,39 @@ namespace Server.Engines.Craft CraftItems[index].ForceNonExceptional = true; } - public void SetSubRes(Type type, string name) + public void SetSubRes(Type type, TextDefinition name) { CraftSubRes.ResType = type; - CraftSubRes.NameString = name; + CraftSubRes.Name = name; CraftSubRes.Init = true; } - public void SetSubRes(Type type, int name) - { - CraftSubRes.ResType = type; - CraftSubRes.NameNumber = name; - CraftSubRes.Init = true; - } - - public void AddSubRes(Type type, int name, double reqSkill, object message) - { - var craftSubRes = new CraftSubRes(type, name, reqSkill, message); - CraftSubRes.Add(craftSubRes); - } - - public void AddSubRes(Type type, int name, double reqSkill, int genericName, object message) + public void AddSubRes(Type type, TextDefinition name, double reqSkill, int genericName, TextDefinition message) { var craftSubRes = new CraftSubRes(type, name, reqSkill, genericName, message); CraftSubRes.Add(craftSubRes); } - public void AddSubRes(Type type, string name, double reqSkill, object message) + public void AddSubRes(Type type, TextDefinition name, double reqSkill, TextDefinition message) { var craftSubRes = new CraftSubRes(type, name, reqSkill, message); CraftSubRes.Add(craftSubRes); } - public void SetSubRes2(Type type, string name) + public void SetSubRes2(Type type, TextDefinition name) { CraftSubRes2.ResType = type; - CraftSubRes2.NameString = name; + CraftSubRes2.Name = name; CraftSubRes2.Init = true; } - public void SetSubRes2(Type type, int name) - { - CraftSubRes2.ResType = type; - CraftSubRes2.NameNumber = name; - CraftSubRes2.Init = true; - } - - public void AddSubRes2(Type type, int name, double reqSkill, object message) - { - var craftSubRes = new CraftSubRes(type, name, reqSkill, message); - CraftSubRes2.Add(craftSubRes); - } - - public void AddSubRes2(Type type, int name, double reqSkill, int genericName, object message) + public void AddSubRes2(Type type, TextDefinition name, double reqSkill, int genericName, TextDefinition message) { var craftSubRes = new CraftSubRes(type, name, reqSkill, genericName, message); CraftSubRes2.Add(craftSubRes); } - public void AddSubRes2(Type type, string name, double reqSkill, object message) + public void AddSubRes2(Type type, TextDefinition name, double reqSkill, TextDefinition message) { var craftSubRes = new CraftSubRes(type, name, reqSkill, message); CraftSubRes2.Add(craftSubRes); diff --git a/Projects/UOContent/Engines/Craft/Core/Enhance.cs b/Projects/UOContent/Engines/Craft/Core/Enhance.cs index c5a6c0377..2ba478f5d 100644 --- a/Projects/UOContent/Engines/Craft/Core/Enhance.cs +++ b/Projects/UOContent/Engines/Craft/Core/Enhance.cs @@ -22,7 +22,7 @@ namespace Server.Engines.Craft { public static EnhanceResult Invoke( Mobile from, CraftSystem craftSystem, BaseTool tool, Item item, - CraftResource resource, Type resType, ref object resMessage + CraftResource resource, Type resType, ref TextDefinition resMessage ) { if (item == null) @@ -410,7 +410,7 @@ namespace Server.Engines.Craft { if (targeted is Item item) { - object message = null; + TextDefinition message = null; var res = Enhance.Invoke( from, m_CraftSystem, diff --git a/Projects/UOContent/Engines/Craft/DefAlchemy.cs b/Projects/UOContent/Engines/Craft/DefAlchemy.cs index 0d1b66311..d74f9ff2e 100644 --- a/Projects/UOContent/Engines/Craft/DefAlchemy.cs +++ b/Projects/UOContent/Engines/Craft/DefAlchemy.cs @@ -15,7 +15,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Alchemy; - public override int GumpTitleNumber => 1044001; + public override TextDefinition GumpTitle => 1044001; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefAlchemy(); diff --git a/Projects/UOContent/Engines/Craft/DefBlacksmithy.cs b/Projects/UOContent/Engines/Craft/DefBlacksmithy.cs index b470983f2..a571c7461 100644 --- a/Projects/UOContent/Engines/Craft/DefBlacksmithy.cs +++ b/Projects/UOContent/Engines/Craft/DefBlacksmithy.cs @@ -28,7 +28,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Blacksmith; - public override int GumpTitleNumber => 1044002; + public override TextDefinition GumpTitle => 1044002; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefBlacksmithy(); diff --git a/Projects/UOContent/Engines/Craft/DefBowFletching.cs b/Projects/UOContent/Engines/Craft/DefBowFletching.cs index ac042499c..1625c92ef 100644 --- a/Projects/UOContent/Engines/Craft/DefBowFletching.cs +++ b/Projects/UOContent/Engines/Craft/DefBowFletching.cs @@ -13,7 +13,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Fletching; - public override int GumpTitleNumber => 1044006; + public override TextDefinition GumpTitle => 1044006; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefBowFletching(); diff --git a/Projects/UOContent/Engines/Craft/DefCarpentry.cs b/Projects/UOContent/Engines/Craft/DefCarpentry.cs index 95e1a76f6..e46c1b9d7 100644 --- a/Projects/UOContent/Engines/Craft/DefCarpentry.cs +++ b/Projects/UOContent/Engines/Craft/DefCarpentry.cs @@ -13,7 +13,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Carpentry; - public override int GumpTitleNumber => 1044004; + public override TextDefinition GumpTitle => 1044004; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCarpentry(); diff --git a/Projects/UOContent/Engines/Craft/DefCartography.cs b/Projects/UOContent/Engines/Craft/DefCartography.cs index 0c93b0fa6..8e14e54d6 100644 --- a/Projects/UOContent/Engines/Craft/DefCartography.cs +++ b/Projects/UOContent/Engines/Craft/DefCartography.cs @@ -13,7 +13,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Cartography; - public override int GumpTitleNumber => 1044008; + public override TextDefinition GumpTitle => 1044008; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCartography(); diff --git a/Projects/UOContent/Engines/Craft/DefCooking.cs b/Projects/UOContent/Engines/Craft/DefCooking.cs index 199c287cc..fd41791c9 100644 --- a/Projects/UOContent/Engines/Craft/DefCooking.cs +++ b/Projects/UOContent/Engines/Craft/DefCooking.cs @@ -13,7 +13,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Cooking; - public override int GumpTitleNumber => 1044003; + public override TextDefinition GumpTitle => 1044003; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCooking(); diff --git a/Projects/UOContent/Engines/Craft/DefGlassblowing.cs b/Projects/UOContent/Engines/Craft/DefGlassblowing.cs index bf4793f13..3d60a26a7 100644 --- a/Projects/UOContent/Engines/Craft/DefGlassblowing.cs +++ b/Projects/UOContent/Engines/Craft/DefGlassblowing.cs @@ -14,7 +14,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Alchemy; - public override int GumpTitleNumber => 1044622; + public override TextDefinition GumpTitle => 1044622; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefGlassblowing(); diff --git a/Projects/UOContent/Engines/Craft/DefInscription.cs b/Projects/UOContent/Engines/Craft/DefInscription.cs index df75d4cb4..e779c99a8 100644 --- a/Projects/UOContent/Engines/Craft/DefInscription.cs +++ b/Projects/UOContent/Engines/Craft/DefInscription.cs @@ -35,7 +35,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Inscribe; - public override int GumpTitleNumber => 1044009; + public override TextDefinition GumpTitle => 1044009; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefInscription(); diff --git a/Projects/UOContent/Engines/Craft/DefMasonry.cs b/Projects/UOContent/Engines/Craft/DefMasonry.cs index cd2d6cdea..2de64124b 100644 --- a/Projects/UOContent/Engines/Craft/DefMasonry.cs +++ b/Projects/UOContent/Engines/Craft/DefMasonry.cs @@ -14,7 +14,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Carpentry; - public override int GumpTitleNumber => 1044500; + public override TextDefinition GumpTitle => 1044500; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefMasonry(); diff --git a/Projects/UOContent/Engines/Craft/DefTailoring.cs b/Projects/UOContent/Engines/Craft/DefTailoring.cs index fba543763..f338928de 100644 --- a/Projects/UOContent/Engines/Craft/DefTailoring.cs +++ b/Projects/UOContent/Engines/Craft/DefTailoring.cs @@ -21,7 +21,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Tailoring; - public override int GumpTitleNumber => 1044005; // Tailoring Menu + public override TextDefinition GumpTitle => 1044005; // Tailoring Menu public static CraftSystem CraftSystem => m_CraftSystem ??= new DefTailoring(); diff --git a/Projects/UOContent/Engines/Craft/DefTinkering.cs b/Projects/UOContent/Engines/Craft/DefTinkering.cs index dbe6f497a..93d17ad7f 100644 --- a/Projects/UOContent/Engines/Craft/DefTinkering.cs +++ b/Projects/UOContent/Engines/Craft/DefTinkering.cs @@ -29,7 +29,7 @@ namespace Server.Engines.Craft public override SkillName MainSkill => SkillName.Tinkering; - public override int GumpTitleNumber => 1044007; + public override TextDefinition GumpTitle => 1044007; public static CraftSystem CraftSystem => m_CraftSystem ??= new DefTinkering(); diff --git a/Projects/UOContent/Engines/Doom/GenGauntlet.cs b/Projects/UOContent/Engines/Doom/GenGauntlet.cs index ebc5979f9..881546cb6 100644 --- a/Projects/UOContent/Engines/Doom/GenGauntlet.cs +++ b/Projects/UOContent/Engines/Doom/GenGauntlet.cs @@ -118,7 +118,7 @@ namespace Server.Engines.Doom gate.GumpHeight = 280; gate.MessageColor = 0x7F00; - gate.MessageNumber = 1062109; // You are about to exit Dungeon Doom. Do you wish to continue? + gate.Message = 1062109; // You are about to exit Dungeon Doom. Do you wish to continue? gate.TitleColor = 0x7800; gate.TitleNumber = 1062108; // Please verify... diff --git a/Projects/UOContent/Engines/Factions/Gumps/FactionImbueGump.cs b/Projects/UOContent/Engines/Factions/Gumps/FactionImbueGump.cs index 3f9c5df00..29931054a 100644 --- a/Projects/UOContent/Engines/Factions/Gumps/FactionImbueGump.cs +++ b/Projects/UOContent/Engines/Factions/Gumps/FactionImbueGump.cs @@ -13,11 +13,11 @@ namespace Server.Factions private readonly Faction m_Faction; private readonly Item m_Item; private readonly Mobile m_Mobile; - private readonly object m_Notice; + private readonly TextDefinition m_Notice; private readonly BaseTool m_Tool; public FactionImbueGump( - int quality, Item item, Mobile from, CraftSystem craftSystem, BaseTool tool, object notice, + int quality, Item item, Mobile from, CraftSystem craftSystem, BaseTool tool, TextDefinition notice, int availableSilver, Faction faction, FactionItemDefinition def ) : base(100, 200) { @@ -98,13 +98,13 @@ namespace Server.Factions { m_Mobile.SendGump(new CraftGump(m_Mobile, m_CraftSystem, m_Tool, m_Notice)); } - else if (m_Notice is string s) + else if (m_Notice.Number > 0) { - m_Mobile.SendMessage(s); + m_Mobile.SendLocalizedMessage(m_Notice.Number); } - else if (m_Notice is int i && i > 0) + else { - m_Mobile.SendLocalizedMessage(i); + m_Mobile.SendMessage(m_Notice.String); } } } diff --git a/Projects/UOContent/Engines/Harvest/Core/HarvestResource.cs b/Projects/UOContent/Engines/Harvest/Core/HarvestResource.cs index 4fdb5b1b4..37df99a26 100644 --- a/Projects/UOContent/Engines/Harvest/Core/HarvestResource.cs +++ b/Projects/UOContent/Engines/Harvest/Core/HarvestResource.cs @@ -4,7 +4,7 @@ namespace Server.Engines.Harvest { public class HarvestResource { - public HarvestResource(double reqSkill, double minSkill, double maxSkill, object message, params Type[] types) + public HarvestResource(double reqSkill, double minSkill, double maxSkill, TextDefinition message, params Type[] types) { ReqSkill = reqSkill; MinSkill = minSkill; @@ -21,17 +21,17 @@ namespace Server.Engines.Harvest public double MaxSkill { get; set; } - public object SuccessMessage { get; } + public TextDefinition SuccessMessage { get; } public void SendSuccessTo(Mobile m) { - if (SuccessMessage is int messageInt) + if (SuccessMessage.Number > 0) { - m.SendLocalizedMessage(messageInt); + m.SendLocalizedMessage(SuccessMessage.Number); } else { - m.SendMessage(SuccessMessage.ToString()); + m.SendMessage(SuccessMessage.String); } } } diff --git a/Projects/UOContent/Gumps/NoticeGump.cs b/Projects/UOContent/Gumps/NoticeGump.cs index 582e25c96..6ae0fa683 100644 --- a/Projects/UOContent/Gumps/NoticeGump.cs +++ b/Projects/UOContent/Gumps/NoticeGump.cs @@ -9,7 +9,7 @@ namespace Server.Gumps private readonly NoticeGumpCallback m_Callback; public NoticeGump( - int header, int headerColor, object content, int contentColor, int width, int height, + int header, int headerColor, TextDefinition content, int contentColor, int width, int height, NoticeGumpCallback callback = null ) : base((640 - width) / 2, (480 - height) / 2) { @@ -28,18 +28,18 @@ namespace Server.Gumps AddImageTiled(10, 40, width - 20, height - 80, 2624); AddAlphaRegion(10, 40, width - 20, height - 80); - if (content is int i) + if (content.Number > 0) { - AddHtmlLocalized(10, 40, width - 20, height - 80, i, contentColor, false, true); + AddHtmlLocalized(10, 40, width - 20, height - 80, content.Number, contentColor, false, true); } - else if (content is string) + else { AddHtml( 10, 40, width - 20, height - 80, - $"{content}", + $"{content.String}", false, true ); diff --git a/Projects/UOContent/Gumps/WarningGump.cs b/Projects/UOContent/Gumps/WarningGump.cs index 8b3acfd41..6b5315f78 100644 --- a/Projects/UOContent/Gumps/WarningGump.cs +++ b/Projects/UOContent/Gumps/WarningGump.cs @@ -9,7 +9,7 @@ namespace Server.Gumps private readonly WarningGumpCallback m_Callback; public WarningGump( - int header, int headerColor, object content, int contentColor, int width, int height, + int header, int headerColor, TextDefinition content, int contentColor, int width, int height, WarningGumpCallback callback = null, bool cancelButton = true ) : base((640 - width) / 2, (480 - height) / 2) { @@ -28,18 +28,18 @@ namespace Server.Gumps AddImageTiled(10, 40, width - 20, height - 80, 2624); AddAlphaRegion(10, 40, width - 20, height - 80); - if (content is int i) + if (content.Number > 0) { - AddHtmlLocalized(10, 40, width - 20, height - 80, i, contentColor, false, true); + AddHtmlLocalized(10, 40, width - 20, height - 80, content.Number, contentColor, false, true); } - else if (content is string) + else { AddHtml( 10, 40, width - 20, height - 80, - $"{content}", + $"{content.String}", false, true ); @@ -71,7 +71,7 @@ namespace Server.Gumps } else { - m_Callback.Invoke(false); + m_Callback(false); } } } diff --git a/Projects/UOContent/Items/Skill Items/Magical/Misc/Moongate.cs b/Projects/UOContent/Items/Skill Items/Magical/Misc/Moongate.cs index b083d3940..e56860bb1 100644 --- a/Projects/UOContent/Items/Skill Items/Magical/Misc/Moongate.cs +++ b/Projects/UOContent/Items/Skill Items/Magical/Misc/Moongate.cs @@ -274,10 +274,7 @@ namespace Server.Items public int TitleNumber { get; set; } [CommandProperty(AccessLevel.GameMaster)] - public int MessageNumber { get; set; } - - [CommandProperty(AccessLevel.GameMaster)] - public string MessageString { get; set; } + public TextDefinition Message { get; set; } public virtual void Warning_Callback(Mobile from, bool okay) { @@ -289,14 +286,14 @@ namespace Server.Items public override void BeginConfirmation(Mobile from) { - if (GumpWidth > 0 && GumpHeight > 0 && TitleNumber > 0 && (MessageNumber > 0 || MessageString != null)) + if (GumpWidth > 0 && GumpHeight > 0 && TitleNumber > 0 && !Message.IsEmpty) { from.CloseGump(); from.SendGump( new WarningGump( TitleNumber, TitleColor, - MessageString ?? (object)MessageNumber, + Message, MessageColor, GumpWidth, GumpHeight, @@ -314,7 +311,9 @@ namespace Server.Items { base.Serialize(writer); - writer.Write(0); // version + writer.Write(1); // version + + TextDefinition.Serialize(writer, Message); writer.WriteEncodedInt(GumpWidth); writer.WriteEncodedInt(GumpHeight); @@ -323,9 +322,6 @@ namespace Server.Items writer.WriteEncodedInt(MessageColor); writer.WriteEncodedInt(TitleNumber); - writer.WriteEncodedInt(MessageNumber); - - writer.Write(MessageString); } public override void Deserialize(IGenericReader reader) @@ -336,6 +332,11 @@ namespace Server.Items switch (version) { + case 1: + { + Message = TextDefinition.Deserialize(reader); + goto case 0; + } case 0: { GumpWidth = reader.ReadEncodedInt(); @@ -345,9 +346,13 @@ namespace Server.Items MessageColor = reader.ReadEncodedInt(); TitleNumber = reader.ReadEncodedInt(); - MessageNumber = reader.ReadEncodedInt(); - MessageString = reader.ReadString(); + if (version == 0) + { + var number = reader.ReadEncodedInt(); + var message = reader.ReadString(); + Message = number > 0 ? number : message; + } break; } @@ -388,11 +393,11 @@ namespace Server.Items 40, 400, 200, - 1062050, + 1062050, // This Gate goes to Felucca... Continue to enter the gate, Cancel to stay here 32512, false, true - ); // This Gate goes to Felucca... Continue to enter the gate, Cancel to stay here + ); } else { @@ -401,11 +406,11 @@ namespace Server.Items 40, 400, 200, - 1062049, + 1062049, // Dost thou wish to step into the moongate? Continue to enter the gate, Cancel to stay here 32512, false, true - ); // Dost thou wish to step into the moongate? Continue to enter the gate, Cancel to stay here + ); } AddImageTiled(10, 250, 400, 20, 2624); @@ -429,7 +434,7 @@ namespace Server.Items 40, 380, 60, - @"Dost thou wish to step into the moongate? Continue to enter the gate, Cancel to stay here" + "Dost thou wish to step into the moongate? Continue to enter the gate, Cancel to stay here" ); AddHtmlLocalized(55, 110, 290, 20, 1011012); // CANCEL