using Server.Gumps;
using Server.Network;
namespace Server.Engines.MLQuests.Gumps
{
public class QuestCancelConfirmGump : DynamicGump
{
private readonly bool _closeGumps;
private readonly MLQuestInstance _instance;
public override bool Singleton => true;
private QuestCancelConfirmGump(MLQuestInstance instance, bool closeGumps) : base(120, 50)
{
_instance = instance;
_closeGumps = closeGumps;
}
public static void DisplayTo(Mobile from, MLQuestInstance instance, bool closeGumps = true)
{
if (from?.NetState == null || instance == null)
{
return;
}
if (closeGumps)
{
BaseMLQuestGump.CloseOtherGumps(instance.Player);
}
from.SendGump(new QuestCancelConfirmGump(instance, closeGumps));
}
protected override void BuildLayout(ref DynamicGumpBuilder builder)
{
builder.SetNoClose();
builder.AddPage();
builder.AddImageTiled(0, 0, 348, 262, 0xA8E);
builder.AddAlphaRegion(0, 0, 348, 262);
builder.AddImage(0, 15, 0x27A8);
builder.AddImageTiled(0, 30, 17, 200, 0x27A7);
builder.AddImage(0, 230, 0x27AA);
builder.AddImage(15, 0, 0x280C);
builder.AddImageTiled(30, 0, 300, 17, 0x280A);
builder.AddImage(315, 0, 0x280E);
builder.AddImage(15, 244, 0x280C);
builder.AddImageTiled(30, 244, 300, 17, 0x280A);
builder.AddImage(315, 244, 0x280E);
builder.AddImage(330, 15, 0x27A8);
builder.AddImageTiled(330, 30, 17, 200, 0x27A7);
builder.AddImage(330, 230, 0x27AA);
builder.AddImage(333, 2, 0x2716);
builder.AddImage(333, 248, 0x2716);
builder.AddImage(2, 248, 0x2716);
builder.AddImage(2, 2, 0x2716);
builder.AddHtmlLocalized(25, 22, 200, 20, 1049000, 0x7D00); // Confirm Quest Cancellation
builder.AddImage(25, 40, 0xBBF);
/*
* This quest will give you valuable information, skills
* and equipment that will help you advance in the
* game at a quicker pace.
*
* Are you certain you wish to cancel at this time?
*/
builder.AddHtmlLocalized(25, 55, 300, 120, 1060836, 0x7FFF);
var quest = _instance.Quest;
if (quest.IsChainTriggered || quest.NextQuest != null)
{
builder.AddRadio(25, 145, 0x25F8, 0x25FB, false, 2);
builder.AddHtmlLocalized(60, 150, 280, 20, 1075023, 0x7FFF); // Yes, I want to quit this entire chain!
}
builder.AddRadio(25, 180, 0x25F8, 0x25FB, true, 1);
builder.AddHtmlLocalized(60, 185, 280, 20, 1049005, 0x7FFF); // Yes, I really want to quit this quest!
builder.AddRadio(25, 215, 0x25F8, 0x25FB, false, 0);
builder.AddHtmlLocalized(60, 220, 280, 20, 1049006, 0x7FFF); // No, I don't want to quit.
builder.AddButton(265, 220, 0xF7, 0xF8, 7);
}
public override void OnResponse(NetState sender, in RelayInfo info)
{
if (_instance.Removed)
{
return;
}
switch (info.ButtonID)
{
case 7: // Okay
{
if (info.IsSwitched(2))
{
_instance.Cancel(true);
}
else if (info.IsSwitched(1))
{
_instance.Cancel(false);
}
QuestLogGump.DisplayTo(sender.Mobile, _instance.Player, _closeGumps);
break;
}
}
}
}
}