Builder 1.13:

UDMF: changing brightness of a wall or ceiling in GZDoom Visual mode will change brightness of selected surface, not sector brightness.
Sector and Sidedef info panels show additional info if a map is in UDMF format.
Fixed: GZDoom menu panel wasn't updated when a map was opened via "recent files" item click.
This commit is contained in:
MaxED 2012-10-03 18:46:13 +00:00
parent 4db83a32c4
commit 1b6f8c97f9
22 changed files with 1836 additions and 569 deletions

View file

@ -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
// flowLayoutPanelFront
//
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;
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;
//
// frontlowtex
// panel4
//
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;
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;
//
// 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,52 +684,45 @@ namespace CodeImp.DoomBuilder.Controls
this.backsector.TabIndex = 7;
this.backsector.Text = "Sector 666";
//
// backlowname
// flowLayoutPanelBack
//
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;
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;
//
// backlowtex
// panel1
//
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;
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;
//
// backmidname
// backhightex
//
this.backmidname.BackColor = System.Drawing.SystemColors.Control;
this.backmidname.Location = new System.Drawing.Point(88, 80);
this.backmidname.Name = "backmidname";
this.backmidname.Size = new System.Drawing.Size(82, 13);
this.backmidname.TabIndex = 3;
this.backmidname.Text = "BROWNHUG";
this.backmidname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
this.backmidname.UseMnemonic = false;
//
// 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(95, 19);
this.backmidtex.Name = "backmidtex";
this.backmidtex.Size = new System.Drawing.Size(68, 60);
this.backmidtex.TabIndex = 2;
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;
//
// backhighname
//
this.backhighname.BackColor = System.Drawing.SystemColors.Control;
this.backhighname.Location = new System.Drawing.Point(6, 80);
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;
@ -518,15 +730,199 @@ namespace CodeImp.DoomBuilder.Controls
this.backhighname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
this.backhighname.UseMnemonic = false;
//
// backhightex
// panelUDMFBackTop
//
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.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(4, 63);
this.backmidname.Name = "backmidname";
this.backmidname.Size = new System.Drawing.Size(82, 13);
this.backmidname.TabIndex = 3;
this.backmidname.Text = "BROWNHUG";
this.backmidname.TextAlign = System.Drawing.ContentAlignment.TopCenter;
this.backmidname.UseMnemonic = false;
//
// panelUDMFBackMid
//
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;
//
// backMidUDMFScale
//
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";
//
// backMidUDMFOffset
//
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;
}
}

View file

@ -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)
{

View file

@ -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>

View file

@ -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;
}
}

View file

@ -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();

View file

@ -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>

View file

@ -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

View file

@ -1163,6 +1163,9 @@ namespace CodeImp.DoomBuilder
{
// Add recent file
mainwindow.AddRecentFile(filename);
//mxd
mainwindow.UpdateGZDoomPannel();
}
else
{

View file

@ -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)
{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 229 KiB

View file

@ -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;
//

View file

@ -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////////////////
zs7OysrK2tra2tra3Nzc6urq6Ojo/v7+Hh4eAAAAAAAACQkJHh4eHh4eHh4eHh4eHh4eHh4eAAAAAAAA
AAAAAAAA////////5ubmHh4eOTBbHh4e////////////////Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e
Hh4eAAAAAAAAFxcX////////zs7OHh4emo6RHh4eSEhIeHh4cHBwcHBw////////////Hh4eEAwQHh4e
Hh4ewsLC/Pz8////////////Hh4eHh4ejIOFAAAAAAAAAAAAAAAAAAAAAAAAERER2tra/v7+tra2Hh4e
gHZ5Hh4e3Nzc////////////////////////Hh4eDAkNPzSCIR5bHh4eHh4eysrK6urq6urq////////
Hh4eHh4eAAAAAAAAAAAAAAAAAAAAExMTyMjI3t7eqKioHh4eSDtoHh4eUFBQhISEgoKChISEhISEiIiI
cHBwHh4eEQ4aOjSSJCF0Hx50FRRBHh4eHh4eurq62NjY0NDQ////9vb2Hh4eHh4eY2NjAAAAAAAACQkJ
Hh4eHh4eHh4eHh4eHh4eHh4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh4eEg4XNC+NJCF0IiF7IR5kJCFo
AAAAKioqtra2tLS0wMDA2NjY7Ozs4uLiHh4eAAAAAAAAAAAAFhYWYGBgWlpadHR0iIiIiIiIpKSksrKy
sLCwsLCwvr6+xMTEoqKiHh4eEAwcHh4eHh4eHh4eHh4eHh4eHh4eHh4elpaWmpqanp6evLy8srKy4ODg
Hh4eAAAAAAAAAAAACgoKUlJSnJycnp6epKSkvLy82NjY1tbW4uLi5ubm////////5OTkHh4eEA0cNDQ0
lJSUhoaGhoaGhoaGkpKSlJSUjo6Ojo6OkJCQnp6empqavLy8Hh4eAAAAAAAAAAAAAAAABAQEEhISEhIS
EBAQFBQUGBgYFhYWGBgYGBgYHh4eICAgGhoaHh4eIBstBgYGEBAQEBAQEBAQDg4OEhISEhISEhISEhIS
EhISEhISEBAQFhYWHh4eAAAAAAAAAAAAAAAAOTKxclexZEy6bFW9bVSyclexbFW9MyleU0R1YU/GR0LT
SDubDAkNOjJKOzKhRjybTkBvJSAlKiZzJCF0JiFcIh5LIh5SIRw1JSAlHBkdAAAAAAAAAAAAAAAAAAAA
AAAAST2ydFu7ZlTFeGPEclexeV61i3PIVESaFRAbJiAsSTtaKSI6CAUIHhoiSTtaMiwzCAUIEQ4aIyKC
IiF7IR5kIh5SIR5bJSFAIh0rIh0jAAAAAAAAAAAAAAAAAAAAAAAAYU/GgmnKcVvSeGPEel+4el+4lHnE
i3PIKiNWAAAACAUIAAAACAUIAAAACAUIAAAACAUIIh5LIySYIySYIR5qIR5qIR5qIx08HhoiFRIUAAAA
AAAAAAAAAAAAAAAAAAAAZlTFmYTRcVvSgmnKeGPEe2S6hWu9lHnEVESaDwwgAAAACAUIAAAACAUIAAAA
CAUIDgsVJCF0KCijJiWUIR5kIR5bJiBQHhtGGRYbEg4TAAAAAAAAAAAAAAAAAAAAAAAASEC9o43SiXLU
cVvSdFzHbFW9e2S6hWu9e2S6Ih5SCAUICAUIAAAACAUIAAAACAUIIR1CKSaKJiWUIyKCIR5qIx08JiBQ
JSBNHBkdFRIUAAAAAAAAAAAAAAAAAAAAAAAAKi3Bi3PIiXLUbFW9RjmVRjmVdFu7el+4hWu9SDubEQ4a
AAAACAUIAAAACAUIDAkNIyKCKSaKIiF7KCZ8Ih5LHhoiJSFAIh0jGRYbEg4TAAAAAAAAAAAAAAAAAAAA
AAAAAAAARDqzOTBsKSI6JiEyPDJ8dFu7dFu7b1auTT16IRw1CAUICAUIAAAACAUIHhtGIySYJCF0JiFc
IR1CIh0jIRw1HBkxHBkdHBkdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKiZzHhoiIh0jJiE5RjmVZlG6
VESaOS5ZNCtFKiNFEQ4aCAUIAAAAEg4TKCZ8KSaKKiNWIh0rHhoiHBkdIh0rJSAlKiQqHBkdAAAAAAAA
AAAAAAAAAAAAAAAAAAAAf3qEQzxAhHp+dGdqJiFiRDecJSFAIh0rJiAsJiEyMyleIR5kAAAACAUIHBkx
KSaKKSJLJiAsKCImJSAlHBkdIh0jSkBEQDc7KCImAAAAAAAAAAAAAAAAAAAAAAAAhHp+YlZata6wlIyR
XlF8TkWmKiNFHBkdHBkdKCImIx08QTJ8OzKhDwwgDAkNKSWELCVrKSI6LCktKiQqIh0jGRYbIh0jdGdq
in+GeW9yQDc7AAAAAAAAAAAAAAAAopqdk4mLuLG0opqdAAAAYU/GQjhvKiQqQzo9bGJlaF5gMSxXQTWQ
bly8JCFoJiBQST2yJiFcLyg2QDc7aF5gXVJVKCImFRIUKCImnJSakYWHhHp+TUVJAAAAAAAAAAAAopqd
qaGjAAAAAAAAAAAAAAAAMiwzaF5graaow77Ain+GMC2bW03DjXa/hWu9bFm3VEXDSD+NVk1ShHp+bGJl
mo2PXVJVIh0jAAAAAAAAAAAAyMPFmpKVfXh7AAAAAAAAqaGjAAAAAAAAAAAAAAAAQzo9aVpdraaonJSa
dGKefXm4eGPEmYTRgWrUgWrUemTTemTTdFzHbmChbGCWk4mLkYWHeW9yQzo9TUVJAAAAAAAAAAAAAAAA
fXh7AAAAAAAAAAAAAAAAAAAAAAAAUUhLaVpdnJSavba5fHbFZlTFmYTRvK3ZxbvXvrHWo5DUiXLUgWrU
gWrUYU/GQDezOTBsopqdta6wbGJlMiwzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVk1S
mpKVvbm8AAAAAAAAOjJKPjN1RT2nXE66bly8dFzHYU/GUkKtYFKjNCtlJiE5ODM3AAAAsaqssaqsfHFz
ZV9iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY1ldnJSaqaGjAAAAAAAAZV9iaVpdYlZaYlZaAAAA
AAAAAAAAAAAAAAAAAAAAYlZaeW9yQzxAAAAAAAAAuLG0saqsVk1SAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAYlZavba5AAAAAAAAAAAAYlZata6wraaoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYlZaopqd
Vk1SAAAAAAAAsaqsjIOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhHp+0s7QAAAAAAAAAAAAnJSa
uLG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAta6wbGJlAAAAAAAAAAAAw77AmpKVAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAjIOFAAAAAAAAAAAAAAAAkYaKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAnJSaAAAAAAAAAAAA0c3OqaGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAOAAAADgAAABKAAAADAAAABgAAAAAQAYAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh4ehoaG////////////////
////////////////hoaGHh4eAAAAJSAlAAAAAAAA////////////////////////////////////////
////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWlVYAAAAAAAAAAAAAAAAAAAAAAAA
AAAAHh4ehoaG////////////////////////////////////////7u7uHh4eAAAAJSAlAAAA////////
////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAkYaJUk1RAAAAAAAAAAAAAAAANTA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
////////7u7uAAAAJSA7AAAA////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvba4dWlsPTg8AAAAAAAAHBkdIR0jAAAA////////////
AAAAMCyILCh7AAAAAAAAAAAAAAAAAAAA////////////AAAAKiNDAAAAxsbG7u7u7u7u////////////
////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAraWrqqKkcmNm
OTE1KSMnGRUaIBsfAAAA7u7u////////AAAAKyiVLCqaAAAA////////////////////////////AAAA
KSJLJiBDAAAAAAAAtra2xsbG7u7u7u7u////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAqqKkyMPFo5mbZF1gOTE1OC80IR0jAAAAtra2xsbG7u7uAAAALCusLCqaAAAA
////////////////////////////AAAAKSJaKSJLIh0zIx1DAAAAAAAAxsbGtra2xsbG7u7u7u7u////
////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsamsyMPFkYaJU0hLKSMnIR1K
AAAAtra2tra2xsbGAAAAODW3MC6cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCBqKiNVKiNDIR1c
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
AAAAAAAAAAAAAAAAgnZ5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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>

View file

@ -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
}
}

View file

@ -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");
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();
// Start drag now
uvdragging = true;
mode.Renderer.ShowSelection = false;
mode.Renderer.ShowHighlight = false;
UpdateDragUV();
} else {
General.ShowErrorMessage(BaseVisualMode.TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
}
}
}
}

View file

@ -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");
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();
// Start drag now
uvdragging = true;
mode.Renderer.ShowSelection = false;
mode.Renderer.ShowHighlight = false;
UpdateDragUV();
} else {
General.ShowErrorMessage(BaseVisualMode.TEXTURE_OFFSET_CHANGE_ERROR, MessageBoxButtons.OK);
}
}
}
}

View file

@ -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")]

View file

@ -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);
}
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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
}