fix: Fixes TextDefinition and optimizes CraftItem (#930)

This commit is contained in:
Kamron Batman 2022-02-12 22:42:50 -08:00 • committed by GitHub
parent 202c4a99b7
commit d7786ce586
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 138 additions and 173 deletions

View file

@ -770,4 +770,4 @@ Static 0x1F3C
# Arch Cure # Arch Cure
Static 0x1F45 Static 0x1F45
5304 88 19 5304 88 19

View file

@ -2749,7 +2749,7 @@ namespace Server.Engines.ConPVP
GumpWidth = 300; GumpWidth = 300;
GumpHeight = 150; GumpHeight = 150;
MessageColor = 0xFFC000; MessageColor = 0xFFC000;
MessageString = "Are you sure you wish to spectate this duel?"; Message = "Are you sure you wish to spectate this duel?";
TitleColor = 0x7800; TitleColor = 0x7800;
TitleNumber = 1062051; // Gate Warning TitleNumber = 1062051; // Gate Warning

View file

@ -24,7 +24,7 @@ namespace Server.Engines.Craft
private readonly BaseTool m_Tool; private readonly BaseTool m_Tool;
public CraftGump( 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) ) : base(40, 40)
{ {
m_From = from; m_From = from;
@ -48,13 +48,13 @@ namespace Server.Engines.Craft
AddImageTiled(215, 37, 305, 250, 2624); AddImageTiled(215, 37, 305, 250, 2624);
AddAlphaRegion(10, 10, 510, 417); 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 else
{ {
AddHtml(10, 12, 510, 20, craftSystem.GumpTitleString); AddHtml(10, 12, 510, 20, craftSystem.GumpTitle.String);
} }
AddHtmlLocalized(10, 37, 200, 22, 1044010, LabelColor); // <CENTER>CATEGORIES</CENTER> AddHtmlLocalized(10, 37, 200, 22, 1044010, LabelColor); // <CENTER>CATEGORIES</CENTER>
@ -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, $"<BASEFONT COLOR=#{FontColor:X6}>{notice}</BASEFONT>"); AddHtml(170, 295, 350, 40, $"<BASEFONT COLOR=#{FontColor:X6}>{notice.String}</BASEFONT>");
} }
// If the system has more than one resource // If the system has more than one resource
if (craftSystem.CraftSubRes.Init) if (craftSystem.CraftSubRes.Init)
{ {
var nameString = craftSystem.CraftSubRes.NameString; var nameString = craftSystem.CraftSubRes.Name.String;
var nameNumber = craftSystem.CraftSubRes.NameNumber; var nameNumber = craftSystem.CraftSubRes.Name.Number;
var resIndex = context?.LastResourceIndex ?? -1; var resIndex = context?.LastResourceIndex ?? -1;
@ -129,8 +129,8 @@ namespace Server.Engines.Craft
{ {
var subResource = craftSystem.CraftSubRes.GetAt(resIndex); var subResource = craftSystem.CraftSubRes.GetAt(resIndex);
nameString = subResource.NameString; nameString = subResource.Name.String;
nameNumber = subResource.NameNumber; nameNumber = subResource.Name.Number;
resourceType = subResource.ItemType; resourceType = subResource.ItemType;
} }
@ -162,8 +162,8 @@ namespace Server.Engines.Craft
// For dragon scales // For dragon scales
if (craftSystem.CraftSubRes2.Init) if (craftSystem.CraftSubRes2.Init)
{ {
var nameString = craftSystem.CraftSubRes2.NameString; var nameString = craftSystem.CraftSubRes2.Name.String;
var nameNumber = craftSystem.CraftSubRes2.NameNumber; var nameNumber = craftSystem.CraftSubRes2.Name.Number;
var resIndex = context?.LastResourceIndex2 ?? -1; var resIndex = context?.LastResourceIndex2 ?? -1;
@ -173,8 +173,8 @@ namespace Server.Engines.Craft
{ {
var subResource = craftSystem.CraftSubRes2.GetAt(resIndex); var subResource = craftSystem.CraftSubRes2.GetAt(resIndex);
nameString = subResource.NameString; nameString = subResource.Name.String;
nameNumber = subResource.NameNumber; nameNumber = subResource.Name.Number;
resourceType = subResource.ItemType; resourceType = subResource.ItemType;
} }
@ -270,21 +270,21 @@ namespace Server.Engines.Craft
AddButton(220, 60 + index * 20, 4005, 4007, GetButtonID(5, i)); AddButton(220, 60 + index * 20, 4005, 4007, GetButtonID(5, i));
if (subResource.NameNumber > 0) if (subResource.Name.Number > 0)
{ {
AddHtmlLocalized( AddHtmlLocalized(
255, 255,
63 + index * 20, 63 + index * 20,
250, 250,
18, 18,
subResource.NameNumber, subResource.Name.Number,
resourceCount.ToString(), resourceCount.ToString(),
LabelColor LabelColor
); );
} }
else else
{ {
AddLabel(255, 60 + index * 20, LabelHue, $"{subResource.NameString} ({resourceCount})"); AddLabel(255, 60 + index * 20, LabelHue, $"{subResource.Name.String} ({resourceCount})");
} }
} }
} }

View file

@ -58,13 +58,13 @@ namespace Server.Engines.Craft
AddHtmlLocalized(10, 277, 150, 22, 1044055, LabelColor); // <CENTER>MATERIALS</CENTER> AddHtmlLocalized(10, 277, 150, 22, 1044055, LabelColor); // <CENTER>MATERIALS</CENTER>
AddHtmlLocalized(10, 362, 150, 22, 1044056, LabelColor); // <CENTER>OTHER</CENTER> AddHtmlLocalized(10, 362, 150, 22, 1044056, LabelColor); // <CENTER>OTHER</CENTER>
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 else
{ {
AddHtml(10, 12, 510, 20, craftSystem.GumpTitleString); AddHtml(10, 12, 510, 20, craftSystem.GumpTitle.String);
} }
AddButton(15, 387, 4014, 4016, 0); 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++) 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]; var craftResource = m_CraftItem.Resources[i];
type = craftResource.ItemType; var type = craftResource.ItemType;
nameString = craftResource.NameString; var nameString = craftResource.Name.String;
nameNumber = craftResource.NameNumber; var nameNumber = craftResource.Name.Number;
// Resource Mutation // Resource Mutation
if (type == res.ResType && resIndex > -1) if (type == res.ResType && resIndex > -1)
@ -247,12 +243,12 @@ namespace Server.Engines.Craft
type = subResource.ItemType; type = subResource.ItemType;
nameString = subResource.NameString; nameString = subResource.Name.String;
nameNumber = subResource.GenericNameNumber; nameNumber = subResource.GenericNameNumber;
if (nameNumber <= 0) if (nameNumber <= 0)
{ {
nameNumber = subResource.NameNumber; nameNumber = subResource.Name.Number;
} }
} }
// ****************** // ******************

View file

@ -279,7 +279,7 @@ namespace Server.Engines.Craft
Skills.Add(craftSkill); 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 consumMana;
bool consumHits; bool consumHits;
@ -393,7 +393,7 @@ namespace Server.Engines.Craft
return inResourceTable; return inResourceTable;
} }
public bool Find(Mobile from, int[] itemIDs) public static bool Find(Mobile from, int[] itemIDs)
{ {
var map = from.Map; var map = from.Map;
@ -474,6 +474,7 @@ namespace Server.Engines.Craft
throw new ArgumentOutOfRangeException(nameof(types)); throw new ArgumentOutOfRangeException(nameof(types));
} }
// TODO: Optimize allocation
var items = new Item[types.Length][]; var items = new Item[types.Length][];
var totals = new int[types.Length]; var totals = new int[types.Length];
@ -576,13 +577,13 @@ namespace Server.Engines.Craft
public bool ConsumeRes( public bool ConsumeRes(
Mobile from, Type typeRes, CraftSystem craftSystem, ref int resHue, ref int maxAmount, 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); ConsumeRes(from, typeRes, craftSystem, ref resHue, ref maxAmount, consumeType, ref message, false);
public bool ConsumeRes( public bool ConsumeRes(
Mobile from, Type typeRes, CraftSystem craftSystem, ref int resHue, ref int maxAmount, 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; var ourPack = from.Backpack;
@ -662,13 +663,13 @@ namespace Server.Engines.Craft
{ {
res = Resources[i]; 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 else
{ {
@ -720,10 +721,12 @@ namespace Server.Engines.Craft
{ {
index = -1; index = -1;
var isQuantityType = IsQuantityType(types);
// TODO: Optimize this // TODO: Optimize this
for (var i = 0; i < types.Length; i++) for (var i = 0; i < types.Length; i++)
{ {
var quantity = IsQuantityType(types) var quantity = isQuantityType
? GetQuantity(ourPack, types[i]) ? GetQuantity(ourPack, types[i])
: ourPack.GetBestGroupAmount(types[i], true, CheckHueGrouping); : ourPack.GetBestGroupAmount(types[i], true, CheckHueGrouping);
@ -772,13 +775,13 @@ namespace Server.Engines.Craft
res = Resources[index]; 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 else
{ {
@ -975,7 +978,7 @@ namespace Server.Engines.Craft
var resHue = 0; var resHue = 0;
var maxAmount = 0; var maxAmount = 0;
object message = null; TextDefinition message = null;
if (!ConsumeRes(from, typeRes, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref message)) 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; int checkResHue = 0, checkMaxAmount = 0;
object checkMessage = null; TextDefinition checkMessage = null;
// Not enough resource to craft it // Not enough resource to craft it
if (!(ConsumeRes( if (!(ConsumeRes(
@ -1054,13 +1057,13 @@ namespace Server.Engines.Craft
{ {
from.SendGump(new CraftGump(from, craftSystem, tool, checkMessage)); 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 else
{ {
from.SendMessage(checkMessage.ToString()); from.SendMessage(checkMessage.String);
} }
return; return;
@ -1072,7 +1075,7 @@ namespace Server.Engines.Craft
var endquality = 1; var endquality = 1;
var resHue = 0; var resHue = 0;
var maxAmount = 0; var maxAmount = 0;
object message = null; TextDefinition message = null;
var num = 0; var num = 0;
if (CheckSkills(from, typeRes, craftSystem, ref ignored, out var allRequiredSkills)) 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)); 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 else
{ {
from.SendMessage(message.ToString()); from.SendMessage(message.String);
} }
return; return;
@ -1265,13 +1268,13 @@ namespace Server.Engines.Craft
{ {
from.SendGump(new CraftGump(from, craftSystem, tool, message)); 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 else
{ {
from.SendMessage(message.ToString()); from.SendMessage(message.String);
} }
return; return;

View file

@ -9,34 +9,27 @@ namespace Server.Engines.Craft
ItemType = type; ItemType = type;
Amount = amount; Amount = amount;
NameNumber = name; Name = name;
MessageNumber = message; Message = message;
NameString = name;
MessageString = message;
} }
public Type ItemType { get; } public Type ItemType { get; }
public string MessageString { get; } public TextDefinition Message { get; }
public int MessageNumber { get; } public TextDefinition Name { get; }
public string NameString { get; }
public int NameNumber { get; }
public int Amount { get; } public int Amount { get; }
public void SendMessage(Mobile from) 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 else
{ {

View file

@ -4,7 +4,7 @@ namespace Server.Engines.Craft
{ {
public class CraftSubRes 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, type,
name, name,
reqSkill, 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; ItemType = type;
NameNumber = name; Name = name;
NameString = name;
RequiredSkill = reqSkill; RequiredSkill = reqSkill;
GenericNameNumber = genericNameNumber; GenericNameNumber = genericNameNumber;
Message = message; Message = message;
@ -26,13 +25,11 @@ namespace Server.Engines.Craft
public Type ItemType { get; } public Type ItemType { get; }
public string NameString { get; } public TextDefinition Name { get; }
public int NameNumber { get; }
public int GenericNameNumber { get; } public int GenericNameNumber { get; }
public object Message { get; } public TextDefinition Message { get; }
public double RequiredSkill { get; } public double RequiredSkill { get; }
} }

View file

@ -11,9 +11,7 @@ namespace Server.Engines.Craft
public Type ResType { get; set; } public Type ResType { get; set; }
public string NameString { get; set; } public TextDefinition Name { get; set; }
public int NameNumber { get; set; }
public CraftSubRes GetAt(int index) => this[index]; public CraftSubRes GetAt(int index) => this[index];

View file

@ -50,8 +50,7 @@ namespace Server.Engines.Craft
public abstract SkillName MainSkill { get; } public abstract SkillName MainSkill { get; }
public virtual int GumpTitleNumber => 0; public virtual TextDefinition GumpTitle => 0;
public virtual string GumpTitleString => "";
public virtual CraftECA ECA => CraftECA.ChanceMinusSixty; public virtual CraftECA ECA => CraftECA.ChanceMinusSixty;
@ -269,65 +268,39 @@ namespace Server.Engines.Craft
CraftItems[index].ForceNonExceptional = true; CraftItems[index].ForceNonExceptional = true;
} }
public void SetSubRes(Type type, string name) public void SetSubRes(Type type, TextDefinition name)
{ {
CraftSubRes.ResType = type; CraftSubRes.ResType = type;
CraftSubRes.NameString = name; CraftSubRes.Name = name;
CraftSubRes.Init = true; CraftSubRes.Init = true;
} }
public void SetSubRes(Type type, int name) public void AddSubRes(Type type, TextDefinition name, double reqSkill, int genericName, TextDefinition message)
{
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)
{ {
var craftSubRes = new CraftSubRes(type, name, reqSkill, genericName, message); var craftSubRes = new CraftSubRes(type, name, reqSkill, genericName, message);
CraftSubRes.Add(craftSubRes); 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); var craftSubRes = new CraftSubRes(type, name, reqSkill, message);
CraftSubRes.Add(craftSubRes); CraftSubRes.Add(craftSubRes);
} }
public void SetSubRes2(Type type, string name) public void SetSubRes2(Type type, TextDefinition name)
{ {
CraftSubRes2.ResType = type; CraftSubRes2.ResType = type;
CraftSubRes2.NameString = name; CraftSubRes2.Name = name;
CraftSubRes2.Init = true; CraftSubRes2.Init = true;
} }
public void SetSubRes2(Type type, int name) public void AddSubRes2(Type type, TextDefinition name, double reqSkill, int genericName, TextDefinition message)
{
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)
{ {
var craftSubRes = new CraftSubRes(type, name, reqSkill, genericName, message); var craftSubRes = new CraftSubRes(type, name, reqSkill, genericName, message);
CraftSubRes2.Add(craftSubRes); 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); var craftSubRes = new CraftSubRes(type, name, reqSkill, message);
CraftSubRes2.Add(craftSubRes); CraftSubRes2.Add(craftSubRes);

View file

@ -22,7 +22,7 @@ namespace Server.Engines.Craft
{ {
public static EnhanceResult Invoke( public static EnhanceResult Invoke(
Mobile from, CraftSystem craftSystem, BaseTool tool, Item item, 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) if (item == null)
@ -410,7 +410,7 @@ namespace Server.Engines.Craft
{ {
if (targeted is Item item) if (targeted is Item item)
{ {
object message = null; TextDefinition message = null;
var res = Enhance.Invoke( var res = Enhance.Invoke(
from, from,
m_CraftSystem, m_CraftSystem,

View file

@ -15,7 +15,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Alchemy; public override SkillName MainSkill => SkillName.Alchemy;
public override int GumpTitleNumber => 1044001; public override TextDefinition GumpTitle => 1044001;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefAlchemy(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefAlchemy();

View file

@ -28,7 +28,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Blacksmith; public override SkillName MainSkill => SkillName.Blacksmith;
public override int GumpTitleNumber => 1044002; public override TextDefinition GumpTitle => 1044002;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefBlacksmithy(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefBlacksmithy();

View file

@ -13,7 +13,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Fletching; public override SkillName MainSkill => SkillName.Fletching;
public override int GumpTitleNumber => 1044006; public override TextDefinition GumpTitle => 1044006;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefBowFletching(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefBowFletching();

View file

@ -13,7 +13,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Carpentry; public override SkillName MainSkill => SkillName.Carpentry;
public override int GumpTitleNumber => 1044004; public override TextDefinition GumpTitle => 1044004;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCarpentry(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCarpentry();

View file

@ -13,7 +13,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Cartography; public override SkillName MainSkill => SkillName.Cartography;
public override int GumpTitleNumber => 1044008; public override TextDefinition GumpTitle => 1044008;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCartography(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCartography();

View file

@ -13,7 +13,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Cooking; public override SkillName MainSkill => SkillName.Cooking;
public override int GumpTitleNumber => 1044003; public override TextDefinition GumpTitle => 1044003;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCooking(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefCooking();

View file

@ -14,7 +14,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Alchemy; public override SkillName MainSkill => SkillName.Alchemy;
public override int GumpTitleNumber => 1044622; public override TextDefinition GumpTitle => 1044622;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefGlassblowing(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefGlassblowing();

View file

@ -35,7 +35,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Inscribe; public override SkillName MainSkill => SkillName.Inscribe;
public override int GumpTitleNumber => 1044009; public override TextDefinition GumpTitle => 1044009;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefInscription(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefInscription();

View file

@ -14,7 +14,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Carpentry; public override SkillName MainSkill => SkillName.Carpentry;
public override int GumpTitleNumber => 1044500; public override TextDefinition GumpTitle => 1044500;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefMasonry(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefMasonry();

View file

@ -21,7 +21,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Tailoring; 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(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefTailoring();

View file

@ -29,7 +29,7 @@ namespace Server.Engines.Craft
public override SkillName MainSkill => SkillName.Tinkering; public override SkillName MainSkill => SkillName.Tinkering;
public override int GumpTitleNumber => 1044007; public override TextDefinition GumpTitle => 1044007;
public static CraftSystem CraftSystem => m_CraftSystem ??= new DefTinkering(); public static CraftSystem CraftSystem => m_CraftSystem ??= new DefTinkering();

View file

@ -118,7 +118,7 @@ namespace Server.Engines.Doom
gate.GumpHeight = 280; gate.GumpHeight = 280;
gate.MessageColor = 0x7F00; 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.TitleColor = 0x7800;
gate.TitleNumber = 1062108; // Please verify... gate.TitleNumber = 1062108; // Please verify...

View file

@ -13,11 +13,11 @@ namespace Server.Factions
private readonly Faction m_Faction; private readonly Faction m_Faction;
private readonly Item m_Item; private readonly Item m_Item;
private readonly Mobile m_Mobile; private readonly Mobile m_Mobile;
private readonly object m_Notice; private readonly TextDefinition m_Notice;
private readonly BaseTool m_Tool; private readonly BaseTool m_Tool;
public FactionImbueGump( 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 int availableSilver, Faction faction, FactionItemDefinition def
) : base(100, 200) ) : base(100, 200)
{ {
@ -98,13 +98,13 @@ namespace Server.Factions
{ {
m_Mobile.SendGump(new CraftGump(m_Mobile, m_CraftSystem, m_Tool, m_Notice)); 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);
} }
} }
} }

View file

@ -4,7 +4,7 @@ namespace Server.Engines.Harvest
{ {
public class HarvestResource 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; ReqSkill = reqSkill;
MinSkill = minSkill; MinSkill = minSkill;
@ -21,17 +21,17 @@ namespace Server.Engines.Harvest
public double MaxSkill { get; set; } public double MaxSkill { get; set; }
public object SuccessMessage { get; } public TextDefinition SuccessMessage { get; }
public void SendSuccessTo(Mobile m) public void SendSuccessTo(Mobile m)
{ {
if (SuccessMessage is int messageInt) if (SuccessMessage.Number > 0)
{ {
m.SendLocalizedMessage(messageInt); m.SendLocalizedMessage(SuccessMessage.Number);
} }
else else
{ {
m.SendMessage(SuccessMessage.ToString()); m.SendMessage(SuccessMessage.String);
} }
} }
} }

View file

@ -9,7 +9,7 @@ namespace Server.Gumps
private readonly NoticeGumpCallback m_Callback; private readonly NoticeGumpCallback m_Callback;
public NoticeGump( 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 NoticeGumpCallback callback = null
) : base((640 - width) / 2, (480 - height) / 2) ) : base((640 - width) / 2, (480 - height) / 2)
{ {
@ -28,18 +28,18 @@ namespace Server.Gumps
AddImageTiled(10, 40, width - 20, height - 80, 2624); AddImageTiled(10, 40, width - 20, height - 80, 2624);
AddAlphaRegion(10, 40, width - 20, height - 80); 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( AddHtml(
10, 10,
40, 40,
width - 20, width - 20,
height - 80, height - 80,
$"<BASEFONT COLOR=#{contentColor:X6}>{content}</BASEFONT>", $"<BASEFONT COLOR=#{contentColor:X6}>{content.String}</BASEFONT>",
false, false,
true true
); );

View file

@ -9,7 +9,7 @@ namespace Server.Gumps
private readonly WarningGumpCallback m_Callback; private readonly WarningGumpCallback m_Callback;
public WarningGump( 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 WarningGumpCallback callback = null, bool cancelButton = true
) : base((640 - width) / 2, (480 - height) / 2) ) : base((640 - width) / 2, (480 - height) / 2)
{ {
@ -28,18 +28,18 @@ namespace Server.Gumps
AddImageTiled(10, 40, width - 20, height - 80, 2624); AddImageTiled(10, 40, width - 20, height - 80, 2624);
AddAlphaRegion(10, 40, width - 20, height - 80); 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( AddHtml(
10, 10,
40, 40,
width - 20, width - 20,
height - 80, height - 80,
$"<BASEFONT COLOR=#{contentColor:X6}>{content}</BASEFONT>", $"<BASEFONT COLOR=#{contentColor:X6}>{content.String}</BASEFONT>",
false, false,
true true
); );
@ -71,7 +71,7 @@ namespace Server.Gumps
} }
else else
{ {
m_Callback.Invoke(false); m_Callback(false);
} }
} }
} }

View file

@ -274,10 +274,7 @@ namespace Server.Items
public int TitleNumber { get; set; } public int TitleNumber { get; set; }
[CommandProperty(AccessLevel.GameMaster)] [CommandProperty(AccessLevel.GameMaster)]
public int MessageNumber { get; set; } public TextDefinition Message { get; set; }
[CommandProperty(AccessLevel.GameMaster)]
public string MessageString { get; set; }
public virtual void Warning_Callback(Mobile from, bool okay) public virtual void Warning_Callback(Mobile from, bool okay)
{ {
@ -289,14 +286,14 @@ namespace Server.Items
public override void BeginConfirmation(Mobile from) 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<WarningGump>(); from.CloseGump<WarningGump>();
from.SendGump( from.SendGump(
new WarningGump( new WarningGump(
TitleNumber, TitleNumber,
TitleColor, TitleColor,
MessageString ?? (object)MessageNumber, Message,
MessageColor, MessageColor,
GumpWidth, GumpWidth,
GumpHeight, GumpHeight,
@ -314,7 +311,9 @@ namespace Server.Items
{ {
base.Serialize(writer); base.Serialize(writer);
writer.Write(0); // version writer.Write(1); // version
TextDefinition.Serialize(writer, Message);
writer.WriteEncodedInt(GumpWidth); writer.WriteEncodedInt(GumpWidth);
writer.WriteEncodedInt(GumpHeight); writer.WriteEncodedInt(GumpHeight);
@ -323,9 +322,6 @@ namespace Server.Items
writer.WriteEncodedInt(MessageColor); writer.WriteEncodedInt(MessageColor);
writer.WriteEncodedInt(TitleNumber); writer.WriteEncodedInt(TitleNumber);
writer.WriteEncodedInt(MessageNumber);
writer.Write(MessageString);
} }
public override void Deserialize(IGenericReader reader) public override void Deserialize(IGenericReader reader)
@ -336,6 +332,11 @@ namespace Server.Items
switch (version) switch (version)
{ {
case 1:
{
Message = TextDefinition.Deserialize(reader);
goto case 0;
}
case 0: case 0:
{ {
GumpWidth = reader.ReadEncodedInt(); GumpWidth = reader.ReadEncodedInt();
@ -345,9 +346,13 @@ namespace Server.Items
MessageColor = reader.ReadEncodedInt(); MessageColor = reader.ReadEncodedInt();
TitleNumber = 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; break;
} }
@ -388,11 +393,11 @@ namespace Server.Items
40, 40,
400, 400,
200, 200,
1062050, 1062050, // This Gate goes to Felucca... Continue to enter the gate, Cancel to stay here
32512, 32512,
false, false,
true true
); // This Gate goes to Felucca... Continue to enter the gate, Cancel to stay here );
} }
else else
{ {
@ -401,11 +406,11 @@ namespace Server.Items
40, 40,
400, 400,
200, 200,
1062049, 1062049, // Dost thou wish to step into the moongate? Continue to enter the gate, Cancel to stay here
32512, 32512,
false, false,
true true
); // Dost thou wish to step into the moongate? Continue to enter the gate, Cancel to stay here );
} }
AddImageTiled(10, 250, 400, 20, 2624); AddImageTiled(10, 250, 400, 20, 2624);
@ -429,7 +434,7 @@ namespace Server.Items
40, 40,
380, 380,
60, 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 AddHtmlLocalized(55, 110, 290, 20, 1011012); // CANCEL