127 lines
No EOL
3.2 KiB
C#
127 lines
No EOL
3.2 KiB
C#
using System;
|
|
using Server.Gumps;
|
|
using Server.Network;
|
|
|
|
namespace Server.Engines.ConPVP
|
|
{
|
|
public class PickRulesetGump : Gump
|
|
{
|
|
private Mobile m_From;
|
|
private DuelContext m_Context;
|
|
private Ruleset m_Ruleset;
|
|
private Ruleset[] m_Defaults;
|
|
private Ruleset[] m_Flavors;
|
|
|
|
public string Center( string text )
|
|
{
|
|
return String.Format( "<CENTER>{0}</CENTER>", text );
|
|
}
|
|
|
|
public PickRulesetGump( Mobile from, DuelContext context, Ruleset ruleset ) : base( 50, 50 )
|
|
{
|
|
m_From = from;
|
|
m_Context = context;
|
|
m_Ruleset = ruleset;
|
|
m_Defaults = ruleset.Layout.Defaults;
|
|
m_Flavors = ruleset.Layout.Flavors;
|
|
|
|
int height = 25 + 20 + ((m_Defaults.Length + 1) * 22) + 6 + 20 + (m_Flavors.Length * 22) + 25;
|
|
|
|
AddPage( 0 );
|
|
|
|
AddBackground( 0, 0, 260, height, 9250 );
|
|
AddBackground( 10, 10, 240, height - 20, 0xDAC );
|
|
|
|
AddHtml( 35, 25, 190, 20, Center( "Rules" ), false, false );
|
|
|
|
int y = 25 + 20;
|
|
|
|
for ( int i = 0; i < m_Defaults.Length; ++i )
|
|
{
|
|
Ruleset cur = m_Defaults[i];
|
|
|
|
AddHtml( 35 + 14, y, 176, 20, cur.Title, false, false );
|
|
|
|
if ( ruleset.Base == cur && !ruleset.Changed )
|
|
AddImage( 35, y + 4, 0x939 );
|
|
else if ( ruleset.Base == cur )
|
|
AddButton( 35, y + 4, 0x93A, 0x939, 2 + i, GumpButtonType.Reply, 0 );
|
|
else
|
|
AddButton( 35, y + 4, 0x938, 0x939, 2 + i, GumpButtonType.Reply, 0 );
|
|
|
|
y += 22;
|
|
}
|
|
|
|
AddHtml( 35 + 14, y, 176, 20, "Custom", false, false );
|
|
AddButton( 35, y + 4, ruleset.Changed ? 0x939 : 0x938, 0x939, 1, GumpButtonType.Reply, 0 );
|
|
|
|
y += 22;
|
|
y += 6;
|
|
|
|
AddHtml( 35, y, 190, 20, Center( "Flavors" ), false, false );
|
|
y += 20;
|
|
|
|
for ( int i = 0; i < m_Flavors.Length; ++i )
|
|
{
|
|
Ruleset cur = m_Flavors[i];
|
|
|
|
AddHtml( 35 + 14, y, 176, 20, cur.Title, false, false );
|
|
|
|
if ( ruleset.Flavors.Contains( cur ) )
|
|
AddButton( 35, y + 4, 0x939, 0x938, 2 + m_Defaults.Length + i, GumpButtonType.Reply, 0 );
|
|
else
|
|
AddButton( 35, y + 4, 0x938, 0x939, 2 + m_Defaults.Length + i, GumpButtonType.Reply, 0 );
|
|
|
|
y += 22;
|
|
}
|
|
}
|
|
|
|
public override void OnResponse( NetState sender, RelayInfo info )
|
|
{
|
|
if ( m_Context != null && !m_Context.Registered )
|
|
return;
|
|
|
|
switch ( info.ButtonID )
|
|
{
|
|
case 0: // closed
|
|
{
|
|
if ( m_Context != null )
|
|
m_From.SendGump( new DuelContextGump( m_From, m_Context ) );
|
|
|
|
break;
|
|
}
|
|
case 1: // customize
|
|
{
|
|
m_From.SendGump( new RulesetGump( m_From, m_Ruleset, m_Ruleset.Layout, m_Context ) );
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
int idx = info.ButtonID - 2;
|
|
|
|
if ( idx >= 0 && idx < m_Defaults.Length )
|
|
{
|
|
m_Ruleset.ApplyDefault( m_Defaults[idx] );
|
|
m_From.SendGump( new PickRulesetGump( m_From, m_Context, m_Ruleset ) );
|
|
}
|
|
else
|
|
{
|
|
idx -= m_Defaults.Length;
|
|
|
|
if ( idx >= 0 && idx < m_Flavors.Length )
|
|
{
|
|
if ( m_Ruleset.Flavors.Contains( m_Flavors[idx] ) )
|
|
m_Ruleset.RemoveFlavor( m_Flavors[idx] );
|
|
else
|
|
m_Ruleset.AddFlavor( m_Flavors[idx] );
|
|
|
|
m_From.SendGump( new PickRulesetGump( m_From, m_Context, m_Ruleset ) );
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |