Files
abysmal-isle/Scripts/Services/Expansions/High Seas/Gumps/CannonGump.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

143 lines
5.3 KiB
C#

using System;
using Server;
using Server.Items;
using Server.Targeting;
using Server.Network;
namespace Server.Gumps
{
public class CannonGump : Gump
{
public static readonly int LabelColor = 0xFFFFFF;
public static readonly int GreenHue = 5057;
public static readonly int RedHue = 28776;
private BaseCannon m_Cannon;
private Mobile m_From;
public BaseCannon Cannon { get { return m_Cannon; } }
public CannonGump(BaseCannon cannon, Mobile from)
: base(50, 50)
{
m_Cannon = cannon;
m_From = from;
AddBackground(0, 0, 300, 200, 2620);
Type charge = cannon is LightShipCannon ? typeof(LightPowderCharge) : typeof(HeavyPowderCharge);
bool cleaned = cannon.Cleaned;
bool charged = cannon.Charged;
bool primed = cannon.Primed;
bool loaded = cannon.AmmoType != AmmunitionType.Empty;
AddHtmlLocalized(0, 10, 300, 16, 1149614 + (int)m_Cannon.Position, 21758, false, false);
AddHtmlLocalized(45, 40, 100, 16, 1149626, LabelColor, false, false); //CLEAN
if(!charged)
AddHtmlLocalized(45, 60, 100, 16, 1149630, LabelColor, false, false); //CHARGE
else
AddHtmlLocalized(45, 60, 100, 16, 1149629, LabelColor, false, false); //REMOVE
if(!loaded)
AddHtmlLocalized(45, 80, 100, 16, 1149635, LabelColor, false, false); //LOAD
else
AddHtmlLocalized(45, 80, 100, 16, 1149629, LabelColor, false, false); //REMOVE
if(!primed)
AddHtmlLocalized(45, 100, 100, 16, 1149637, LabelColor, false, false); //PRIME
else if (cannon.CanLight)
AddHtmlLocalized(45, 100, 100, 16, 1149638, LabelColor, false, false); //FIRE
else
AddHtmlLocalized(45, 100, 100, 16, 1149629, LabelColor, false, false); //REMOVE
if (!cleaned)
AddHtmlLocalized(150, 40, 100, 16, 1149628, RedHue, false, false); //Dirty
else
AddHtmlLocalized(150, 40, 100, 16, 1149627, GreenHue, false, false); //Clean
if (!charged)
AddHtmlLocalized(150, 60, 100, 16, 1149632, RedHue, false, false); //Not Charged
else
AddHtmlLocalized(150, 60, 100, 16, 1149631, GreenHue, false, false); //Charged
if (!loaded)
AddHtmlLocalized(150, 80, 100, 16, 1149636, RedHue, false, false); //Not Loaded
else
AddHtmlLocalized(150, 80, 100, 16, 1114057, AmmoInfo.GetAmmoName(cannon).ToString(), GreenHue, false, false);
//AddHtmlLocalized(150, 80, 100, 16, cannon.AmmoType == AmmoType.Grapeshot ? 1095741 : 1116029, GreenHue, false, false);
if (!primed)
AddHtmlLocalized(150, 100, 100, 16, 1149639, RedHue, false, false); //No Fuse
else
AddHtmlLocalized(150, 100, 100, 16, 1149640, GreenHue, false, false); //Primed
AddButton(10, 40, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0);
AddButton(10, 60, 0xFA5, 0xFA7, 2, GumpButtonType.Reply, 0);
AddButton(10, 80, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0);
AddButton(10, 100, 0xFA5, 0xFA7, 4, GumpButtonType.Reply, 0);
if (!cannon.Actions.ContainsKey(from) || cannon.Actions[from].Count == 0)
cannon.AddAction(from, 1149653); //You are now operating the cannon.
int y = 170;
int count = cannon.Actions[from].Count - 1;
int hue = 0;
for (int i = count; i >= 0; i--)
{
if (i < count - 3)
break;
if (i == count)
hue = 29315; //0xFFFF00;
else hue = 12684;
AddHtmlLocalized(10, y, 385, 20, cannon.Actions[from][i], hue, false, false);
y -= 16;
}
}
public override void OnResponse(NetState sender, RelayInfo info)
{
Mobile from = sender.Mobile;
if (m_Cannon == null || m_Cannon.Deleted || !from.InRange(m_Cannon.Location, 3))
return;
switch (info.ButtonID)
{
default:
case 0: return;
case 1: //clean
m_Cannon.TryClean(from);
break;
case 2: //Charge
if (!m_Cannon.Charged)
m_Cannon.TryCharge(from);
else
m_Cannon.RemoveCharge(from);
break;
case 3: //load
if (m_Cannon.AmmoType == AmmunitionType.Empty)
m_Cannon.TryLoad(from);
else
m_Cannon.RemoveLoad(from);
break;
case 4: //prime
if (!m_Cannon.Primed)
m_Cannon.TryPrime(from);
else if (m_Cannon.CanLight)
m_Cannon.TryLightFuse(from);
else
m_Cannon.RemovePrime(from);
break;
}
from.SendGump(new CannonGump(m_Cannon, m_From));
}
}
}