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