using System; using System.Reflection; using Server; using Server.Gumps; namespace Arya.Chess { /// /// Summary description for ChessSetGump. /// public class ChessSetGump : Gump { private const int LabelHue = 0x480; private const int GreenHue = 0x40; private static string[] m_Sets; /// /// Gets the list of chess sets available /// private static string[] Sets { get { if ( m_Sets == null ) m_Sets = Enum.GetNames( typeof( Arya.Chess.ChessSet ) ); return m_Sets; } } private ChessGame m_Game; private Mobile m_User; private bool m_IsOwner; private bool m_AllowSpectators; private int m_Page = 0; public ChessSetGump( Mobile m, ChessGame game, bool isOwner, bool allowSpectators, int page ) : base( 200, 200 ) { m_Game = game; m_User = m; m_IsOwner = isOwner; m_AllowSpectators = allowSpectators; m_Page = page; m_User.CloseGump( typeof( ChessSetGump ) ); MakeGump(); } public ChessSetGump( Mobile m, ChessGame game, bool isOwner, bool allowSpectators ) : this( m, game, isOwner, allowSpectators, 0 ) { } private void MakeGump() { this.Closable=false; this.Disposable=true; this.Dragable=true; this.Resizable=false; this.AddPage(0); this.AddBackground(0, 0, 320, 170, 9250); this.AddAlphaRegion(0, 0, 320, 170); for ( int i = 0; i < 4 && 4 * m_Page + i < Sets.Length; i++ ) { AddButton( 35, 45 + i * 20, 5601, 5605, 10 + 4 * m_Page + i, GumpButtonType.Reply, 0 ); AddLabel( 60, 43 + i * 20, LabelHue, Sets[ 4 * m_Page + i ] ); } if ( m_Page > 0 ) { this.AddButton(15, 15, 5603, 5607, 1, GumpButtonType.Reply, 0); } int totalPages = ( Sets.Length - 1 ) / 4; // Prev page : 1 // Next page : 2 if ( totalPages > m_Page ) { this.AddButton(35, 15, 5601, 5605, 2, GumpButtonType.Reply, 0); } this.AddLabel(60, 13, GreenHue, @"Chess set selection"); // Cancel 3 this.AddButton(15, 130, 4020, 4021, 3, GumpButtonType.Reply, 0); this.AddLabel(55, 130, GreenHue, @"Cancel Game"); } public override void OnResponse(Server.Network.NetState sender, RelayInfo info) { switch ( info.ButtonID ) { case 0 : return; case 1: sender.Mobile.SendGump( new ChessSetGump( m_User, m_Game, m_IsOwner, m_AllowSpectators, --m_Page ) ); break; case 2: sender.Mobile.SendGump( new ChessSetGump( m_User, m_Game, m_IsOwner, m_AllowSpectators, ++m_Page ) ); break; case 3: m_Game.CancelGameStart( sender.Mobile ); break; default: int index = info.ButtonID - 10; ChessSet s = (ChessSet) Enum.Parse( typeof( Arya.Chess.ChessSet ), Sets[ index ], false ); m_Game.SetChessSet( s ); sender.Mobile.SendGump( new StartGameGump( sender.Mobile, m_Game, m_IsOwner, m_AllowSpectators ) ); sender.Mobile.Target = new ChessTarget( m_Game, sender.Mobile, "Please select your parnter...", new ChessTargetCallback( m_Game.ChooseOpponent ) ); break; } } } }