From 1b6f8c97f9340e7224d1c605c76ea8f4bbb77983 Mon Sep 17 00:00:00 2001 From: MaxED <j.maxed@gmail.com> Date: Wed, 3 Oct 2012 18:46:13 +0000 Subject: [PATCH] Builder 1.13: UDMF: changing brightness of a wall or ceiling in GZDoom Visual mode will change brightness of selected surface, not sector brightness. Sector and Sidedef info panels show additional info if a map is in UDMF format. Fixed: GZDoom menu panel wasn't updated when a map was opened via "recent files" item click. --- .../Controls/LinedefInfoPanel.Designer.cs | 674 +++++++++++++++--- Source/Core/Controls/LinedefInfoPanel.cs | 222 +++++- Source/Core/Controls/LinedefInfoPanel.resx | 51 -- .../Core/Controls/SectorInfoPanel.Designer.cs | 314 ++++++-- Source/Core/Controls/SectorInfoPanel.cs | 160 +++++ Source/Core/Controls/SectorInfoPanel.resx | 60 -- Source/Core/GZBuilder/GZGeneral.cs | 4 +- Source/Core/General/General.cs | 3 + Source/Core/General/StepsList.cs | 12 + Source/Core/Resources/GZDB2.ico | Bin 11502 -> 24358 bytes Source/Core/Resources/Splash3_trans.png | Bin 234493 -> 234542 bytes Source/Core/Windows/MainForm.Designer.cs | 4 +- Source/Core/Windows/MainForm.resx | 604 ++++++++++------ .../GZDoomEditing/General/UndoGroup.cs | 1 + .../VisualModes/BaseVisualGeometrySector.cs | 20 +- .../VisualModes/BaseVisualGeometrySidedef.cs | 20 +- .../VisualModes/BaseVisualMode.cs | 100 ++- .../VisualModes/VisualCeiling.cs | 36 +- .../GZDoomEditing/VisualModes/VisualLower.cs | 31 + .../VisualModes/VisualMiddleDouble.cs | 31 + .../VisualModes/VisualMiddleSingle.cs | 31 + .../GZDoomEditing/VisualModes/VisualUpper.cs | 31 + 22 files changed, 1838 insertions(+), 571 deletions(-) diff --git a/Source/Core/Controls/LinedefInfoPanel.Designer.cs b/Source/Core/Controls/LinedefInfoPanel.Designer.cs index 093976321..c6327c33b 100644 --- a/Source/Core/Controls/LinedefInfoPanel.Designer.cs +++ b/Source/Core/Controls/LinedefInfoPanel.Designer.cs @@ -55,27 +55,79 @@ namespace CodeImp.DoomBuilder.Controls this.action = new System.Windows.Forms.Label(); this.frontpanel = new System.Windows.Forms.GroupBox(); this.frontsector = new System.Windows.Forms.Label(); - this.frontlowname = new System.Windows.Forms.Label(); - this.frontlowtex = new System.Windows.Forms.Panel(); - this.frontmidtex = new System.Windows.Forms.Panel(); - this.fronthighname = new System.Windows.Forms.Label(); + this.flowLayoutPanelFront = new System.Windows.Forms.FlowLayoutPanel(); + this.panel4 = new System.Windows.Forms.Panel(); this.fronthightex = new System.Windows.Forms.Panel(); + this.fronthighname = new System.Windows.Forms.Label(); + this.panelUDMFFrontTop = new System.Windows.Forms.Panel(); + this.frontTopUDMFScale = new System.Windows.Forms.Label(); + this.frontTopUDMFOffset = new System.Windows.Forms.Label(); + this.frontTopUDMFScaleLabel = new System.Windows.Forms.Label(); + this.frontTopUDMFOffsetLabel = new System.Windows.Forms.Label(); + this.panel7 = new System.Windows.Forms.Panel(); + this.frontmidtex = new System.Windows.Forms.Panel(); this.frontmidname = new System.Windows.Forms.Label(); + this.panelUDMFFrontMid = new System.Windows.Forms.Panel(); + this.frontMidUDMFScale = new System.Windows.Forms.Label(); + this.frontMidUDMFOffset = new System.Windows.Forms.Label(); + this.frontMidUDMFScaleLabel = new System.Windows.Forms.Label(); + this.frontMidUDMFOffsetLabel = new System.Windows.Forms.Label(); + this.panelFrontLowTex = new System.Windows.Forms.Panel(); + this.frontlowtex = new System.Windows.Forms.Panel(); + this.frontlowname = new System.Windows.Forms.Label(); + this.panelUDMFFrontBottom = new System.Windows.Forms.Panel(); + this.frontBottomUDMFScale = new System.Windows.Forms.Label(); + this.frontBottomUDMFOffset = new System.Windows.Forms.Label(); + this.frontBottomUDMFScaleLabel = new System.Windows.Forms.Label(); + this.frontBottomUDMFOffsetLabel = new System.Windows.Forms.Label(); this.backpanel = new System.Windows.Forms.GroupBox(); this.backsector = new System.Windows.Forms.Label(); - this.backlowname = new System.Windows.Forms.Label(); - this.backlowtex = new System.Windows.Forms.Panel(); - this.backmidname = new System.Windows.Forms.Label(); - this.backmidtex = new System.Windows.Forms.Panel(); - this.backhighname = new System.Windows.Forms.Label(); + this.flowLayoutPanelBack = new System.Windows.Forms.FlowLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); this.backhightex = new System.Windows.Forms.Panel(); + this.backhighname = new System.Windows.Forms.Label(); + this.panelUDMFBackTop = new System.Windows.Forms.Panel(); + this.backTopUDMFScale = new System.Windows.Forms.Label(); + this.backTopUDMFOffset = new System.Windows.Forms.Label(); + this.backTopUDMFScaleLabel = new System.Windows.Forms.Label(); + this.backTopUDMFOffsetLabel = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.backmidtex = new System.Windows.Forms.Panel(); + this.backmidname = new System.Windows.Forms.Label(); + this.panelUDMFBackMid = new System.Windows.Forms.Panel(); + this.backMidUDMFScale = new System.Windows.Forms.Label(); + this.backMidUDMFOffset = new System.Windows.Forms.Label(); + this.backMidUDMFScaleLabel = new System.Windows.Forms.Label(); + this.backMidUDMFOffsetLabel = new System.Windows.Forms.Label(); + this.panelBackLowTex = new System.Windows.Forms.Panel(); + this.backlowtex = new System.Windows.Forms.Panel(); + this.backlowname = new System.Windows.Forms.Label(); + this.panelUDMFBackBottom = new System.Windows.Forms.Panel(); + this.backBottomUDMFScale = new System.Windows.Forms.Label(); + this.backBottomUDMFOffset = new System.Windows.Forms.Label(); + this.backBottomUDMFScaleLabel = new System.Windows.Forms.Label(); + this.backBottomUDMFOffsetLabel = new System.Windows.Forms.Label(); label1 = new System.Windows.Forms.Label(); label4 = new System.Windows.Forms.Label(); label3 = new System.Windows.Forms.Label(); label2 = new System.Windows.Forms.Label(); this.infopanel.SuspendLayout(); this.frontpanel.SuspendLayout(); + this.flowLayoutPanelFront.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panelUDMFFrontTop.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panelUDMFFrontMid.SuspendLayout(); + this.panelFrontLowTex.SuspendLayout(); + this.panelUDMFFrontBottom.SuspendLayout(); this.backpanel.SuspendLayout(); + this.flowLayoutPanelBack.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panelUDMFBackTop.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panelUDMFBackMid.SuspendLayout(); + this.panelBackLowTex.SuspendLayout(); + this.panelUDMFBackBottom.SuspendLayout(); this.SuspendLayout(); // // label1 @@ -92,7 +144,7 @@ namespace CodeImp.DoomBuilder.Controls label4.AutoSize = true; label4.Location = new System.Drawing.Point(24, 77); label4.Name = "label4"; - label4.Size = new System.Drawing.Size(28, 14); + label4.Size = new System.Drawing.Size(27, 14); label4.TabIndex = 4; label4.Text = "Tag:"; // @@ -287,12 +339,12 @@ namespace CodeImp.DoomBuilder.Controls // // backoffsetlabel // - this.backoffsetlabel.AutoSize = true; - this.backoffsetlabel.Location = new System.Drawing.Point(111, 77); + this.backoffsetlabel.Location = new System.Drawing.Point(107, 77); this.backoffsetlabel.Name = "backoffsetlabel"; - this.backoffsetlabel.Size = new System.Drawing.Size(66, 14); + this.backoffsetlabel.Size = new System.Drawing.Size(70, 14); this.backoffsetlabel.TabIndex = 14; this.backoffsetlabel.Text = "Back offset:"; + this.backoffsetlabel.TextAlign = System.Drawing.ContentAlignment.TopRight; // // frontoffset // @@ -305,12 +357,12 @@ namespace CodeImp.DoomBuilder.Controls // // frontoffsetlabel // - this.frontoffsetlabel.AutoSize = true; - this.frontoffsetlabel.Location = new System.Drawing.Point(110, 58); + this.frontoffsetlabel.Location = new System.Drawing.Point(107, 58); this.frontoffsetlabel.Name = "frontoffsetlabel"; - this.frontoffsetlabel.Size = new System.Drawing.Size(67, 14); + this.frontoffsetlabel.Size = new System.Drawing.Size(70, 14); this.frontoffsetlabel.TabIndex = 8; this.frontoffsetlabel.Text = "Front offset:"; + this.frontoffsetlabel.TextAlign = System.Drawing.ContentAlignment.TopRight; // // tag // @@ -353,15 +405,10 @@ namespace CodeImp.DoomBuilder.Controls // frontpanel // this.frontpanel.Controls.Add(this.frontsector); - this.frontpanel.Controls.Add(this.frontlowname); - this.frontpanel.Controls.Add(this.frontlowtex); - this.frontpanel.Controls.Add(this.frontmidtex); - this.frontpanel.Controls.Add(this.fronthighname); - this.frontpanel.Controls.Add(this.fronthightex); - this.frontpanel.Controls.Add(this.frontmidname); + this.frontpanel.Controls.Add(this.flowLayoutPanelFront); this.frontpanel.Location = new System.Drawing.Point(467, 0); this.frontpanel.Name = "frontpanel"; - this.frontpanel.Size = new System.Drawing.Size(257, 100); + this.frontpanel.Size = new System.Drawing.Size(515, 100); this.frontpanel.TabIndex = 2; this.frontpanel.TabStop = false; this.frontpanel.Text = " Front "; @@ -376,41 +423,45 @@ namespace CodeImp.DoomBuilder.Controls this.frontsector.TabIndex = 6; this.frontsector.Text = "Sector 666"; // - // frontlowname - // - this.frontlowname.BackColor = System.Drawing.SystemColors.Control; - this.frontlowname.Location = new System.Drawing.Point(170, 80); - this.frontlowname.Name = "frontlowname"; - this.frontlowname.Size = new System.Drawing.Size(82, 13); - this.frontlowname.TabIndex = 5; - this.frontlowname.Text = "BROWNHUG"; - this.frontlowname.TextAlign = System.Drawing.ContentAlignment.TopCenter; - this.frontlowname.UseMnemonic = false; - // - // frontlowtex + // flowLayoutPanelFront + // + this.flowLayoutPanelFront.Controls.Add(this.panel4); + this.flowLayoutPanelFront.Controls.Add(this.panelUDMFFrontTop); + this.flowLayoutPanelFront.Controls.Add(this.panel7); + this.flowLayoutPanelFront.Controls.Add(this.panelUDMFFrontMid); + this.flowLayoutPanelFront.Controls.Add(this.panelFrontLowTex); + this.flowLayoutPanelFront.Controls.Add(this.panelUDMFFrontBottom); + this.flowLayoutPanelFront.Location = new System.Drawing.Point(6, 14); + this.flowLayoutPanelFront.Margin = new System.Windows.Forms.Padding(0); + this.flowLayoutPanelFront.Name = "flowLayoutPanelFront"; + this.flowLayoutPanelFront.Size = new System.Drawing.Size(503, 80); + this.flowLayoutPanelFront.TabIndex = 13; + this.flowLayoutPanelFront.WrapContents = false; + // + // panel4 + // + this.panel4.Controls.Add(this.fronthightex); + this.panel4.Controls.Add(this.fronthighname); + this.panel4.Location = new System.Drawing.Point(0, 3); + this.panel4.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(90, 76); + this.panel4.TabIndex = 5; // - this.frontlowtex.BackColor = System.Drawing.SystemColors.AppWorkspace; - this.frontlowtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.frontlowtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.frontlowtex.Location = new System.Drawing.Point(177, 19); - this.frontlowtex.Name = "frontlowtex"; - this.frontlowtex.Size = new System.Drawing.Size(68, 60); - this.frontlowtex.TabIndex = 4; - // - // frontmidtex + // fronthightex // - this.frontmidtex.BackColor = System.Drawing.SystemColors.AppWorkspace; - this.frontmidtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.frontmidtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.frontmidtex.Location = new System.Drawing.Point(95, 19); - this.frontmidtex.Name = "frontmidtex"; - this.frontmidtex.Size = new System.Drawing.Size(68, 60); - this.frontmidtex.TabIndex = 2; + this.fronthightex.BackColor = System.Drawing.SystemColors.AppWorkspace; + this.fronthightex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.fronthightex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.fronthightex.Location = new System.Drawing.Point(11, 2); + this.fronthightex.Name = "fronthightex"; + this.fronthightex.Size = new System.Drawing.Size(68, 60); + this.fronthightex.TabIndex = 0; // // fronthighname // this.fronthighname.BackColor = System.Drawing.SystemColors.Control; - this.fronthighname.Location = new System.Drawing.Point(6, 80); + this.fronthighname.Location = new System.Drawing.Point(4, 63); this.fronthighname.Name = "fronthighname"; this.fronthighname.Size = new System.Drawing.Size(82, 13); this.fronthighname.TabIndex = 1; @@ -418,20 +469,74 @@ namespace CodeImp.DoomBuilder.Controls this.fronthighname.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.fronthighname.UseMnemonic = false; // - // fronthightex + // panelUDMFFrontTop // - this.fronthightex.BackColor = System.Drawing.SystemColors.AppWorkspace; - this.fronthightex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.fronthightex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.fronthightex.Location = new System.Drawing.Point(13, 19); - this.fronthightex.Name = "fronthightex"; - this.fronthightex.Size = new System.Drawing.Size(68, 60); - this.fronthightex.TabIndex = 0; + this.panelUDMFFrontTop.Controls.Add(this.frontTopUDMFScale); + this.panelUDMFFrontTop.Controls.Add(this.frontTopUDMFOffset); + this.panelUDMFFrontTop.Controls.Add(this.frontTopUDMFScaleLabel); + this.panelUDMFFrontTop.Controls.Add(this.frontTopUDMFOffsetLabel); + this.panelUDMFFrontTop.Location = new System.Drawing.Point(90, 0); + this.panelUDMFFrontTop.Margin = new System.Windows.Forms.Padding(0); + this.panelUDMFFrontTop.Name = "panelUDMFFrontTop"; + this.panelUDMFFrontTop.Size = new System.Drawing.Size(64, 76); + this.panelUDMFFrontTop.TabIndex = 6; + // + // frontTopUDMFScale + // + this.frontTopUDMFScale.Location = new System.Drawing.Point(0, 61); + this.frontTopUDMFScale.Name = "frontTopUDMFScale"; + this.frontTopUDMFScale.Size = new System.Drawing.Size(64, 13); + this.frontTopUDMFScale.TabIndex = 10; + this.frontTopUDMFScale.Text = "-1.6, -1.6"; + // + // frontTopUDMFOffset + // + this.frontTopUDMFOffset.Location = new System.Drawing.Point(0, 20); + this.frontTopUDMFOffset.Name = "frontTopUDMFOffset"; + this.frontTopUDMFOffset.Size = new System.Drawing.Size(64, 13); + this.frontTopUDMFOffset.TabIndex = 9; + this.frontTopUDMFOffset.Text = "-100, -100"; + // + // frontTopUDMFScaleLabel + // + this.frontTopUDMFScaleLabel.Location = new System.Drawing.Point(0, 47); + this.frontTopUDMFScaleLabel.Name = "frontTopUDMFScaleLabel"; + this.frontTopUDMFScaleLabel.Size = new System.Drawing.Size(64, 14); + this.frontTopUDMFScaleLabel.TabIndex = 8; + this.frontTopUDMFScaleLabel.Text = "Scale:"; + // + // frontTopUDMFOffsetLabel + // + this.frontTopUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6); + this.frontTopUDMFOffsetLabel.Name = "frontTopUDMFOffsetLabel"; + this.frontTopUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13); + this.frontTopUDMFOffsetLabel.TabIndex = 7; + this.frontTopUDMFOffsetLabel.Text = "Offset:"; + // + // panel7 + // + this.panel7.Controls.Add(this.frontmidtex); + this.panel7.Controls.Add(this.frontmidname); + this.panel7.Location = new System.Drawing.Point(154, 3); + this.panel7.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(90, 76); + this.panel7.TabIndex = 7; + // + // frontmidtex + // + this.frontmidtex.BackColor = System.Drawing.SystemColors.AppWorkspace; + this.frontmidtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.frontmidtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.frontmidtex.Location = new System.Drawing.Point(11, 2); + this.frontmidtex.Name = "frontmidtex"; + this.frontmidtex.Size = new System.Drawing.Size(68, 60); + this.frontmidtex.TabIndex = 2; // // frontmidname // this.frontmidname.BackColor = System.Drawing.SystemColors.Control; - this.frontmidname.Location = new System.Drawing.Point(88, 80); + this.frontmidname.Location = new System.Drawing.Point(4, 63); this.frontmidname.Name = "frontmidname"; this.frontmidname.Size = new System.Drawing.Size(82, 13); this.frontmidname.TabIndex = 3; @@ -439,18 +544,132 @@ namespace CodeImp.DoomBuilder.Controls this.frontmidname.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.frontmidname.UseMnemonic = false; // + // panelUDMFFrontMid + // + this.panelUDMFFrontMid.Controls.Add(this.frontMidUDMFScale); + this.panelUDMFFrontMid.Controls.Add(this.frontMidUDMFOffset); + this.panelUDMFFrontMid.Controls.Add(this.frontMidUDMFScaleLabel); + this.panelUDMFFrontMid.Controls.Add(this.frontMidUDMFOffsetLabel); + this.panelUDMFFrontMid.Location = new System.Drawing.Point(244, 0); + this.panelUDMFFrontMid.Margin = new System.Windows.Forms.Padding(0); + this.panelUDMFFrontMid.Name = "panelUDMFFrontMid"; + this.panelUDMFFrontMid.Size = new System.Drawing.Size(64, 76); + this.panelUDMFFrontMid.TabIndex = 11; + // + // frontMidUDMFScale + // + this.frontMidUDMFScale.Location = new System.Drawing.Point(0, 61); + this.frontMidUDMFScale.Name = "frontMidUDMFScale"; + this.frontMidUDMFScale.Size = new System.Drawing.Size(64, 13); + this.frontMidUDMFScale.TabIndex = 10; + this.frontMidUDMFScale.Text = "-1.6, -1.6"; + // + // frontMidUDMFOffset + // + this.frontMidUDMFOffset.Location = new System.Drawing.Point(0, 20); + this.frontMidUDMFOffset.Name = "frontMidUDMFOffset"; + this.frontMidUDMFOffset.Size = new System.Drawing.Size(64, 13); + this.frontMidUDMFOffset.TabIndex = 9; + this.frontMidUDMFOffset.Text = "-100, -100"; + // + // frontMidUDMFScaleLabel + // + this.frontMidUDMFScaleLabel.Location = new System.Drawing.Point(0, 47); + this.frontMidUDMFScaleLabel.Name = "frontMidUDMFScaleLabel"; + this.frontMidUDMFScaleLabel.Size = new System.Drawing.Size(64, 14); + this.frontMidUDMFScaleLabel.TabIndex = 8; + this.frontMidUDMFScaleLabel.Text = "Scale:"; + // + // frontMidUDMFOffsetLabel + // + this.frontMidUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6); + this.frontMidUDMFOffsetLabel.Name = "frontMidUDMFOffsetLabel"; + this.frontMidUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13); + this.frontMidUDMFOffsetLabel.TabIndex = 7; + this.frontMidUDMFOffsetLabel.Text = "Offset:"; + // + // panelFrontLowTex + // + this.panelFrontLowTex.Controls.Add(this.frontlowtex); + this.panelFrontLowTex.Controls.Add(this.frontlowname); + this.panelFrontLowTex.Location = new System.Drawing.Point(308, 3); + this.panelFrontLowTex.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + this.panelFrontLowTex.Name = "panelFrontLowTex"; + this.panelFrontLowTex.Size = new System.Drawing.Size(90, 76); + this.panelFrontLowTex.TabIndex = 12; + // + // frontlowtex + // + this.frontlowtex.BackColor = System.Drawing.SystemColors.AppWorkspace; + this.frontlowtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.frontlowtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.frontlowtex.Location = new System.Drawing.Point(11, 2); + this.frontlowtex.Name = "frontlowtex"; + this.frontlowtex.Size = new System.Drawing.Size(68, 60); + this.frontlowtex.TabIndex = 4; + // + // frontlowname + // + this.frontlowname.BackColor = System.Drawing.SystemColors.Control; + this.frontlowname.Location = new System.Drawing.Point(4, 63); + this.frontlowname.Name = "frontlowname"; + this.frontlowname.Size = new System.Drawing.Size(82, 13); + this.frontlowname.TabIndex = 5; + this.frontlowname.Text = "BROWNHUG"; + this.frontlowname.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.frontlowname.UseMnemonic = false; + // + // panelUDMFFrontBottom + // + this.panelUDMFFrontBottom.Controls.Add(this.frontBottomUDMFScale); + this.panelUDMFFrontBottom.Controls.Add(this.frontBottomUDMFOffset); + this.panelUDMFFrontBottom.Controls.Add(this.frontBottomUDMFScaleLabel); + this.panelUDMFFrontBottom.Controls.Add(this.frontBottomUDMFOffsetLabel); + this.panelUDMFFrontBottom.Location = new System.Drawing.Point(398, 0); + this.panelUDMFFrontBottom.Margin = new System.Windows.Forms.Padding(0); + this.panelUDMFFrontBottom.Name = "panelUDMFFrontBottom"; + this.panelUDMFFrontBottom.Size = new System.Drawing.Size(64, 76); + this.panelUDMFFrontBottom.TabIndex = 12; + // + // frontBottomUDMFScale + // + this.frontBottomUDMFScale.Location = new System.Drawing.Point(0, 61); + this.frontBottomUDMFScale.Name = "frontBottomUDMFScale"; + this.frontBottomUDMFScale.Size = new System.Drawing.Size(64, 13); + this.frontBottomUDMFScale.TabIndex = 10; + this.frontBottomUDMFScale.Text = "-1.6, -1.6"; + // + // frontBottomUDMFOffset + // + this.frontBottomUDMFOffset.Location = new System.Drawing.Point(0, 20); + this.frontBottomUDMFOffset.Name = "frontBottomUDMFOffset"; + this.frontBottomUDMFOffset.Size = new System.Drawing.Size(64, 13); + this.frontBottomUDMFOffset.TabIndex = 9; + this.frontBottomUDMFOffset.Text = "-100, -100"; + // + // frontBottomUDMFScaleLabel + // + this.frontBottomUDMFScaleLabel.Location = new System.Drawing.Point(0, 47); + this.frontBottomUDMFScaleLabel.Name = "frontBottomUDMFScaleLabel"; + this.frontBottomUDMFScaleLabel.Size = new System.Drawing.Size(64, 14); + this.frontBottomUDMFScaleLabel.TabIndex = 8; + this.frontBottomUDMFScaleLabel.Text = "Scale:"; + // + // frontBottomUDMFOffsetLabel + // + this.frontBottomUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6); + this.frontBottomUDMFOffsetLabel.Name = "frontBottomUDMFOffsetLabel"; + this.frontBottomUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13); + this.frontBottomUDMFOffsetLabel.TabIndex = 7; + this.frontBottomUDMFOffsetLabel.Text = "Offset:"; + // // backpanel // this.backpanel.Controls.Add(this.backsector); - this.backpanel.Controls.Add(this.backlowname); - this.backpanel.Controls.Add(this.backlowtex); - this.backpanel.Controls.Add(this.backmidname); - this.backpanel.Controls.Add(this.backmidtex); - this.backpanel.Controls.Add(this.backhighname); - this.backpanel.Controls.Add(this.backhightex); - this.backpanel.Location = new System.Drawing.Point(730, 0); + this.backpanel.Controls.Add(this.flowLayoutPanelBack); + this.backpanel.Location = new System.Drawing.Point(988, 0); this.backpanel.Name = "backpanel"; - this.backpanel.Size = new System.Drawing.Size(257, 100); + this.backpanel.Size = new System.Drawing.Size(540, 100); this.backpanel.TabIndex = 3; this.backpanel.TabStop = false; this.backpanel.Text = " Back "; @@ -465,31 +684,120 @@ namespace CodeImp.DoomBuilder.Controls this.backsector.TabIndex = 7; this.backsector.Text = "Sector 666"; // - // backlowname + // flowLayoutPanelBack + // + this.flowLayoutPanelBack.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.flowLayoutPanelBack.Controls.Add(this.panel1); + this.flowLayoutPanelBack.Controls.Add(this.panelUDMFBackTop); + this.flowLayoutPanelBack.Controls.Add(this.panel2); + this.flowLayoutPanelBack.Controls.Add(this.panelUDMFBackMid); + this.flowLayoutPanelBack.Controls.Add(this.panelBackLowTex); + this.flowLayoutPanelBack.Controls.Add(this.panelUDMFBackBottom); + this.flowLayoutPanelBack.Location = new System.Drawing.Point(6, 14); + this.flowLayoutPanelBack.Name = "flowLayoutPanelBack"; + this.flowLayoutPanelBack.Size = new System.Drawing.Size(530, 80); + this.flowLayoutPanelBack.TabIndex = 4; + this.flowLayoutPanelBack.WrapContents = false; + // + // panel1 + // + this.panel1.Controls.Add(this.backhightex); + this.panel1.Controls.Add(this.backhighname); + this.panel1.Location = new System.Drawing.Point(0, 3); + this.panel1.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(90, 76); + this.panel1.TabIndex = 5; // - this.backlowname.BackColor = System.Drawing.SystemColors.Control; - this.backlowname.Location = new System.Drawing.Point(170, 80); - this.backlowname.Name = "backlowname"; - this.backlowname.Size = new System.Drawing.Size(82, 13); - this.backlowname.TabIndex = 5; - this.backlowname.Text = "BROWNHUG"; - this.backlowname.TextAlign = System.Drawing.ContentAlignment.TopCenter; - this.backlowname.UseMnemonic = false; + // backhightex // - // backlowtex + this.backhightex.BackColor = System.Drawing.SystemColors.AppWorkspace; + this.backhightex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.backhightex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.backhightex.Location = new System.Drawing.Point(11, 2); + this.backhightex.Name = "backhightex"; + this.backhightex.Size = new System.Drawing.Size(68, 60); + this.backhightex.TabIndex = 0; // - this.backlowtex.BackColor = System.Drawing.SystemColors.AppWorkspace; - this.backlowtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.backlowtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.backlowtex.Location = new System.Drawing.Point(177, 19); - this.backlowtex.Name = "backlowtex"; - this.backlowtex.Size = new System.Drawing.Size(68, 60); - this.backlowtex.TabIndex = 4; + // backhighname + // + this.backhighname.BackColor = System.Drawing.SystemColors.Control; + this.backhighname.Location = new System.Drawing.Point(4, 63); + this.backhighname.Name = "backhighname"; + this.backhighname.Size = new System.Drawing.Size(82, 13); + this.backhighname.TabIndex = 1; + this.backhighname.Text = "BROWNHUG"; + this.backhighname.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.backhighname.UseMnemonic = false; + // + // panelUDMFBackTop + // + this.panelUDMFBackTop.Controls.Add(this.backTopUDMFScale); + this.panelUDMFBackTop.Controls.Add(this.backTopUDMFOffset); + this.panelUDMFBackTop.Controls.Add(this.backTopUDMFScaleLabel); + this.panelUDMFBackTop.Controls.Add(this.backTopUDMFOffsetLabel); + this.panelUDMFBackTop.Location = new System.Drawing.Point(90, 0); + this.panelUDMFBackTop.Margin = new System.Windows.Forms.Padding(0); + this.panelUDMFBackTop.Name = "panelUDMFBackTop"; + this.panelUDMFBackTop.Size = new System.Drawing.Size(64, 76); + this.panelUDMFBackTop.TabIndex = 6; + // + // backTopUDMFScale + // + this.backTopUDMFScale.Location = new System.Drawing.Point(0, 61); + this.backTopUDMFScale.Name = "backTopUDMFScale"; + this.backTopUDMFScale.Size = new System.Drawing.Size(64, 13); + this.backTopUDMFScale.TabIndex = 10; + this.backTopUDMFScale.Text = "-1.6, -1.6"; + // + // backTopUDMFOffset + // + this.backTopUDMFOffset.Location = new System.Drawing.Point(0, 20); + this.backTopUDMFOffset.Name = "backTopUDMFOffset"; + this.backTopUDMFOffset.Size = new System.Drawing.Size(64, 13); + this.backTopUDMFOffset.TabIndex = 9; + this.backTopUDMFOffset.Text = "-100, -100"; + // + // backTopUDMFScaleLabel + // + this.backTopUDMFScaleLabel.Location = new System.Drawing.Point(0, 47); + this.backTopUDMFScaleLabel.Name = "backTopUDMFScaleLabel"; + this.backTopUDMFScaleLabel.Size = new System.Drawing.Size(64, 14); + this.backTopUDMFScaleLabel.TabIndex = 8; + this.backTopUDMFScaleLabel.Text = "Scale:"; + // + // backTopUDMFOffsetLabel + // + this.backTopUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6); + this.backTopUDMFOffsetLabel.Name = "backTopUDMFOffsetLabel"; + this.backTopUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13); + this.backTopUDMFOffsetLabel.TabIndex = 7; + this.backTopUDMFOffsetLabel.Text = "Offset:"; + // + // panel2 + // + this.panel2.Controls.Add(this.backmidtex); + this.panel2.Controls.Add(this.backmidname); + this.panel2.Location = new System.Drawing.Point(154, 3); + this.panel2.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(90, 76); + this.panel2.TabIndex = 7; + // + // backmidtex + // + this.backmidtex.BackColor = System.Drawing.SystemColors.AppWorkspace; + this.backmidtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.backmidtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.backmidtex.Location = new System.Drawing.Point(11, 2); + this.backmidtex.Name = "backmidtex"; + this.backmidtex.Size = new System.Drawing.Size(68, 60); + this.backmidtex.TabIndex = 2; // // backmidname // this.backmidname.BackColor = System.Drawing.SystemColors.Control; - this.backmidname.Location = new System.Drawing.Point(88, 80); + this.backmidname.Location = new System.Drawing.Point(4, 63); this.backmidname.Name = "backmidname"; this.backmidname.Size = new System.Drawing.Size(82, 13); this.backmidname.TabIndex = 3; @@ -497,36 +805,124 @@ namespace CodeImp.DoomBuilder.Controls this.backmidname.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.backmidname.UseMnemonic = false; // - // backmidtex + // panelUDMFBackMid // - this.backmidtex.BackColor = System.Drawing.SystemColors.AppWorkspace; - this.backmidtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.backmidtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.backmidtex.Location = new System.Drawing.Point(95, 19); - this.backmidtex.Name = "backmidtex"; - this.backmidtex.Size = new System.Drawing.Size(68, 60); - this.backmidtex.TabIndex = 2; + this.panelUDMFBackMid.Controls.Add(this.backMidUDMFScale); + this.panelUDMFBackMid.Controls.Add(this.backMidUDMFOffset); + this.panelUDMFBackMid.Controls.Add(this.backMidUDMFScaleLabel); + this.panelUDMFBackMid.Controls.Add(this.backMidUDMFOffsetLabel); + this.panelUDMFBackMid.Location = new System.Drawing.Point(244, 0); + this.panelUDMFBackMid.Margin = new System.Windows.Forms.Padding(0); + this.panelUDMFBackMid.Name = "panelUDMFBackMid"; + this.panelUDMFBackMid.Size = new System.Drawing.Size(64, 76); + this.panelUDMFBackMid.TabIndex = 11; // - // backhighname + // backMidUDMFScale // - this.backhighname.BackColor = System.Drawing.SystemColors.Control; - this.backhighname.Location = new System.Drawing.Point(6, 80); - this.backhighname.Name = "backhighname"; - this.backhighname.Size = new System.Drawing.Size(82, 13); - this.backhighname.TabIndex = 1; - this.backhighname.Text = "BROWNHUG"; - this.backhighname.TextAlign = System.Drawing.ContentAlignment.TopCenter; - this.backhighname.UseMnemonic = false; + this.backMidUDMFScale.Location = new System.Drawing.Point(0, 61); + this.backMidUDMFScale.Name = "backMidUDMFScale"; + this.backMidUDMFScale.Size = new System.Drawing.Size(64, 13); + this.backMidUDMFScale.TabIndex = 10; + this.backMidUDMFScale.Text = "-1.6, -1.6"; // - // backhightex + // backMidUDMFOffset // - this.backhightex.BackColor = System.Drawing.SystemColors.AppWorkspace; - this.backhightex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.backhightex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.backhightex.Location = new System.Drawing.Point(13, 19); - this.backhightex.Name = "backhightex"; - this.backhightex.Size = new System.Drawing.Size(68, 60); - this.backhightex.TabIndex = 0; + this.backMidUDMFOffset.Location = new System.Drawing.Point(0, 20); + this.backMidUDMFOffset.Name = "backMidUDMFOffset"; + this.backMidUDMFOffset.Size = new System.Drawing.Size(64, 13); + this.backMidUDMFOffset.TabIndex = 9; + this.backMidUDMFOffset.Text = "-100, -100"; + // + // backMidUDMFScaleLabel + // + this.backMidUDMFScaleLabel.Location = new System.Drawing.Point(0, 47); + this.backMidUDMFScaleLabel.Name = "backMidUDMFScaleLabel"; + this.backMidUDMFScaleLabel.Size = new System.Drawing.Size(64, 14); + this.backMidUDMFScaleLabel.TabIndex = 8; + this.backMidUDMFScaleLabel.Text = "Scale:"; + // + // backMidUDMFOffsetLabel + // + this.backMidUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6); + this.backMidUDMFOffsetLabel.Name = "backMidUDMFOffsetLabel"; + this.backMidUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13); + this.backMidUDMFOffsetLabel.TabIndex = 7; + this.backMidUDMFOffsetLabel.Text = "Offset:"; + // + // panelBackLowTex + // + this.panelBackLowTex.Controls.Add(this.backlowtex); + this.panelBackLowTex.Controls.Add(this.backlowname); + this.panelBackLowTex.Location = new System.Drawing.Point(308, 3); + this.panelBackLowTex.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + this.panelBackLowTex.Name = "panelBackLowTex"; + this.panelBackLowTex.Size = new System.Drawing.Size(90, 76); + this.panelBackLowTex.TabIndex = 12; + // + // backlowtex + // + this.backlowtex.BackColor = System.Drawing.SystemColors.AppWorkspace; + this.backlowtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.backlowtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.backlowtex.Location = new System.Drawing.Point(11, 2); + this.backlowtex.Name = "backlowtex"; + this.backlowtex.Size = new System.Drawing.Size(68, 60); + this.backlowtex.TabIndex = 4; + // + // backlowname + // + this.backlowname.BackColor = System.Drawing.SystemColors.Control; + this.backlowname.Location = new System.Drawing.Point(4, 63); + this.backlowname.Name = "backlowname"; + this.backlowname.Size = new System.Drawing.Size(82, 13); + this.backlowname.TabIndex = 5; + this.backlowname.Text = "BROWNHUG"; + this.backlowname.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.backlowname.UseMnemonic = false; + // + // panelUDMFBackBottom + // + this.panelUDMFBackBottom.Controls.Add(this.backBottomUDMFScale); + this.panelUDMFBackBottom.Controls.Add(this.backBottomUDMFOffset); + this.panelUDMFBackBottom.Controls.Add(this.backBottomUDMFScaleLabel); + this.panelUDMFBackBottom.Controls.Add(this.backBottomUDMFOffsetLabel); + this.panelUDMFBackBottom.Location = new System.Drawing.Point(398, 0); + this.panelUDMFBackBottom.Margin = new System.Windows.Forms.Padding(0); + this.panelUDMFBackBottom.Name = "panelUDMFBackBottom"; + this.panelUDMFBackBottom.Size = new System.Drawing.Size(64, 76); + this.panelUDMFBackBottom.TabIndex = 12; + // + // backBottomUDMFScale + // + this.backBottomUDMFScale.Location = new System.Drawing.Point(0, 61); + this.backBottomUDMFScale.Name = "backBottomUDMFScale"; + this.backBottomUDMFScale.Size = new System.Drawing.Size(64, 13); + this.backBottomUDMFScale.TabIndex = 10; + this.backBottomUDMFScale.Text = "-1.6, -1.6"; + // + // backBottomUDMFOffset + // + this.backBottomUDMFOffset.Location = new System.Drawing.Point(0, 20); + this.backBottomUDMFOffset.Name = "backBottomUDMFOffset"; + this.backBottomUDMFOffset.Size = new System.Drawing.Size(64, 13); + this.backBottomUDMFOffset.TabIndex = 9; + this.backBottomUDMFOffset.Text = "-100, -100"; + // + // backBottomUDMFScaleLabel + // + this.backBottomUDMFScaleLabel.Location = new System.Drawing.Point(0, 47); + this.backBottomUDMFScaleLabel.Name = "backBottomUDMFScaleLabel"; + this.backBottomUDMFScaleLabel.Size = new System.Drawing.Size(64, 14); + this.backBottomUDMFScaleLabel.TabIndex = 8; + this.backBottomUDMFScaleLabel.Text = "Scale:"; + // + // backBottomUDMFOffsetLabel + // + this.backBottomUDMFOffsetLabel.Location = new System.Drawing.Point(0, 6); + this.backBottomUDMFOffsetLabel.Name = "backBottomUDMFOffsetLabel"; + this.backBottomUDMFOffsetLabel.Size = new System.Drawing.Size(64, 13); + this.backBottomUDMFOffsetLabel.TabIndex = 7; + this.backBottomUDMFOffsetLabel.Text = "Offset:"; // // LinedefInfoPanel // @@ -540,13 +936,27 @@ namespace CodeImp.DoomBuilder.Controls this.MaximumSize = new System.Drawing.Size(10000, 100); this.MinimumSize = new System.Drawing.Size(100, 100); this.Name = "LinedefInfoPanel"; - this.Size = new System.Drawing.Size(1047, 100); + this.Size = new System.Drawing.Size(1558, 100); this.infopanel.ResumeLayout(false); this.infopanel.PerformLayout(); this.frontpanel.ResumeLayout(false); this.frontpanel.PerformLayout(); + this.flowLayoutPanelFront.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panelUDMFFrontTop.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panelUDMFFrontMid.ResumeLayout(false); + this.panelFrontLowTex.ResumeLayout(false); + this.panelUDMFFrontBottom.ResumeLayout(false); this.backpanel.ResumeLayout(false); this.backpanel.PerformLayout(); + this.flowLayoutPanelBack.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panelUDMFBackTop.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panelUDMFBackMid.ResumeLayout(false); + this.panelBackLowTex.ResumeLayout(false); + this.panelUDMFBackBottom.ResumeLayout(false); this.ResumeLayout(false); } @@ -590,6 +1000,44 @@ namespace CodeImp.DoomBuilder.Controls private System.Windows.Forms.Label label6; private System.Windows.Forms.Label frontsector; private System.Windows.Forms.Label backsector; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanelBack; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panelUDMFBackTop; + private System.Windows.Forms.Label backTopUDMFScale; + private System.Windows.Forms.Label backTopUDMFOffset; + private System.Windows.Forms.Label backTopUDMFScaleLabel; + private System.Windows.Forms.Label backTopUDMFOffsetLabel; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panelUDMFBackMid; + private System.Windows.Forms.Label backMidUDMFScale; + private System.Windows.Forms.Label backMidUDMFOffset; + private System.Windows.Forms.Label backMidUDMFScaleLabel; + private System.Windows.Forms.Label backMidUDMFOffsetLabel; + private System.Windows.Forms.Panel panelBackLowTex; + private System.Windows.Forms.Panel panelUDMFBackBottom; + private System.Windows.Forms.Label backBottomUDMFScale; + private System.Windows.Forms.Label backBottomUDMFOffset; + private System.Windows.Forms.Label backBottomUDMFScaleLabel; + private System.Windows.Forms.Label backBottomUDMFOffsetLabel; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanelFront; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Panel panelUDMFFrontTop; + private System.Windows.Forms.Label frontTopUDMFScale; + private System.Windows.Forms.Label frontTopUDMFOffset; + private System.Windows.Forms.Label frontTopUDMFScaleLabel; + private System.Windows.Forms.Label frontTopUDMFOffsetLabel; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.Panel panelUDMFFrontMid; + private System.Windows.Forms.Label frontMidUDMFScale; + private System.Windows.Forms.Label frontMidUDMFOffset; + private System.Windows.Forms.Label frontMidUDMFScaleLabel; + private System.Windows.Forms.Label frontMidUDMFOffsetLabel; + private System.Windows.Forms.Panel panelFrontLowTex; + private System.Windows.Forms.Panel panelUDMFFrontBottom; + private System.Windows.Forms.Label frontBottomUDMFScale; + private System.Windows.Forms.Label frontBottomUDMFOffset; + private System.Windows.Forms.Label frontBottomUDMFScaleLabel; + private System.Windows.Forms.Label frontBottomUDMFOffsetLabel; } } diff --git a/Source/Core/Controls/LinedefInfoPanel.cs b/Source/Core/Controls/LinedefInfoPanel.cs index 9436083d1..d97b8617a 100644 --- a/Source/Core/Controls/LinedefInfoPanel.cs +++ b/Source/Core/Controls/LinedefInfoPanel.cs @@ -57,6 +57,7 @@ namespace CodeImp.DoomBuilder.Controls TypeHandler th; bool upperunpegged, lowerunpegged; string peggedness; + int defaultPanelWidth = 270; //mxd // Show/hide stuff depending on format if(!General.Map.FormatInterface.HasActionArgs) @@ -87,10 +88,6 @@ namespace CodeImp.DoomBuilder.Controls arg5.Visible = true; infopanel.Width = hexenformatwidth; } - - // Move panels - frontpanel.Left = infopanel.Left + infopanel.Width + infopanel.Margin.Right + frontpanel.Margin.Left; - backpanel.Left = frontpanel.Left + frontpanel.Width + frontpanel.Margin.Right + backpanel.Margin.Left; // Get line action information LinedefActionInfo act = General.Map.Config.GetLinedefActionInfo(l.Action); @@ -154,84 +151,245 @@ namespace CodeImp.DoomBuilder.Controls // Front side available? if(l.Front != null) { + int addedWidth = 0; //mxd + // Show sidedef info + frontpanel.Visible = true; //mxd + frontpanel.Text = " Front Sidedef " + l.Front.Index + " "; frontsector.Text = " Sector " + l.Front.Sector.Index; frontsector.Visible = true; - frontoffset.Text = l.Front.OffsetX + ", " + l.Front.OffsetY; + + //mxd + if(General.Map.UDMF) { + //light + frontoffsetlabel.Text = "Front light:"; + setUDMFLight(l.Front.Fields, frontoffsetlabel, frontoffset); + + bool hasTopFields = false; + bool hasMiddleFields = false; + bool hasBottomFields = false; + + //sidedef top + if(checkPairedUDMFFields(l.Front.Fields, "offsetx_top", "offsety_top", frontTopUDMFOffsetLabel, frontTopUDMFOffset)) + hasTopFields = true; + if(checkPairedUDMFFields(l.Front.Fields, "scalex_top", "scaley_top", frontTopUDMFScaleLabel, frontTopUDMFScale)) + hasTopFields = true; + + //sidedef middle + if(checkPairedUDMFFields(l.Front.Fields, "offsetx_mid", "offsety_mid", frontMidUDMFOffsetLabel, frontMidUDMFOffset)) + hasMiddleFields = true; + if(checkPairedUDMFFields(l.Front.Fields, "scalex_mid", "scaley_mid", frontMidUDMFScaleLabel, frontMidUDMFScale)) + hasMiddleFields = true; + + //sidedef bottom + if(checkPairedUDMFFields(l.Front.Fields, "offsetx_bottom", "offsety_bottom", frontBottomUDMFOffsetLabel, frontBottomUDMFOffset)) + hasBottomFields = true; + if(checkPairedUDMFFields(l.Front.Fields, "scalex_bottom", "scaley_bottom", frontBottomUDMFScaleLabel, frontBottomUDMFScale)) + hasBottomFields = true; + + //visibility + panelUDMFFrontTop.Visible = hasTopFields; + panelUDMFFrontMid.Visible = hasMiddleFields; + panelUDMFFrontBottom.Visible = hasBottomFields; + + //size + if(hasTopFields) addedWidth = 64; + if(hasMiddleFields) addedWidth += 64; + if(hasBottomFields) addedWidth += 64; + } else { + frontoffsetlabel.Text = "Front offset:"; + frontoffset.Text = l.Front.OffsetX + ", " + l.Front.OffsetY; + frontoffsetlabel.Enabled = true; + frontoffset.Enabled = true; + + panelUDMFFrontTop.Visible = false; + panelUDMFFrontMid.Visible = false; + panelUDMFFrontBottom.Visible = false; + } + + //mxd. Resize panel + frontpanel.Width = defaultPanelWidth + addedWidth + 12; + flowLayoutPanelFront.Width = defaultPanelWidth + addedWidth; + fronthighname.Text = l.Front.HighTexture; frontmidname.Text = l.Front.MiddleTexture; frontlowname.Text = l.Front.LowTexture; DisplaySidedefTexture(fronthightex, l.Front.HighTexture, l.Front.HighRequired()); DisplaySidedefTexture(frontmidtex, l.Front.MiddleTexture, l.Front.MiddleRequired()); DisplaySidedefTexture(frontlowtex, l.Front.LowTexture, l.Front.LowRequired()); - frontoffsetlabel.Enabled = true; - frontoffset.Enabled = true; - frontpanel.Enabled = true; + + //mxd. Position panel + frontpanel.Left = infopanel.Left + infopanel.Width + infopanel.Margin.Right + frontpanel.Margin.Left; + + //mxd. Position label + frontsector.Left = frontpanel.Width - frontsector.Width - 12; } else { // Show no info - frontpanel.Text = " Front Sidedef "; - frontsector.Text = ""; - frontsector.Visible = false; + //mxd + if(General.Map.UDMF) { + frontoffsetlabel.Text = "Front light:"; + frontoffset.Text = "--"; + } else { + frontoffsetlabel.Text = "Front offset:"; + frontoffset.Text = "--, --"; + } + frontoffsetlabel.Enabled = false; frontoffset.Enabled = false; - frontpanel.Enabled = false; - frontoffset.Text = "--, --"; - fronthighname.Text = ""; - frontmidname.Text = ""; - frontlowname.Text = ""; + fronthightex.BackgroundImage = null; frontmidtex.BackgroundImage = null; frontlowtex.BackgroundImage = null; + + frontpanel.Visible = false; //mxd } // Back size available? if(l.Back != null) { + int addedWidth = 0; //mxd + // Show sidedef info + backpanel.Visible = true; //mxd backpanel.Text = " Back Sidedef " + l.Back.Index + " "; backsector.Text = " Sector " + l.Back.Sector.Index; backsector.Visible = true; - backoffset.Text = l.Back.OffsetX + ", " + l.Back.OffsetY; + + //mxd + if(General.Map.UDMF) { + //light + backoffsetlabel.Text = "Back light:"; + setUDMFLight(l.Back.Fields, backoffsetlabel, backoffset); + + bool hasTopFields = false; + bool hasMiddleFields = false; + bool hasBottomFields = false; + + //sidedef top + if(checkPairedUDMFFields(l.Back.Fields, "offsetx_top", "offsety_top", backTopUDMFOffsetLabel, backTopUDMFOffset)) + hasTopFields = true; + if(checkPairedUDMFFields(l.Back.Fields, "scalex_top", "scaley_top", backTopUDMFScaleLabel, backTopUDMFScale)) + hasTopFields = true; + + //sidedef middle + if(checkPairedUDMFFields(l.Back.Fields, "offsetx_mid", "offsety_mid", backMidUDMFOffsetLabel, backMidUDMFOffset)) + hasMiddleFields = true; + if(checkPairedUDMFFields(l.Back.Fields, "scalex_mid", "scaley_mid", backMidUDMFScaleLabel, backMidUDMFScale)) + hasMiddleFields = true; + + //sidedef bottom + if(checkPairedUDMFFields(l.Back.Fields, "offsetx_bottom", "offsety_bottom", backBottomUDMFOffsetLabel, backBottomUDMFOffset)) + hasBottomFields = true; + if(checkPairedUDMFFields(l.Back.Fields, "scalex_bottom", "scaley_bottom", backBottomUDMFScaleLabel, backBottomUDMFScale)) + hasBottomFields = true; + + //visibility + panelUDMFBackTop.Visible = hasTopFields; + panelUDMFBackMid.Visible = hasMiddleFields; + panelUDMFBackBottom.Visible = hasBottomFields; + + //size + if(hasTopFields) addedWidth = 64; + if(hasMiddleFields) addedWidth += 64; + if(hasBottomFields) addedWidth += 64; + } else { + backoffsetlabel.Text = "Back offset:"; + backoffset.Text = l.Back.OffsetX + ", " + l.Back.OffsetY; + backoffsetlabel.Enabled = true; + backoffset.Enabled = true; + + panelUDMFBackTop.Visible = false; + panelUDMFBackMid.Visible = false; + panelUDMFBackBottom.Visible = false; + } + + //mxd. Resize panel + backpanel.Width = defaultPanelWidth + addedWidth + 12; + flowLayoutPanelBack.Width = defaultPanelWidth + addedWidth; + backhighname.Text = l.Back.HighTexture; backmidname.Text = l.Back.MiddleTexture; backlowname.Text = l.Back.LowTexture; DisplaySidedefTexture(backhightex, l.Back.HighTexture, l.Back.HighRequired()); DisplaySidedefTexture(backmidtex, l.Back.MiddleTexture, l.Back.MiddleRequired()); DisplaySidedefTexture(backlowtex, l.Back.LowTexture, l.Back.LowRequired()); - backoffsetlabel.Enabled = true; - backoffset.Enabled = true; - backpanel.Enabled = true; + + //mxd. Position panel + backpanel.Left = (l.Front != null ? frontpanel.Right : infopanel.Right) + 3; + + //mxd. Position label + backsector.Left = backpanel.Width - backsector.Width - 12; } else { // Show no info - backpanel.Text = " Back Sidedef "; - backsector.Text = ""; - backsector.Visible = false; + //mxd + if(General.Map.UDMF) { + backoffsetlabel.Text = "Back light:"; + backoffset.Text = "--"; + } else { + backoffsetlabel.Text = "Back offset:"; + backoffset.Text = "--, --"; + } + backoffsetlabel.Enabled = false; backoffset.Enabled = false; - backpanel.Enabled = false; - backoffset.Text = "--, --"; - backhighname.Text = ""; - backmidname.Text = ""; - backlowname.Text = ""; + backhightex.BackgroundImage = null; backmidtex.BackgroundImage = null; backlowtex.BackgroundImage = null; + + backpanel.Visible = false; //mxd } - - // Position labels - frontsector.Left = frontlowtex.Right - frontsector.Width; - backsector.Left = backlowtex.Right - backsector.Width; // Show the whole thing this.Show(); this.Update(); } + //mxd + private bool checkPairedUDMFFields(UniFields fields, string paramX, string paramY, Label label, Label value) { + float x = 0; + float y = 0; + + if(fields.ContainsKey(paramX)) + x = (float)fields[paramX].Value; + if(fields.ContainsKey(paramY)) + y = (float)fields[paramY].Value; + + if(x != 0.0f || y != 0.0f) { + value.Text = x + ", " + y; + value.Enabled = true; + label.Enabled = true; + return true; + } + + value.Text = "--, --"; + value.Enabled = false; + label.Enabled = false; + return false; + } + + //mxd + private void setUDMFLight(UniFields fields, Label label, Label value) { + if(fields.ContainsKey("light")) { + value.Text = fields["light"].Value.ToString(); + + if(fields.ContainsKey("lightabsolute") && Boolean.Parse(fields["lightabsolute"].Value.ToString())) + value.Text += " (abs)"; + + value.Enabled = true; + label.Enabled = true; + } else { + value.Text = "--"; + label.Enabled = false; + value.Enabled = false; + } + } + // When visible changed protected override void OnVisibleChanged(EventArgs e) { diff --git a/Source/Core/Controls/LinedefInfoPanel.resx b/Source/Core/Controls/LinedefInfoPanel.resx index b680dcc82..27dc0cde9 100644 --- a/Source/Core/Controls/LinedefInfoPanel.resx +++ b/Source/Core/Controls/LinedefInfoPanel.resx @@ -183,15 +183,9 @@ <metadata name="arg1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="backoffsetlabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="frontoffset.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="frontoffsetlabel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="tag.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> @@ -204,55 +198,10 @@ <metadata name="action.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="frontpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="frontsector.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="frontlowname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="frontlowtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="frontmidtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="fronthighname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="fronthightex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="frontmidname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="backpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="backsector.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="backlowname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="backlowtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="backmidname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="backmidtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="backhighname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="backhightex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> </root> \ No newline at end of file diff --git a/Source/Core/Controls/SectorInfoPanel.Designer.cs b/Source/Core/Controls/SectorInfoPanel.Designer.cs index a0f3f48c8..9711a3ea7 100644 --- a/Source/Core/Controls/SectorInfoPanel.Designer.cs +++ b/Source/Core/Controls/SectorInfoPanel.Designer.cs @@ -34,6 +34,14 @@ namespace CodeImp.DoomBuilder.Controls System.Windows.Forms.Label label3; System.Windows.Forms.Label label2; System.Windows.Forms.Label label1; + this.ceilingLightLabel = new System.Windows.Forms.Label(); + this.ceilingScaleLabel = new System.Windows.Forms.Label(); + this.ceilingAngleLabel = new System.Windows.Forms.Label(); + this.ceilingOffsetLabel = new System.Windows.Forms.Label(); + this.floorOffsetLabel = new System.Windows.Forms.Label(); + this.floorLightLabel = new System.Windows.Forms.Label(); + this.floorAngleLabel = new System.Windows.Forms.Label(); + this.floorScaleLabel = new System.Windows.Forms.Label(); this.sectorinfo = new System.Windows.Forms.GroupBox(); this.brightness = new System.Windows.Forms.Label(); this.height = new System.Windows.Forms.Label(); @@ -41,12 +49,23 @@ namespace CodeImp.DoomBuilder.Controls this.floor = new System.Windows.Forms.Label(); this.ceiling = new System.Windows.Forms.Label(); this.effect = new System.Windows.Forms.Label(); + this.ceilingLight = new System.Windows.Forms.Label(); + this.ceilingScale = new System.Windows.Forms.Label(); + this.ceilingAngle = new System.Windows.Forms.Label(); + this.ceilingOffset = new System.Windows.Forms.Label(); this.ceilingpanel = new System.Windows.Forms.GroupBox(); + this.ceilingInfo = new System.Windows.Forms.Panel(); this.ceilingname = new System.Windows.Forms.Label(); this.ceilingtex = new System.Windows.Forms.Panel(); this.floorpanel = new System.Windows.Forms.GroupBox(); + this.floorInfo = new System.Windows.Forms.Panel(); + this.floorLight = new System.Windows.Forms.Label(); + this.floorScale = new System.Windows.Forms.Label(); + this.floorOffset = new System.Windows.Forms.Label(); + this.floorAngle = new System.Windows.Forms.Label(); this.floorname = new System.Windows.Forms.Label(); this.floortex = new System.Windows.Forms.Panel(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); label13 = new System.Windows.Forms.Label(); label5 = new System.Windows.Forms.Label(); label4 = new System.Windows.Forms.Label(); @@ -55,63 +74,138 @@ namespace CodeImp.DoomBuilder.Controls label1 = new System.Windows.Forms.Label(); this.sectorinfo.SuspendLayout(); this.ceilingpanel.SuspendLayout(); + this.ceilingInfo.SuspendLayout(); this.floorpanel.SuspendLayout(); + this.floorInfo.SuspendLayout(); + this.flowLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // label13 // - label13.AutoSize = true; - label13.Location = new System.Drawing.Point(111, 77); + label13.Location = new System.Drawing.Point(103, 75); label13.Name = "label13"; - label13.Size = new System.Drawing.Size(62, 14); + label13.Size = new System.Drawing.Size(70, 14); label13.TabIndex = 14; label13.Text = "Brightness:"; + label13.TextAlign = System.Drawing.ContentAlignment.TopRight; // // label5 // - label5.AutoSize = true; - label5.Location = new System.Drawing.Point(133, 58); + label5.Location = new System.Drawing.Point(103, 55); label5.Name = "label5"; - label5.Size = new System.Drawing.Size(40, 14); + label5.Size = new System.Drawing.Size(70, 14); label5.TabIndex = 8; label5.Text = "Height:"; + label5.TextAlign = System.Drawing.ContentAlignment.TopRight; // // label4 // - label4.AutoSize = true; - label4.Location = new System.Drawing.Point(24, 77); + label4.Location = new System.Drawing.Point(8, 75); label4.Name = "label4"; - label4.Size = new System.Drawing.Size(28, 14); + label4.Size = new System.Drawing.Size(44, 14); label4.TabIndex = 4; label4.Text = "Tag:"; + label4.TextAlign = System.Drawing.ContentAlignment.TopRight; // // label3 // - label3.AutoSize = true; - label3.Location = new System.Drawing.Point(18, 58); + label3.Location = new System.Drawing.Point(8, 55); label3.Name = "label3"; - label3.Size = new System.Drawing.Size(34, 14); + label3.Size = new System.Drawing.Size(44, 14); label3.TabIndex = 3; label3.Text = "Floor:"; + label3.TextAlign = System.Drawing.ContentAlignment.TopRight; // // label2 // - label2.AutoSize = true; - label2.Location = new System.Drawing.Point(11, 39); + label2.Location = new System.Drawing.Point(8, 35); label2.Name = "label2"; - label2.Size = new System.Drawing.Size(41, 14); + label2.Size = new System.Drawing.Size(44, 14); label2.TabIndex = 2; label2.Text = "Ceiling:"; + label2.TextAlign = System.Drawing.ContentAlignment.TopRight; // // label1 // label1.AutoSize = true; - label1.Location = new System.Drawing.Point(13, 19); + label1.Location = new System.Drawing.Point(13, 15); label1.Name = "label1"; label1.Size = new System.Drawing.Size(39, 14); label1.TabIndex = 0; label1.Text = "Effect:"; // + // ceilingLightLabel + // + this.ceilingLightLabel.Location = new System.Drawing.Point(3, 61); + this.ceilingLightLabel.Name = "ceilingLightLabel"; + this.ceilingLightLabel.Size = new System.Drawing.Size(45, 14); + this.ceilingLightLabel.TabIndex = 27; + this.ceilingLightLabel.Text = "Light:"; + this.ceilingLightLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // ceilingScaleLabel + // + this.ceilingScaleLabel.Location = new System.Drawing.Point(3, 43); + this.ceilingScaleLabel.Name = "ceilingScaleLabel"; + this.ceilingScaleLabel.Size = new System.Drawing.Size(45, 14); + this.ceilingScaleLabel.TabIndex = 26; + this.ceilingScaleLabel.Text = "Scale:"; + this.ceilingScaleLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // ceilingAngleLabel + // + this.ceilingAngleLabel.Location = new System.Drawing.Point(3, 25); + this.ceilingAngleLabel.Name = "ceilingAngleLabel"; + this.ceilingAngleLabel.Size = new System.Drawing.Size(45, 14); + this.ceilingAngleLabel.TabIndex = 24; + this.ceilingAngleLabel.Text = "Angle:"; + this.ceilingAngleLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // ceilingOffsetLabel + // + this.ceilingOffsetLabel.Location = new System.Drawing.Point(3, 7); + this.ceilingOffsetLabel.Name = "ceilingOffsetLabel"; + this.ceilingOffsetLabel.Size = new System.Drawing.Size(45, 14); + this.ceilingOffsetLabel.TabIndex = 22; + this.ceilingOffsetLabel.Text = "Offset:"; + this.ceilingOffsetLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // floorOffsetLabel + // + this.floorOffsetLabel.Location = new System.Drawing.Point(3, 7); + this.floorOffsetLabel.Name = "floorOffsetLabel"; + this.floorOffsetLabel.Size = new System.Drawing.Size(45, 14); + this.floorOffsetLabel.TabIndex = 22; + this.floorOffsetLabel.Text = "Offset:"; + this.floorOffsetLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // floorLightLabel + // + this.floorLightLabel.Location = new System.Drawing.Point(3, 61); + this.floorLightLabel.Name = "floorLightLabel"; + this.floorLightLabel.Size = new System.Drawing.Size(45, 14); + this.floorLightLabel.TabIndex = 27; + this.floorLightLabel.Text = "Light:"; + this.floorLightLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // floorAngleLabel + // + this.floorAngleLabel.Location = new System.Drawing.Point(3, 25); + this.floorAngleLabel.Name = "floorAngleLabel"; + this.floorAngleLabel.Size = new System.Drawing.Size(45, 14); + this.floorAngleLabel.TabIndex = 24; + this.floorAngleLabel.Text = "Angle:"; + this.floorAngleLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // floorScaleLabel + // + this.floorScaleLabel.Location = new System.Drawing.Point(3, 43); + this.floorScaleLabel.Name = "floorScaleLabel"; + this.floorScaleLabel.Size = new System.Drawing.Size(45, 14); + this.floorScaleLabel.TabIndex = 26; + this.floorScaleLabel.Text = "Scale:"; + this.floorScaleLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; + // // sectorinfo // this.sectorinfo.Controls.Add(this.brightness); @@ -127,82 +221,127 @@ namespace CodeImp.DoomBuilder.Controls this.sectorinfo.Controls.Add(this.effect); this.sectorinfo.Controls.Add(label1); this.sectorinfo.Location = new System.Drawing.Point(0, 0); + this.sectorinfo.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); this.sectorinfo.Name = "sectorinfo"; - this.sectorinfo.Size = new System.Drawing.Size(230, 100); + this.sectorinfo.Size = new System.Drawing.Size(220, 100); this.sectorinfo.TabIndex = 2; this.sectorinfo.TabStop = false; this.sectorinfo.Text = " Sector "; // // brightness // - this.brightness.AutoSize = true; - this.brightness.Location = new System.Drawing.Point(177, 77); + this.brightness.Location = new System.Drawing.Point(177, 75); this.brightness.Name = "brightness"; - this.brightness.Size = new System.Drawing.Size(13, 14); + this.brightness.Size = new System.Drawing.Size(56, 14); this.brightness.TabIndex = 17; this.brightness.Text = "0"; // // height // - this.height.AutoSize = true; - this.height.Location = new System.Drawing.Point(177, 58); + this.height.Location = new System.Drawing.Point(177, 55); this.height.Name = "height"; - this.height.Size = new System.Drawing.Size(13, 14); + this.height.Size = new System.Drawing.Size(56, 14); this.height.TabIndex = 11; this.height.Text = "0"; // // tag // - this.tag.AutoSize = true; - this.tag.Location = new System.Drawing.Point(55, 77); + this.tag.Location = new System.Drawing.Point(55, 75); this.tag.Name = "tag"; - this.tag.Size = new System.Drawing.Size(13, 14); + this.tag.Size = new System.Drawing.Size(42, 14); this.tag.TabIndex = 7; this.tag.Text = "0"; // // floor // - this.floor.AutoSize = true; - this.floor.Location = new System.Drawing.Point(55, 58); + this.floor.Location = new System.Drawing.Point(55, 55); this.floor.Name = "floor"; - this.floor.Size = new System.Drawing.Size(25, 14); + this.floor.Size = new System.Drawing.Size(42, 14); this.floor.TabIndex = 6; this.floor.Text = "360"; // // ceiling // - this.ceiling.AutoSize = true; - this.ceiling.Location = new System.Drawing.Point(55, 39); + this.ceiling.Location = new System.Drawing.Point(55, 35); this.ceiling.Name = "ceiling"; - this.ceiling.Size = new System.Drawing.Size(31, 14); + this.ceiling.Size = new System.Drawing.Size(42, 14); this.ceiling.TabIndex = 5; this.ceiling.Text = "1024"; // // effect // this.effect.AutoSize = true; - this.effect.Location = new System.Drawing.Point(55, 19); + this.effect.Location = new System.Drawing.Point(55, 15); this.effect.Name = "effect"; this.effect.Size = new System.Drawing.Size(123, 14); this.effect.TabIndex = 1; this.effect.Text = "0 - Whacky Pool of Fluid"; // + // ceilingLight + // + this.ceilingLight.Location = new System.Drawing.Point(54, 61); + this.ceilingLight.Name = "ceilingLight"; + this.ceilingLight.Size = new System.Drawing.Size(60, 14); + this.ceilingLight.TabIndex = 29; + this.ceilingLight.Text = "255 (abs.)"; + // + // ceilingScale + // + this.ceilingScale.Location = new System.Drawing.Point(54, 43); + this.ceilingScale.Name = "ceilingScale"; + this.ceilingScale.Size = new System.Drawing.Size(60, 14); + this.ceilingScale.TabIndex = 28; + this.ceilingScale.Text = "-1.0, -1.0"; + // + // ceilingAngle + // + this.ceilingAngle.Location = new System.Drawing.Point(54, 25); + this.ceilingAngle.Name = "ceilingAngle"; + this.ceilingAngle.Size = new System.Drawing.Size(60, 14); + this.ceilingAngle.TabIndex = 25; + this.ceilingAngle.Text = "45"; + // + // ceilingOffset + // + this.ceilingOffset.Location = new System.Drawing.Point(54, 7); + this.ceilingOffset.Name = "ceilingOffset"; + this.ceilingOffset.Size = new System.Drawing.Size(60, 14); + this.ceilingOffset.TabIndex = 23; + this.ceilingOffset.Text = "-100, -100"; + // // ceilingpanel // + this.ceilingpanel.Controls.Add(this.ceilingInfo); this.ceilingpanel.Controls.Add(this.ceilingname); this.ceilingpanel.Controls.Add(this.ceilingtex); - this.ceilingpanel.Location = new System.Drawing.Point(349, 0); + this.ceilingpanel.Location = new System.Drawing.Point(426, 0); + this.ceilingpanel.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); this.ceilingpanel.Name = "ceilingpanel"; - this.ceilingpanel.Size = new System.Drawing.Size(107, 100); + this.ceilingpanel.Size = new System.Drawing.Size(200, 100); this.ceilingpanel.TabIndex = 3; this.ceilingpanel.TabStop = false; this.ceilingpanel.Text = " Ceiling "; // + // ceilingInfo + // + this.ceilingInfo.Controls.Add(this.ceilingLight); + this.ceilingInfo.Controls.Add(this.ceilingOffsetLabel); + this.ceilingInfo.Controls.Add(this.ceilingScale); + this.ceilingInfo.Controls.Add(this.ceilingOffset); + this.ceilingInfo.Controls.Add(this.ceilingLightLabel); + this.ceilingInfo.Controls.Add(this.ceilingAngleLabel); + this.ceilingInfo.Controls.Add(this.ceilingScaleLabel); + this.ceilingInfo.Controls.Add(this.ceilingAngle); + this.ceilingInfo.Location = new System.Drawing.Point(82, 15); + this.ceilingInfo.Name = "ceilingInfo"; + this.ceilingInfo.Size = new System.Drawing.Size(118, 80); + this.ceilingInfo.TabIndex = 2; + // // ceilingname // - this.ceilingname.Location = new System.Drawing.Point(11, 80); + this.ceilingname.Location = new System.Drawing.Point(8, 80); this.ceilingname.Name = "ceilingname"; - this.ceilingname.Size = new System.Drawing.Size(84, 13); + this.ceilingname.Size = new System.Drawing.Size(68, 13); this.ceilingname.TabIndex = 1; this.ceilingname.Text = "BROWNHUG"; this.ceilingname.TextAlign = System.Drawing.ContentAlignment.TopCenter; @@ -212,27 +351,76 @@ namespace CodeImp.DoomBuilder.Controls this.ceilingtex.BackColor = System.Drawing.SystemColors.AppWorkspace; this.ceilingtex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.ceilingtex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.ceilingtex.Location = new System.Drawing.Point(19, 19); + this.ceilingtex.Location = new System.Drawing.Point(8, 19); this.ceilingtex.Name = "ceilingtex"; this.ceilingtex.Size = new System.Drawing.Size(68, 60); this.ceilingtex.TabIndex = 0; // // floorpanel // + this.floorpanel.Controls.Add(this.floorInfo); this.floorpanel.Controls.Add(this.floorname); this.floorpanel.Controls.Add(this.floortex); - this.floorpanel.Location = new System.Drawing.Point(236, 0); + this.floorpanel.Location = new System.Drawing.Point(223, 0); + this.floorpanel.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); this.floorpanel.Name = "floorpanel"; - this.floorpanel.Size = new System.Drawing.Size(107, 100); + this.floorpanel.Size = new System.Drawing.Size(200, 100); this.floorpanel.TabIndex = 4; this.floorpanel.TabStop = false; this.floorpanel.Text = " Floor "; // + // floorInfo + // + this.floorInfo.Controls.Add(this.floorLight); + this.floorInfo.Controls.Add(this.floorOffsetLabel); + this.floorInfo.Controls.Add(this.floorScale); + this.floorInfo.Controls.Add(this.floorOffset); + this.floorInfo.Controls.Add(this.floorLightLabel); + this.floorInfo.Controls.Add(this.floorAngleLabel); + this.floorInfo.Controls.Add(this.floorScaleLabel); + this.floorInfo.Controls.Add(this.floorAngle); + this.floorInfo.Location = new System.Drawing.Point(82, 15); + this.floorInfo.Name = "floorInfo"; + this.floorInfo.Size = new System.Drawing.Size(118, 80); + this.floorInfo.TabIndex = 30; + // + // floorLight + // + this.floorLight.Location = new System.Drawing.Point(54, 61); + this.floorLight.Name = "floorLight"; + this.floorLight.Size = new System.Drawing.Size(60, 14); + this.floorLight.TabIndex = 29; + this.floorLight.Text = "255 (abs.)"; + // + // floorScale + // + this.floorScale.Location = new System.Drawing.Point(54, 43); + this.floorScale.Name = "floorScale"; + this.floorScale.Size = new System.Drawing.Size(60, 14); + this.floorScale.TabIndex = 28; + this.floorScale.Text = "-1.0, -1.0"; + // + // floorOffset + // + this.floorOffset.Location = new System.Drawing.Point(54, 7); + this.floorOffset.Name = "floorOffset"; + this.floorOffset.Size = new System.Drawing.Size(60, 14); + this.floorOffset.TabIndex = 23; + this.floorOffset.Text = "-100, -100"; + // + // floorAngle + // + this.floorAngle.Location = new System.Drawing.Point(54, 25); + this.floorAngle.Name = "floorAngle"; + this.floorAngle.Size = new System.Drawing.Size(60, 14); + this.floorAngle.TabIndex = 25; + this.floorAngle.Text = "45"; + // // floorname // - this.floorname.Location = new System.Drawing.Point(11, 80); + this.floorname.Location = new System.Drawing.Point(8, 80); this.floorname.Name = "floorname"; - this.floorname.Size = new System.Drawing.Size(84, 13); + this.floorname.Size = new System.Drawing.Size(68, 13); this.floorname.TabIndex = 1; this.floorname.Text = "BROWNHUG"; this.floorname.TextAlign = System.Drawing.ContentAlignment.TopCenter; @@ -242,27 +430,40 @@ namespace CodeImp.DoomBuilder.Controls this.floortex.BackColor = System.Drawing.SystemColors.AppWorkspace; this.floortex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.floortex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.floortex.Location = new System.Drawing.Point(19, 19); + this.floortex.Location = new System.Drawing.Point(8, 19); this.floortex.Name = "floortex"; this.floortex.Size = new System.Drawing.Size(68, 60); this.floortex.TabIndex = 0; // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Controls.Add(this.sectorinfo); + this.flowLayoutPanel1.Controls.Add(this.floorpanel); + this.flowLayoutPanel1.Controls.Add(this.ceilingpanel); + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(642, 100); + this.flowLayoutPanel1.TabIndex = 5; + this.flowLayoutPanel1.WrapContents = false; + // // SectorInfoPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.Controls.Add(this.floorpanel); - this.Controls.Add(this.ceilingpanel); - this.Controls.Add(this.sectorinfo); + this.Controls.Add(this.flowLayoutPanel1); this.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.MaximumSize = new System.Drawing.Size(10000, 100); this.MinimumSize = new System.Drawing.Size(100, 100); this.Name = "SectorInfoPanel"; - this.Size = new System.Drawing.Size(481, 100); + this.Size = new System.Drawing.Size(642, 100); this.sectorinfo.ResumeLayout(false); this.sectorinfo.PerformLayout(); this.ceilingpanel.ResumeLayout(false); + this.ceilingInfo.ResumeLayout(false); this.floorpanel.ResumeLayout(false); + this.floorInfo.ResumeLayout(false); + this.flowLayoutPanel1.ResumeLayout(false); this.ResumeLayout(false); } @@ -282,5 +483,24 @@ namespace CodeImp.DoomBuilder.Controls private System.Windows.Forms.Label floorname; private System.Windows.Forms.Panel floortex; private System.Windows.Forms.GroupBox sectorinfo; + private System.Windows.Forms.Label ceilingLight; + private System.Windows.Forms.Label ceilingScale; + private System.Windows.Forms.Label ceilingAngle; + private System.Windows.Forms.Label ceilingOffset; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.Panel ceilingInfo; + private System.Windows.Forms.Panel floorInfo; + private System.Windows.Forms.Label floorLight; + private System.Windows.Forms.Label floorScale; + private System.Windows.Forms.Label floorOffset; + private System.Windows.Forms.Label floorAngle; + private System.Windows.Forms.Label ceilingLightLabel; + private System.Windows.Forms.Label ceilingScaleLabel; + private System.Windows.Forms.Label ceilingAngleLabel; + private System.Windows.Forms.Label ceilingOffsetLabel; + private System.Windows.Forms.Label floorOffsetLabel; + private System.Windows.Forms.Label floorLightLabel; + private System.Windows.Forms.Label floorAngleLabel; + private System.Windows.Forms.Label floorScaleLabel; } } diff --git a/Source/Core/Controls/SectorInfoPanel.cs b/Source/Core/Controls/SectorInfoPanel.cs index 5909398e3..b5a72edd6 100644 --- a/Source/Core/Controls/SectorInfoPanel.cs +++ b/Source/Core/Controls/SectorInfoPanel.cs @@ -33,11 +33,14 @@ namespace CodeImp.DoomBuilder.Controls { internal partial class SectorInfoPanel : UserControl { + private int fullWidth; //mxd + // Constructor public SectorInfoPanel() { // Initialize InitializeComponent(); + fullWidth = floorpanel.Width; //mxd } // This shows the info @@ -68,6 +71,163 @@ namespace CodeImp.DoomBuilder.Controls General.DisplayZoomedImage(floortex, General.Map.Data.GetFlatImage(s.FloorTexture).GetPreview()); General.DisplayZoomedImage(ceilingtex, General.Map.Data.GetFlatImage(s.CeilTexture).GetPreview()); + //mxd + bool showExtededFloorInfo = false; + bool showExtededCeilingInfo = false; + if(General.Map.UDMF && s.Fields != null) { + //light + if(s.Fields.ContainsKey("lightceiling")) { + showExtededCeilingInfo = true; + ceilingLight.Enabled = true; + ceilingLightLabel.Enabled = true; + + ceilingLight.Text = s.Fields["lightceiling"].Value.ToString(); + + if(s.Fields.ContainsKey("lightceilingabsolute") && Boolean.Parse(s.Fields["lightceilingabsolute"].Value.ToString())) + ceilingLight.Text += " (abs.)"; + } else { + ceilingLight.Text = "--"; + ceilingLight.Enabled = false; + ceilingLightLabel.Enabled = false; + } + + if(s.Fields.ContainsKey("lightfloor")) { + showExtededFloorInfo = true; + floorLight.Enabled = true; + floorLightLabel.Enabled = true; + + floorLight.Text = s.Fields["lightfloor"].Value.ToString(); + + if(s.Fields.ContainsKey("lightfloorabsolute") && Boolean.Parse(s.Fields["lightfloorabsolute"].Value.ToString())) + floorLight.Text += " (abs.)"; + } else { + floorLight.Text = "--"; + floorLight.Enabled = false; + floorLightLabel.Enabled = false; + } + + //offsets + float panX = 0f; + float panY = 0f; + + if(s.Fields.ContainsKey("xpanningceiling")) + panX = (float)s.Fields["xpanningceiling"].Value; + if(s.Fields.ContainsKey("ypanningceiling")) + panY = (float)s.Fields["ypanningceiling"].Value; + + if(panX != 0 || panY != 0) { + showExtededCeilingInfo = true; + ceilingOffset.Enabled = true; + ceilingOffsetLabel.Enabled = true; + ceilingOffset.Text = panX + ", " + panY; + } else { + ceilingOffset.Text = "--, --"; + ceilingOffset.Enabled = false; + ceilingOffsetLabel.Enabled = false; + } + + panX = 0f; + panY = 0f; + + if(s.Fields.ContainsKey("xpanningfloor")) + panX = (float)s.Fields["xpanningfloor"].Value; + if(s.Fields.ContainsKey("ypanningfloor")) + panY = (float)s.Fields["ypanningfloor"].Value; + + if(panX != 0 || panY != 0) { + showExtededFloorInfo = true; + floorOffset.Enabled = true; + floorOffsetLabel.Enabled = true; + floorOffset.Text = panX + ", " + panY; + } else { + floorOffset.Text = "--, --"; + floorOffset.Enabled = false; + floorOffsetLabel.Enabled = false; + } + + //scale + float scaleX = 1.0f; + float scaleY = 1.0f; + + if(s.Fields.ContainsKey("xscaleceiling")) + scaleX = (float)s.Fields["xscaleceiling"].Value; + if(s.Fields.ContainsKey("yscaleceiling")) + scaleY = (float)s.Fields["yscaleceiling"].Value; + + + if(scaleX != 1.0f || scaleY != 1.0f) { + showExtededCeilingInfo = true; + ceilingScale.Enabled = true; + ceilingScaleLabel.Enabled = true; + ceilingScale.Text = scaleX + ", " + scaleY; + } else { + ceilingScale.Text = "--, --"; + ceilingScale.Enabled = false; + ceilingScaleLabel.Enabled = false; + } + + scaleX = 1.0f; + scaleY = 1.0f; + + if(s.Fields.ContainsKey("xscalefloor")) + scaleX = (float)s.Fields["xscalefloor"].Value; + if(s.Fields.ContainsKey("yscalefloor")) + scaleY = (float)s.Fields["yscalefloor"].Value; + + + if(scaleX != 1.0f || scaleY != 1.0f) { + showExtededFloorInfo = true; + floorScale.Enabled = true; + floorScaleLabel.Enabled = true; + floorScale.Text = scaleX + ", " + scaleY; + } else { + floorScale.Text = "--, --"; + floorScale.Enabled = false; + floorScaleLabel.Enabled = false; + } + + //rotation + if(s.Fields.ContainsKey("rotationceiling")) { + showExtededCeilingInfo = true; + ceilingAngle.Enabled = true; + ceilingAngleLabel.Enabled = true; + ceilingAngle.Text = s.Fields["rotationceiling"].Value.ToString() + "\u00B0"; + } else { + ceilingAngle.Text = "-"; + ceilingAngle.Enabled = false; + ceilingAngleLabel.Enabled = false; + } + + if(s.Fields.ContainsKey("rotationfloor")) { + showExtededFloorInfo = true; + floorAngle.Enabled = true; + floorAngleLabel.Enabled = true; + floorAngle.Text = s.Fields["rotationfloor"].Value.ToString() + "\u00B0"; + } else { + floorAngle.Text = "-"; + floorAngle.Enabled = false; + floorAngleLabel.Enabled = false; + } + } + + //panels size + if(showExtededCeilingInfo) { + ceilingpanel.Width = fullWidth; + ceilingInfo.Visible = true; + } else { + ceilingInfo.Visible = false; + ceilingpanel.Width = 84; + } + + if(showExtededFloorInfo) { + floorpanel.Width = fullWidth; + floorInfo.Visible = true; + } else { + floorInfo.Visible = false; + floorpanel.Width = 84; + } + + // Show the whole thing this.Show(); this.Update(); diff --git a/Source/Core/Controls/SectorInfoPanel.resx b/Source/Core/Controls/SectorInfoPanel.resx index 2dcf42926..faaec4cf2 100644 --- a/Source/Core/Controls/SectorInfoPanel.resx +++ b/Source/Core/Controls/SectorInfoPanel.resx @@ -117,82 +117,22 @@ <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> - <metadata name="label13.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="label13.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>False</value> </metadata> - <metadata name="label5.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>False</value> </metadata> - <metadata name="label4.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="label4.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>False</value> </metadata> - <metadata name="label3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="label3.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>False</value> </metadata> - <metadata name="label2.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>False</value> </metadata> - <metadata name="label1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>False</value> </metadata> - <metadata name="sectorinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="brightness.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="height.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="tag.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="floor.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="ceiling.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="effect.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="ceilingpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="ceilingname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="ceilingtex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="floorpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="floorname.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="floortex.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> </root> \ No newline at end of file diff --git a/Source/Core/GZBuilder/GZGeneral.cs b/Source/Core/GZBuilder/GZGeneral.cs index 50c6d22bb..af9e9b1cb 100644 --- a/Source/Core/GZBuilder/GZGeneral.cs +++ b/Source/Core/GZBuilder/GZGeneral.cs @@ -32,8 +32,8 @@ namespace CodeImp.DoomBuilder.GZBuilder public static int[] ACS_SPECIALS { get { return acsSpecials; } } //version - public const float Version = 1.12f; - public const char Revision = 'i'; + public const float Version = 1.13f; + public const char Revision = ' '; //debug console #if DEBUG diff --git a/Source/Core/General/General.cs b/Source/Core/General/General.cs index ae3cdd8da..99fcb5c12 100644 --- a/Source/Core/General/General.cs +++ b/Source/Core/General/General.cs @@ -1163,6 +1163,9 @@ namespace CodeImp.DoomBuilder { // Add recent file mainwindow.AddRecentFile(filename); + + //mxd + mainwindow.UpdateGZDoomPannel(); } else { diff --git a/Source/Core/General/StepsList.cs b/Source/Core/General/StepsList.cs index 019918ce4..cfd1e5d06 100644 --- a/Source/Core/General/StepsList.cs +++ b/Source/Core/General/StepsList.cs @@ -72,6 +72,18 @@ namespace CodeImp.DoomBuilder return base[low]; } + //mxd. This returns a step higher for UDMF relative light range (-255..255) + public int GetNextHigher(int level, bool absolute) { + if(absolute || level >= 0) return GetNextHigher(level); + return -GetNextLower(Math.Abs(level)); + } + + //mxd. This returns a step lower for UDMF relative light range (-255..255) + public int GetNextLower(int level, bool absolute) { + if(absolute || level > 0) return GetNextLower(level); + return -GetNextHigher(Math.Abs(level)); + } + // This returns the nearest step public int GetNearest(int level) { diff --git a/Source/Core/Resources/GZDB2.ico b/Source/Core/Resources/GZDB2.ico index 60af1d366ae5c5ace9d071b36670c43cfb159678..7b4041b3b92aff837788e15537108b50d68be748 100644 GIT binary patch literal 24358 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 literal 11502 zcmd^_dr%cuw#IwL#6-s+zLE$6=fF7#2Z)FeKu}NtA&ODds9+2NDj-G$B%&w=5no`` zsEO#18(*VF6LruiK0<s_CZpmruS!`lm72;;<=)Apa>ta>`|Gn{-}Z0->)xrFKW^7P zyLYc%d#!JMd+oiu8#L{AS_jS5Rpb1umfb<qp4T+ZWRmOMT{Nu*S#WUEbstSjK-Ui) zP8w?Vew^$_BDMZ&{Rs4pw0MS@-1}3vrseu*hjd4`v9a-sFTS{Q=gtp5{P6S7KTGe= zKmYujZ@&5d`|p4H>8HDQ?;=$C4Gj&-16`zj>C&ZJw{9u9QNO;vp3CGRr<4~_`}EUK zuV25ex+wc~b#+SEvT^n5)i1yN61mc+O&7cXj98@0;lqcO@XD1dN`La0)1uIBE%rx` zJiUC*Cn-a>WWM-*Y1Ro(w}{6(JWiouwJbNA=9>D1Qo6hL5Pj+Z%W#WVNLtc+BL=_a z>z&&9iEijyyz^<B`}kA5JuFJOr0}&jDk?|DRai~Y+`=Z7EnaCf{Cxr}UX}o>E%%j- zoQ!F7`Sbn{jvcC{F*G74Gi}O>(xp+MYw$vOzTdPdV<*hcn&ItXMqyXYyMKJET6uXj zWBSIby=8Oi-dT5fV_D;poa?V;UC5YNv#z3YY|==jCXM{;yyG9%(M}vRt$0rD#+8j# zuQx7Vd^o)S3kdh^+_iMk648_zUo^IDtvRrFpHa@`+R8OZ)-GRVl#Bk!qq+-+<7n*> zBv(HDi^%WAXj=X6G;K*6zk24Ee&6(%rrmx5eXg&4qG`AOUFMkyQ?dN?`PqE5KhK&q z|C#3*GiG?UcbMHHd_1C`?P=@uWT&T}e)^e*k7pk~+}zx-ClIGkpWd-!$ApB0n>TMh zaCYq2v7^a(@8D;8T4_7ea+E3ic<I@*=i<eSzx(bxR)xQ|IOzH7ufI0Ch;gvb@^JCu zMHT>#ufF<9EZo0;U)k@}sZ!^z0LAj3QNBZJeZjaUtx9GhYUB1Io0XjHFRN1d3M zIDh{9Irc+YL+;weRjiyoefr+Ld&XPHE0-=a0+V*PZruoth>jdNg3gknVrn8)eN_W_ zmrhT`gqE2-^(Z)C20}PQM}!V8di3bQ^7i%DU+><%8->KEZ0gaYN0*nEmz9-KbF5gg zf>4lmb8#COy53?g^ztn1)pLj#WI6oov(H!y@$$<rzlbn1GgBP3%fG@y$L=oAg!Ze# zzPEXy*)z*x&gQPoW+V36+FDj(9I-R7fuO89lF#Ys>8Yuyg@uJc<sc^y9XfQtew;dW z>g?IG+qP|^i))uY0?(n|v}sdyb#+Zm&508y=y?0~Z4{LK&Ye4_q@--!x)lX1qXP`4 z129M%;r82azom=oQ++~1LpN;LP|<v>U%#HqHTGle+O=4~5f+U0arD?@k9D^n>>f-9 zrXxYgq(swXGRc%Qxd$;B)eht0;v&6_HFxRjU_UbCVE%-IStIN6#-E%u?htJn1N^6q zjhi?1#q-05UQ3MHLh=j@c_Av~-Gt~Zqhe=UO;($40b}87p6u;8!rL>&+$RiSpWYsd z8P!M{bf_@x`1En-=4YP8c=43Os|y;&#Z~umb@w#|CPk(Cdk=i_@h3gqylIC74xmjg z`FNMfK<mam)2!xLZ;t?P4<BV#H2_(bb8&9kRqQW#<tSxC@mXBhd|pBaYb|Rq`&izl zm_2i)umA#}SNEREtZIOKb9p27@q&wmS#`^1p2P(qbnRklY24)xy<o=AZ@aH`1BnWF zU(;w$_k`Y0yLWf_pB-D-PmDdez3S@9{Oh<VoO}WD#RWC7gWn+pv&T?>-&GigBEW+j z`&Lsj<U7T03;Gx~u#e@0$c+?+1D1$_k%ekw2n;l4u@Cuvz9kR^Eq3yKTEkEGxPgC; z49;U5ea#`!Atl(S%zo+p<UtEa3}XoJ0PT`F1j2x#(5H8Qz&lMIVToh|2FkwXNbpY| zQwRBx&rJ#qh`0H~6M|3#y<i4BLr=EQ1)DVVbhX%8vtPQPd{}gB`GUoTGje^+8FArT zCD}+$!eJsXh(ZxKG4Ag@f?IyxzLM~udLcG0HarT6pf%Q*&3GyG@cRcgRIZycresw7 zE&xlg=reXhLQ0rcBofT~TgwBjGodliKM25BhI49wttzc3o}G^uqw#Ike|&T0>Z1p1 zX&`4J42_sg$6*5p<z-CEo|4`_aKezVwXaS-!D>m8FcX=u{rsNC4tHNp84m_>hI;FU z>UGPOgEl!nNx8u6o_DvaOBzg1I_}@K`^>3&AO#0)NlQLcRrC?LlsD<aaq(voW2#<C zPQeZUs;l0>1^AVPhBN1?*Kb@jf1yYmi~~C-^<|6$rZA&sQSnix8&mJ~-0PGDS=T5` zkXO^+%}d`z-~fgbdKoceS=m>9X^cr6fpILKJaVk0=$uUI6Z=0ucl_3=gEzOYz0L#? zN6;7>uIDr1GjIe#)J9WI+eA%hCy$+wyR4Rj2h58f^ry+A>fj&Pm`xeFKRso8Xuvem zIATCJng{ppqm;}onD$DBQ?nw>oTMXHbfHWv<Q1i5FN8WR(Xn!i^uPu1T52i@U7*Ey zN#G2Gk~lQbha6=S`%a%vR4?-3>ZL2{l2|~cE}b@nd3B3?gI;y%&~Wg+uHvC*e+OlC z2@KV4{L3XpuM+-q8;1`ZG8)vM4eEJCSn}}Ci|ejNnXYqNeot_2@%vBo^&j`T)^opH z(>l~>+FTNG&_6US<{$OH_xjuNJ6?Z(<8SZ${hhm)|LddQF5~(?{4~B1@Jr|SuYXSg z#Q&3nr!O7=_0e~Ba7!M~*j$7VXIjo>Z4j6`exlR6ZG#avKmPcm5t4J?&ZJH~if~=U z%9P|WMuo6o{UcVphk}Hr)uiu+4xZb!;8fw{k)!i+@&-jj%Uw2TvwhoA#*qgHt_bvN z+PRbwqk_$681nPy&%+ppx<y0jKVoD5&iD3i+mW9+J+gn8zfa%Zz1&RhUi4LFX$Sai z47BMhn9-4HBey@O=#V&gOKJ&BZaqp3820Y%o3~`WoDQUjexbsTGK-PGfPL-Z;Zc8t zx5oe<k0w+=QWlJ%Jqo0Qd-ef|L>iko0*cHY`iCN{i9y;CVIKxRx3vvZ7E`XxXFQ{3 z_Lyun2h5zRKjv|W1*!Fcv=61+YNH0m>WURv6VpZ}BoU+4<Ya4ZqdT{N(VBuDmHjX> z)|#^2ln+#g+Txj31Q-=EbAT-mxy*NY<x~bGMyZYYWAdCym*%(Cht6Vwx(Sv&yV}6x z=@u90yI|(H_bLjGlw}_u9rHG+5)g7zLBhHb6=sQ)Lt#Tx@Dx3KJOr!RhyZI1kNY!W zyyMt>*M;}roD}t^$dJ9mqD~KuZlnmL);c=K1&@R9e{tEzeX5U7WnbGd!2p=#VINaR zhBt&if7R1+hGO-5-!JeSI?OVL6)&ASc8Us~>~GcI)Z}H^<XLF;7)w@L&6$4QQz_5+ zrIO*krVx2m>D9xnU3iQXUz_m4^Z@`hNX8|co0xD!SOSLNp#~4^*}S6xgXQ>$TtT90 zvu7q?1dqQr(_dc!d`-hV-SpQnmbKPi$`nqW9Lt{MVMpNvUyRq7m;;oIk+nb)iUNZ_ zp#Vnkz>nY|=LHEA2}@l1m<wnJ`sV4tOk?1O<%pC3j1=YCX@il19K3@8JfjD1r!j5B z9&%eGu*9fI5j^qXlQ0FO_{d_q>qyK6AYr_0mO>^1Z5pf?AfW~oc;qD!NKRphka->8 zzb$dl;d!YaPK@7A0T@N$8Q6c>s3FT3K2i%vumn8t0ERMU%$s=c8?ckPKqAG3R}2n~ zr;D&8cvx3SD)4yp*59UO)LMhY{s=jY3wVH$pLQX4Tpi5hPxwGDX%{d)ATVO;s71(= z;;vIjFwzDvPj&7B9#(8-<@m(6#|<xF?IL3V1|G?3I~W}gM9F(S+fW-61=*G|MmbXt z;4XW7BLDzK0Sv3q!psIhl8{}ybdQgGar)R5++t~h1i^!3)}*aPIb}$CcI!pd`qJT3 z$?!4vS+2puU^NY#Ie<-si6%RvQ;PZr?PjnRW*q}b{^V;$JP6mnc8&r?-MX6S4k0+D z$Y3F%4I!Wv3AH4Wmsb&}m}@X&uXSL;4|v+(2lCTjtY2B!po5uw4MKz;YQeK@)hAF# zjQ9dT+jY-w-a0v!YKqmmUf)$ssbsqy(hF+JgCA2)55ZGac!L6-1zA^Rn7~5=a^5a$ z04<3MMQwxOuGKUWJfyd8-yOmaS)?bDDHVPM4`ATgDHwz-FDyGa-CTZM@GQ+eD=g6v zNT4E%FxWO8Mu7!~iN=KG$xWxl&JPc<(96K_%zzGH+QtJ#;Mu+578H@vfT3iMKhJnk z1QOUn0+uoygdnI?LxF@Gf9q24FjBG>!Hhj^2CzyqWaJNcy1DdfBY&9bEOCs;w#pk6 z#tS3}S*~RfVBi3Q0!tGyD(?<>$Z7~-rUORpXwbzN+0!_cErSPOkhB2?n;h&)EO(Ft zEu`-7ft%O`*eKaJgd&;y01L9MAv&j!fXWz=GqP6O2Wu=~nA+gstDRa5+nDTvN8bX% z8`v76`{nQ?#$HTe$3y}=$tA$B&Y(aJw8R5B`hsk!1_s*}+d2tj0HbeSvNBWiBrJYg ztC<e$;26=L3e0>_576=W3}YPt4@julr`SU&&`uUPKq6zwVLffk1*8gWKmvsU!kYcj zSN}tRl-6Jv<@&grqR?lt0ulxZlSF!X^arfQj2%c|43IQrqA5r$iR1}*NM^tgivoi| z@Nfwyp+O;h7nOG?qid&a^pj$St|(btR#eQxJj(^^Hi?9BXs76mS!_V+-**f{Bg?fw zB7Bgr589t|^ye-qz#w%=o9Fz428TuR0)+)`IR#)8qRczRu9|=2Z`WHkyftZ53dY$b z35{?hSRip}vxG$tC}O{3@(LIhHx?P49Pbe@j7LJlDZQw{1ADxN&!0JqB5!u+7`;2R zp`~DY&XEHLdGne(Yc6{<W5h_|7cdkVL}J7p$-`d8#AhnWa!sNFj~4+F7_`CuK~jVY z!9%=&;Z2h_yUmqv5HIhW4lv}BThJn}rM!8u%Y%d^kp~`NU=vdeA8|n-J2>OW#=#=M z7VP1k0;I6OVwQJ#4g?AMaRUdVOyQDn;D>@K-VFg$SysNfv<!o!lLI8a9-KaYk^*dX zD<|V)JVG@g@OoH0YYuVM?mMutYAw_;gYeFZ&GJZg!6EpO*r(M9z~B@luNTZCOlZf5 zKr(vg#T-<4&&$?d*3`k<F})~CA`PJhvxEb66h?F5oH8D|NOAzMT(iH(J`0(wr9{Dk zFe7UQBr_xEOHFs+!4kRT;DY}a*}wBW)RY_-FrzM2BYw!RkwX*sHU%N1H<<IY7O@gC zMyx_S9l=aluD-44yKU|bX@d&VCM2xlagiCZadj1Vpq+8S8Wbt}#s<u<SygG2v}}{! zBo)?#6P`lZ^ue(6&CB(*H!gnsCFRt?8$1jENq;!8LsB)n9^+Uvs}x_5u(Ws~Brwy- z#+JU?mC%vzKjaK#s&O11yN5AicjE!z=<b`KqR^mhEY<mu0(I=a<T*<#+xnX2Z_3w_ zlKgp0E@S?*3qvVL0+YQ847bQqp5BR?#}ZPPO++3@gdZ+>G-3r{8E3AsfHUjWhdxr5 ztblF8WW`X99;LxtAm>3s<{0$}4M^O@5pta38W^ew5^g0YC8LSHamN%$3?GSPG}~^Q zw1FAA8#QGLvyTwqve%ayZ#iv~!-NwzC{|H~8i|Bu(tz}K+N-5-QPD#5nc57x@h&3> zW0ZC$g6ahx*kGC~2~z{J2*Ig@Z8yM!KA%_})X2uGm#-Mp$w9&CB{}2p=@<(HJ9ApL zQ~j1g{4%Fn%Hg>s$d+mj61+3h9faUvX>t&@cDZ)ha)-<jO-OSX!PYD|$Xnup=SMe% zUk8J7$y9YJZ&&zQK~YN`ry;jg`<F}Pi>UsUU31|NW!i)L+VA!A{d+*u&-0tk`XAFu zxz-W02ied3Z{P#{x<k`h*VnHNXWfi`Z9m6o8h^91_jf$=H$MKtr)mGEGq@b>+OP53 z?7#Wktk>-Cw(g&J&MX1$8BM!TPgr*}?H#T=+$BC;POuL;Hl1Dg+alNZJzbxiqo1R_ m?nRX1CpzZ7{ajM|AX>lXU)=^bolkN8?Y9RHKH}WW`+o!N%C!Xm diff --git a/Source/Core/Resources/Splash3_trans.png b/Source/Core/Resources/Splash3_trans.png index 76b769ce8e1d536d9983316e09b87c34e903e2d3..5133b08f6434e3730173828a14caa0edd75f1e86 100644 GIT binary patch delta 21733 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 M07*qoM6N<$g7-T9%m4rY delta 21684 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 P00000NkvXXu0mjfAT<NA diff --git a/Source/Core/Windows/MainForm.Designer.cs b/Source/Core/Windows/MainForm.Designer.cs index c8d6118ea..9a10a3ecb 100644 --- a/Source/Core/Windows/MainForm.Designer.cs +++ b/Source/Core/Windows/MainForm.Designer.cs @@ -1669,7 +1669,7 @@ namespace CodeImp.DoomBuilder.Windows this.linedefinfo.MaximumSize = new System.Drawing.Size(10000, 100); this.linedefinfo.MinimumSize = new System.Drawing.Size(100, 100); this.linedefinfo.Name = "linedefinfo"; - this.linedefinfo.Size = new System.Drawing.Size(1039, 100); + this.linedefinfo.Size = new System.Drawing.Size(1560, 100); this.linedefinfo.TabIndex = 0; this.linedefinfo.Visible = false; // @@ -1691,7 +1691,7 @@ namespace CodeImp.DoomBuilder.Windows this.sectorinfo.MaximumSize = new System.Drawing.Size(10000, 100); this.sectorinfo.MinimumSize = new System.Drawing.Size(100, 100); this.sectorinfo.Name = "sectorinfo"; - this.sectorinfo.Size = new System.Drawing.Size(522, 100); + this.sectorinfo.Size = new System.Drawing.Size(642, 100); this.sectorinfo.TabIndex = 2; this.sectorinfo.Visible = false; // diff --git a/Source/Core/Windows/MainForm.resx b/Source/Core/Windows/MainForm.resx index b0323263a..375300916 100644 --- a/Source/Core/Windows/MainForm.resx +++ b/Source/Core/Windows/MainForm.resx @@ -198,30 +198,6 @@ <metadata name="sectorinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="heightpanel1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="vertexinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="labelcollapsedinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="buttontoggleinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="modename.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="linedefinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="thinginfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="sectorinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="redrawtimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>433, 17</value> </metadata> @@ -257,198 +233,412 @@ </metadata> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> - AAABAAMAEBAAAAEAGABoAwAANgAAACAgAAABABgAqAwAAJ4DAAAwMAAAAQAYAKgcAABGEAAAKAAAABAA - AAAgAAAAAQAYAAAAAAAAAAAASAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwmOSQeNSAb - MSQeNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ - EBAQEBAQEAAAAAAAABAQENHR0dra2uPj4+zs7PT09BAQEBAQENnZ2eLi4urq6vLy8vn5+RAQEAAAAAAA - ABAQEMjIyBAQEBAQEBAQEOzs7BAQEBAQEM7OztfX1xAQEBAQEBAQEBAQEAAAAAAAABAQEMDAwBAQEE1B - vtra2uPj4+zs7BAQEBAQEMzMzNTU1BAQEBAQEBAQEAAAAAAAABAQELq6uhAQEBAQEBAQEBAQEBAQEBAQ - EBAQEBAQEBAQENLS0tvb2xAQEAAAAAAAABAQEBAQELq6usDAwMjIyNHR0RAQEBAQELW1tbq6usDAwMjI - yNDQ0BAQEAAAAAAAAFxRwhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAA - AFBMwodwy1JCm2NPrn9kvB4aOAUDBQUDBR4aOCUkhyEgcSAcNCAcNBIQEwAAAAAAAAAAACskRyQfMltJ - q0s+lyYiWgoHEQUDBSQiciYiWiEcKSEcKSIdJAAAAAAAAAAAAHx0d4+GjExEhiUgPCEcKSUkhx4aOCQf - WyUkhykjKyQfJCslKmpfYmliZQAAALOtr7mytAAAAEI4aWNbXoh/gzs0jks+l0s+lzYvZV5TV29kZyId - IQAAAKaeoZ2XmgAAAAAAAAAAAG5iZpWNqoJwup+Rz5WC0YBp1Hdkx2JYnpGGjFNJTAAAAAAAAAAAAAAA - AAAAAHJobLu3ugAAAEg9ZXlwtJWJ0Y2B0Yd+tTcxSgAAAKylpoN9gAAAAAAAAAAAAAAAAKaeoQAAAKKc - nrCqrAAAAAAAAAAAAAAAALCqrJCMjgAAAJCHigAAAAAAAAAAAAAAAKaeoQAAAL24ugAAAAAAAAAAAAAA - AAAAAAAAALi0tgAAANDMzQAAAAAAAPw/AADAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAMAD - AACAAQAAIAQAAOAHAADAAwAA08sAANfrAAAoAAAAIAAAAEAAAAABABgAAAAAAAAAAABIAAAASAAAAAAA + AAABAAQAEBAAAAEAGABoAwAARgAAACAgAAABABgAqAwAAK4DAAAwMAAAAQAYAKgcAABWEAAAQEAAAAEA + GAAoMgAA/iwAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFAAAAAAAAAAAAAAAAAAAAAYGBgYGBgYGBgYGBgY + GBgYGBgYGBgYGBgYGBgYGBhQUFBQUFAAAAAAAAAAAAAdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0d + HR0dHR0dHR1QUFBQUFAAAAAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiJQ + UFAAAAAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKChQUFAAAAAvLy8vLy8v + Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9QUFAAAAA2NjY2NjaGhob///////////+G + hob///////////////////82NjY2NjZQUFAAAAA9PT09PT3///9KSko9PT2Li4v///89PT3///9kZGQ9 + PT09PT09PT09PT1QUFAAAABERERERET///9ERET///////////9ERERdXV3///9RUVFERERERERERERQ + UFAAAABLS0tLS0v///9XV1dLS0tvb2+Tk5NLS0tLS0uHh4f///9LS0tLS0tLS0tQUFAAAABSUlJSUlKX + l5f///////////90dHT///////////////+jo6NSUlJSUlJQUFAAAABYWFhYWFhYWFhYWFhYWFhYWFhY + WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhQUFAAAABdXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1d + XV1dXV1dXV1dXV0AAAAAAAAAAABiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIAAAAA + AAAAAAAAAAAAAABlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWUAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAwAA4AEAAMAAAACAAAAAgAAAAIAA + AACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAQAAwAMAAOAHAAD//wAAKAAAACAAAABAAAAAAQAYAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH19fVBPTy0sLB8dHR4cHB4cHB4cHB4cHB4cHB8cGx8c + HB8dHCAdHCAeHSEeHSEfHiEfHiEgHyIgHyEfHSEeHSEeHCEeHCEeHCEeHCMgHygmJT4+PmBgYHl5eQAA + AHp6emlpaRQSERQSERQSERQSERMSERQSERQSEhQSEhQSEhUTEhUTExYTExYUFBYUFBUTEhUTEhcVFRYU + FBgVFBcVExYTEhYTEhYTEhYTEhYTEhYTEicnJ0BAQF9fXwAAAG5ubi0sLBQSEhQSEhQSEv////////// + /yUjIzUzM////////////////4OCgv///////////////0A/PxYUFEZERP///////////3RycRcTEhcT + EhoXFicnJjw8PH9/fxsaGRgXFiMiIikoJ////////////////////0hHR////8HBwaChoqCio4KDhf// + /9HQ0KOiotjY2P///yclJHZ1df///6+urqKhofDv7////xgVFBcTEhYTEicjInl5eRgVFBgVFRgVGDY0 + Nf///zc0MhkVExkVE////xgUEoSCgf///yYkNxkYKhgUEv///4SCgRgUEhkUEv///4SCgXVycv///xkV + ExkUFf///////xoVEhoVEhAQFSQgH3Z2dhgUExgVFRgVGFZUVP///xgUE////////////xgUEickIv// + /4SFjhgUEhgUEv///4SCgRkVFBkUEoWCgf///3Vycv///6OhoaOhovDw8YWCghkUEhkVEhkUESIfH3Z2 + dhgUExgVFRgWGFZUVf///xgUExgUExgUEhgUEhgUEjMxRGxse////zczMhgUEv///5STmTMxPSwpNIB+ + hP///3h2e/////////////Dv8BkVFBkVEhkVEhkUESIfHnZ2dhgUExgVFRgWGFZUVf///xgUExgUEhgU + EpORkRgUEisqPxgYKf///////xYTE////5iXnjw5RDw5Rf///////39+hP///xUTHlJRV////////xoU + ERkUERkUESIfHnZ2dhgUExgVFBgWGCcmJv///4SCgRgUEoSCgfDv7xgUEisqPRoaLzAwOvDw8GRkb/// + /4SEjCsrQmNicv///1lZaHJyev///xsZJDEvOO/v8P///xkUERoUERkTESIfHnZ2dhgUExgVFRgVGBgW + FlVTUvDv7/////Dv71VSUTYzMv///////////////8XFyf///////////////4qKlQgRJnV1ff////// + /////5+epBAOGBEOEhkTEhkTESIfHnZ2dhgUExgVFBgWGBgWFxgVFBgUExgUEhgUEhgUEhgUEhgUEiMj + OR0fMiQkODo4SCQjOAkMGhgeMxEdOxAaNQsUKwoMGQcJExoXHxIPGw8OGw8OGA4NExUSFhkTESIfHnZ2 + dhgUExgVFBgWGBgWFhgUExgUEhgUEhgUEhgUEhgUEhgUEhgUEh4eLxwdMTo3SiMjNggKFCkuOR0gKiEl + LRgdJhISHAgJDhwZJBMQGw8NGxAOGA4OFBgUExkTESIfHnp6ekI2ND84NUI7QkE8PkE4NUE2MkI3M0E1 + M0I2NkA1N0I2NkI2NEE1M0I2NHBvr1pZhYGMp3V+qStGoV5ogGp3jTE1UhMbOVNLaTIpSi8oSy8pQDAq + PUI2Mi0sNjQvLXp6ekQ3NUM6N0M8Q0I9P0Q4NkI3M0I2NEE3N0I3QUE3Q0I2QkE3PUA5PoSAu0RGhiEg + XnNs5XdsyBEWNx8pXyEqTBUXKRIWKWxjhDIrTjEpSDUoQCkmNS4sOCgeLjQuLHp6ekM3NUA5NkI9P0E8 + PkE4NUI3M0I2NEE3PYyT/43L/0Q8m3+A8oR/vUNBfBwpXXmHsTE9Z3R/nxsYListOBoeKRAQIBQWIX11 + migtTDAoRi4nPDMwOSogMSUiMTQuLHp6ekI2NEA5NkI9P0E8PkE4NUI3M0I2NEE5OkVFXW+o5kM3S1tW + gzAvViAePCw8fh0iX5+y04SRqRUTKYGNpWp3hx0cLBYPHFxUcw08VyklQigiMxkTJB4WJyQbLzMuLHp6 + ekE1Mz84NTs9PkA7PUA3NEI2NEI3M0M3NUA3OkE3PUE3PWNgjScpSCQzZC1MmzNRqChBhyY9gSU7fGpx + imx0hSMiNiUnMkQ0S06UsjIpQyMhLR8XKBoUJx8ZLDMuLHp6ekA0Mj43ND87QUA7PUA3NEE2MkE2MkE1 + M0E1M0E1M0I2NGNlppCHwC4vUSk3ayI1cihGjSxMlTFLkSdDgBojSRcVM2tolkU3T4fJ+TcwRSMlMBkU + KRgUJxsXKjMuLHp6ekA0Mj83Nz87QT86PEA3NEE2MkE1M0E1M0E2MkI2MkI2NGtsqI2L15qT3ImBwHt2 + o19aeU9QdjI1VENBXkE9VkpFbDo1UDUtTJG+/zAqQxkaKBwfLh8WKhgUJzIuLHp6ej00MD82Mz84Pz45 + Oz41MkEyMM/Iz8C5vo+KjGdkhD4+UH6Cw3mFzWlzwGJkqnZ3wW5xtWBjp0BIhE5RiE9Pfz03YDMtTDAr + UoCc+zQrRhgaLBcXKRgUJxwcLDMuLHp6ej8zMT01NT43Pj84Oz41MkAzMc28wNzR1JyUyXRzn2FgiP// + /v3//3d+vWJor29xt8vr/4KJzllfjF9koz9Cb1FPfUtJdy4rUnmL5jgvSRoaLBsaKhcXJxgYKDMuLHp6 + ej8zMT82Mz84Oz43Oj41Mj80MEE0Ms6+v5uX0mRklGBkjebk8Kei33h8w21ts3V5wP///////////4qR + yk5UgSsuVCoqUigrUWx1vjcuQhgbKhgZJxkZKRYYIzMuLXp6ej00MUA3ND83Pj43Oj41Mj4yMD8zM15W + dWBgpnJyrpKLyIaAuXVyqoN/xnVysH99v9vd5f///////////53H9md3nCMhPiMjRzg5dTAvPxcXJxsa + KhodKxwbJTMuLXp6ej4yMD40ND42PT02OT00MT4zLz8zMzk1SJeV7rWw/7Su/Xp4xFRXm2Ror4qEvVZU + glhceWlqhv////L+/4q25XiXxBkbOR4cQCQjVSIhNRYZKBwcLh4WJyQjMzQuLXp6ej4yMD40ND02PT02 + OT00MT4zLz4zLz01NZ2b4ayp/6yo/4OC2HZ4zKmi97Cq62llmVFPeUJEZkROZkhTczM6WyIgPiIgPkE7 + ZFVXgFFLajoyQzgxPh0XKComOTMuLHp6ejwzMD40ND43PDw1OD0zMz4zLz4zLz4yMD0zOWton7ux/np6 + yGZptKul/I6O3IyKzH57uV9agTMwSjc2VignRz05Yj46Y1RQgX59r0E7Wo6DhZ2Znn96fEE5QDQtLHt6 + ej4yMD0zMz00Pjw1Oj00MT4zLz4zLz4zLz8zMTwzNj8/V2lmmG9tqK6o9YmI0o2IxoqEv313smBbgjcy + USIiQDc0W0tIenNxs3h0pUA7W7uytauipa+nrpSQljQtLH19fT0xLz0zMzwzPT0zOT4yMj0xLz0yLj0y + Lj0xLz4yMEAzMT03Qm1rn1tYj5SOvYqDrm5qpYB8t3dwm2BVezIxUz45Zjw7bWxqpW9rnE5Ia6CTlaOX + nYd+gXRcVjo0NAAAAD0yMD0zMz4zPT0zOT00MT4zLz8zMT0zMz4zNT4zNj8zOUQ3R3Fun3dxolRUgl9d + h11chm1olWlihVhRdjo3Xk0/YTI0XVxbn2dlj0o/X2pbX2pVV0U5PyUiO05JSAAAAAAAAEU9PT4yPj4z + Oz4zNT4zNTwzNj0zOU9dqVFIYj8zOT8xNT8zMYiCpWRhk315olxZimRgiklCXUE8V0xPa09DX0E2VkI9 + XEFBX1NDW1NGVicnRSYmQVFPUnd3dwAAAAAAAAAAAD0zPz00QTYxRo2m8D80PD80Nz4zNT0zMz8zMT8y + MD8zL0E1MV9bjFRSgIN9pmRej1BIcUM5XTgzUz40Ujw6XkQ6ZCkqUC40YysuVC0uVFBOVHFxcX9/fwAA + AAAAAAAAAGFeXldTUlZRUFZRUFZSUFZSUFdTUlhUU1dUUldTUlZSUVZSUVZSUVZSUVZSUVdSUVdSUVdS + UVdSUVdSUVdSUVdSUVlSUVlSUVlSUVpUU3V1dXx8fAAAAMAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ2dnHh4eHh4eHh4e - Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eIRs4Ix08GBQqCQgJFhYWFxcXFxcXFxcXFxcXFxcXGBgYGBgY - GBgYGBgYGBgYGhoaHh4eAAAAAAAAZmZmBgYGRkZG1tbW////////////////////////////pKSkHh4e - Hh4eHhkwFxQlHh4e////////////////////////////////////////////////Hh4eAAAAAAAAAAAA - FBQUfn5+5ubm6urq6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo////+vr6Hh4eHh4eHhk/Hh4e//////////////// - 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH19fWpqakhISDQ0NC4uLisrKyoqKioqKioqKioq + KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq + KioqKioqKioqKioqKioqKioqKioqKioqKioqKi0tLTY2NkxMTGdnZ3l5eX9/fwAAAAAAAH9/f3JyclBP + TykoJx4cHBwaGRwaGRwaGRwaGRwaGRwZGRwaGRwaGRwZGRwZGRwaGR0aGR0aGh0aGh0aGh4bGh4bGh4c + Gx8cGx8cHB8dHB8eHR8eHR8dHR8dGx8cGx8cGx4bGh8bGh8bGh8bGh8bGh8bGh8bGiAcGyEfHiMjIy0t + LUVFRWZmZnt7ewAAAAAAAHh4eFtbWxcVFRQSERQSERQSERQSERQSERQSERMSERQSERQSERQSEhQSEhQS + EhQSEhUTEhUTExUTExYTExYUFBYUFBYUFBUTExUTEhUTEhYUFBcVFRYUFBgWFRgVFBcVExYUExYTEhYT + EhYTEhYTEhYTEhYTEhYTEhYTEh8cGiIhISwsLEpKSm1tbQAAAAAAAG1tbSwqKRQSEhQSEhQSEhQSEhQS + EhQTEhUTEhUTExUTExUTExUUExUUExYUExYUExYUExUTExUTEhUTEhYUExcVFRwaGiYlJC0sLDU0NEJB + QUlISEA/PxcWFRYUFBgVFRgVFBcVFBcUExYUEhcUEhcTEhcTEhcTEhcTEhYTEhoXFiIhITQ0NFpaWgAA + AH9/f1FRUBUTEhUTExUTExUTExYUE0FAQOLi4vDw8MXExP///8TExDEvLxUTE7e3t/////////////// + /////////9DQ0EhHR////////////////+jo6KGhoUREQy8tLR8dHf///////////////////7e2tTQx + MBcUExcUEhcTEhcTEh4aGi0tLVFRUQAAAH5+fhsaGRgXFiAfHyMiIikoJ01MTPPz87e3t0lJSElISFJS + Us7NzczMzCwrKkhHRv///318fBEUFhEVFxIWGBMWGRQWGRkYGP///1JQUBgWFhcVFYaGhfLy8qmoqBcV + FRsZGP///3d3djc2NRoXFzQxMdTT08XFxBgVFBgVFBcUExcTEhYTEiYjIk9PTwAAAHd3dxkUFBgVFBgV + FRQWGBgVFqinp+Li4hgUExkVExkVFBkVFIyKicXExBgUExgUEoyJifHx8kZDUiclOB4dLxgXJhkUExkU + E////1JPTRgUEhgUEhkUEmFeXP///0RAPxkVFP///1NPTxoUExkUFBkUFnR+kP///xkVFBoVEhoVEhsV + EhAQFSQgH09PTwAAAHNychgVFBgVFBgVFhQWGRgVF8XFxYuKiRgUExkVExkVExkVE4yKicXExBgUExgU + EhgUEtXV2MrKzxkaLRgUEhkUEhgUEhgUEv///1JPTRgUEhgUEhkUEhkUEvHw8H57ehkVFf///1NPThkV + ExkUFBkUF5qfr/Hw8RkUFBkUEhkVEhkVEhkVEyMfH09PTwAAAHNychgVFBgVFBgVFhMWGRgVF8XExYyJ + iRgUExgUE////////////8XExBgUEhgUEhgTFVBQYvHx83t7hBgUEhgUEhgUEhgUEv///1ZUWBkXHRcV + GRYUFBkUEsbExIyKiRkUFP///6mnp4yJiYyKiZqYmf///3BsbhkUFBkUEhkVEhkVEhkVEiIfH09PTwAA + AHNychgUExgVFBgVFhQWGRgWGMXFxYyJiRgUExgUExgUExgUExgUEhgUEhgUEhgUEjEwRCQlO3t8hf// + /0JAPhgTEhgTEhgUEv///2hmbzY0PzYzPickLy4rNMnIypKQlB0aIP///6inp4yKiYyKieLi4tjZ4Cgj + JRkUFBkUEhkVEhkVEhkVEiIfHk9PTwAAAHNychgUExgVFBgVFhQXGBgWGMXFxZqYmBgUEhgUExgUEhgU + EjUxMENAPxgUEhgUES4rQR8gNQsLFcLCxNLS0hgTEhgUEi8tPP///21rdEE+RT46RDg1PzczOv///3x5 + fiknLv///1JQVhEPFhkVFCcjJvLy9HBsbhkUFBkVEhkUERoUERkUESIfHk9PTwAAAHNychgUExgVFBgV + FhQXGBgWGJqZmeLi4iYjIRgUExgUEhgUEqinpsXExBgUEhgUEicnPBgYKw8PGysqMfHx8oqLkxYTFDQx + Rv///21qdT47R0E9SD46R5ybov///0lIViwqOf///1ZTWxgVIhEOGREPG+Xl6IyJixkUExoUERkUERkU + ERkUESIfHk9PTwAAAHNychgUExgVFBgVFhQXGBgWGCYkJPHw8MXExDUxMCYjIX17ev///2BdXBgUEjUx + MGFgcFdXZk5PWkxMU6enrP///0hHUjAuQv///4GAiWZkcmVjcrGwuP///3V1ghwcMRcYKv///4B+hFZU + XFBOV7S0t////y0sNRkUExoUERkUERkUERkUESIfHk9PTwAAAHNychgUExgUExgVFhQXGBgWGBcVFTUy + MainpsXExMXExMXExGBdXBgUEhcTEm5sa8vKz8fHzcXFycbGysXFycbGyn59hyYmPMXFysbGysXFycnJ + z66ttlhYaBscMBkaLB8eLcbFycrJzMjHycXEx6alqkFBUxAOGQ4NFRMSFRoUERkTERkTESIfHk9PTwAA + AHNychgUExgUExgVFhQXGBgWGBcVFRgUExgUEhgUEhgTEhgUEhgUEhgUEhgUEhgUEiopOh0eMxwcLxkZ + KBYXKyAgMzg1SC0rPiAfMA8PHg8UIA8bNhAbNRIcNQ4XLwkRJRUUJBAQHSkoOiMfKBQRHRIPHBAPIg8O + Gg8OGA8OFBAOFBkTERkTESIfHk9PTwAAAHNychgUExgVFBgVFhQXGBgVFxcVFRgUExgUExgUExgUEhgU + EhgUEhgUEhgUEhgUEhwYGyMjORobLx8eMx8eMx8fMzw5SS0sPiAgLwgLFwgKExIdOw8bNwsVLQ8YMwoT + KQkNGwcLFy0rOx8dKBUSHA8PHA4OHw8OGQ8OGA8OFRAPFRgTEhkTESIfHk9PTwAAAHNychgVFBgVFBgW + FhQXGRgWGBcVFRgUExgUExgUEhgUEhgUEhgUEhgUEhgUEhgUEhgUEiIiMyAgNx0dMR8eMx0eMTYzRicm + PBsbKggKEx8hKBMbMA4XMA8YMhEZNAoTJwgLGAgKFCAdLSMgLBgTHA4PHA8NHBAOGg8NGA8OFQ4OFBkT + ERkTESIfHk9PTwAAAHd2dkA3NEA3NEA5PDU+QkE7QEA7OkA3NEE2MkE2MkE2MkE2MkE2MkE3MEE1M0A1 + MUA1MUA1MUA1MUxKYFBQhl9cjYN+u0tMiDw+ZltidnmGpn+Lpzg+a3mFnTxDXHJ9kTc2UBoaKiQkPGtj + gj8xTR4xUigkSC4oRysmQSckNCknM0Q0LUQ0LTQvLU9PTwAAAHd2dkA3NEA3NEA5PDU+QkE7QD45OEI2 + NEE2MkE2MkE2MkE2MkE2MkE1M0E1M0E1M0E1M0E1M0E2MkE1M0E2MqigyXd1sW1rmSorUY2dumhzpTI1 + YiZAlIGMpyY5coucsTU5VhMYLRseOnFqjTUrSRtJaDEnSzMrSjIpQy4oOScmMEU2LS8uODQvLU9PTwAA + AHd2dkI2NEE4NUA5PDY/Q0E7QD86OUI2NEI3M0I3M0I3M0I3M0E3N0E5OkI3OkI3OUI3OUM3N0E3N0M3 + N09GWo6IuVlZmVhWhBkgS3eGtBUaQRUZPDBGtjRFiClHlIKPqS0wTBQWLhYaM312oTgsSEiFpSslSC8n + RTEpQCkmNiknLS4tNzg3OzQuLU9PTwAAAHd2dkM3NUI5NkE7PDg+Q0I9P0I6OkM4NEI2NEI3M0I2NEE3 + N0E2QEI0UEI2SEI3Rz0xTUI3P0I3P0I2Qn55tlpcolhTomlg2H9+7ElMlhgcRRcZNxUXLxwhSBYbPGBp + fRUXKRASKhQWKJePuEEyTnS23y0nRi4nQi8oPSonNysqNCgoNiYhMDQuLE9PTwAAAHd2dkE4NEE4NUA5 + PDg+Q0E7QD86OUE4NUI3M0I3M0A3NEI2PEE2RnyX7Tw0XIzG/0A1VTQrampl2IOA7m9xxVZVgTA4YICM + rlBVhk5Yh254mjA1ThYZLigsNxscKhUWJBcYJhYXJRYXJZqRvDsxT47J/y0pRjEoQi0mOy0sNiUaLisq + NCglNDQuLE9PTwAAAHd2dkI2NEE4NUA6Ozc9QkE7QD86OUI2NEI3M0I3M0E4NUA3OkM5SnzL9nF75zMw + Z0I0UEE3RIR+rW5oozk2XRonVY+ds4STuhkYOJGjyIWQrmNsgBgVKxUSIigpNyAhKxodJSUoLSUoLZWO + uTovT5W8/y4qRzAnQScjNi0uOCAYKSUbLCUjLzMuLE9PTwAAAHd2dkE1M0E4NUE6PTc9QkE8Pj46OT85 + NEI2NkI3M0M4NEI3OUI4RS87XV+lzXhwtkI3R05Jdjs2XS0sTiIgPjM7WTZJjSEnaIWUtJ+x0I2dtEtV + ZxUSK4SRqXuHmWFofDY4UBUPGhYPHGFfiT8yUo6n/ysqRC4mPSokNTIwNh4XJhwWJyMaLjMuLE9PTwAA + AHd2dkE2MkA3NEA5PDU+QkE8Pj86OUI2NEI3M0I3M0I3M0E4NUI4OEI3P0A2QkA3QUM4QFpYgjEyTiIh + QyMsUi9PmzZSpi9LnytGlis+d32Kqh0mUh0mUZaluISOn2NqfTI2UhkSJyMlMFJKaT8wUH6T9jY0SC0o + PSMgLx4XJhwWJxsVKB8ZLDMuLE9PTwAAAHd2dT82MkA3ND85OjY8QUA6Pz45OEE1M0E2MkE2MkE2MkE1 + M0I2NEI2NkE2OEE2OEE2OIKBv2dkkS8vUxsdQCE2bSVAiidInjdcuDFNmixGki9LkjBOlS9DfR8pUVxk + dScrPSYrOmZgiUM3S0IzUnyL5zIuQSglNSEgKhkUIxsYKBkVKB8ZLDMvLE9PTwAAAHd2dUA0Mj82Mz84 + OzQ9QUA6Pz45OEE1M0E2MkE2MkE2MkE2MkE2MkE1M0E1M0E1M0I2NFVbkKKc44+HvDU2WBofRh0waRgu + YiE/hidEjiZFkChDhi1GjCRBfhwtYBUaOxYUMRoYNVpXhEEzSz0wUHuF0zQrRiMgLx4gKxoUJRgUJxkV + KBoWKTMuLE9PTwAAAHd2dUA0Mj82Mz84OzQ9QUA6Pz45OEA3NEE2MkE1M0E2MkE1M0E2MkE2MkE2MkE1 + M0I2NGFinmxytZWS4ZqT3IJ+wF5YkVxXhEpEZzs0WTMyWSw0WSkrSSgmQyonQDw2VVJOckQ9Xj0yTDgu + TC4mS2RmrDEpSB0dLRkaKBkZKRoUJRoWKRcTJjIuLE9PTwAAAHd2dT8zMT41Mj02OTQ6Pz85Pjw2Nz41 + Mj8zMU1FRlpXWVhRVkAyMz8zMUA1MUE1M0Q7OHJvnW53wVRenoeJ0JCN3I6K1oODz4SCyIJ/xHJvrXt2 + rVJXlGNilFtYik5JcERAZDw0UzkwSzIsSy8oTVFLhjEpRyUiMhcZKx0dLxwaLRkVKBkZKTIuLE9PTwAA + AHZ2dT00MT00MT02OTQ6Pz84PTw3Nj41Mj8zMayhqdnP1c7HzMO2uJmMlHhym2NehUJDWGdqlszX/+Hn + /2R0t2BnrExSjVddoG91vG91tmNopVlgn0dQj1FVj1BRi01Mfj89ZzYwUzEvTDczVjwyVkA0aDouTCkm + NhcXKRkZKRoaLBgWKRoaKjMuLE9PTwAAAHZ1dT00MT41Mj03ODY6P0A5Pj42Nj00MT8zMUE0Mubb3uLW + 3NPGyJiQxX58qltZh2Jhif///v///////5Wj2G5zuF9lsG91wm1yqZeszHeDyV5ll1Zdj19ko1ZalUFB + b0BDb0lJeVFOey0tUTEsWTswYjcuSSMiMhoaLBYWJhsaKhcXJxgYKDMuLE9PTwAAAHZ2dT8zMT40ND83 + ODU5Pj84PT42Nj8zMT8zMUM0Msm7vd/NzpiSx56Y0Xx7uWFgjFVWcP///////3qDvJWU2G91vnJyvnt+ + wldtkP///////v///4WIv11jjlNajFBSiDM7ai4xXjQzWzEuVTQuVzsxWzwwThkYLBYYKhcXJxsaKhcX + JxgYJjMuLE9PTwAAAHZ1dT8zMT41Mjw2NzU4QD44PTs1Nj8zMT4zLz8zMUA0Msm7vY+KwZSQ0WVhklNV + hWJmm3N3uIyOzoWBwnh1vXZ1vW1usoiHx3mEn/////////////////3+/2Nvn0FJbjM0ViYnSSooTCwr + VSssWDAqUzUqRBcXKRYWKBcXJxwZKBoaKBgaJTMuLU9PTwAAAHZ1dT00MT0zMz03ODU4QD03PDs1Nj00 + MT4yMD4yMD0zMz01NpGOxXBvuUJGdk9VfmtsnoB9r29spHl0sYB/w3h3u2Zlo318vmVqkf////////// + /v///////+j//42r2jg6XSAiQSAgPicmRignUysnUCwnRBgYKhgYKBgYKBcXJxQUIhkYITMuLU9PTwAA + AHZ1dT4yMD00MTw1ODQ3Pz43PD01Nj0zMz4zLz4zLz0zMz0zObiz+Kqm+Kym/ci+/8a7+Y2JymhprV5d + nXl6xG9vq2tnok9OgFlZd29zpP/+/////////////+j//42x4X6fzJi14R0eOh0fPh0fTx8eRh8gOhcX + KRkZKRsbLRsWJSIaKyYlNTMuLU9PTwAAAHZ1dT4yMD00MTw1ODQ3Pz02Oz01Nj8zMT4zLz4zLz0zMz00 + N3l2rqaf9LKs/p6d/aah/H9+zkpUoXFwwGNntqSc4oiBumZjlEhIbFZbfFJSZGdtgPr+/+n+/7Lt/GOD + riEqSw4YNhsdOyIdPSoqWiMhRSIfOBkZKRYaLBsbLRoUJR4eLCAgMDQuLU9PTwAAAHZ1dT4yMD00MTw1 + ODQ3Pz02Oz01Nj00MT4zLz4zLzwzMD0yND0yQpSP3qul/qWh/6qm/4OC2GFls4uK4KOg9sO796Sb3m1p + nVRSfEREaEVJbEhNYkRRZ0JQbEFPczY/YCUmQh8dOx0bOTErTkNJdjUyS1ZUcUY/WjgyQzkxPCUhLSAa + KyIeMTMuLE9PTwAAAHZ1dTkyLzwzMD41ODQ3Pz02Ozw0NT4yMD4zLz4zLz4zLz4yMD4zNlJJXpyV2Lqy + /7ex/omK4lthtICAzKSf9JSV8Kmj8JePznVvpG1pnUVEbjQ2VDM6Wy83VS8yUSgoUC8uVTQzWjAsTzIx + WXaVyoF9rkxHZzs1Tk1HYG1oal9ZXiwjLSIeMTQuLE9PTwAAAHd2djwzMD0zMzw1ODU2QD02Ozw0NT4y + MD4zLz4zLz4zLz4zLz8zMT8yOl1Zdqae37Ss8nx7w2dqtYmGzrGr+pyZ7o6L042LzYWDxXt5u3BmkEtG + ZjQvSjEyTjAuTB8ePjk3W0Q/ZkM/aUhFc5S97nl2pEtGZkI8W52SlKeipJWRl4aFh0dCRDQtLE9PTwAA + AHd2dj4yMD0zMz00NzY1Pj01PDw0NT00MT4zLz4zLz4zLz4zLz4yMD8zMT0zOT0yQpWMt25ro2trp2dp + qqul9KWg742J0YuHyIiGwoOAvn17t3lxmlJNbTMsTSsnRCQhQTQvTkdCb0tIeVtZjaDQ+nd0ojw3V4F7 + jrSrrq6nqqqiqaWhppiZnTQtLFFRUQAAAHd2djwzMDwyMjwyODU0Pjw0Ozw0NT4yMD0xLz0yLj0yLj0y + Lj0yLj0xLz4yMD00MT8zM2VmjGZkkmRhmF9fjZ2a0oyHxZWNwoB8t3l3s357sntxn29mjkxFaDgxVCYl + Rzs6YktIeUpIfGFhoYjK82Jdij84WZuPla+jqbGnra6gpKGWmWpfYTUuLVZWVgAAAHt6ejo0LzwzMDwy + ODUzPz0yOjw0NT4yMD0xLz0xLz0xLz0xLz0yLj4yMD4yMD8zMT0zMz0zM2FhkV9clE1OiFZYgZePuIyD + q3t3qHFtqH97toB6r3hunGdfhEQ9YC0rTz44YUE6ZTk6bFRWlnu5719bhUE7WoJ2fJqPkpuQmJmOlm5g + ZHddVjw2NWNjYwAAAAAAAD0yMD0zMzwyODUzPz4zOzw0NT4yMD40LT40LT4yMD8zMT00MT0zMz4zNT4z + NT4zNj4zNjsyRn54qW1pnV5ckFRXhGhmil1chGNfkGtomoiBrmZeh1hQdU5EaDYxWDk0Wzg0WDE1ZktO + knCk515XgktDYoZ5e4h8fGlaXmdTWFxLTiclO09KSXZ2dgAAAAAAAEA3NT0zMzwyODcyQT4zPTwzNj0y + ND0zMz0zMz0yNDwzNjwzNj8zOTowQF9txYiKykI0Pz8yNH96mXRwoV5bjVZXinJwmlxbjVlXi1ZUglpZ + eVpYdUhJZTo3V0hAaVJFZTAsUCwqVDo4YnWV6FRNck1AWk8/V1hFVlhFVFBEViYlPyUkPmtpaH9/fwAA + AAAAAAAAAEU+PjwzNjMzQTwyPj0zOTwzNjwzNjwzNj0zOTYvRHeN5Xt2qT81Oz4zNj80N0AzNT8zMz8y + MIV+qYF7pG5pnGpnmHl2pGFdjmNei2JbgEQ/Xzk0Uzw1Vj1BWU9JXEk9WUxBW0ZCW3N/3zw4VURBV0VC + WEA9UyAiQCQjQyknRWdlaX9/fwAAAAAAAAAAAAAAAAAAAD0zOTYzQj00QT0zPzwzPXyEqXWX4zItSDwy + OD4yOD4zNj4zNT0zMz8zMz8zMT8yMD8zLz0zM1tahmJdkFtZh3RvlnRvomNekVZTgUlBaUE6Wzw1Vjk0 + VDs2UTw2T0JAXkg9XV5cvCQlSyQnTSYtVCgqTCosSzIwTWppbgAAAAAAAAAAAAAAAAAAAAAAAAAAAHNx + ckxLUnqHnWJ4okVBTUtCR0lBRUlCQ0lCQklCQkxCQktDQUtCQEtCQEtCP0tCP0pCP0tDP0pDP1xZalpY + cFRSamtkfHVvg2pkeGJYck5HXUdBVUVAU0Q/UElDVExEWExFWkVBdTo6UUdJaElJZklJZk5LZwAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAtbCyAAAAAAAAAAAAAAAA/////8AAAAGAAAABgAAAAYAAAAGAAAAfgAAAD4AAAAGAAAABgAAAAcAA - AAHgAAAB4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH8AAAD/AAAA/gAAAPwAAAB4QAAAOeAABxvAAAPfgA - AD/4wAIf8YfjH/OP8Z/zn/nP97/9z////+8oAAAAMAAAAGAAAAABABgAAAAAAAAAAABIAAAASAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAA + AAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAA + AACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAA + AAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAA + AACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAA + AAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAA + AACAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADgAAAAAAEAAPAAAAAABwAA8AAAAAAfAAD///////8AACgA + AABAAAAAgAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+fn53d3dr + a2teXl5UVFRNTU1LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL + S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL + S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMTExRUVFZWVlkZGRxcXF8fHx/f38AAAAAAAAAAAAAAAAAAAAA + AAB9fX1xcXFaWlpCQkI0NDQuLi4rKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq + KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq + KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotLS0xMTE6OjpOTk5nZ2d5eXl/f38A + AAAAAAAAAAAAAAB/f39ycnJUVFQ1NTUjIiIeHBwcGhocGhkcGhkcGhkcGhkcGhkcGhkcGRkcGhkcGhkc + GhkcGRkcGRkcGRkcGhkdGhkdGhkdGhodGhodGhoeGxoeGxoeGxoeHBsfHBsfHBsfHBwfHRwfHR0fHh0f + Hh0fHR0fHRwfHRsfHBsfHBseGxoeGxofGxofGxofGxofGxofGxofGxofGxofGxogHBshHx4hICAjIyMt + LS1FRUVmZmZ7e3sAAAAAAAAAAAAAAAB6enpfX18uLCwWFBQUEhEUEhEUEhEUEhEUEhEUEhEUEhEUEhET + EhEUEhEUEhEUEhEUEhIUEhIUEhIUEhIUEhIVExIVExMVExMVExMWExMWFBMWFBQWFBQWFBQWFBMVExMV + ExIVExIVExMWFBQXFRUWFBQXFRQYFhUYFRQXFRMXFBMWFBMWExIWExIWExIWExIWExIWExIWExIWExIW + ExIWExIWExIfHBoiISEsLCxLS0twcHB/f38AAAAAAAAAAABxcXEvLS0UEhIUEhIUEhIUEhIUEhIUEhIU + EhIUExIVExIVExIVExMVExMVExMVExMVFBMVFBMWFBMWFBMWFBMWFBMVExMVExMVExIVExIVExIWFBMX + FRUcGhohIB8mJSQtLCw1NDQ9PTxCQUFJSEhAPz8nJSUXFhUWFBQYFRUYFhUYFRQXFRQXFBMWFBMWFBIX + FBIXExIXExIXExIXExIXExIXExIWExIaFxYiISE4ODhiYmJ8fHwAAAAAAAAAAABUVFMVExIVExMVExMV + ExMVExMVFBMWFBMWFBQWFBRFQ0NUU1JUUlJTUlIkIiIUEhEUEhEVExM2NDRXVVVYV1dbWlpdXFxhYF9k + Y2NqaWlvbm5zcnJRUFBIR0dgYGB2dnZzcnJvbm5paGhjYmFJSEhEQ0NHRkZEREMvLS0fHR02NTRUU1JW + VFNWVFNWVFNVU1JGQ0IXFBMXFBMXFBMXFBMXFBIXExIXExIXExIeGhowMDBXV1d3d3cAAAAAAAB/f38s + KioWFRQXFRUXFRUXFRQWFBQVExMUExJEQkLg4OD////R0dHEw8P///////+hoaFJSUhDQ0KdnJz///// + //////////////////////////////9dXFwfHR2FhIT///////////////////////+dnZ0pJyYnJSU1 + NDRFREScm5v////////////////////////g4OBlY2IYFRMYFBMXFBMXFBMXFBIXExIXExIrKilRUVF0 + dHQAAAAAAAB+fn4bGhkYFxYdGxsgHx8jIiIpKCcvLi5OTk7y8vLZ2dlra2tJSUhJSEhHRkaampn///+t + ra0sKyo0MjLh4eHh4OAoJiUWFhYRFBYRFRcSFhgTFhkTFhkUFhkZGBiEgoL///8YFhUYFhYZFxcmJSSY + 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 + c3MAAAAAAABzcnIYFBMYFBMYFRUXExQeKCwcHyUXFBQnJCTR0NDw7+90cnEnIyInIyJ0cnHw7+/g4N8n + IyIXExImIiBXVVdjYnBdXW1WVmRSUltVVWCEg4v///+UlZ0nJjkqKj+Hh5L///9XV2JXWGVgYHFxcYDF + xcv///+lpq4aGi0WFykZGiqGhY3///9hX2hcWmFYV19hYGfAwMT///9fXmcPDRgRDxUUEhQXExIaFBEZ + ExEZExEpIR5PT09zc3MAAAAAAABzcnIYFBMYFBMXFRUXExQeKCwcHyUXFBQYFRQnJCOjoaD///////// + //////+ioaAnIyIYFBIXExJVUlH///////////////////////////////////8wLkAtLEGIiJP///// + //////////////+2tr5tbXsiIjYXGS0KECQXGCmFhYz////////////////////BwcRrb4EPDRoQDhkP + DhcPDhQSDxQWEhMZExAZExEoIR5PT09zc3MAAAAAAABzcnIYFBMYFBMXFRUXExQeKCwcHyUXFBQYFRQY + FBMYFBMYFBIYFBIYFBIYFBIYFBIYFBIYFBIYFBIXExIXExInJTQkJDoaGy8aGiwaGisYGSwaGy8gIDM1 + M0QwLkEhITQdHSwODxwJDRsPGjQQGjURGjMUHDQUGjIMFSsIECUNECEPEB4LDhshITEmIy4ZFiATDxoW + FyUgJEAODBkQDhkPDRgPDRURDhQREBQZExEZExAoIR5PT09zc3MAAAAAAABzcnIYFBMYFRMYFRUXExQe + KCwcHyUXFBQYFRQYFBMYFBMYFBMYFBMYFBIYFBIYFBIYFBIYFBIYFBIYFBIXEhAiICooKD4cHTEdHTEd + HjIeHjMgIDUkIzc6N0gvLUAiITUXGCYIChYJCxcRGzcQHDoOGTUMFi8OGDINFy8KEycIDh4ICxgGCRQf + Hy0lIi4XFBwTDxoWGCceIj0OCxkPDhkPDRcPDRUQDhQREBUYExIZExApIR5PT09zc3MAAAAAAABzcnIY + FBMYFRQYFRUXFBQeKCwcICUXFBQYFRQYFBMYFBMYFBMYFBMYFBIYFBIYFBIYFBIYFBIYFBIYFBIXExEa + FhckIzQiIjkfHzQeHzMgIDQeHjIoJzk6N0kqKT4gIDMUFSQFBxIMDhUWHTEUHDMSGzUPGTQSHDYPGDEK + EicIDRwHChYFBxAfHyoqJzMZFB0UEBoXGikdIDkNCxgQDhkPDRgPDRYODhQREBUYFBIZExAoIR5PT09z + c3MAAAAAAAB3dnZBNzRBODVAOTg+NTZRbXhLVmQ+NjdAODZBNjNBNjJBNjJBNjJBNjJBNjJBNjJBNjJB + NjJANTFANTFANTE/NC5DOj1LSGZQUYRVV41RU4pISn58d6eVjsVjYp9aWYguMVYbIDhkb4Rxfplve5FG + U3dDU4FFTmwpOm03R3EwNVAdITkNECJTUWx9dJVBNlE2KURDT3dLU5AjHD4rJkQrJkEqJDsmJTUvLDdE + NTBENCw9MS1PT09zc3MAAAAAAAB3dnZANzRANzRAODg9NDZQbXhLVmQ+Njc/ODY/NjNBNjJBNjJBNjJB + NjJBNjJBNjJBNjJBNjJANTJANTFANTFANTE/NC4+My1BODxFQFBHSGxOT4CQiryEf7thYJpbWYQhJEZT + XXSKmrh/japXYIEoNGhhb5ZRWGs/Rl52gZNFSWEoK0ESEyBMS2eEfKA+NVEzJkJKVoBIT4gnIEAuKEUu + J0ArJTopJzczLTNGNSxFNS03MC9PT09zc3MAAAAAAAB3dnZANzRANzRAODg+NDZRbXhLVmQ+NjdAODZB + NjNBNjJBNjJBNjJBNjJBNjJBNjJCNjNBNTRBNTRBNTRBNTNBNTNBNTJBNTJANS9ANC06LytpYn2ak8lv + baxfX5ROTHYiJkiDkq59i7hpc50nNGofOIxca5ZIVHMwQG+Cj6RJT2oiJj8NESVCRGaHgKk+NlIvJD9M + XotIS4IsJEMwKUYyKUEuJzsqJzY3MDBDNzE0MDQvLC9PT09zc3MAAAAAAAB3dnZBNjRBODVBOTg+NTdR + bnhLVmQ/NzdBOTdCNjRCNzNCNzNCNzNCNzNCNzNBNjRBNzZANjU/NTRBNzhBNjdBNjZCNjZCNjVCNjVB + NTRBNTaNg6WPicJfYKBgXo84OGAnMFJ5ia01PG4lK1MbJFkvRK0+T444T5AqRIp0gZpGTWUXGjIMEio5 + PmGIga1COlYtIj5RaJdER3otJEMvKEQyKUAtJjknJTIzMDM1NDoxMTgxLjBPT09zc3MAAAAAAAB3dnZC + NzRBODVBOTk+NTdSbnhMV2Q/NzdCOTdCNzRCNzNCNzNCNzNCNzNCNzRCNzdANThFP05OSGVANTtBNDo+ + MDVBNjpCNzpCNzo8MTFhWG6Nib5qaKVbWpFNSnonKV09Q4JgZK45Noc9OIRIQZRGSKUgMoIfMnMhNG1j + b4s4PE8OESYPEyoyNVGJg7JLQl8xJD9WcKFBQ3UvJkMyKkUwJz8qJDcoJzEuLTYtLTcsKTQsJS5PT09z + c3MAAAAAAAB3dnZCNzVBODVBOjk+NTdSbnhMV2NANzdCOThDNzRCNzNCNzNCNzNCNjRCNzZCNzs9MjlZ + X5FRSXs7LTpJSV5aaoxEPk8+MTU8MDhLQlh+d7Z0csdkY7pkYbRcW65UVKlLTKE6PI0wL3MdHUsSEzQZ + HjQnLlIZHDwVGTU3PlIdHzEQEiUOESMtLkaRibVVTGkyJUBbdqg+P28vJkIyKEMvJjwqJjgrKjMsKTMo + JzQnJTMsJS5PT09zc3MAAAAAAAB3dnZBODRBODVAOTg+NTZRbXdLVmQ/NzdBOTdCNzRCNzNCNzNCNzNC + NzRBNzhANTxHQ1tmbLZKTnJdcqBphsNjbrJZUItYT4thWZh9d8t4ddZiX7VJSpJRWIuBjbFjbJUUG0Y6 + RnVlb5pJUGsmKUIWFSgjJDMiJDQZGScREyEQEiITFCMQEh4oKT6Nh7JcUnIvJkJffa87PGYuJkEyKUEu + JzstKjcoJDAnIi8qKDMoKDMtKS9PT09zc3MAAAAAAAB3dnZCNjRBODVBOTg+NTZRbXZLVmM/NzdBOTdC + NzRCNzNCNzNCNzNBNzVBNzk9MDldcZh4neh1kd9mcMheVqRhV55ZUotZUoGDfbh6d7ZNTYEtL1YfKlF+ + jaKSo8NcZY4sMVaNnMWMmLp+i6VSWW4bGS8PCx0gIC0iIy4ZGyYWGCIaHCUbHSQoKzqAe6hYT3AsJ0Rk + g7Y3OGAtJUAvJz4qJTctKjYkHy0gFyklHy8oJjMuKi9PT09zc3MAAAAAAAB3dnZCNzRBODVBOTg+NTdR + bXdLV2M/NzdAOTdBNzRCNjRCNzRCNjNCNzVCNzk+MTpWcISBtvZmdsVNSn1BNFE6LTk+ND1pYYZnY5NF + RXUuLVEaHD01PVx/j65vfKU0OV5rdpOfsdOMmbZ+i6FKUmUUESkyNElsdIdgaHlDR1gmJzEcGR8aGB8k + JDNsaZdUSWctK0hlhLs2NFsrJD4sJTsnIjQsKzUgHCkdFicfGCojHS4tKC9PT09zc3MAAAAAAAB3dnZC + NjRBODVAOTg+NTZRbXZLV2M/NzdBOTdBNzRCNjRCNzNCNjNBNzRBNzdBOD0/Mj9JTWpUYYdgfKFnfLNY + XIVIRGQ6OFouLE0qKEolJDsuOV8/Upk2TJoiM3kxP3ugsNKrvNmXpr5we44wM0QdGzJ/jKOJl6p6hpZg + Z3o9QFkcGSwRCRchHTBhX4lHOlcxMlBohsM3M1YrJT0sJTonIjEpKDEbFSUdFicdFykgGSwqIy1PT09z + c3MAAAAAAAB3dnZBNjNANzRAODg9NDZQbXZJVmM+NjdAODZCNjRCNjNCNjNCNjNCNjNCNzVBNzhBNz0/ + NDw9MTs9MjxEQEtUY3peYZIyMlMuLkwlJEIlKkQrRIU0U6Y1UqgyTaIwS5tEV5hjc6BzgqQ+SW4gKE0t + NVV5hp2JlaZ/iJhiaXs6PlgbFi4VEiMyNUpZUnc+L0k7PFtpiMg8NFQuKD4pJDYjIS0jHyocFCYbFScb + FSgfGCwpIyxPT09zc3MAAAAAAAB3dnVANjNANzRBODc9NDVQbXZJVmM+Njc/ODZANjRBNjJBNjJBNjJB + NjJCNjNCNjVBNzZBNzhBNjpBNjpANDY+MTR0caZiXo0yMVMkKEcbIUUhNGokQIIqSZgvT6M1WLIxUKgm + QIooQIYtRo8tR44tRowmN247RGZlboJZX3IvNEseHzEcHytDQltORF5FMklCRGNphsg3LU8sKTwjITEk + IywgGiYcFicaFCcaFSgeGCsoIyxPT09zc3MAAAAAAAB3dnU/NTI/NjNAODc9MzVQbHZKVmM+NjZAODZB + NTNBNjJBNjJBNjJBNjJBNjJBNTJBNTNBNjRBNjRBNjVBNjU+My9bWYOgmt99d7JAPmYiI0gZH0YeMGUh + OnskPoQvS5k2WK8tTp4rS5gtTJkvSpQ0UJwyTZUkN3IcKFQeIkAaGjQeITQwMkVUUHVDNU1INUxCR2ln + gMM0JkkvLj0jIS8lJS8cGCcbFCcaFSgaFSgeGCsnIitPT09zc3MAAAAAAAB3dnVANDI/NjM+NzY8MzVP + bHZKVWM+NTZANzZBNTNBNjJBNjJBNjJBNjJBNjJBNjJBNjJBNjJBNjJBNTNBNTNANC9MSmh6fMOwqO2g + l9VgW5I8OmMmJ1AcI1AVIk4TJFUZL2keOXggPH4hOnkiOHMkO3UhOXAaLlwXHkUSFTMVFS8sK0tXU3tN + Rmk9MEhAL0pBSW5jergxJEYxLj4gIC0bHSoZFiYaEycZFCcaFikbFiklISpPT09zc3MAAAAAAAB3dnVA + NTI/NjM/Nzc8MzVPbHZJVmM9NTZAODZANjNBNjNANTE+Mi8+Mi8+Mi9ANDFBNjJBNjJBNjJBNTJBNTNA + NC9MR1xkaKmHhtGknemdl+GIgsV0b6tcV4lPTHRJR2lCQmI4OmA2PmswOmcqM1wnLlEoLU0oKkYnJ0Et + K0ZAPVxXUXhEPV49M00+MUwxJkZASnFecbAuIkQuKj4eHSwYGCcYGSgbGCoaFScaFSkYFCckIClPT09z + c3MAAAAAAAB2dnU/NTI/NjM+Nzc7MzRQa3VJVWI9NDU/NzU/NTI/MzFEODZMQkJNRENLQUE+NDI8MS48 + MC0+Mi0+My9BNTFCNzBQS1xpbrRmbLF1ecCLi9aUkt6ZleGVkNiZkteclNOVjsiDfbh7dq6AeatzbZ9V + VIRdWoZgW4ZZVIFPSW5GQWNBO147M088MUs4LkosI0NFT3hdaqkvJEQuKD8cHCwXGSgbHCwdHS8cGCsb + FioZFSglIytPT09zc3MAAAAAAAB2dnU9NDE+NTI+NjU7MTRPanVJVGE8MzU+NjQ+NDE4LCpvYmTJwMjB + u8K3sbeZkpd7c3RaU1hOSVpQTGNDPk9DPT5XU2FxeMNvecJqd7xncbhla69zdrl9fsh7fMd9fcZ1dr5u + cLVmaaxmaKlYXJxHTYtVV5FTVIpRUIROSnhHQ2s7Nlo3ME4yK0guKEcuJkhNV4RZYaIzJkQxKkEdHC4Y + GSscGywaGiwbGSwZFCgbGSsmJCxPT09zc3MAAAAAAAB2dnU9NDE+NDE+NjU7MTRPanVJVGE8MzQ9NjQ+ + NDE9MS5IOzrJu8Ln3uTZz9TUycvAtrl/e5d6d6Nyb5pdWoJGRV5bW27N0Ovs7vnn6fXQ2uuAkMdYX6lT + W6FRWZpWX5xgaalia7FjbKxeZqNYX5xUW5VVWZBOUYdMToJKSnxCQW03Nlw0MVU5NVs7OF43LVFOWYxX + Wpw3KUY0K0McHC0ZGSoYGSkZGSgaGywZGisYGSsjIitPT09zc3MAAAAAAAB2dXU+MzE+NDI9NTU7MTNP + aHNIU2E8MzQ+NTQ+NDE/MzE4KymTg4Xs3ePk2t/bz86qobmNiL2IhLZta5hcWodZWH66usX///////// + ///a6vSAi8djaLBeZbJlbLhkaKdod6+QotWDjc9pc7NXXpNZX5RcYpxXW5VLToJBQnFCQ3BJSHZJSHZI + RnQ1MlgtJkxNWpBSU5M2KUc3LUQcHC0YGSkWFycZGCgZGSkYGCgXGCkjIipPT09zc3MAAAAAAAB2dnU9 + NDE9NDI+NTU7MTNPZ3NIUmA9MzM/NTQ/MzE/MzE9MC5NPz7Etbjr293LvsWclsmcl9CFg7pwbKNaWIJt + bYb5+vr////////CzOOMkc19fsRucrlqbbpydb5rb6awwdT////19v3h4/OprM1pb51VXJBYXpZQVIlG + Sn5ARXs+Qnc6PGs0MlsuK1EsJk1OXpFMToo5LEoyKz8XGCoXGCkXFycZGSgZGCgXFycZGCcjIihPT09z + c3MAAAAAAAB2dXU/MzE+NTI+NTU8MTJPZ3NIUmA9MzM/NTU/MzI/MzBAMzE4Kyl1Z2fbysm6rcCcmNOZ + lNGBfrxpZ5dNTXOAgpn+///U1uysrdiPj8yCgsh2ecF4eMBtbrd1d75ocanY4er////////////////m + 5/WZncZVXo9LUX5RVIU3O2kmKlMqLFQyMVgvLVQnJEtNY5RIR381KkUuKDsVGCkXGSkXFycaGikZGSgZ + GSgXGCYjISZPT09zc3MAAAAAAAB2dXU+NDE9NDI9NTU6MTNPZ3NIUmA7MjQ8NTQ+MzE+MjA+MjA+MjA7 + Ly+Qg4Oso8GMicSGhMhoZ55VV4RPU4Nla6F+g7Zxc6yAfbiHhMN6eL98esF1dLltbbB5ebxscqrQ1N3/ + ///////////////////////F0ONqfadDSXExMVInJ0cnJkYoKEkrK1EnJ1FPapw/P3IxJ0MpJDcVFigY + GCkXFycaGSkYGCcXGCUXFyMjISRPT09zc3MAAAAAAAB2dXU9NDE9NDI9NTU7MTNPZ3NIUmA8MjQ9NTQ+ + NDE+MjA+MjA/MzE7Ly9FOz6TjbmOjM9mZqdbW5JVV45nZ6Fycax1c6hyb6Rua6F4dLB8eb1/fMN5d7px + b6x6eLhwcq2PkrD////////////////////////////C6f92lcRQYYcrMFIfHj0jIT4mJUYkJEpQbp43 + N2gsJUIhIDMWFygXGSgYGSgaGSkYGSkXFyUWFSApJitPT09zc3MAAAAAAAB2dXU+MzA9NDI9NTU7MDNO + ZnNIUmA8MjM9NDQ9MzE+MjA+MjA+MzA9MjI8MjmVkMino+mQjNmbluq3rfLCt/i+s+2eltBzcbFkYpxh + X5tzcrlxb7Nwb61ua6RbWIxcXIljZZWgosb4+P3////////////////////J8/+LteWBpNKEos4zOVsb + GzceHj0YGkBOcaMtLl4kIDweHjAWFygYGSkbHCwaGiodGSkgHSwkJS8sKS9PT09zc3MAAAAAAAB2dXU+ + MjA9NDE9NDU6MDJOZnNHUWA7MjM9NDQ9MjE+Mi8+Mi89MjA9MjI6MTaDf6+loeykoPuvqv/Buf+9tf+5 + sPaSjdNmZ7BUVppiY6tvcLxnaK17d7Z4c6pdW4xJSXBPUnNSVXqAgZvR0tz////////////0//+47P+F + q9x5mceTs94/SmkVFjMdHDsaG0FTeKwmJ1QcHTceHTAVFiYZGikbGywaGCkfFygiHSwkJDIqKC9PT09z + c3MAAAAAAAB2dXU+MjA9NDE9NDU6MDJOZXNHUWA7MjM9NDQ9MzA+Mi8+My8+MjA+MzE7MTNFPk55dKqk + oPStqf+sqP+jof+infmBgNVXXKxTWKN4ecdtb8CemeK2rOaUjcVvap5SUHtISGtMTm5KTWdUV26Hi5um + sbq0z9SbxtZqirJNX4Y6RGUvNFMcHjwZGDccGDknJktZfbMnI0wfGzUlIjUgHy8gIC8gHi0bFiYaFCYf + GioiHi8tKTJPT09zc3MAAAAAAAB2dXU+MjA9NDI9NDU6MDJOZXNHUWA7MTM9NDQ9MzE+Mi8+My8+Mi8+ + MzA9MzM1Ky1hWHqfnO2nofiqpv+opP6opP+OjOVnartjZ7Z1d8Z9ftbEu//DuvmjnNx1calcWYdRTnhF + RWpESGpESmdBSGE/S2NAUGs/TnE6Q2gvNVYjJUEfHTsdGjkgHT0qJkg3Nl1ihbxAPGRGQmBHQl1AO043 + MEE0LTwuJzMdFyYeGCkjHjAuKzVPT09zc3MAAAAAAAB2dXU9Mi88MzE8NDU6LzFOZXNIUWA8MTM9NDQ+ + MjA+Mi89Mi89Mi8+Mi8+MzE7MTFGO0qDfrebluWuqP67tP+0rv+Wle1vcsVrb8F0d8iRj+ioo/ygnfSs + pe2UjcZybaBpZJVaWIZGRW04O102Pl46Q2M6Q2E4PlwvNFMpLU8nKEsqKU4sKUwuKUwzLlVGSXV1ltJ8 + eKxnYYdGQV07Nk1CO09NR1VJREw7NTwiGyogGy8vKzdPT09zc3MAAAAAAAB2dXU8MzA9MzE9NDU6LzJO + ZXNHUWA8MTM9NDQ+MjE+My8+My8+My8+My8+Mi8/MzI6LzFHPU50cKOinOO8s/+wqvyKi99pbsBna7p4 + esqhnfGin/iSkeqYleKXktaIhMJ8eLN1capgXItEQGE2NFExNFE0OVc0NVMuLk4oKUw0Mlo9OmI9Ol46 + Nls+OGNcYpWCn96Beq9bVXs9OFRBO1N+dn2TjY6Df4JybnJVUFYzLTgtKTNPT09zc3MAAAAAAAB2dXU8 + MzA9MzI9NDU6LzJOZHJHUGA7MTI9NDM+MzA+My8+My8+My8+My8+My8+MjA+MzM7MDM9NUVeWoCim9ap + oud+fMJub7Ztb7Z0dL2inu60rf6ZleWLiNGMic2LiMmFg8V7ebt9d6l0bJFUTW84M08uK0gyMEwtKUci + IEAyL1FAPGJFQGhDQGpPSntveLSEmt52cKBTT3M7N1ZpY3almpuupqioo6iinqOdm59/fH5BPD5PT09z + c3MAAAAAAAB3dnY+MjA9MzI9NDU6LzJNYnFHT187MTI9MzQ9MzE+My8+My8+My8+My8+My8+My8+MjA+ + MzI9MjU5LjZQSF2FgKh5dqxtaqRzca9xca6PjNK3r/+aluOKh86NicqJhsSHg8CAfbt/e7aAeaxwaJJO + R2o3ME8vKUgqJkQkIUAuKUk/O2JJRXNIRXZXU4l/isiEltxybJtIRGhGQmGfl5+3rrGwqKytpaquqK+s + qK6np6xjXVxPT09zc3MAAAAAAAB3dnY9MjA9MzI9MzQ6LjJNYHFHTl87MDI9MzM9MzA+Mi8+My8+My8+ + Mi8+My8+My8+My8+MjA+MzI+MzQ6Li9COkFnZYhoZphjYploZp1saqCknt+cltuJhseQiseKhcGDf7uC + frmCfbV+eKt1bZljWoFIQWQ4MlQqJ0gnJUQzMVNFRHBLSXlLSn1bWZSAjciBktdpY49CPGBcVnavo6e6 + r7OwpKqsoKSupKmqo6iKh45XTEtRUVF0dHQAAAAAAAB3dnY8Mi88MzE7MzQ5LTJNX3FHTF86LzM9MjM+ + MjA9MS89MS49Mi49Mi49Mi49Mi49MS8+MS8+MS8+MjA/NDE8MCxDPEVoZ5Jtap1WV4xSUoVubJmTjb+X + kMaWj8GJg7h4da91c7B8eLR8d618dKN2bJVhWH1IQWQ1MVQvLVA7OF9GQ3JHQ3RERHdYVpJ9i8Z+jdFh + WYVAOVtdVnGcj5OvoqauoaWsn6Sjl5yPhYp1ZmdMPT1WVlZ3d3cAAAAAAAB7eno8My88MzA7MzQ6LjJN + XnFHS187LzI8MzM+MjA9Mi89Mi89Mi89Mi8+Mi8+Mi8+MjA+MjA+MjE+MzE+MzM+MzM7MCxMRlpta5tj + YpdHSYNSU4lnZo+HgaeHf6V/eKBwbJ5saaJ9eLOIgruDfLB1bJlsY4pTS24+OFw0MVY4NFw/OWI9OGI1 + OGxPT457icZ6h8peVoBDPF5jWm+Shomfk5ehlZuWjJR+cXduXF1lT081LTZgYGB7e3sAAAAAAAAAAAA9 + MjA9MzE8MzQ6LTJNXXFHS187LzM9MzM+MzA+My8+My8+My8+MzA+MzE9MzE9MzI+MzM+MzM9MjI8MC88 + LzA9MztIQ1hoZ5Z6dqdva5tgXZNXV4dcXIRuao9mYodeXIZiYI5taZuFfq2DfKlmXodbU3pUS29EPGI3 + Mlk6NFtCOl4zMVc0NmhKS412hsZ5hcRdVX5IQGFiWG2Mf4CJe31+bnJwX2NoVVZRQkksJjs1MTttbW1/ + f38AAAAAAAAAAABANzU9MzI9MzQ6LTNNXHJHS2A7LzM9MzQ9MzI+MzE9MzE9MzI9MzM9MzM9MjM9MTI7 + Ly87MDRFPEtLRmZQUHxgZJtaXI5OSWB3cpx/eKhuaZhkYZFbW4loZ5NdXIxZV4ZaWIZcWoVlY4lvaotk + XoBaVHlRS28/O2E8OF9MQmZCOV0tK1AzMl0/PXRmebh9hsNbVHpIPlxKPlhfTFdnUVVoUVVpUlVFOkgh + IDkhHzlPTVJ6enoAAAAAAAAAAAAAAABcV1c9MzI9MzQ6LTNNXHJHS2A7LzQ8MzU9MzM9MzM9MzQ8MjM7 + MDE5Li89NDtCPVFOTHFgY5xiZqFSUHpFPlZANT88Li85LChfV2eKg65zbptiYJBfXZFraZV3c6FgXY9a + V4hdWodeW4NYVHNJRV5CQFg9PlZCQ2RNSnJVSmhDOl40L1M4MlY7M1ZRZpRgaJ5OR2hPQVxRQlpTQlVZ + RVNXRVM/NUojI0AkI0EtKj93d3d/f38AAAAAAAAAAAAAAAAAAABFPj09MzQ6LTNNXHJHS2E7Lzc9Mjc8 + MTM5LjA6MDVBOkVHRV5YXotjaqBUVYVKSGtHP1M8MTc7Li8+MTI/MjM/MzM+MjA9MS1oYX98eKh0b59r + Z5tmZJVyb5lzb6FgXI5gW4tgW4dTTnRBO1w5NFM7NlQ7N1Q9PFhEQFZIQ1hMQ1lLQ1pDOlNUaZhPUIE1 + MU4uK0kyME8vLUgtK0QoKEIhI0ElJkUrKkhnZWp/f38AAAAAAAAAAAAAAAAAAAAAAAAAAABLQ0U6LTNN + XHNFR144KzM+NkJCQFVQVndhbqBbZJZQT3NLRl5AN0U7LzI8MC88MTE+MzQ/MzM/MzM/MzE/MjA/MjA+ + MixCNzdaV3hjYZJjYJNeXI1eXYd8d6F1b6BjXpBcV4lQTXtGP2ZBOVs+N1k5M1Q4M1M4NFE7Nk4/PFVC + P1tCOFVbb6JFRnsjI0YgIkonLVkkKU8jJkolKEopKkwzMk5ram8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAABzcXFYYGpVX3RYXnVgZ4NVWXNSUWNOSVRIQERIP0BJP0BJQUFKQkJLQkJLQ0JLQ0FMQkBL + QkBLQj9LQj9KQj9LQj9KQT5MREFUT1hcWW5eW3dZV3FgXnVybYN0boRtZXxlXnZcVGxQSV5KRFlHQFVF + P1RFP1JHQVNJQ1VMRVlMQ1hbZodDQ2M4Nk1DQl5GR2VGRmJGRmFKSGJgXWoAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh4ehoaG//////////////// - ////////////////hoaGHh4eAAAAJSAlAAAAAAAA//////////////////////////////////////// - ////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWlVYAAAAAAAAAAAAAAAAAAAAAAAA - AAAAHh4ehoaG////////////////////////////////////////7u7uHh4eAAAAJSAlAAAA//////// - ////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAkYaJUk1RAAAAAAAAAAAAAAAANTA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - ////////7u7uAAAAJSA7AAAA////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvba4dWlsPTg8AAAAAAAAHBkdIR0jAAAA//////////// - AAAAMCyILCh7AAAAAAAAAAAAAAAAAAAA////////////AAAAKiNDAAAAxsbG7u7u7u7u//////////// - ////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAraWrqqKkcmNm - OTE1KSMnGRUaIBsfAAAA7u7u////////AAAAKyiVLCqaAAAA////////////////////////////AAAA - KSJLJiBDAAAAAAAAtra2xsbG7u7u7u7u////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAqqKkyMPFo5mbZF1gOTE1OC80IR0jAAAAtra2xsbG7u7uAAAALCusLCqaAAAA - ////////////////////////////AAAAKSJaKSJLIh0zIx1DAAAAAAAAxsbGtra2xsbG7u7u7u7u//// - ////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsamsyMPFkYaJU0hLKSMnIR1K - AAAAtra2tra2xsbGAAAAODW3MC6cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCBqKiNVKiNDIR1c - JSEra2FkAAAAAAAAtra2xsbGtra2xsbG7u7u7u7u////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAAAAAAAAAAAd3N2AAAAAAAAAAAAAAAAAAAAAAAAqqKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA////////AAD//wAOAAEAAP/+AAIAAQAA/vwAAAABAAD+eAAAAAEAAP4w - AAAAfwAA/gAAAAAfAAD+AAAAAAcAAP8AAAAAAwAA/wAAAAABAAD+AAAAAAEAAP4AAAAAAQAA/AAAAAAB - AAD8AAAAAD8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAA - AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAB8AAPgAAAAAHwAA+AAAAAAf - AAD4AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD4AAAAAB8AAPAAAAAADwAA4AAAAAAHAADDgAAAAcMAAMfA - AAAD4wAAn4AAAAP5AAD/gAAAAf8AAP8GAAAB/wAA/w4AAGD/AAD+HhAIcP8AAP48H/w4fwAA/Dw//jh/ - AAD8fH//PH8AAPz8//8+fwAA/Pz//75/AAD9/f//v38AAP///////wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAA/AAAAAAAAAB4AAAAAAAAAHgAAAAAAAAAOAA + AAAAAAAA4AAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAA + AADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAA + AAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAA + AADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAA + AAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAA + AADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAA + AAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAA4AAAAAAA + AADgAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAP4AAAAAAAAD/wAAAAAAAA//////////////////////w== </value> </data> </root> \ No newline at end of file diff --git a/Source/Plugins/GZDoomEditing/General/UndoGroup.cs b/Source/Plugins/GZDoomEditing/General/UndoGroup.cs index 0e2a6d200..a805fc1ef 100644 --- a/Source/Plugins/GZDoomEditing/General/UndoGroup.cs +++ b/Source/Plugins/GZDoomEditing/General/UndoGroup.cs @@ -40,5 +40,6 @@ namespace CodeImp.DoomBuilder.GZDoomEditing public const int SectorHeightChange = 5; public const int ThingMove = 6; //mxd public const int ThingRotate = 7; //mxd + public const int SurfaceBrightnessChange = 8; //mxd } } diff --git a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs index 32a8d0cc6..9305f33e7 100644 --- a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs +++ b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySector.cs @@ -244,14 +244,18 @@ namespace CodeImp.DoomBuilder.GZDoomEditing float deltaz = General.Map.VisualCamera.AngleZ - dragstartanglez; if((Math.Abs(deltaxy) + Math.Abs(deltaz)) > DRAG_ANGLE_TOLERANCE) { - mode.PreAction(UndoGroup.TextureOffsetChange); - mode.CreateUndo("Change texture offsets"); - - // Start drag now - uvdragging = true; - mode.Renderer.ShowSelection = false; - mode.Renderer.ShowHighlight = false; - UpdateDragUV(); + if(General.Map.UDMF) { //mxd + mode.PreAction(UndoGroup.TextureOffsetChange); + mode.CreateUndo("Change texture offsets"); + + // Start drag now + uvdragging = true; + mode.Renderer.ShowSelection = false; + mode.Renderer.ShowHighlight = false; + UpdateDragUV(); + } else { + General.ShowErrorMessage(BaseVisualMode.TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } } } diff --git a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySidedef.cs index 72cc5ea4f..e44bfad5c 100644 --- a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySidedef.cs +++ b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualGeometrySidedef.cs @@ -861,14 +861,18 @@ namespace CodeImp.DoomBuilder.GZDoomEditing float deltaz = General.Map.VisualCamera.AngleZ - dragstartanglez; if((Math.Abs(deltaxy) + Math.Abs(deltaz)) > DRAG_ANGLE_TOLERANCE) { - mode.PreAction(UndoGroup.TextureOffsetChange); - mode.CreateUndo("Change texture offsets"); - - // Start drag now - uvdragging = true; - mode.Renderer.ShowSelection = false; - mode.Renderer.ShowHighlight = false; - UpdateDragUV(); + if(General.Map.UDMF) { //mxd + mode.PreAction(UndoGroup.TextureOffsetChange); + mode.CreateUndo("Change texture offsets"); + + // Start drag now + uvdragging = true; + mode.Renderer.ShowSelection = false; + mode.Renderer.ShowHighlight = false; + UpdateDragUV(); + } else { + General.ShowErrorMessage(BaseVisualMode.TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } } } diff --git a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualMode.cs b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualMode.cs index e18f23a4e..5e1c8377e 100644 --- a/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/GZDoomEditing/VisualModes/BaseVisualMode.cs @@ -50,7 +50,9 @@ namespace CodeImp.DoomBuilder.GZDoomEditing public class BaseVisualMode : VisualMode { #region ================== Constants - + //mxd + public const string TEXTURE_OFFSET_CHANGE_ERROR = "Texture offsets cannot be changed in this mode if the map is not in UDMF format.\nPlease use Visual mode to change them."; + // Object picking private const float PICK_INTERVAL = 80.0f; private const float PICK_RANGE = 0.98f; @@ -1427,73 +1429,105 @@ namespace CodeImp.DoomBuilder.GZDoomEditing [BeginAction("movetextureleft", Library = "BuilderModes")] public void MoveTextureLeft1() { - PreAction(UndoGroup.TextureOffsetChange); - List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); - foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(-1, 0); - PostAction(); + if(General.Map.UDMF) { + PreAction(UndoGroup.TextureOffsetChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(-1, 0); + PostAction(); + } else { + General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } [BeginAction("movetextureright", Library = "BuilderModes")] public void MoveTextureRight1() { - PreAction(UndoGroup.TextureOffsetChange); - List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); - foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(1, 0); - PostAction(); + if(General.Map.UDMF) { + PreAction(UndoGroup.TextureOffsetChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(1, 0); + PostAction(); + } else { + General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } [BeginAction("movetextureup", Library = "BuilderModes")] public void MoveTextureUp1() { - PreAction(UndoGroup.TextureOffsetChange); - List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); - foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, -1); - PostAction(); + if(General.Map.UDMF) { + PreAction(UndoGroup.TextureOffsetChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, -1); + PostAction(); + } else { + General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } [BeginAction("movetexturedown", Library = "BuilderModes")] public void MoveTextureDown1() { - PreAction(UndoGroup.TextureOffsetChange); - List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); - foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, 1); - PostAction(); + if(General.Map.UDMF) { + PreAction(UndoGroup.TextureOffsetChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, 1); + PostAction(); + } else { + General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } [BeginAction("movetextureleft8", Library = "BuilderModes")] public void MoveTextureLeft8() { - PreAction(UndoGroup.TextureOffsetChange); - List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); - foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(-8, 0); - PostAction(); + if(General.Map.UDMF) { + PreAction(UndoGroup.TextureOffsetChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(-8, 0); + PostAction(); + } else { + General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } [BeginAction("movetextureright8", Library = "BuilderModes")] public void MoveTextureRight8() { - PreAction(UndoGroup.TextureOffsetChange); - List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); - foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(8, 0); - PostAction(); + if(General.Map.UDMF) { + PreAction(UndoGroup.TextureOffsetChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(8, 0); + PostAction(); + } else { + General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } [BeginAction("movetextureup8", Library = "BuilderModes")] public void MoveTextureUp8() { - PreAction(UndoGroup.TextureOffsetChange); - List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); - foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, -8); - PostAction(); + if(General.Map.UDMF) { + PreAction(UndoGroup.TextureOffsetChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, -8); + PostAction(); + } else { + General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } [BeginAction("movetexturedown8", Library = "BuilderModes")] public void MoveTextureDown8() { - PreAction(UndoGroup.TextureOffsetChange); - List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); - foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, 8); - PostAction(); + if(General.Map.UDMF) { + PreAction(UndoGroup.TextureOffsetChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTextureOffset(0, 8); + PostAction(); + } else { + General.ShowErrorMessage(TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK); + } } [BeginAction("textureselect", Library = "BuilderModes")] diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs index 275e79c58..2c9dae1d7 100644 --- a/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs +++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualCeiling.cs @@ -169,18 +169,12 @@ namespace CodeImp.DoomBuilder.GZDoomEditing { //mxd Sector s = GetControlSector(); + s.Fields.BeforeFieldsChange(); float oldx = s.Fields.GetValue("xpanningceiling", 0.0f); float oldy = s.Fields.GetValue("ypanningceiling", 0.0f); s.Fields["xpanningceiling"] = new UniValue(UniversalType.Float, oldx + (float)xy.X); s.Fields["ypanningceiling"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y); s.UpdateNeeded = true; - - /*Sector.Sector.Fields.BeforeFieldsChange(); - float oldx = Sector.Sector.Fields.GetValue("xpanningceiling", 0.0f); - float oldy = Sector.Sector.Fields.GetValue("ypanningceiling", 0.0f); - Sector.Sector.Fields["xpanningceiling"] = new UniValue(UniversalType.Float, oldx + (float)xy.X); - Sector.Sector.Fields["ypanningceiling"] = new UniValue(UniversalType.Float, oldy + (float)xy.Y); - Sector.Sector.UpdateNeeded = true;*/ } // Paste texture @@ -233,7 +227,33 @@ namespace CodeImp.DoomBuilder.GZDoomEditing base.OnChangeTargetBrightness(up); } } else { - base.OnChangeTargetBrightness(up); + if(!General.Map.UDMF) { + base.OnChangeTargetBrightness(up); + return; + } + + int light = Sector.Sector.Fields.GetValue("lightceiling", 0); + bool absolute = Sector.Sector.Fields.GetValue("lightceilingabsolute", false); + int newLight = 0; + + if(up) + newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute); + else + newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute); + + if(newLight == light) return; + + //create undo + mode.CreateUndo("Change ceiling brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex); + Sector.Sector.Fields.BeforeFieldsChange(); + + //apply changes + Sector.Sector.Fields["lightceiling"] = new UniValue(UniversalType.Integer, newLight); + mode.SetActionResult("Changed ceiling brightness to " + newLight + "."); + Sector.Sector.UpdateCache(); + + //rebuild sector + Sector.UpdateSectorGeometry(false); } } diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualLower.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualLower.cs index c646ec9f7..d3688b996 100644 --- a/Source/Plugins/GZDoomEditing/VisualModes/VisualLower.cs +++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualLower.cs @@ -246,6 +246,37 @@ namespace CodeImp.DoomBuilder.GZDoomEditing float oldy = Sidedef.Fields.GetValue("offsety_bottom", 0.0f); return new Point((int)oldx, (int)oldy); } + + //mxd + public override void OnChangeTargetBrightness(bool up) { + if(!General.Map.UDMF) { + base.OnChangeTargetBrightness(up); + return; + } + + int light = Sidedef.Fields.GetValue("light", 0); + bool absolute = Sidedef.Fields.GetValue("lightabsolute", false); + int newLight = 0; + + if(up) + newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute); + else + newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute); + + if(newLight == light) return; + + //create undo + mode.CreateUndo("Change lower wall brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex); + Sidedef.Fields.BeforeFieldsChange(); + + //apply changes + Sidedef.Fields["light"] = new UniValue(UniversalType.Integer, newLight); + mode.SetActionResult("Changed lower wall brightness to " + newLight + "."); + Sector.Sector.UpdateCache(); + + //rebuild sector + Sector.UpdateSectorGeometry(false); + } #endregion } diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleDouble.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleDouble.cs index 5a70f69b2..134a8d01b 100644 --- a/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleDouble.cs +++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleDouble.cs @@ -319,6 +319,37 @@ namespace CodeImp.DoomBuilder.GZDoomEditing float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f); return new Point((int)oldx, (int)oldy); } + + //mxd + public override void OnChangeTargetBrightness(bool up) { + if(!General.Map.UDMF) { + base.OnChangeTargetBrightness(up); + return; + } + + int light = Sidedef.Fields.GetValue("light", 0); + bool absolute = Sidedef.Fields.GetValue("lightabsolute", false); + int newLight = 0; + + if(up) + newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute); + else + newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute); + + if(newLight == light) return; + + //create undo + mode.CreateUndo("Change middle wall brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex); + Sidedef.Fields.BeforeFieldsChange(); + + //apply changes + Sidedef.Fields["light"] = new UniValue(UniversalType.Integer, newLight); + mode.SetActionResult("Changed middle wall brightness to " + newLight + "."); + Sector.Sector.UpdateCache(); + + //rebuild sector + Sector.UpdateSectorGeometry(false); + } #endregion } diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleSingle.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleSingle.cs index 9d8d94b57..3037e3815 100644 --- a/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleSingle.cs +++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualMiddleSingle.cs @@ -247,6 +247,37 @@ namespace CodeImp.DoomBuilder.GZDoomEditing float oldy = Sidedef.Fields.GetValue("offsety_mid", 0.0f); return new Point((int)oldx, (int)oldy); } + + //mxd + public override void OnChangeTargetBrightness(bool up) { + if(!General.Map.UDMF) { + base.OnChangeTargetBrightness(up); + return; + } + + int light = Sidedef.Fields.GetValue("light", 0); + bool absolute = Sidedef.Fields.GetValue("lightabsolute", false); + int newLight = 0; + + if(up) + newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute); + else + newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute); + + if(newLight == light) return; + + //create undo + mode.CreateUndo("Change middle wall brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex); + Sidedef.Fields.BeforeFieldsChange(); + + //apply changes + Sidedef.Fields["light"] = new UniValue(UniversalType.Integer, newLight); + mode.SetActionResult("Changed middle wall brightness to " + newLight + "."); + Sector.Sector.UpdateCache(); + + //rebuild sector + Sector.UpdateSectorGeometry(false); + } #endregion } diff --git a/Source/Plugins/GZDoomEditing/VisualModes/VisualUpper.cs b/Source/Plugins/GZDoomEditing/VisualModes/VisualUpper.cs index b19aff1d1..dd47f94d3 100644 --- a/Source/Plugins/GZDoomEditing/VisualModes/VisualUpper.cs +++ b/Source/Plugins/GZDoomEditing/VisualModes/VisualUpper.cs @@ -246,6 +246,37 @@ namespace CodeImp.DoomBuilder.GZDoomEditing float oldy = Sidedef.Fields.GetValue("offsety_top", 0.0f); return new Point((int)oldx, (int)oldy); } + + //mxd + public override void OnChangeTargetBrightness(bool up) { + if(!General.Map.UDMF) { + base.OnChangeTargetBrightness(up); + return; + } + + int light = Sidedef.Fields.GetValue("light", 0); + bool absolute = Sidedef.Fields.GetValue("lightabsolute", false); + int newLight = 0; + + if(up) + newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute); + else + newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute); + + if(newLight == light) return; + + //create undo + mode.CreateUndo("Change upper wall brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex); + Sidedef.Fields.BeforeFieldsChange(); + + //apply changes + Sidedef.Fields["light"] = new UniValue(UniversalType.Integer, newLight); + mode.SetActionResult("Changed upper wall brightness to " + newLight + "."); + Sector.Sector.UpdateCache(); + + //rebuild sector + Sector.UpdateSectorGeometry(false); + } #endregion } -- GitLab