RunUO/Scripts/Engines/VeteranRewards/RewardOptionGump.cs

104 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.Gumps
{
public interface IRewardOption
{
void GetOptions( RewardOptionList list );
void OnOptionSelected( Mobile from, int choice );
}
public class RewardOptionGump : Gump
{
private RewardOptionList m_Options = new RewardOptionList();
private IRewardOption m_Option;
public RewardOptionGump( IRewardOption option ) : this( option, 0 )
{
}
public RewardOptionGump( IRewardOption option, int title ) : base( 60, 36 )
{
m_Option = option;
if ( m_Option != null )
m_Option.GetOptions( m_Options );
AddPage( 0 );
AddBackground( 0, 0, 273, 324, 0x13BE );
AddImageTiled( 10, 10, 253, 20, 0xA40 );
AddImageTiled( 10, 40, 253, 244, 0xA40 );
AddImageTiled( 10, 294, 253, 20, 0xA40 );
AddAlphaRegion( 10, 10, 253, 304 );
AddButton( 10, 294, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 45, 296, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL
if ( title > 0 )
AddHtmlLocalized( 14, 12, 273, 20, title, 0x7FFF, false, false );
else
AddHtmlLocalized( 14, 12, 273, 20, 1080392, 0x7FFF, false, false ); // Select your choice from the menu below.
AddPage( 1 );
for ( int i = 0; i < m_Options.Count; i++ )
{
AddButton( 19, 49 + i * 24, 0x845, 0x846, m_Options[ i ].ID, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 44, 47 + i * 24, 213, 20, m_Options[ i ].Cliloc, 0x7FFF, false, false );
}
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Option != null && Contains( info.ButtonID ) )
m_Option.OnOptionSelected( sender.Mobile, info.ButtonID );
}
private bool Contains( int chosen )
{
if ( m_Options == null )
return false;
foreach ( RewardOption option in m_Options )
{
if ( option.ID == chosen )
return true;
}
return false;
}
}
public class RewardOption
{
private int m_ID;
private int m_Cliloc;
public int ID{ get{ return m_ID; } }
public int Cliloc{ get{ return m_Cliloc; } }
public RewardOption( int id, int cliloc )
{
m_ID = id;
m_Cliloc = cliloc;
}
}
public class RewardOptionList : List<RewardOption>
{
public RewardOptionList() : base()
{
}
public void Add( int id, int cliloc )
{
Add( new RewardOption( id, cliloc ) );
}
}
}