rendered paste bodyusing System;
using Server.IN.Logging;
using Server.Items;
using Server.Network;
namespace Server.Gumps
{
public class RewardGump : Gump
{
public enum Buttons
{
colorCodeEntry,
upButton,
downButton,
applyButton,
okButton,
nameEntry
}
private SkillInfo m_Skill;
private int m_CurrentHue;
private string m_Name;
private int[] m_StaffColors = new int[]{ 0x001, 0x493, 0x77a, 0x79b, 0x7a5, 0x7ab, 0x9ad, 0xa8e, 0xa8f, 0xa97, 0xb92, 0xb94, 0xb96 };
public RewardGump( SkillInfo skill, int currentHue, string name ) : base( 100, 100 )
{
this.m_Skill = skill;
this.m_CurrentHue = currentHue;
this.m_Name = name;
this.Closable = true;
this.Disposable = true;
this.Dragable = true;
this.Resizable = false;
this.AddPage( 0 );
this.AddBackground( 100, 100, 200, 227, 9200 );
this.AddLabel( 128, 112, 0, GetSkillTitle() );
this.AddTextEntry( 137, 188, 62, 19, 0, (int)Buttons.colorCodeEntry, Convert.ToString( this.m_CurrentHue ) );
this.AddLabel( 115, 146, 0, @"Congrats, Enter a color code." );
this.AddButton( 115, 180, 250, 250, (int)Buttons.upButton, GumpButtonType.Reply, 0 );
this.AddButton( 114, 201, 252, 252, (int)Buttons.downButton, GumpButtonType.Reply, 0 );
this.AddButton( 133, 298, 239, 248, (int)Buttons.applyButton, GumpButtonType.Reply, 0 );
this.AddItem( 215, 185, this.GetItemId(), this.m_CurrentHue );
this.AddLabel( 114, 233, 0, @"Enter an acceptable name." );
this.AddTextEntry( 120, 266, 153, 20, 0, (int)Buttons.nameEntry, this.m_Name );
this.AddButton( 207, 297, 247, 248, (int)Buttons.okButton, GumpButtonType.Reply, 0 );
}
private int GetItemId()
{
int itemId = -1;
switch( this.m_Skill.SkillID )
{
case 0: // alchemy
itemId = 0xE9B;
break;
case 7: // Blacksmithy
itemId = 0x13E3;
break;
case 8: // Bowcraft/fletching
itemId = 0x13B1;
break;
case 11: // Carpentry
itemId = 0xF44;
break;
case 23: // Inscription
itemId = 0xFC0;
break;
case 25: // Magery
itemId = 0xE3B;
break;
case 34: // Tailoring
itemId = 0xFAB;
break;
case 35: // Animal Taming
itemId = 0xE82;
break;
}
return itemId;
}
private string GetSkillTitle()
{
string Title = null;
switch( this.m_Skill.SkillID )
{
case 0: // alchemy
Title = "GM Alchemy Reward";
break;
case 7: // Blacksmithy
Title = "GM Blacksmith Reward";
break;
case 8: // Bowcraft/fletching
Title = "GM Bowcraft Reward";
break;
case 11: // Carpentry
Title = "GM Carpentry Reward";
break;
case 23: // Inscription
Title = "GM Inscription Reward";
break;
case 25: // Magery
Title = "GM Magery Reward";
break;
case 34: // Tailoring
Title = "GM Tailoring Reward";
break;
case 35: // Animal Taming
Title = "GM Animal Taming Reward";
break;
}
return Title;
}
public override void OnResponse( NetState sender, RelayInfo info )
{
try
{
string hue = info.GetTextEntry( (int)Buttons.colorCodeEntry ).Text;
if( hue.StartsWith( "0x" ) )
this.m_CurrentHue = Convert.ToInt32( hue, 16 );
else
this.m_CurrentHue = Convert.ToInt32( hue );
for( int i = 0; i < m_StaffColors.Length; i++ )
if( this.m_CurrentHue == m_StaffColors[i] )
{
sender.Mobile.SendMessage( "Invalid Hue Selected: That is a staff only color" );
sender.Mobile.SendGump( new RewardGump( this.m_Skill, ++this.m_CurrentHue, this.m_Name ) );
return;
}
}
catch
{
sender.Mobile.SendMessage( "Invalid Hue Selected: Enter as an integer or hex number (0x)" );
sender.Mobile.SendGump( new RewardGump( this.m_Skill, 0, this.m_Name ) );
return;
}
this.m_Name = info.GetTextEntry( (int)Buttons.nameEntry ).Text;
switch( info.ButtonID )
{
case (int)Buttons.upButton:
{
sender.Mobile.SendGump( new RewardGump( this.m_Skill, ++this.m_CurrentHue, this.m_Name ) );
break;
}
case (int)Buttons.downButton:
{
sender.Mobile.SendGump( new RewardGump( this.m_Skill, --this.m_CurrentHue, this.m_Name ) );
break;
}
case (int)Buttons.applyButton:
{
sender.Mobile.SendGump( new RewardGump( this.m_Skill, this.m_CurrentHue, this.m_Name ) );
break;
}
case (int)Buttons.okButton:
{
Process( sender.Mobile );
sender.Mobile.CloseGump( typeof( RewardGump ) );
break;
}
default:
{
sender.Mobile.SendGump( new RewardGump( this.m_Skill, this.m_CurrentHue, this.m_Name ) );
break;
}
}
}
private void Process( Mobile from )
{
Item rewardItem;
switch( this.m_Skill.SkillID )
{
case 0: // alchemy
rewardItem = new MortarPestle();
break;
case 7: // Blacksmithy
rewardItem = new GMSmithHammer();
break;
case 8: // Bowcraft/fletching
rewardItem = new Bow();
break;
case 11: // Carpentry
rewardItem = new Hatchet();
break;
case 23: // Inscription
rewardItem = new ScribesPen();
break;
case 25: // Magery
rewardItem = new Spellbook();
( rewardItem as Spellbook ).Content = ulong.MaxValue;
break;
case 34: // Tailoring
rewardItem = new RewardDyeTub();
break;
case 35: // Animal Taming
rewardItem = new ShepherdsCrook();
break;
default:
return;
}
rewardItem.Hue = this.m_CurrentHue;
rewardItem.LootType = LootType.Blessed;
if( this.m_Name != "" )
rewardItem.Name = this.m_Name;
if( rewardItem is DyeTub )
{
RewardDyeTub tub = (RewardDyeTub)rewardItem;
tub.DyedHue = rewardItem.Hue;
tub.Owner = from;
}
else if( rewardItem is GMSmithHammer )
{
GMSmithHammer hammer = (GMSmithHammer)rewardItem;
hammer.Owner = from;
}
from.AddToBackpack( rewardItem );
// Log
RewardLogging.WriteLine( from, this.m_Skill, this.m_Name, this.m_CurrentHue );
}
}
}