96 lines
2.5 KiB
C#
96 lines
2.5 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Items;
|
|
using Server.Network;
|
|
using Solaris.BoardGames;
|
|
|
|
namespace Server.Gumps
|
|
{
|
|
public class SelectStyleGump : Gump
|
|
{
|
|
public virtual int Height{ get{ return 150; } }
|
|
public virtual int Width{ get{ return 200; } }
|
|
|
|
protected int _Y = 30;
|
|
protected int _X = 20;
|
|
|
|
protected BoardGameControlItem _ControlItem;
|
|
|
|
public SelectStyleGump( Mobile owner, BoardGameControlItem controlitem ) : base( 450, 80 )
|
|
{
|
|
Closable = false;
|
|
|
|
owner.CloseGump( typeof( SelectStyleGump ) );
|
|
|
|
_ControlItem = controlitem;
|
|
|
|
if( _ControlItem.Players.IndexOf( owner ) == -1 )
|
|
{
|
|
return;
|
|
}
|
|
|
|
AddPage( 0 );
|
|
AddBackground( 0, 0, Width, Height, 0x1400 );
|
|
|
|
AddLabel( 20, 60, 1152, "# of players (" + _ControlItem.MinPlayers.ToString() + "-" + _ControlItem.MaxPlayers.ToString() + "):" );
|
|
|
|
int minplayers = Math.Max( _ControlItem.MinPlayers, _ControlItem.Players.Count );
|
|
|
|
if( _ControlItem.MaxPlayers != _ControlItem.MinPlayers && !_ControlItem.SettingsReady )
|
|
{
|
|
AddLabel( 20, 40, 1172, "Pick the number of players" );
|
|
AddTextField( 150, 60, 30, 20, 0, _ControlItem.CurrentMaxPlayers.ToString() );
|
|
AddButton( 182, 62, 0x4B9, 0x4BA, 500, GumpButtonType.Reply, 0 );
|
|
}
|
|
else
|
|
{
|
|
AddLabel( 150, 60, 1152, _ControlItem.CurrentMaxPlayers.ToString() );
|
|
}
|
|
|
|
|
|
//AddButton( Width - 15, 0, 3, 4, 0, GumpButtonType.Reply, 0 );
|
|
}
|
|
|
|
public void AddTextField( int x, int y, int width, int height, int index, string text )
|
|
{
|
|
AddImageTiled( x - 2, y - 2, width + 4, height + 4, 0xA2C );
|
|
AddAlphaRegion( x -2, y - 2, width + 4, height + 4 );
|
|
AddTextEntry( x + 2, y + 2, width - 4, height - 4, 1153, index, text );
|
|
}
|
|
|
|
public string GetTextField( RelayInfo info, int index )
|
|
{
|
|
TextRelay relay = info.GetTextEntry( index );
|
|
return ( relay == null ? null : relay.Text.Trim() );
|
|
}
|
|
|
|
public override void OnResponse( NetState state, RelayInfo info )
|
|
{
|
|
Mobile from = state.Mobile;
|
|
if( _ControlItem.Players.IndexOf( from ) != 0 )
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
try
|
|
{
|
|
if( !_ControlItem.SettingsReady )
|
|
{
|
|
_ControlItem.CurrentMaxPlayers = Math.Max( Int32.Parse( GetTextField( info, 0 ) ), _ControlItem.Players.Count );
|
|
|
|
if( _ControlItem.CurrentMaxPlayers > _ControlItem.MaxPlayers || _ControlItem.CurrentMaxPlayers < _ControlItem.MinPlayers )
|
|
{
|
|
throw( new Exception() );
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
from.SendMessage( "Invalid number of players selected. Please try again." );
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|