Files
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

355 lines
9.8 KiB
C#

using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server.ACC.PG
{
[Flags]
public enum Conditions
{
None = 0x00000000,
Adding = 0x00000001,
Category = 0x00000002,
}
public class PGAddEditGump : Gump
{
private Conditions m_Conditions;
private int m_CurCat;
private int m_CurLoc;
private PGCategory m_Cat;
private PGLocation m_Loc;
private PublicGate m_Gate;
private bool GetFlag( Conditions flag ) { return( (m_Conditions & flag) != 0 ); }
public PGAddEditGump( Conditions conditions, int curC, int curL, PublicGate gate ) : base( 0, 0 )
{
if( !PGSystem.Running )
return;
m_Conditions = conditions;
m_CurCat = curC;
m_CurLoc = curL;
m_Gate = gate;
if( !GetFlag( Conditions.Category ) || (GetFlag( Conditions.Category ) && !GetFlag( Conditions.Adding )) )
m_Cat = PGSystem.CategoryList[curC];
if( m_Cat != null && (!GetFlag( Conditions.Category ) && !GetFlag( Conditions.Adding )) )
m_Loc = m_Cat.Locations[curL];
string Name = "";
if( !GetFlag( Conditions.Adding ) )
{
if( GetFlag( Conditions.Category ) )
Name = m_Cat.Name;
else
Name = m_Loc.Name;
}
Point3D Loc = new Point3D( 0, 0, 0 );
Map Map = Map.Trammel;
bool Gen, Staff, Reds, Charge, Young;
int Hue, Cost;
Gen = Staff = Reds = Charge = Young = false;
Hue = Cost = 0;
if( GetFlag( Conditions.Category ) && !GetFlag( Conditions.Adding ) )
{
Gen = m_Cat.GetFlag( EntryFlag.Generate );
Staff = m_Cat.GetFlag( EntryFlag.StaffOnly );
Reds = m_Cat.GetFlag( EntryFlag.Reds );
Charge = m_Cat.GetFlag( EntryFlag.Charge );
Young = m_Cat.GetFlag( EntryFlag.Young );
Cost = m_Cat.Cost;
}
if( !GetFlag( Conditions.Category ) && !GetFlag( Conditions.Adding ) )
{
Loc = m_Loc.Location;
Map = m_Loc.Map;
Gen = m_Loc.GetFlag( EntryFlag.Generate );
Staff = m_Loc.GetFlag( EntryFlag.StaffOnly );
Reds = m_Loc.GetFlag( EntryFlag.Reds );
Charge = m_Loc.GetFlag( EntryFlag.Charge );
Young = m_Loc.GetFlag( EntryFlag.Young );
Hue = m_Loc.Hue;
Cost = m_Loc.Cost;
}
Closable = true;
Disposable = true;
Dragable = true;
Resizable = false;
AddPage(0);
AddBackground( 530, 100, 230, 410, 2600 );
AddLabel( 602, 120, 0, string.Format("{0} {1}", (GetFlag(Conditions.Adding) ? "Add" : "Edit"), (GetFlag(Conditions.Category) ? "Category" : "Location")) );
AddLabel( 625, 145, 0, "Name :" );
AddImage( 555, 170, 2446 );
AddTextEntry( 565, 170, 160, 20, 0, 2, Name );
AddLabel( 715, 235, 0, ": C" );
AddImage( 650, 235, 2443 );
AddTextEntry( 655, 235, 55, 20, 0, 15, Cost.ToString() );
if( !GetFlag(Conditions.Category) )
{
AddLabel( 560, 210, 0, "X :" );
AddImage( 580, 210, 2443 );
AddTextEntry( 585, 210, 55, 20, 0, 3, Loc.X.ToString() );
AddLabel( 560, 235, 0, "Y :" );
AddImage( 580, 235, 2443 );
AddTextEntry( 585, 235, 55, 20, 0, 4, Loc.Y.ToString() );
AddLabel( 560, 260, 0, "Z :" );
AddImage( 580, 260, 2443 );
AddTextEntry( 585, 260, 55, 20, 0, 5, Loc.Z.ToString() );
AddLabel( 715, 210, 0, ": H" );
AddImage( 650, 210, 2443 );
AddTextEntry( 655, 210, 55, 20, 0, 14, Hue.ToString() );
AddLabel( 585, 315, 0, "Trammel" );
AddRadio( 555, 315, 208, 209, (Map == Map.Trammel ? true : false), 6 );
AddLabel( 585, 340, 0, "Felucca" );
AddRadio( 555, 340, 208, 209, (Map == Map.Felucca ? true : false), 7 );
AddLabel( 685, 315, 0, "Malas" );
AddRadio( 655, 315, 208, 209, (Map == Map.Malas ? true : false), 8 );
AddLabel( 685, 345, 0, "Ilshenar" );
AddRadio( 655, 340, 208, 209, (Map == Map.Ilshenar ? true : false), 9 );
AddLabel( 585, 365, 0, "Tokuno" );
AddRadio( 555, 370, 208, 209, (Map == Map.Tokuno ? true : false), 10 );
AddLabel( 685, 365, 0, "TerMur" );
AddRadio( 655, 370, 208, 209, (Map == Map.TerMur ? true : false), 20 );
}
AddLabel( 585, 395, 0, "Generate?" );
AddCheck( 555, 395, 210, 211, Gen, 11 );
AddLabel( 665, 395, 0, "Young?" );
AddCheck( 715, 395, 210, 211, Young, 16 );
AddLabel( 585, 420, 0, "Reds?" );
AddCheck( 555, 420, 210, 211, Reds, 13 );
AddLabel( 658, 420, 0, "Charge?" );
AddCheck( 715, 420, 210, 211, Charge, 17 );
AddLabel( 585, 445, 0, "Staff Only?" );
AddCheck( 555, 445, 210, 211, Staff, 12 );
AddButton( 700, 450, 1417, 1417, 1, GumpButtonType.Reply, 0 );
AddLabel( 728, 481, 69, "Apply" );
}
private EntryFlag Flags;
private void SetFlag( EntryFlag flag, bool value )
{
if( value )
Flags |= flag;
else Flags &= ~flag;
}
public override void OnResponse( NetState state, RelayInfo info )
{
if( state.Mobile.AccessLevel < PGSystem.PGAccessLevel )
return;
Mobile from = state.Mobile;
int BID = info.ButtonID;
if( BID == 0 )
return;
SetFlag( EntryFlag.Generate, info.IsSwitched( 11 ) );
SetFlag( EntryFlag.StaffOnly, info.IsSwitched( 12 ) );
SetFlag( EntryFlag.Reds, info.IsSwitched( 13 ) );
SetFlag( EntryFlag.Young, info.IsSwitched( 16 ) );
SetFlag( EntryFlag.Charge, info.IsSwitched( 17 ) );
Map Map = null;
for( int i = 0; i < info.Switches.Length; i++ )
{
int m = info.Switches[i];
switch( m )
{
case 6: Map = Map.Trammel; break;
case 7: Map = Map.Felucca; break;
case 8: Map = Map.Malas; break;
case 9: Map = Map.Ilshenar; break;
case 10: Map = Map.Tokuno; break;
case 20: Map = Map.TerMur; break;
}
}
TextRelay NR = info.GetTextEntry( 2 );
TextRelay XR = info.GetTextEntry( 3 );
TextRelay YR = info.GetTextEntry( 4 );
TextRelay ZR = info.GetTextEntry( 5 );
TextRelay HR = info.GetTextEntry( 14 );
TextRelay CR = info.GetTextEntry( 15 );
string NS = (NR == null ? null : NR.Text.Trim());
string XS = (XR == null ? null : XR.Text.Trim());
string YS = (YR == null ? null : YR.Text.Trim());
string ZS = (ZR == null ? null : ZR.Text.Trim());
string HS = (HR == null ? null : HR.Text.Trim());
string CS = (CR == null ? null : CR.Text.Trim());
if( BID == 1 )
{
if( GetFlag( Conditions.Category ) )
{
if( GetFlag( Conditions.Adding ) )
{
if( NS == null || NS.Length == 0 || CS == null || CS.Length == 0 )
{
from.SendMessage( "Please enter a name and cost for this Category." );
from.CloseGump( typeof( PGAddEditGump ) );
from.SendGump( new PGAddEditGump( m_Conditions, m_CurCat, m_CurLoc, m_Gate ) );
return;
}
int c = 0;
try
{
c = Int32.Parse( CS );
PGSystem.CategoryList.Add( new PGCategory( NS, Flags, c ) );
from.SendMessage( "Added Category." );
}
catch
{
from.SendMessage( "Bad cost value, defaulting to 0." );
PGSystem.CategoryList.Add( new PGCategory( NS, Flags ) );
}
}
else
{
if( NS == null || NS.Length == 0 )
{
from.SendMessage( "Removed the Category." );
PGSystem.CategoryList.RemoveAt( m_CurCat );
m_CurCat = 0;
}
else
{
from.SendMessage( "Changed the Category." );
PGSystem.CategoryList[m_CurCat].Name = NS;
PGSystem.CategoryList[m_CurCat].Flags = Flags;
if( CS == null || CS.Length == 0 )
PGSystem.CategoryList[m_CurCat].Cost = 0;
else
{
int c = 0;
try
{
c = Int32.Parse( CS );
PGSystem.CategoryList[m_CurCat].Cost = c;
}
catch
{
PGSystem.CategoryList[m_CurCat].Cost = 0;
}
}
}
}
}
else
{
if( NS == null || NS.Length == 0 ||
XS == null || XS.Length == 0 ||
YS == null || YS.Length == 0 ||
ZS == null || ZS.Length == 0 ||
HS == null || HS.Length == 0 ||
CS == null || CS.Length == 0 )
{
if( GetFlag( Conditions.Adding ) )
{
from.SendMessage( "Please fill in each field." );
from.CloseGump( typeof( PGAddEditGump ) );
from.SendGump( new PGAddEditGump( m_Conditions, m_CurCat, m_CurLoc, m_Gate ) );
return;
}
from.SendMessage( "Removed the Location." );
PGSystem.CategoryList[m_CurCat].Locations.RemoveAt( m_CurLoc );
}
else if( Map == null )
{
from.SendMessage( "Please select a Map." );
from.CloseGump( typeof( PGAddEditGump ) );
from.SendGump( new PGAddEditGump( m_Conditions, m_CurCat, m_CurLoc, m_Gate ) );
return;
}
else
{
int x, y, z, h, c = 0;
Point3D Loc;
int Hue;
int Cost;
try
{
x = Int32.Parse( XS );
y = Int32.Parse( YS );
z = Int32.Parse( ZS );
h = Int32.Parse( HS );
c = Int32.Parse( CS );
Loc = new Point3D( x, y, z );
Hue = h;
Cost = c;
}
catch
{
from.SendMessage( "Please enter an integer in each of the info fields. (X, Y, Z, H, C)" );
from.CloseGump( typeof( PGAddEditGump ) );
from.SendGump( new PGAddEditGump( m_Conditions, m_CurCat, m_CurLoc, m_Gate ) );
return;
}
PGLocation PGL = new PGLocation( NS, Flags, Loc, Map, Hue, Cost );
if( PGL == null )
{
from.SendMessage( "Bad Location information, can't add!" );
from.CloseGump( typeof( PGAddEditGump ) );
from.SendGump( new PGAddEditGump( m_Conditions, m_CurCat, m_CurLoc, m_Gate ) );
return;
}
if( GetFlag( Conditions.Adding ) )
{
from.SendMessage( "Added the Location." );
PGSystem.CategoryList[m_CurCat].Locations.Add( PGL );
}
else
{
from.SendMessage( "Changed the Location." );
PGSystem.CategoryList[m_CurCat].Locations[m_CurLoc] = PGL;
}
}
}
from.CloseGump( typeof( PGGump ) );
from.SendGump( new PGGump( from, m_CurCat, m_Gate ) );
}
}
}
}