ModernUO/Projects/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicHuePicker.cs
2019-08-02 18:16:11 -07:00

77 lines
2 KiB
C#

using Server.Gumps;
using Server.Network;
namespace Server.Items
{
public class MetallicHuePicker<T> : Gump
{
private CustomHuePickerCallback<T> m_Callback;
private Mobile m_From;
private T m_State;
public MetallicHuePicker(Mobile from, CustomHuePickerCallback<T> callback, T state)
: base(450, 450)
{
m_From = from;
m_Callback = callback;
m_State = state;
Render();
}
public void Render()
{
AddPage(0);
AddBackground(0, 0, 450, 450, 0x13BE);
AddBackground(10, 10, 430, 430, 0xBB8);
AddHtmlLocalized(55, 400, 200, 25, 1011036); // OKAY
AddButton(20, 400, 4005, 4007, 1);
AddButton(200, 400, 4005, 4007, 2);
AddLabel(235, 400, 0, "DEFAULT");
AddHtmlLocalized(55, 25, 200, 25, 1150063); // Base/Shadow Color
AddHtmlLocalized(260, 25, 200, 25, 1150064); // Highlight Color
for (int row = 0; row < 13; row++)
{
AddButton(30, 65 + row * 25, 0x1467, 0x1468, row + 1, GumpButtonType.Page, row + 1);
AddItem(50, 65 + row * 25, 0x1412, 2501 + row * 12 + (row == 12 ? 6 : 0));
}
for (int page = 1; page < 14; page++)
{
AddPage(page);
for (int row = 0; row < 12; row++)
{
int hue = 2501 + (page == 13 ? 6 : 0) + row +
12 * (page - 1); /* OSI just had to skip 6 unused hues, didnt they */
AddRadio(260, 65 + row * 25, 0xd2, 0xd3, false, hue);
AddItem(280, 65 + row * 25, 0x1412, hue);
}
}
}
public override void OnResponse(NetState sender, RelayInfo info)
{
switch (info.ButtonID)
{
case 1: // Okay
{
if (info.Switches.Length > 0) m_Callback(m_From, m_State, info.Switches[0]);
break;
}
case 2: // Default
{
m_Callback(m_From, m_State, 0);
break;
}
}
}
}
}