### Summary - Fixes an issue that causes CUO to crash due to bad string caching in static gumps - Fixes wrong/bad 16bit html gump hues. - Moves `C16232` (16-bit to 32-bit) and `C32216` (32-bit to 16-bit) to Utility class for broader use. TODO: - Some gumps have different 32bit (for string content) vs 16bit (for localized content) strings. Does this matter?
95 lines
2.9 KiB
C#
95 lines
2.9 KiB
C#
using System;
|
|
using Server.Network;
|
|
|
|
namespace Server.Gumps;
|
|
|
|
public abstract class StaticWarningGump<T> : StaticGump<T> where T : StaticWarningGump<T>
|
|
{
|
|
public virtual int Header => 1060635; // <CENTER>WARNING</CENTER>
|
|
public virtual int HeaderColor => 0x7800;
|
|
public virtual int ContentColor => StaticLocalizedContent > 0 ? 0x7F00 : 0xFFC000;
|
|
public abstract int Width { get; }
|
|
public abstract int Height { get; }
|
|
public virtual bool CancelButton => true;
|
|
|
|
// If this is overridden, then the content will be localized and cached.
|
|
public virtual int StaticLocalizedContent => 0;
|
|
|
|
public virtual string Content => null;
|
|
|
|
private readonly Action<bool> _callback;
|
|
|
|
public StaticWarningGump(Action<bool> callback = null) : base(0, 0)
|
|
{
|
|
_callback = callback;
|
|
X = (640 - Width) / 2;
|
|
Y = (480 - Height) / 2;
|
|
}
|
|
|
|
protected override void BuildLayout(ref StaticGumpBuilder builder)
|
|
{
|
|
var width = Width;
|
|
var height = Height;
|
|
var header = Header;
|
|
var headerColor = HeaderColor;
|
|
var cancelButton = CancelButton;
|
|
|
|
builder.SetNoClose();
|
|
|
|
builder.AddPage();
|
|
|
|
builder.AddBackground(0, 0, width, height, 5054);
|
|
|
|
builder.AddImageTiled(10, 10, width - 20, 20, 2624);
|
|
builder.AddAlphaRegion(10, 10, width - 20, 20);
|
|
builder.AddHtmlLocalized(10, 10, width - 20, 20, header, headerColor);
|
|
|
|
builder.AddImageTiled(10, 40, width - 20, height - 80, 2624);
|
|
builder.AddAlphaRegion(10, 40, width - 20, height - 80);
|
|
|
|
if (StaticLocalizedContent > 0)
|
|
{
|
|
builder.AddHtmlLocalized(
|
|
10,
|
|
40,
|
|
width - 20,
|
|
height - 80,
|
|
StaticLocalizedContent,
|
|
(short)ContentColor,
|
|
false,
|
|
true
|
|
);
|
|
}
|
|
else
|
|
{
|
|
builder.AddHtmlPlaceholder(
|
|
10,
|
|
40,
|
|
width - 20,
|
|
height - 80,
|
|
"content",
|
|
false,
|
|
true
|
|
);
|
|
}
|
|
|
|
builder.AddImageTiled(10, height - 30, width - 20, 20, 2624);
|
|
builder.AddAlphaRegion(10, height - 30, width - 20, 20);
|
|
|
|
builder.AddButton(10, height - 30, 4005, 4007, 1);
|
|
builder.AddHtmlLocalized(40, height - 30, 170, 20, 1011036, 32767); // OKAY
|
|
|
|
if (cancelButton)
|
|
{
|
|
builder.AddButton(10 + (width - 20) / 2, height - 30, 4005, 4007, 0);
|
|
builder.AddHtmlLocalized(40 + (width - 20) / 2, height - 30, 170, 20, 1011012, 32767); // CANCEL
|
|
}
|
|
}
|
|
|
|
protected sealed override void BuildStrings(ref GumpStringsBuilder builder)
|
|
{
|
|
builder.SetStringSlot("content", Content.Color(ContentColor));
|
|
}
|
|
|
|
public override void OnResponse(NetState sender, in RelayInfo info) => _callback?.Invoke(info.ButtonID == 1);
|
|
}
|