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
Static 0x1F45
5304 88 19
5304 88 19

View file

@ -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

View file

@ -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); // <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 (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})");
}
}
}

View file

@ -58,13 +58,13 @@ namespace Server.Engines.Craft
AddHtmlLocalized(10, 277, 150, 22, 1044055, LabelColor); // <CENTER>MATERIALS</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
{
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;
}
}
// ******************

View file

@ -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;

View file

@ -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
{

View file

@ -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; }
}

View file

@ -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];

View file

@ -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);

View file

@ -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,

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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();

View file

@ -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...

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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,
$"<BASEFONT COLOR=#{contentColor:X6}>{content}</BASEFONT>",
$"<BASEFONT COLOR=#{contentColor:X6}>{content.String}</BASEFONT>",
false,
true
);

View file

@ -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,
$"<BASEFONT COLOR=#{contentColor:X6}>{content}</BASEFONT>",
$"<BASEFONT COLOR=#{contentColor:X6}>{content.String}</BASEFONT>",
false,
true
);
@ -71,7 +71,7 @@ namespace Server.Gumps
}
else
{
m_Callback.Invoke(false);
m_Callback(false);
}
}
}

View file

@ -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<WarningGump>();
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