Files
abysmal-isle/Scripts/SubSystem/FullToolbar.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

156 lines
6.7 KiB
C#

using System;
using System.Collections;
using Server;
using Server.Gumps;
using Server.Mobiles;
using Server.Accounting;
using Server.Commands;
using Server.Network;
namespace Server.Gumps
{
public class FullToolbarCommand
{
public static void Initialize()
{
CommandSystem.Register( "Fubar", AccessLevel.GameMaster, new CommandEventHandler( Fubar_OnCommand ) );
CommandSystem.Register( "FullToolbar", AccessLevel.GameMaster, new CommandEventHandler( Fubar_OnCommand ) );
}
[Usage( "FullToolbar" )]
[Description( "Begins the Full Toolbar Gump." )]
private static void Fubar_OnCommand( CommandEventArgs e )
{
Mobile m = e.Mobile;
m.SendGump( new FullToolbar( m ) );
}
}
public class FullToolbar : Gump
{
private Mobile m_From;
private Account m_Account;
private string[] m_Str;
private int m_X, m_Y, m_W, m_H;
private bool m_AutoHide;
private bool m_Locked;
private int m_Pages;
private int m_ThisPage;
public FullToolbar( Mobile from ) : base( 0, 0 )
{
m_From = from;
m_From.CloseGump( typeof( FullToolbar ) );
m_Account = m_From.Account as Account;
if ( m_Account.GetTag( "FullToolbar" ) == null ) m_Account.SetTag( "FullToolbar", GetStartString() );
m_Str = m_Account.GetTag( "FullToolbar" ).Split( '~' );
int StrPos = 0;
try { m_X = Convert.ToInt32( m_Str[StrPos++] ); } catch { m_X = 5; }
try { m_Y = Convert.ToInt32( m_Str[StrPos++] ); } catch { m_Y = 33; }
try { m_W = Convert.ToInt32( m_Str[StrPos++] ); } catch { m_W = 700; }
try { m_H = Convert.ToInt32( m_Str[StrPos++] ); } catch { m_H = 53; }
try { if ( m_Str[StrPos++] == "Yes" ) m_AutoHide = true; else m_AutoHide = false; } catch { m_AutoHide = false; }
try { if ( m_Str[StrPos++] == "Yes" ) m_Locked = true; else m_Locked = false; } catch { m_Locked = false; }
try { m_Pages = Convert.ToInt32( m_Str[StrPos++] ); } catch { m_Pages = 6; }
try { m_ThisPage = Convert.ToInt32( m_Str[StrPos++] ); } catch { m_ThisPage = 1; }
Closable=true;
Disposable=true;
Dragable=true;
Resizable=false;
AddPage(0);
AddBackground(m_X, m_Y, m_W, m_H, 9200);
AddLabel( m_X + 20, m_Y, 0, @"Hide" );
AddImageTiledButton( m_X + 604, m_Y + 9, 22153, 22155, 301, GumpButtonType.Reply, 0, 1352, 0, 140, 20, 3010032 ); //Help Button
AddImageTiledButton( m_X + 4, m_Y + 5, 1210, 1209, 1, GumpButtonType.Reply, 0, 1352, 0, 140, 20, 3002085 ); // Minimize
if ( m_Locked ) { AddImage( m_X + 2, m_Y + 20, 10850 );
AddImageTiledButton( m_X + 10, m_Y + 29, 2092, 2092, 2, GumpButtonType.Reply, 0, 1352, 0, 140, 20, 3005142 ); } // Locked
else { AddImage( m_X + 2, m_Y + 20, 10830 );
AddImageTiledButton( m_X + 10, m_Y + 29, 2092, 2092, 3, GumpButtonType.Reply, 0, 1352, 0, 140, 20, 3005143 ); } // Unlocked
AddLabel( m_X + 631, m_Y + 29, 0, "Page" );
if ( m_ThisPage < 6 )
AddImageTiledButton( m_X + 674, m_Y + 32, 5402, 5402, 4, GumpButtonType.Reply, 0, 1352, 0, 140, 20, 1011066 ); // Next page
if ( m_ThisPage > 1 )
AddImageTiledButton( m_X + 604, m_Y + 32, 5401, 5401, 5, GumpButtonType.Reply, 0, 1352, 0, 140, 20, 1011067 ); // Previous Page
if ( m_AutoHide )
AddImageTiledButton( m_X + m_W - 30, m_Y + 8, 9910, 9910, 6, GumpButtonType.Reply, 0, 1352, 0, 140, 20, 1044107 ); // Stealth
else AddImageTiledButton( m_X + m_W - 30, m_Y + 8, 9903, 9903, 7, GumpButtonType.Reply, 0, 1352, 0, 140, 20, 1044107 ); // Stealth
StrPos = ( ( m_ThisPage - 1 ) * 5 ) + 8;
int Xpos = 0;
for ( int x = StrPos; x < StrPos + 5; x++ )
{
if ( !m_Locked ) AddTextEntry( m_X + 115 + (Xpos * 100), m_Y + 3, 70, 20, 0x769, x, m_Str[x] );
else AddLabel( m_X + 115 + (Xpos * 100), m_Y + 3, 0, m_Str[x] );
if ( !m_Locked ) AddImageTiledButton( m_X + 85 + (Xpos * 100), m_Y + 2, 4027, 4028, x,
GumpButtonType.Reply, 0, 1352, 0, 140, 20, 3005038 ); // Trigger Edit
AddImageTiledButton( m_X + 115 + (Xpos * 100), m_Y + 27, 4006, 4007, 100 + x,
GumpButtonType.Reply, 0, 1352, 0, 140, 20, 1005135 ); // Awaiting your command...
AddImageTiledButton( m_X + 150 + (Xpos++ * 100), m_Y + 27, 4009, 4010, 200 + x,
GumpButtonType.Reply, 0, 1352, 0, 140, 20, 1048176 ); // Makes as many as possible at once
}
}
public override void OnResponse( NetState state, RelayInfo info )
{
int choice = info.ButtonID;
if ( choice == 0 ) { m_From.CloseGump( typeof( FullToolbar ) ); }
else if ( choice == 1 ) { m_From.SendGump( new MiniToolbar( m_From ) ); }
else if ( choice == 2 ) { m_Str[5] = "No"; SetTheTag(); RelaunchToolbar( false ); }
else if ( choice == 3 ) { m_Str[5] = "Yes"; SetTheTag(); RelaunchToolbar( false ); }
else if ( choice == 4 ) { m_Str[7] = ( m_ThisPage + 1 ).ToString(); SetTheTag(); RelaunchToolbar( false ); }
else if ( choice == 5 ) { m_Str[7] = ( m_ThisPage - 1 ).ToString(); SetTheTag(); RelaunchToolbar( false ); }
else if ( choice == 6 ) { m_Str[4] = "No"; SetTheTag(); RelaunchToolbar( false ); }
else if ( choice == 7 ) { m_Str[4] = "Yes"; SetTheTag(); RelaunchToolbar( false ); }
else if ( choice < 100 ) { m_Str[choice] = info.GetTextEntry( choice ).Text; SetTheTag(); RelaunchToolbar( false ); }
else if ( choice < 200 ) { UseCommand( m_Str[choice - 100] ); RelaunchToolbar( true ); }
else if ( choice < 300 ) { UseMultiCommand( m_Str[choice - 200] ); RelaunchToolbar( true ); }
else if ( choice == 301 ) { m_From.SendGump( new FubarHelpGump( m_From ) ); RelaunchToolbar( false ); }
else { m_Str[0] = this.X.ToString(); m_Str[1] = this.Y.ToString(); SetTheTag(); m_From.CloseGump( typeof( FullToolbar ) ); }
}
public void RelaunchToolbar( bool cmd )
{
m_From.CloseGump( typeof( FullToolbar ) );
if ( cmd && m_AutoHide ) m_From.SendGump( new MiniToolbar( m_From ) );
else m_From.SendGump( new FullToolbar( m_From ) );
}
public void UseCommand( string command )
{
string Pfix = CommandSystem.Prefix;
CommandSystem.Handle( m_From, String.Format( "{0}{1}", Pfix, command ) );
}
public void UseMultiCommand( string command )
{
string Pfix = CommandSystem.Prefix;
CommandSystem.Handle( m_From, String.Format( "{0}m {1}", Pfix, command ) );
}
public string GetStartString()
{
string start = "5~33~700~53~No~No~6~1~Who~Where~Bank~Move~Props~Tele~Wipe~Skills~Stats~PM";
start += "~Save~Restart~Freeze~Unfreeze~Admin~Kill~Go~Kick~Restock~WipeMultis~Add Gold 60000~DupeInBag~Add PremiumSpawner";
start += "~OWLTR~Speak~ShaveBeard~ShaveHair~DoorGen~VendorGen~WorldTeleGen";
return start;
}
public void SetTheTag()
{
int StrPos = 8;
string tagstring = m_Str[0];
try
{
for ( int z = 1; z <= ( m_Pages * 5 ) + 7; z++ ) tagstring += "~" + m_Str[z];
m_Account.SetTag( "FullToolbar", tagstring );
}
catch { m_Account.SetTag( "FullToolbar", GetStartString() ); }
}
}
}