diff --git a/Source/Core/Controls/LinedefInfoPanel.Designer.cs b/Source/Core/Controls/LinedefInfoPanel.Designer.cs index 09397632168f7753bdc848604103985c0bd92d8f..c6327c33b3b2609e13569196e2004435ef8090ab 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 9436083d12e4ea6e81a1d90c20a0d58b195496da..d97b8617aec5137e5eab0b3b093098efc453c00b 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 b680dcc82127cb309080e57700c460833c8e2280..27dc0cde9a18dce06b4ca2b9087f47a7ad15a2d6 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 a0f3f48c8a72a79b3a35270692a9b0a84f9758f2..9711a3ea716b642f1bc1bba11e337a7de0c0849c 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 5909398e332e6c74177d600bff227a2c1641b3e6..b5a72edd62e64cc3c454eb4b729888b40bcb8887 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 2dcf4292698f3a10cad0ab71ee28c28c5431fb17..faaec4cf2c34e410623638a764aab422d962db3e 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 50c6d22bb17fe2f9aba2cec422d5a8dd176b034a..af9e9b1cb9d3bea7f86e19e364c81d82e9419c77 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 ae3cdd8da55c57887bc2d0c3d6f8a528786a9889..99fcb5c120a8c0f17cc4ec0034a822cb2b6a1aa7 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 019918ce455a1c54d1a63c6050ecec8b29a87f0d..cfd1e5d068f6c41d10a836e4cb7564bf9618f085 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 Binary files a/Source/Core/Resources/GZDB2.ico and b/Source/Core/Resources/GZDB2.ico differ diff --git a/Source/Core/Resources/Splash3_trans.png b/Source/Core/Resources/Splash3_trans.png index 76b769ce8e1d536d9983316e09b87c34e903e2d3..5133b08f6434e3730173828a14caa0edd75f1e86 100644 Binary files a/Source/Core/Resources/Splash3_trans.png and b/Source/Core/Resources/Splash3_trans.png differ diff --git a/Source/Core/Windows/MainForm.Designer.cs b/Source/Core/Windows/MainForm.Designer.cs index c8d6118eac58d89fee3c03ffd4ea83b4aba15eff..9a10a3ecb85db7c6b620749843164fcc59dc847e 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 b0323263aa2fb0057a818279d3bd150df6852404..375300916880d9d0c9b689d198bfe7f271c27fac 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 0e2a6d20019664e160e97861c6e49a12434e63e2..a805fc1ef1dcb74dcd4acaa3138e2ea7e00fba4c 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 32a8d0cc66c577e97efa1f01e904d03105b7363f..9305f33e7c95f0bba12f1652af90e37ac4e4eb41 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 72cc5ea4f408ca71f0e8cca75a38a376a583d2b6..e44bfad5c38f4c1bea5bac5d2d6afaa3c1f15138 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 e18f23a4e6619df3bd928d761e18d3fa5c018e99..5e1c8377e2df46699379cb616f946d79c0b2c6f1 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 275e79c58329c8105ea7cd680618ebc48aaa710f..2c9dae1d7a58630c2a3e05b455e7e57e929e15b3 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 c646ec9f71c16eb7ee76fce0fa04fb61e2fe468f..d3688b996af813374b1251d84ffcc04e732328d6 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 5a70f69b2f09bf318a1bd5829585320837d08825..134a8d01b9f608c3bdc4d94f18bf043fe8b13c80 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 9d8d94b5714d535049ee8beeef6eea25c4fb0819..3037e38151854b72fad825af6341b3f972b6eb1e 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 b19aff1d1747700831c7fd4d5bab7476ecb24dad..dd47f94d35adcd8a9929fa2d2bcd85062e0e173f 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 }