143 lines
5.3 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|