ModernUO/Scripts/Engines/Factions/Gumps/TownStoneGump.cs
2006-06-15 04:14:30 +00:00

206 lines
No EOL
6.3 KiB
C#

using System;
using Server;
using Server.Gumps;
using Server.Mobiles;
using Server.Network;
using Server.Targeting;
namespace Server.Factions
{
public class TownStoneGump : FactionGump
{
private PlayerMobile m_From;
private Faction m_Faction;
private Town m_Town;
public TownStoneGump( PlayerMobile from, Faction faction, Town town ) : base( 50, 50 )
{
m_From = from;
m_Faction = faction;
m_Town = town;
AddPage( 0 );
AddBackground( 0, 0, 320, 250, 5054 );
AddBackground( 10, 10, 300, 230, 3000 );
AddHtmlText( 25, 30, 250, 25, town.Definition.TownStoneHeader, false, false );
AddHtmlLocalized( 55, 60, 150, 25, 1011557, false, false ); // Hire Sheriff
AddButton( 20, 60, 4005, 4007, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 55, 90, 150, 25, 1011559, false, false ); // Hire Finance Minister
AddButton( 20, 90, 4005, 4007, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 55, 120, 150, 25, 1011558, false, false ); // Fire Sheriff
AddButton( 20, 120, 4005, 4007, 3, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 55, 150, 150, 25, 1011560, false, false ); // Fire Finance Minister
AddButton( 20, 150, 4005, 4007, 4, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 55, 210, 150, 25, 1011441, false, false ); // EXIT
AddButton( 20, 210, 4005, 4007, 0, GumpButtonType.Reply, 0 );
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Town.Owner != m_Faction || !m_Faction.IsCommander( m_From ) )
{
m_From.SendLocalizedMessage( 1010339 ); // You no longer control this city
return;
}
switch ( info.ButtonID )
{
case 1: // hire sheriff
{
if ( m_Town.Sheriff != null )
{
m_From.SendLocalizedMessage( 1010342 ); // You must fire your Sheriff before you can elect a new one
}
else
{
m_From.SendLocalizedMessage( 1010347 ); // Who shall be your new sheriff
m_From.BeginTarget( 12, false, TargetFlags.None, new TargetCallback( HireSheriff_OnTarget ) );
}
break;
}
case 2: // hire finance minister
{
if ( m_Town.Finance != null )
{
m_From.SendLocalizedMessage( 1010345 ); // You must fire your finance minister before you can elect a new one
}
else
{
m_From.SendLocalizedMessage( 1010348 ); // Who shall be your new Minister of Finances?
m_From.BeginTarget( 12, false, TargetFlags.None, new TargetCallback( HireFinanceMinister_OnTarget ) );
}
break;
}
case 3: // fire sheriff
{
if ( m_Town.Sheriff == null )
{
m_From.SendLocalizedMessage( 1010350 ); // You need to elect a sheriff before you can fire one
}
else
{
m_From.SendLocalizedMessage( 1010349 ); // You have fired your sheriff
m_Town.Sheriff.SendLocalizedMessage( 1010270 ); // You have been fired as Sheriff
m_Town.Sheriff = null;
}
break;
}
case 4: // fire finance minister
{
if ( m_Town.Finance == null )
{
m_From.SendLocalizedMessage( 1010352 ); // You need to elect a financial minister before you can fire one
}
else
{
m_From.SendLocalizedMessage( 1010351 ); // You have fired your financial Minister
m_Town.Finance.SendLocalizedMessage( 1010151 ); // You have been fired as Finance Minister
m_Town.Finance = null;
}
break;
}
}
}
private void HireSheriff_OnTarget( Mobile from, object obj )
{
if ( m_Town.Owner != m_Faction || !m_Faction.IsCommander( from ) )
{
from.SendLocalizedMessage( 1010339 ); // You no longer control this city
return;
}
else if ( m_Town.Sheriff != null )
{
from.SendLocalizedMessage( 1010342 ); // You must fire your Sheriff before you can elect a new one
}
else if ( obj is Mobile )
{
Mobile targ = (Mobile)obj;
PlayerState pl = PlayerState.Find( targ );
if ( pl == null )
{
from.SendLocalizedMessage( 1010337 ); // You must pick someone in a faction
}
else if ( pl.Faction != m_Faction )
{
from.SendLocalizedMessage( 1010338 ); // You must pick someone in the correct faction
}
else if ( m_Faction.Commander == targ )
{
from.SendLocalizedMessage( 1010335 ); // You cannot elect a commander to a town position
}
else if ( pl.Sheriff != null || pl.Finance != null )
{
from.SendLocalizedMessage( 1005245 ); // You must pick someone who does not already hold a city post
}
else
{
m_Town.Sheriff = targ;
targ.SendLocalizedMessage( 1010340 ); // You are now the Sheriff
from.SendLocalizedMessage( 1010341 ); // You have elected a Sheriff
}
}
else
{
from.SendLocalizedMessage( 1010334 ); // You must select a player to hold a city position!
}
}
private void HireFinanceMinister_OnTarget( Mobile from, object obj )
{
if ( m_Town.Owner != m_Faction || !m_Faction.IsCommander( from ) )
{
from.SendLocalizedMessage( 1010339 ); // You no longer control this city
return;
}
else if ( m_Town.Finance != null )
{
from.SendLocalizedMessage( 1010342 ); // You must fire your Sheriff before you can elect a new one
}
else if ( obj is Mobile )
{
Mobile targ = (Mobile)obj;
PlayerState pl = PlayerState.Find( targ );
if ( pl == null )
{
from.SendLocalizedMessage( 1010337 ); // You must pick someone in a faction
}
else if ( pl.Faction != m_Faction )
{
from.SendLocalizedMessage( 1010338 ); // You must pick someone in the correct faction
}
else if ( m_Faction.Commander == targ )
{
from.SendLocalizedMessage( 1010335 ); // You cannot elect a commander to a town position
}
else if ( pl.Sheriff != null || pl.Finance != null )
{
from.SendLocalizedMessage( 1005245 ); // You must pick someone who does not already hold a city post
}
else
{
m_Town.Finance = targ;
targ.SendLocalizedMessage( 1010343 ); // You are now the Financial Minister
from.SendLocalizedMessage( 1010344 ); // You have elected a Financial Minister
}
}
else
{
from.SendLocalizedMessage( 1010334 ); // You must select a player to hold a city position!
}
}
}
}