From 5d612052405aeec6b14cb92514ccaea19d9f8528 Mon Sep 17 00:00:00 2001 From: Kamron Batman Date: Wed, 21 Feb 2018 20:30:45 -0800 Subject: [PATCH] Upgrades gumps to allow netstate specific compilation/appends. (#7) --- Scripts/Engines/Virtues/VirtueGump.cs | 10 +++--- Server/Gumps/Gump.cs | 7 ++-- Server/Gumps/GumpAlphaRegion.cs | 4 +-- Server/Gumps/GumpBackground.cs | 4 +-- Server/Gumps/GumpButton.cs | 4 +-- Server/Gumps/GumpCheck.cs | 4 +-- Server/Gumps/GumpEntry.cs | 47 +++++++++++++-------------- Server/Gumps/GumpGroup.cs | 4 +-- Server/Gumps/GumpHtml.cs | 4 +-- Server/Gumps/GumpHtmlLocalized.cs | 4 +-- Server/Gumps/GumpImage.cs | 4 +-- Server/Gumps/GumpImageTileButton.cs | 4 +-- Server/Gumps/GumpImageTiled.cs | 4 +-- Server/Gumps/GumpItem.cs | 4 +-- Server/Gumps/GumpItemProperty.cs | 4 +-- Server/Gumps/GumpLabel.cs | 4 +-- Server/Gumps/GumpLabelCropped.cs | 4 +-- Server/Gumps/GumpPage.cs | 4 +-- Server/Gumps/GumpRadio.cs | 4 +-- Server/Gumps/GumpTextEntry.cs | 4 +-- Server/Gumps/GumpTextEntryLimited.cs | 4 +-- Server/Gumps/GumpTooltip.cs | 4 +-- 22 files changed, 69 insertions(+), 71 deletions(-) diff --git a/Scripts/Engines/Virtues/VirtueGump.cs b/Scripts/Engines/Virtues/VirtueGump.cs index be34dabdf..f7f192e47 100644 --- a/Scripts/Engines/Virtues/VirtueGump.cs +++ b/Scripts/Engines/Virtues/VirtueGump.cs @@ -144,7 +144,7 @@ namespace Server if( value < 10000 ) vl = 0; else if( value >= 20000 && index == 5) - vl = 2; + vl = 2; else if( value >= 21000 && index != 1) vl = 2; else if( value >= 22000 && index == 1) @@ -162,16 +162,16 @@ namespace Server { } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ gumppic {0} {1} {2} hue={3} class=VirtueGumpItem }}", X, Y, GumpID, Hue ); } private static byte[] m_Class = Gump.StringToBuffer( " class=VirtueGumpItem" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { - base.AppendTo( disp ); + base.AppendTo( ns, disp ); disp.AppendLayout( m_Class ); } @@ -183,4 +183,4 @@ namespace Server m_Beholder.SendGump( new VirtueStatusGump( m_Beholder ) ); } } -} \ No newline at end of file +} diff --git a/Server/Gumps/Gump.cs b/Server/Gumps/Gump.cs index 3e6ece6a4..9b5dc6f9e 100644 --- a/Server/Gumps/Gump.cs +++ b/Server/Gumps/Gump.cs @@ -407,7 +407,7 @@ namespace Server.Gumps e = m_Entries[i]; disp.AppendLayout( m_BeginLayout ); - e.AppendTo( disp ); + e.AppendTo( ns, disp ); disp.AppendLayout( m_EndLayout ); } @@ -425,7 +425,8 @@ namespace Server.Gumps { } - public virtual void OnServerClose( NetState owner ) { + public virtual void OnServerClose( NetState owner ) + { } } -} \ No newline at end of file +} diff --git a/Server/Gumps/GumpAlphaRegion.cs b/Server/Gumps/GumpAlphaRegion.cs index 03d826f45..52cf6b2ce 100644 --- a/Server/Gumps/GumpAlphaRegion.cs +++ b/Server/Gumps/GumpAlphaRegion.cs @@ -84,14 +84,14 @@ namespace Server.Gumps m_Height = height; } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ checkertrans {0} {1} {2} {3} }}", m_X, m_Y, m_Width, m_Height ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "checkertrans" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpBackground.cs b/Server/Gumps/GumpBackground.cs index a7d117139..9869ef437 100644 --- a/Server/Gumps/GumpBackground.cs +++ b/Server/Gumps/GumpBackground.cs @@ -98,14 +98,14 @@ namespace Server.Gumps m_GumpID = gumpID; } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ resizepic {0} {1} {2} {3} {4} }}", m_X, m_Y, m_GumpID, m_Width, m_Height ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "resizepic" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpButton.cs b/Server/Gumps/GumpButton.cs index 0d1c46e30..4b2dea5cb 100644 --- a/Server/Gumps/GumpButton.cs +++ b/Server/Gumps/GumpButton.cs @@ -142,14 +142,14 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ button {0} {1} {2} {3} {4} {5} {6} }}", m_X, m_Y, m_ID1, m_ID2, (int)m_Type, m_Param, m_ButtonID ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "button" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpCheck.cs b/Server/Gumps/GumpCheck.cs index a3a531948..11f809a1b 100644 --- a/Server/Gumps/GumpCheck.cs +++ b/Server/Gumps/GumpCheck.cs @@ -112,14 +112,14 @@ namespace Server.Gumps m_SwitchID = switchID; } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ checkbox {0} {1} {2} {3} {4} {5} }}", m_X, m_Y, m_ID1, m_ID2, m_InitialState ? 1 : 0, m_SwitchID ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "checkbox" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpEntry.cs b/Server/Gumps/GumpEntry.cs index 8e58d8329..deae9dcfc 100644 --- a/Server/Gumps/GumpEntry.cs +++ b/Server/Gumps/GumpEntry.cs @@ -36,11 +36,6 @@ namespace Server.Gumps if ( var != val ) { var = val; - - if ( m_Parent != null ) - { - m_Parent.Invalidate(); - } } } @@ -49,11 +44,6 @@ namespace Server.Gumps if ( var != val ) { var = val; - - if ( m_Parent != null ) - { - m_Parent.Invalidate(); - } } } @@ -62,32 +52,39 @@ namespace Server.Gumps if ( var != val ) { var = val; - - if ( m_Parent != null ) - { - m_Parent.Invalidate(); - } } } - public Gump Parent { - get { + protected void Delta( ref object[] var, object[] val ) + { + if ( var != val ) + { + var = val; + } + } + + public Gump Parent + { + get + { return m_Parent; } - set { - if (m_Parent != value) { - if (m_Parent != null) - m_Parent.Remove(this); + set + { + if ( m_Parent != value ) + { + if ( m_Parent != null ) + m_Parent.Remove( this ); m_Parent = value; - if (m_Parent != null) - m_Parent.Add(this); + if ( m_Parent != null ) + m_Parent.Add( this ); } } } - public abstract string Compile(); - public abstract void AppendTo( IGumpWriter disp ); + public abstract string Compile( NetState ns ); + public abstract void AppendTo( NetState ns, IGumpWriter disp ); } } \ No newline at end of file diff --git a/Server/Gumps/GumpGroup.cs b/Server/Gumps/GumpGroup.cs index 17651cbcb..3bbfedd8b 100644 --- a/Server/Gumps/GumpGroup.cs +++ b/Server/Gumps/GumpGroup.cs @@ -44,14 +44,14 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ group {0} }}", m_Group ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "group" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_Group ); diff --git a/Server/Gumps/GumpHtml.cs b/Server/Gumps/GumpHtml.cs index 18879a350..e790aa723 100644 --- a/Server/Gumps/GumpHtml.cs +++ b/Server/Gumps/GumpHtml.cs @@ -125,14 +125,14 @@ namespace Server.Gumps m_Scrollbar = scrollbar; } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ htmlgump {0} {1} {2} {3} {4} {5} {6} }}", m_X, m_Y, m_Width, m_Height, Parent.Intern( m_Text ), m_Background ? 1 : 0, m_Scrollbar ? 1 : 0 ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "htmlgump" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpHtmlLocalized.cs b/Server/Gumps/GumpHtmlLocalized.cs index ac7553d8b..93d0e9b8d 100644 --- a/Server/Gumps/GumpHtmlLocalized.cs +++ b/Server/Gumps/GumpHtmlLocalized.cs @@ -211,7 +211,7 @@ namespace Server.Gumps m_Type = GumpHtmlLocalizedType.Args; } - public override string Compile() + public override string Compile( NetState ns ) { switch ( m_Type ) { @@ -230,7 +230,7 @@ namespace Server.Gumps private static byte[] m_LayoutNameColor = Gump.StringToBuffer( "xmfhtmlgumpcolor" ); private static byte[] m_LayoutNameArgs = Gump.StringToBuffer( "xmfhtmltok" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { switch ( m_Type ) { diff --git a/Server/Gumps/GumpImage.cs b/Server/Gumps/GumpImage.cs index 905b567a6..30274ca0a 100644 --- a/Server/Gumps/GumpImage.cs +++ b/Server/Gumps/GumpImage.cs @@ -89,7 +89,7 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { if ( m_Hue == 0 ) return String.Format( "{{ gumppic {0} {1} {2} }}", m_X, m_Y, m_GumpID ); @@ -100,7 +100,7 @@ namespace Server.Gumps private static byte[] m_LayoutName = Gump.StringToBuffer( "gumppic" ); private static byte[] m_HueEquals = Gump.StringToBuffer( " hue=" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpImageTileButton.cs b/Server/Gumps/GumpImageTileButton.cs index 6b3de283c..6843cc1d1 100644 --- a/Server/Gumps/GumpImageTileButton.cs +++ b/Server/Gumps/GumpImageTileButton.cs @@ -214,7 +214,7 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { if( m_LocalizedTooltip > 0 ) return String.Format( "{{ buttontileart {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} }}{{ tooltip {11} }}", m_X, m_Y, m_ID1, m_ID2, (int)m_Type, m_Param, m_ButtonID, m_ItemID, m_Hue, m_Width, m_Height, m_LocalizedTooltip ); @@ -225,7 +225,7 @@ namespace Server.Gumps private static byte[] m_LayoutName = Gump.StringToBuffer( "buttontileart" ); private static byte[] m_LayoutTooltip = Gump.StringToBuffer( " }{ tooltip" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpImageTiled.cs b/Server/Gumps/GumpImageTiled.cs index 1687e6977..3b4d3d30e 100644 --- a/Server/Gumps/GumpImageTiled.cs +++ b/Server/Gumps/GumpImageTiled.cs @@ -98,14 +98,14 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ gumppictiled {0} {1} {2} {3} {4} }}", m_X, m_Y, m_Width, m_Height, m_GumpID ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "gumppictiled" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpItem.cs b/Server/Gumps/GumpItem.cs index 0b74e0dfc..443298d52 100644 --- a/Server/Gumps/GumpItem.cs +++ b/Server/Gumps/GumpItem.cs @@ -89,7 +89,7 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { if ( m_Hue == 0 ) return String.Format( "{{ tilepic {0} {1} {2} }}", m_X, m_Y, m_ItemID ); @@ -100,7 +100,7 @@ namespace Server.Gumps private static byte[] m_LayoutName = Gump.StringToBuffer( "tilepic" ); private static byte[] m_LayoutNameHue = Gump.StringToBuffer( "tilepichue" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_Hue == 0 ? m_LayoutName : m_LayoutNameHue ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpItemProperty.cs b/Server/Gumps/GumpItemProperty.cs index 100305720..bd78bf944 100644 --- a/Server/Gumps/GumpItemProperty.cs +++ b/Server/Gumps/GumpItemProperty.cs @@ -44,14 +44,14 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ itemproperty {0} }}", m_Serial ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "itemproperty" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_Serial ); diff --git a/Server/Gumps/GumpLabel.cs b/Server/Gumps/GumpLabel.cs index 6c2f5b86c..2fa55c0ca 100644 --- a/Server/Gumps/GumpLabel.cs +++ b/Server/Gumps/GumpLabel.cs @@ -85,14 +85,14 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ text {0} {1} {2} {3} }}", m_X, m_Y, m_Hue, Parent.Intern( m_Text ) ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "text" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpLabelCropped.cs b/Server/Gumps/GumpLabelCropped.cs index 1a685ae41..6c1c988c6 100644 --- a/Server/Gumps/GumpLabelCropped.cs +++ b/Server/Gumps/GumpLabelCropped.cs @@ -112,14 +112,14 @@ namespace Server.Gumps m_Text = text; } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ croppedtext {0} {1} {2} {3} {4} {5} }}", m_X, m_Y, m_Width, m_Height, m_Hue, Parent.Intern( m_Text ) ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "croppedtext" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpPage.cs b/Server/Gumps/GumpPage.cs index bde228c4f..ae39b1829 100644 --- a/Server/Gumps/GumpPage.cs +++ b/Server/Gumps/GumpPage.cs @@ -44,14 +44,14 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ page {0} }}", m_Page ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "page" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_Page ); diff --git a/Server/Gumps/GumpRadio.cs b/Server/Gumps/GumpRadio.cs index e2a02125e..a54299ef6 100644 --- a/Server/Gumps/GumpRadio.cs +++ b/Server/Gumps/GumpRadio.cs @@ -112,14 +112,14 @@ namespace Server.Gumps m_SwitchID = switchID; } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ radio {0} {1} {2} {3} {4} {5} }}", m_X, m_Y, m_ID1, m_ID2, m_InitialState ? 1 : 0, m_SwitchID ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "radio" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpTextEntry.cs b/Server/Gumps/GumpTextEntry.cs index 9594dc85d..29f5a659e 100644 --- a/Server/Gumps/GumpTextEntry.cs +++ b/Server/Gumps/GumpTextEntry.cs @@ -126,14 +126,14 @@ namespace Server.Gumps m_InitialText = initialText; } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ textentry {0} {1} {2} {3} {4} {5} {6} }}", m_X, m_Y, m_Width, m_Height, m_Hue, m_EntryID, Parent.Intern( m_InitialText ) ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "textentry" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); diff --git a/Server/Gumps/GumpTextEntryLimited.cs b/Server/Gumps/GumpTextEntryLimited.cs index 356b71637..8efe8361d 100644 --- a/Server/Gumps/GumpTextEntryLimited.cs +++ b/Server/Gumps/GumpTextEntryLimited.cs @@ -113,13 +113,13 @@ namespace Server.Gumps { m_Size = size; } - public override string Compile() { + public override string Compile( NetState ns ) { return String.Format( "{{ textentrylimited {0} {1} {2} {3} {4} {5} {6} {7} }}", m_X, m_Y, m_Width, m_Height, m_Hue, m_EntryID, Parent.Intern( m_InitialText ), m_Size ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "textentrylimited" ); - public override void AppendTo( IGumpWriter disp ) { + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_X ); disp.AppendLayout( m_Y ); diff --git a/Server/Gumps/GumpTooltip.cs b/Server/Gumps/GumpTooltip.cs index 4a663c1e3..171b2a3cf 100644 --- a/Server/Gumps/GumpTooltip.cs +++ b/Server/Gumps/GumpTooltip.cs @@ -44,14 +44,14 @@ namespace Server.Gumps } } - public override string Compile() + public override string Compile( NetState ns ) { return String.Format( "{{ tooltip {0} }}", m_Number ); } private static byte[] m_LayoutName = Gump.StringToBuffer( "tooltip" ); - public override void AppendTo( IGumpWriter disp ) + public override void AppendTo( NetState ns, IGumpWriter disp ) { disp.AppendLayout( m_LayoutName ); disp.AppendLayout( m_Number );