Linedef edit form: Add field for repeatcnt

This commit is contained in:
MascaraSnake 2022-12-29 22:04:26 +01:00
parent 6fba87cfaa
commit 59f0e11c3a
5 changed files with 241 additions and 504 deletions

View file

@ -282,11 +282,6 @@ universalfields
sidedef
{
repeatcnt
{
type = 0;
default = 0;
}
}
thing

View file

@ -33,6 +33,7 @@ uifields
offsety_bottom = 1;
light = 0;
lightabsolute = 3;
repeatcnt = 0;
}
sector

View file

@ -33,13 +33,15 @@ namespace CodeImp.DoomBuilder.Windows
System.Windows.Forms.Label label11;
System.Windows.Forms.Label label12;
System.Windows.Forms.Label label6;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LinedefEditFormSRB2));
System.Windows.Forms.Label executordelaylabel;
System.Windows.Forms.Label labelRepeatcntFront;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LinedefEditFormSRB2));
System.Windows.Forms.Label labelRepeatcntBack;
this.labelrenderstyle = new System.Windows.Forms.Label();
this.labelLightFront = new System.Windows.Forms.Label();
this.cancel = new System.Windows.Forms.Button();
this.apply = new System.Windows.Forms.Button();
this.actiongroup = new System.Windows.Forms.GroupBox();
this.executordelay = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.argscontrol = new CodeImp.DoomBuilder.Controls.ArgumentsControlSRB2();
this.actionhelp = new CodeImp.DoomBuilder.Controls.ActionSpecialHelpButton();
this.action = new CodeImp.DoomBuilder.Controls.ActionSelectorControl();
@ -76,11 +78,9 @@ namespace CodeImp.DoomBuilder.Windows
this.pfcFrontOffsetMid = new CodeImp.DoomBuilder.Controls.PairedFieldsControl();
this.pfcFrontOffsetBottom = new CodeImp.DoomBuilder.Controls.PairedFieldsControl();
this.groupBox5 = new System.Windows.Forms.GroupBox();
this.resetfrontlight = new System.Windows.Forms.Button();
this.repeatcntFront = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.frontsector = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.customfrontbutton = new System.Windows.Forms.Button();
this.lightFront = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.cbLightAbsoluteFront = new System.Windows.Forms.CheckBox();
this.frontlow = new CodeImp.DoomBuilder.Controls.TextureSelectorControl();
this.frontmid = new CodeImp.DoomBuilder.Controls.TextureSelectorControl();
this.fronthigh = new CodeImp.DoomBuilder.Controls.TextureSelectorControl();
@ -88,12 +88,8 @@ namespace CodeImp.DoomBuilder.Windows
this.backside = new System.Windows.Forms.CheckBox();
this.backgroup = new System.Windows.Forms.GroupBox();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.resetbacklight = new System.Windows.Forms.Button();
this.backsector = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.custombackbutton = new System.Windows.Forms.Button();
this.lightBack = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.labelLightBack = new System.Windows.Forms.Label();
this.cbLightAbsoluteBack = new System.Windows.Forms.CheckBox();
this.backflagsgroup = new System.Windows.Forms.GroupBox();
this.flagsBack = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl();
this.backscalegroup = new System.Windows.Forms.GroupBox();
@ -121,12 +117,14 @@ namespace CodeImp.DoomBuilder.Windows
this.fieldslist = new CodeImp.DoomBuilder.Controls.FieldsEditorControl();
this.imagelist = new System.Windows.Forms.ImageList(this.components);
this.tooltip = new System.Windows.Forms.ToolTip(this.components);
this.executordelay = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.repeatcntBack = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
label2 = new System.Windows.Forms.Label();
label11 = new System.Windows.Forms.Label();
label12 = new System.Windows.Forms.Label();
label6 = new System.Windows.Forms.Label();
executordelaylabel = new System.Windows.Forms.Label();
labelRepeatcntFront = new System.Windows.Forms.Label();
labelRepeatcntBack = new System.Windows.Forms.Label();
this.actiongroup.SuspendLayout();
this.flagsgroup.SuspendLayout();
this.tabs.SuspendLayout();
@ -185,6 +183,24 @@ namespace CodeImp.DoomBuilder.Windows
label6.TabIndex = 17;
label6.Text = "Alpha:";
//
// executordelaylabel
//
executordelaylabel.AutoSize = true;
executordelaylabel.Location = new System.Drawing.Point(59, 229);
executordelaylabel.Name = "executordelaylabel";
executordelaylabel.Size = new System.Drawing.Size(80, 13);
executordelaylabel.TabIndex = 71;
executordelaylabel.Text = "Executor delay:";
//
// labelRepeatcntFront
//
labelRepeatcntFront.AutoSize = true;
labelRepeatcntFront.Location = new System.Drawing.Point(6, 52);
labelRepeatcntFront.Name = "labelRepeatcntFront";
labelRepeatcntFront.Size = new System.Drawing.Size(84, 13);
labelRepeatcntFront.TabIndex = 73;
labelRepeatcntFront.Text = "Texture repeats:";
//
// labelrenderstyle
//
this.labelrenderstyle.AutoSize = true;
@ -194,16 +210,6 @@ namespace CodeImp.DoomBuilder.Windows
this.labelrenderstyle.TabIndex = 11;
this.labelrenderstyle.Text = "Render style:";
//
// labelLightFront
//
this.labelLightFront.Location = new System.Drawing.Point(12, 53);
this.labelLightFront.Name = "labelLightFront";
this.labelLightFront.Size = new System.Drawing.Size(80, 14);
this.labelLightFront.TabIndex = 25;
this.labelLightFront.Tag = "";
this.labelLightFront.Text = "Brightness:";
this.labelLightFront.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// cancel
//
this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
@ -245,6 +251,25 @@ namespace CodeImp.DoomBuilder.Windows
this.actiongroup.TabStop = false;
this.actiongroup.Text = " Action ";
//
// executordelay
//
this.executordelay.AllowDecimal = false;
this.executordelay.AllowExpressions = false;
this.executordelay.AllowNegative = false;
this.executordelay.AllowRelative = false;
this.executordelay.ButtonStep = 1;
this.executordelay.ButtonStepBig = 35F;
this.executordelay.ButtonStepFloat = 1F;
this.executordelay.ButtonStepSmall = 1F;
this.executordelay.ButtonStepsUseModifierKeys = true;
this.executordelay.ButtonStepsWrapAround = false;
this.executordelay.Location = new System.Drawing.Point(145, 224);
this.executordelay.Name = "executordelay";
this.executordelay.Size = new System.Drawing.Size(65, 24);
this.executordelay.StepValues = null;
this.executordelay.TabIndex = 72;
this.executordelay.WhenTextChanged += new System.EventHandler(this.executordelay_WhenTextChanged);
//
// argscontrol
//
this.argscontrol.Location = new System.Drawing.Point(6, 44);
@ -722,29 +747,35 @@ namespace CodeImp.DoomBuilder.Windows
//
// groupBox5
//
this.groupBox5.Controls.Add(this.resetfrontlight);
this.groupBox5.Controls.Add(this.repeatcntFront);
this.groupBox5.Controls.Add(labelRepeatcntFront);
this.groupBox5.Controls.Add(this.frontsector);
this.groupBox5.Controls.Add(label11);
this.groupBox5.Controls.Add(this.customfrontbutton);
this.groupBox5.Controls.Add(this.lightFront);
this.groupBox5.Controls.Add(this.labelLightFront);
this.groupBox5.Controls.Add(this.cbLightAbsoluteFront);
this.groupBox5.Location = new System.Drawing.Point(12, 19);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(290, 117);
this.groupBox5.TabIndex = 42;
this.groupBox5.TabStop = false;
//
// resetfrontlight
// repeatcntFront
//
this.resetfrontlight.Image = global::CodeImp.DoomBuilder.Properties.Resources.Reset;
this.resetfrontlight.Location = new System.Drawing.Point(233, 50);
this.resetfrontlight.Name = "resetfrontlight";
this.resetfrontlight.Size = new System.Drawing.Size(23, 23);
this.resetfrontlight.TabIndex = 28;
this.tooltip.SetToolTip(this.resetfrontlight, "Reset Front Brightness");
this.resetfrontlight.UseVisualStyleBackColor = true;
this.resetfrontlight.Click += new System.EventHandler(this.resetfrontlight_Click);
this.repeatcntFront.AllowDecimal = false;
this.repeatcntFront.AllowExpressions = false;
this.repeatcntFront.AllowNegative = false;
this.repeatcntFront.AllowRelative = false;
this.repeatcntFront.ButtonStep = 1;
this.repeatcntFront.ButtonStepBig = 1F;
this.repeatcntFront.ButtonStepFloat = 1F;
this.repeatcntFront.ButtonStepSmall = 1F;
this.repeatcntFront.ButtonStepsUseModifierKeys = true;
this.repeatcntFront.ButtonStepsWrapAround = false;
this.repeatcntFront.Location = new System.Drawing.Point(96, 47);
this.repeatcntFront.Name = "repeatcntFront";
this.repeatcntFront.Size = new System.Drawing.Size(65, 24);
this.repeatcntFront.StepValues = null;
this.repeatcntFront.TabIndex = 74;
this.repeatcntFront.WhenTextChanged += new System.EventHandler(this.repeatcntFront_WhenTextChanged);
//
// frontsector
//
@ -774,38 +805,6 @@ namespace CodeImp.DoomBuilder.Windows
this.customfrontbutton.UseVisualStyleBackColor = true;
this.customfrontbutton.Click += new System.EventHandler(this.customfrontbutton_Click);
//
// lightFront
//
this.lightFront.AllowDecimal = false;
this.lightFront.AllowExpressions = false;
this.lightFront.AllowNegative = true;
this.lightFront.AllowRelative = true;
this.lightFront.ButtonStep = 16;
this.lightFront.ButtonStepBig = 32F;
this.lightFront.ButtonStepFloat = 1F;
this.lightFront.ButtonStepSmall = 1F;
this.lightFront.ButtonStepsUseModifierKeys = true;
this.lightFront.ButtonStepsWrapAround = false;
this.lightFront.Location = new System.Drawing.Point(96, 49);
this.lightFront.Name = "lightFront";
this.lightFront.Size = new System.Drawing.Size(62, 24);
this.lightFront.StepValues = null;
this.lightFront.TabIndex = 26;
this.lightFront.Tag = "";
this.lightFront.WhenTextChanged += new System.EventHandler(this.lightFront_WhenTextChanged);
//
// cbLightAbsoluteFront
//
this.cbLightAbsoluteFront.AutoSize = true;
this.cbLightAbsoluteFront.Location = new System.Drawing.Point(164, 54);
this.cbLightAbsoluteFront.Name = "cbLightAbsoluteFront";
this.cbLightAbsoluteFront.Size = new System.Drawing.Size(67, 17);
this.cbLightAbsoluteFront.TabIndex = 27;
this.cbLightAbsoluteFront.Tag = "lightabsolute";
this.cbLightAbsoluteFront.Text = "Absolute";
this.cbLightAbsoluteFront.UseVisualStyleBackColor = true;
this.cbLightAbsoluteFront.CheckedChanged += new System.EventHandler(this.cbLightAbsoluteFront_CheckedChanged);
//
// frontlow
//
this.frontlow.Location = new System.Drawing.Point(309, 409);
@ -886,30 +885,17 @@ namespace CodeImp.DoomBuilder.Windows
//
// groupBox4
//
this.groupBox4.Controls.Add(this.resetbacklight);
this.groupBox4.Controls.Add(this.repeatcntBack);
this.groupBox4.Controls.Add(labelRepeatcntBack);
this.groupBox4.Controls.Add(this.backsector);
this.groupBox4.Controls.Add(label12);
this.groupBox4.Controls.Add(this.custombackbutton);
this.groupBox4.Controls.Add(this.lightBack);
this.groupBox4.Controls.Add(this.labelLightBack);
this.groupBox4.Controls.Add(this.cbLightAbsoluteBack);
this.groupBox4.Location = new System.Drawing.Point(12, 19);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(290, 117);
this.groupBox4.TabIndex = 46;
this.groupBox4.TabStop = false;
//
// resetbacklight
//
this.resetbacklight.Image = global::CodeImp.DoomBuilder.Properties.Resources.Reset;
this.resetbacklight.Location = new System.Drawing.Point(233, 50);
this.resetbacklight.Name = "resetbacklight";
this.resetbacklight.Size = new System.Drawing.Size(23, 23);
this.resetbacklight.TabIndex = 31;
this.tooltip.SetToolTip(this.resetbacklight, "Reset Back Brightness");
this.resetbacklight.UseVisualStyleBackColor = true;
this.resetbacklight.Click += new System.EventHandler(this.resetbacklight_Click);
//
// backsector
//
this.backsector.AllowDecimal = false;
@ -938,48 +924,6 @@ namespace CodeImp.DoomBuilder.Windows
this.custombackbutton.UseVisualStyleBackColor = true;
this.custombackbutton.Click += new System.EventHandler(this.custombackbutton_Click);
//
// lightBack
//
this.lightBack.AllowDecimal = false;
this.lightBack.AllowExpressions = false;
this.lightBack.AllowNegative = true;
this.lightBack.AllowRelative = true;
this.lightBack.ButtonStep = 1;
this.lightBack.ButtonStepBig = 16F;
this.lightBack.ButtonStepFloat = 1F;
this.lightBack.ButtonStepSmall = 1F;
this.lightBack.ButtonStepsUseModifierKeys = true;
this.lightBack.ButtonStepsWrapAround = false;
this.lightBack.Location = new System.Drawing.Point(96, 49);
this.lightBack.Name = "lightBack";
this.lightBack.Size = new System.Drawing.Size(62, 24);
this.lightBack.StepValues = null;
this.lightBack.TabIndex = 29;
this.lightBack.Tag = "light";
this.lightBack.WhenTextChanged += new System.EventHandler(this.lightBack_WhenTextChanged);
//
// labelLightBack
//
this.labelLightBack.Location = new System.Drawing.Point(12, 53);
this.labelLightBack.Name = "labelLightBack";
this.labelLightBack.Size = new System.Drawing.Size(80, 14);
this.labelLightBack.TabIndex = 28;
this.labelLightBack.Tag = "";
this.labelLightBack.Text = "Brightness:";
this.labelLightBack.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// cbLightAbsoluteBack
//
this.cbLightAbsoluteBack.AutoSize = true;
this.cbLightAbsoluteBack.Location = new System.Drawing.Point(164, 54);
this.cbLightAbsoluteBack.Name = "cbLightAbsoluteBack";
this.cbLightAbsoluteBack.Size = new System.Drawing.Size(67, 17);
this.cbLightAbsoluteBack.TabIndex = 30;
this.cbLightAbsoluteBack.Tag = "lightabsolute";
this.cbLightAbsoluteBack.Text = "Absolute";
this.cbLightAbsoluteBack.UseVisualStyleBackColor = true;
this.cbLightAbsoluteBack.CheckedChanged += new System.EventHandler(this.cbLightAbsoluteBack_CheckedChanged);
//
// backflagsgroup
//
this.backflagsgroup.Controls.Add(this.flagsBack);
@ -1327,33 +1271,33 @@ namespace CodeImp.DoomBuilder.Windows
this.imagelist.Images.SetKeyName(0, "Check.png");
this.imagelist.Images.SetKeyName(1, "SearchClear.png");
//
// executordelaylabel
// repeatcntBack
//
executordelaylabel.AutoSize = true;
executordelaylabel.Location = new System.Drawing.Point(59, 229);
executordelaylabel.Name = "executordelaylabel";
executordelaylabel.Size = new System.Drawing.Size(80, 13);
executordelaylabel.TabIndex = 71;
executordelaylabel.Text = "Executor delay:";
this.repeatcntBack.AllowDecimal = false;
this.repeatcntBack.AllowExpressions = false;
this.repeatcntBack.AllowNegative = false;
this.repeatcntBack.AllowRelative = false;
this.repeatcntBack.ButtonStep = 1;
this.repeatcntBack.ButtonStepBig = 1F;
this.repeatcntBack.ButtonStepFloat = 1F;
this.repeatcntBack.ButtonStepSmall = 1F;
this.repeatcntBack.ButtonStepsUseModifierKeys = true;
this.repeatcntBack.ButtonStepsWrapAround = false;
this.repeatcntBack.Location = new System.Drawing.Point(96, 47);
this.repeatcntBack.Name = "repeatcntBack";
this.repeatcntBack.Size = new System.Drawing.Size(65, 24);
this.repeatcntBack.StepValues = null;
this.repeatcntBack.TabIndex = 76;
this.repeatcntBack.WhenTextChanged += new System.EventHandler(this.repeatcntBack_WhenTextChanged);
//
// executordelay
// labelRepeatcntBack
//
this.executordelay.AllowDecimal = false;
this.executordelay.AllowExpressions = false;
this.executordelay.AllowNegative = false;
this.executordelay.AllowRelative = false;
this.executordelay.ButtonStep = 1;
this.executordelay.ButtonStepBig = 35F;
this.executordelay.ButtonStepFloat = 1F;
this.executordelay.ButtonStepSmall = 1F;
this.executordelay.ButtonStepsUseModifierKeys = true;
this.executordelay.ButtonStepsWrapAround = false;
this.executordelay.Location = new System.Drawing.Point(145, 224);
this.executordelay.Name = "executordelay";
this.executordelay.Size = new System.Drawing.Size(65, 24);
this.executordelay.StepValues = null;
this.executordelay.TabIndex = 72;
this.executordelay.WhenTextChanged += new System.EventHandler(this.executordelay_WhenTextChanged);
labelRepeatcntBack.AutoSize = true;
labelRepeatcntBack.Location = new System.Drawing.Point(6, 52);
labelRepeatcntBack.Name = "labelRepeatcntBack";
labelRepeatcntBack.Size = new System.Drawing.Size(84, 13);
labelRepeatcntBack.TabIndex = 75;
labelRepeatcntBack.Text = "Texture repeats:";
//
// LinedefEditFormSRB2
//
@ -1435,8 +1379,6 @@ namespace CodeImp.DoomBuilder.Windows
private System.Windows.Forms.Button custombackbutton;
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox frontsector;
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox backsector;
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox lightFront;
private System.Windows.Forms.CheckBox cbLightAbsoluteFront;
private CodeImp.DoomBuilder.Controls.PairedFieldsControl pfcFrontOffsetTop;
private CodeImp.DoomBuilder.Controls.PairedFieldsControl pfcFrontOffsetBottom;
private CodeImp.DoomBuilder.Controls.PairedFieldsControl pfcFrontOffsetMid;
@ -1451,10 +1393,6 @@ namespace CodeImp.DoomBuilder.Windows
private CodeImp.DoomBuilder.Controls.PairedFieldsControl pfcBackOffsetTop;
private System.Windows.Forms.GroupBox groupsettings;
private System.Windows.Forms.ComboBox renderStyle;
private System.Windows.Forms.Label labelLightFront;
private System.Windows.Forms.CheckBox cbLightAbsoluteBack;
private System.Windows.Forms.Label labelLightBack;
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox lightBack;
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox alpha;
private CodeImp.DoomBuilder.Controls.PairedIntControl frontTextureOffset;
private CodeImp.DoomBuilder.Controls.PairedIntControl backTextureOffset;
@ -1491,9 +1429,9 @@ namespace CodeImp.DoomBuilder.Windows
private CodeImp.DoomBuilder.Controls.CommentEditor commenteditor;
private CodeImp.DoomBuilder.Controls.ArgumentsControlSRB2 argscontrol;
private CodeImp.DoomBuilder.Controls.TagsSelector tagsselector;
private System.Windows.Forms.Button resetfrontlight;
private System.Windows.Forms.Button resetbacklight;
private System.Windows.Forms.Button resetalpha;
private Controls.ButtonsNumericTextbox executordelay;
private Controls.ButtonsNumericTextbox repeatcntFront;
private Controls.ButtonsNumericTextbox repeatcntBack;
}
}

View file

@ -69,6 +69,8 @@ namespace CodeImp.DoomBuilder.Windows
private class SidedefProperties //mxd
{
public readonly int RepeatCount;
public readonly Dictionary<string, bool> Flags;
public readonly double ScaleTopX;
@ -97,6 +99,8 @@ namespace CodeImp.DoomBuilder.Windows
public SidedefProperties(Sidedef side)
{
RepeatCount = UniFields.GetInteger(side.Fields, "repeatcnt", 0);
Flags = side.GetFlags();
// Offset
@ -222,18 +226,6 @@ namespace CodeImp.DoomBuilder.Windows
labelBackOffsetMid.Enabled = false;
labelBackOffsetBottom.Enabled = false;
}
// Diable brightness controls?
if(!General.Map.Config.DistinctWallBrightness)
{
lightFront.Enabled = false;
cbLightAbsoluteFront.Enabled = false;
resetfrontlight.Enabled = false;
lightBack.Enabled = false;
cbLightAbsoluteBack.Enabled = false;
resetbacklight.Enabled = false;
}
}
#endregion
@ -319,10 +311,10 @@ namespace CodeImp.DoomBuilder.Windows
foreach(PairedFieldsControl pfc in frontUdmfControls)
pfc.SetValuesFrom(fl.Front.Fields, true);
lightFront.Text = UniFields.GetInteger(fl.Front.Fields, "light", 0).ToString();
cbLightAbsoluteFront.Checked = fl.Front.Fields.GetValue("lightabsolute", false);
repeatcntFront.Text = UniFields.GetInteger(fl.Front.Fields, "repeatcnt", 0).ToString();
frontTextureOffset.SetValues(fl.Front.OffsetX, fl.Front.OffsetY, true); //mxd
}
// Back settings
@ -344,9 +336,8 @@ namespace CodeImp.DoomBuilder.Windows
foreach(PairedFieldsControl pfc in backUdmfControls)
pfc.SetValuesFrom(fl.Back.Fields, true);
lightBack.Text = UniFields.GetInteger(fl.Back.Fields, "light", 0).ToString();
cbLightAbsoluteBack.Checked = fl.Back.Fields.GetValue("lightabsolute", false);
repeatcntBack.Text = UniFields.GetInteger(fl.Back.Fields, "repeatcnt", 0).ToString();
backTextureOffset.SetValues(fl.Back.OffsetX, fl.Back.OffsetY, true); //mxd
}
@ -451,16 +442,10 @@ namespace CodeImp.DoomBuilder.Windows
foreach(PairedFieldsControl pfc in frontUdmfControls)
pfc.SetValuesFrom(l.Front.Fields, false);
if(!string.IsNullOrEmpty(lightFront.Text))
if (!string.IsNullOrEmpty(repeatcntFront.Text))
{
int light = UniFields.GetInteger(l.Front.Fields, "light", 0);
if(light != lightFront.GetResult(light)) lightFront.Text = string.Empty;
}
if(l.Front.Fields.GetValue("lightabsolute", false) != cbLightAbsoluteFront.Checked)
{
cbLightAbsoluteFront.ThreeState = true;
cbLightAbsoluteFront.CheckState = CheckState.Indeterminate;
int repeatcnt = UniFields.GetInteger(l.Front.Fields, "repeatcnt", 0);
if (repeatcnt != repeatcntFront.GetResult(repeatcnt)) repeatcntFront.Text = string.Empty;
}
frontTextureOffset.SetValues(l.Front.OffsetX, l.Front.OffsetY, false); //mxd
@ -505,17 +490,10 @@ namespace CodeImp.DoomBuilder.Windows
foreach(PairedFieldsControl pfc in backUdmfControls)
pfc.SetValuesFrom(l.Back.Fields, false);
if(!string.IsNullOrEmpty(lightBack.Text))
if (!string.IsNullOrEmpty(repeatcntBack.Text))
{
int light = UniFields.GetInteger(l.Back.Fields, "light", 0);
if(light != lightBack.GetResult(light))
lightBack.Text = string.Empty;
}
if(l.Back.Fields.GetValue("lightabsolute", false) != cbLightAbsoluteBack.Checked)
{
cbLightAbsoluteBack.ThreeState = true;
cbLightAbsoluteBack.CheckState = CheckState.Indeterminate;
int repeatcnt = UniFields.GetInteger(l.Back.Fields, "repeatcnt", 0);
if (repeatcnt != repeatcntBack.GetResult(repeatcnt)) repeatcntBack.Text = string.Empty;
}
backTextureOffset.SetValues(l.Back.OffsetX, l.Back.OffsetY, false); //mxd
@ -543,8 +521,6 @@ namespace CodeImp.DoomBuilder.Windows
commenteditor.FinishSetup(); //mxd
//mxd. Update "Reset" buttons
resetfrontlight.Visible = (cbLightAbsoluteFront.CheckState != CheckState.Unchecked || lightFront.GetResult(0) != 0);
resetbacklight.Visible = (cbLightAbsoluteBack.CheckState != CheckState.Unchecked || lightBack.GetResult(0) != 0);
if(alpha.Text == "1") resetalpha.Visible = false;
}
@ -861,6 +837,82 @@ namespace CodeImp.DoomBuilder.Windows
#region ================== mxd. Realtime events (sides)
#region Repeatcnt changed
private void repeatcntFront_WhenTextChanged(object sender, EventArgs e)
{
if (preventchanges) return;
MakeUndo(); //mxd
int i = 0;
// Reset increment steps, otherwise it's just keep counting and counting
repeatcntFront.ResetIncrementStep();
//restore values
if (string.IsNullOrEmpty(repeatcntFront.Text))
{
foreach (Linedef l in lines)
{
if (l.Front != null)
UniFields.SetInteger(l.Front.Fields, "repeatcnt", (linedefprops[i].Front != null ? linedefprops[i].Front.RepeatCount : 0), 0);
i++;
}
}
else //update values
{
foreach (Linedef l in lines)
{
if (l.Front != null)
{
int value = repeatcntFront.GetResult((linedefprops[i].Front != null ? linedefprops[i].Front.RepeatCount : 0));
UniFields.SetInteger(l.Front.Fields, "repeatcnt", value, 0);
}
i++;
}
}
General.Map.IsChanged = true;
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
}
private void repeatcntBack_WhenTextChanged(object sender, EventArgs e)
{
if (preventchanges) return;
MakeUndo(); //mxd
int i = 0;
// Reset increment steps, otherwise it's just keep counting and counting
repeatcntBack.ResetIncrementStep();
//restore values
if (string.IsNullOrEmpty(repeatcntBack.Text))
{
foreach (Linedef l in lines)
{
if (l.Back != null)
UniFields.SetInteger(l.Back.Fields, "repeatcnt", (linedefprops[i].Back != null ? linedefprops[i].Back.RepeatCount : 0), 0);
i++;
}
}
else //update values
{
foreach (Linedef l in lines)
{
if (l.Back != null)
{
int value = repeatcntBack.GetResult((linedefprops[i].Back != null ? linedefprops[i].Back.RepeatCount : 0));
UniFields.SetInteger(l.Back.Fields, "repeatcnt", value, 0);
}
i++;
}
}
General.Map.IsChanged = true;
if (OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
}
#endregion
#region Custom fields changed
// Custom fields on front sides
@ -879,12 +931,10 @@ namespace CodeImp.DoomBuilder.Windows
foreach(PairedFieldsControl pfc in frontUdmfControls)
pfc.SetValuesFrom(fs.Fields, true);
lightFront.Text = UniFields.GetInteger(fs.Fields, "light", 0).ToString();
cbLightAbsoluteFront.ThreeState = false;
cbLightAbsoluteFront.Checked = fs.Fields.GetValue("lightabsolute", false);
repeatcntFront.Text = UniFields.GetInteger(fs.Fields, "repeatcnt", 0).ToString();
//flags
foreach(CheckBox c in flagsFront.Checkboxes)
foreach (CheckBox c in flagsFront.Checkboxes)
if(fs.Flags.ContainsKey(c.Tag.ToString())) c.Checked = fs.Flags[c.Tag.ToString()];
//..then to all of them
@ -893,20 +943,14 @@ namespace CodeImp.DoomBuilder.Windows
foreach(PairedFieldsControl pfc in frontUdmfControls)
pfc.SetValuesFrom(s.Fields, false);
if(!string.IsNullOrEmpty(lightFront.Text))
if (!string.IsNullOrEmpty(repeatcntFront.Text))
{
int light = UniFields.GetInteger(s.Fields, "light", 0);
if(light != lightFront.GetResult(light)) lightFront.Text = string.Empty;
}
if(s.Fields.GetValue("lightabsolute", false) != cbLightAbsoluteFront.Checked)
{
cbLightAbsoluteFront.ThreeState = true;
cbLightAbsoluteFront.CheckState = CheckState.Indeterminate;
int repeatcnt = UniFields.GetInteger(s.Fields, "repeatcnt", 0);
if (repeatcnt != repeatcntFront.GetResult(repeatcnt)) repeatcntFront.Text = string.Empty;
}
//flags
foreach(CheckBox c in flagsFront.Checkboxes)
foreach (CheckBox c in flagsFront.Checkboxes)
{
if(c.CheckState == CheckState.Indeterminate) continue;
@ -942,12 +986,10 @@ namespace CodeImp.DoomBuilder.Windows
foreach(PairedFieldsControl pfc in backUdmfControls)
pfc.SetValuesFrom(fs.Fields, true);
lightBack.Text = UniFields.GetInteger(fs.Fields, "light", 0).ToString();
cbLightAbsoluteBack.ThreeState = false;
cbLightAbsoluteBack.Checked = fs.Fields.GetValue("lightabsolute", false);
repeatcntBack.Text = UniFields.GetInteger(fs.Fields, "repeatcnt", 0).ToString();
//flags
foreach(CheckBox c in flagsBack.Checkboxes)
foreach (CheckBox c in flagsBack.Checkboxes)
if(fs.Flags.ContainsKey(c.Tag.ToString())) c.Checked = fs.Flags[c.Tag.ToString()];
//..then to all of them
@ -956,20 +998,14 @@ namespace CodeImp.DoomBuilder.Windows
foreach(PairedFieldsControl pfc in backUdmfControls)
pfc.SetValuesFrom(s.Fields, false);
if(!string.IsNullOrEmpty(lightBack.Text))
if (!string.IsNullOrEmpty(repeatcntBack.Text))
{
int light = UniFields.GetInteger(s.Fields, "light", 0);
if(light != lightBack.GetResult(light)) lightBack.Text = string.Empty;
}
if(s.Fields.GetValue("lightabsolute", false) != cbLightAbsoluteBack.Checked)
{
cbLightAbsoluteBack.ThreeState = true;
cbLightAbsoluteBack.CheckState = CheckState.Indeterminate;
int repeatcnt = UniFields.GetInteger(s.Fields, "repeatcnt", 0);
if (repeatcnt != repeatcntBack.GetResult(repeatcnt)) repeatcntBack.Text = string.Empty;
}
//flags
foreach(CheckBox c in flagsBack.Checkboxes)
foreach (CheckBox c in flagsBack.Checkboxes)
{
if(c.CheckState == CheckState.Indeterminate) continue;
@ -1177,245 +1213,6 @@ namespace CodeImp.DoomBuilder.Windows
#endregion
#region Brightness changed
private void lightFront_WhenTextChanged(object sender, EventArgs e)
{
if(preventchanges) return;
MakeUndo(); //mxd
int i = 0;
// Reset increment steps, otherwise it's just keep counting and counting
lightFront.ResetIncrementStep();
//restore values
if (string.IsNullOrEmpty(lightFront.Text))
{
foreach(Linedef l in lines)
{
if(l.Front != null)
UniFields.SetInteger(l.Front.Fields, "light", (linedefprops[i].Front != null ? linedefprops[i].Front.Brightness : 0), 0);
i++;
}
}
else //update values
{
foreach(Linedef l in lines)
{
if(l.Front != null)
{
bool absolute = false;
switch(cbLightAbsoluteFront.CheckState)
{
case CheckState.Indeterminate:
absolute = l.Front.Fields.GetValue("lightabsolute", false);
break;
case CheckState.Checked:
absolute = true;
break;
}
int value = General.Clamp(lightFront.GetResult((linedefprops[i].Front != null ? linedefprops[i].Front.Brightness : 0)), (absolute ? 0 : -255), 255);
UniFields.SetInteger(l.Front.Fields, "light", value, 0);
}
i++;
}
}
resetfrontlight.Visible = (cbLightAbsoluteFront.CheckState != CheckState.Unchecked || lightFront.Text != "0");
General.Map.IsChanged = true;
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
}
private void lightBack_WhenTextChanged(object sender, EventArgs e)
{
if(preventchanges) return;
MakeUndo(); //mxd
int i = 0;
//restore values
if(string.IsNullOrEmpty(lightBack.Text))
{
foreach(Linedef l in lines)
{
if(l.Back != null)
UniFields.SetInteger(l.Back.Fields, "light", (linedefprops[i].Back != null ? linedefprops[i].Back.Brightness : 0), 0);
i++;
}
}
else //update values
{
foreach(Linedef l in lines)
{
if(l.Back != null)
{
bool absolute = false;
switch(cbLightAbsoluteBack.CheckState)
{
case CheckState.Indeterminate:
absolute = l.Back.Fields.GetValue("lightabsolute", false);
break;
case CheckState.Checked:
absolute = true;
break;
}
int value = General.Clamp(lightBack.GetResult((linedefprops[i].Back != null ? linedefprops[i].Back.Brightness : 0)), (absolute ? 0 : -255), 255);
UniFields.SetInteger(l.Back.Fields, "light", value, 0);
}
i++;
}
}
resetbacklight.Visible = (cbLightAbsoluteBack.CheckState != CheckState.Unchecked || lightBack.Text != "0");
General.Map.IsChanged = true;
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
}
private void cbLightAbsoluteFront_CheckedChanged(object sender, EventArgs e)
{
if(preventchanges) return;
MakeUndo(); //mxd
if(cbLightAbsoluteFront.Checked)
{
foreach(Linedef l in lines)
{
if(l.Front == null) continue;
l.Front.Fields["lightabsolute"] = new UniValue(UniversalType.Boolean, true);
}
}
else if(cbLightAbsoluteFront.CheckState == CheckState.Indeterminate)
{
int i = 0;
foreach(Linedef l in lines)
{
if(l.Front != null)
{
if(linedefprops[i].Front != null && linedefprops[i].Front.AbsoluteBrightness)
{
l.Front.Fields["lightabsolute"] = new UniValue(UniversalType.Boolean, true);
}
else if(l.Front.Fields.ContainsKey("lightabsolute"))
{
l.Front.Fields.Remove("lightabsolute");
}
}
i++;
}
}
else
{
foreach(Linedef l in lines)
{
if(l.Front == null) continue;
if(l.Front.Fields.ContainsKey("lightabsolute")) l.Front.Fields.Remove("lightabsolute");
}
}
resetfrontlight.Visible = (cbLightAbsoluteFront.CheckState != CheckState.Unchecked || lightFront.Text != "0");
General.Map.IsChanged = true;
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
}
private void cbLightAbsoluteBack_CheckedChanged(object sender, EventArgs e)
{
if(preventchanges) return;
MakeUndo(); //mxd
if(cbLightAbsoluteBack.Checked)
{
foreach(Linedef l in lines)
{
if(l.Back == null) continue;
l.Back.Fields["lightabsolute"] = new UniValue(UniversalType.Boolean, true);
}
}
else if(cbLightAbsoluteBack.CheckState == CheckState.Indeterminate)
{
int i = 0;
foreach(Linedef l in lines)
{
if(l.Back != null)
{
if(linedefprops[i].Back != null && linedefprops[i].Back.AbsoluteBrightness)
{
l.Back.Fields["lightabsolute"] = new UniValue(UniversalType.Boolean, true);
}
else if(l.Back.Fields.ContainsKey("lightabsolute"))
{
l.Back.Fields.Remove("lightabsolute");
}
}
i++;
}
}
else
{
foreach(Linedef l in lines)
{
if(l.Back == null) continue;
if(l.Back.Fields.ContainsKey("lightabsolute")) l.Back.Fields.Remove("lightabsolute");
}
}
resetbacklight.Visible = (cbLightAbsoluteBack.CheckState != CheckState.Unchecked || lightBack.Text != "0");
General.Map.IsChanged = true;
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
}
private void resetfrontlight_Click(object sender, EventArgs e)
{
MakeUndo(); //mxd
preventchanges = true;
cbLightAbsoluteFront.Checked = false;
lightFront.Text = "0";
foreach(Linedef l in lines)
{
if(l.Front == null) continue;
if(l.Front.Fields.ContainsKey("lightabsolute")) l.Front.Fields.Remove("lightabsolute");
if(l.Front.Fields.ContainsKey("light")) l.Front.Fields.Remove("light");
}
preventchanges = false;
resetfrontlight.Visible = false;
lightFront.Focus();
General.Map.IsChanged = true;
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
}
private void resetbacklight_Click(object sender, EventArgs e)
{
MakeUndo(); //mxd
preventchanges = true;
cbLightAbsoluteBack.Checked = false;
lightBack.Text = "0";
foreach(Linedef l in lines)
{
if(l.Back == null) continue;
if(l.Back.Fields.ContainsKey("lightabsolute")) l.Back.Fields.Remove("lightabsolute");
if(l.Back.Fields.ContainsKey("light")) l.Back.Fields.Remove("light");
}
preventchanges = false;
resetbacklight.Visible = false;
lightBack.Focus();
General.Map.IsChanged = true;
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
}
#endregion
#region Global texture offsets changed
private void frontTextureOffset_OnValuesChanged(object sender, EventArgs e)

View file

@ -132,12 +132,18 @@
<metadata name="executordelaylabel.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="labelRepeatcntFront.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="labelRepeatcntBack.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="tabcustom.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@ -148,45 +154,45 @@
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADM
CAAAAk1TRnQBSQFMAgEBAgEAAegBAAHoAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/1QAAh8GAAIfKAAB/wHx
Af8KAAEfAiYBHwQAAR8CJgEfJgAB/wG7AYsBswH/CAABHwQmAR8CAAEfBCYBHyQAAf8BuwOLAbMB/wcA
ASUB3gQmAh8EJgHeASUjAAH/AbsBigOLAa0BswH/BwABJQHeCCYB3gElIwAB/wG7AooDiwKtAbMB/wcA
ASUB3gYmAd4BJSMAAf8BtQOKAYsBswGLA60BswH/BwABJQYmASUkAAHzA4oBiwHyAf8BtAKtA7MB/wYA
AR8GJgEfJAAB/wG1AYoBtAH/AgAB/wG0Aa0EswH/BAABHwgsAR8kAAH/AfEB/wQAAf8BtAWzAf8CAAEf
Ak0CLALeAiwCTQEfKwAB/wG0BLMB8wEAAR8CUwJNAd4CJQHeAk0CUwEfKwAB/wG0ArMBGQIAASUB3gJT
Ad4BJQIAASUB3gJTAd4BJSwAAf8BugEZBAABJQLeASUEAAElAt4BJTUAAiUGAAIlYwABQgFNAT4HAAE+
AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEABP8EAAL/AucEAAH4Af8CwwQAAfABfwKBBAAB4AE/
AYABAQQAAcABHwHAAQMEAAGAAQ8B4AEHBQABBwHwAQ8FAAEDAfABDwQAAQYBAQHgAQcEAAGPAQABwAED
BAAB/wKAAQEEAAH/AcECgQQAAf8B4wLDBAAC/wLnBAAE/wQACw==
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADK
CAAAAk1TRnQBSQFMAgEBAgIAAQEBAAEBARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA
AUADAAEQAwABAQEAAQgGAAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA
AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA
AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm
AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ
AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm
AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz
AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm
AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm
AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA
ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm
AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm
ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm
AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA
AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ
AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz
AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/
AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA
AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM
AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm
ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ
AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/
ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM
ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm
AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM
AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA
AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA
ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7
Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/9UAAIfBgACHygAAf8B8QH/
CgABHwImAR8EAAEfAiYBHyYAAf8BuwGLAbMB/wgAAR8EJgEfAgABHwQmAR8kAAH/AbsDiwGzAf8HAAEl
Ad4EJgIfBCYB3gElIwAB/wG7AYoDiwGtAbMB/wcAASUB3ggmAd4BJSMAAf8BuwKKA4sCrQGzAf8HAAEl
Ad4GJgHeASUjAAH/AbUDigGLAbMBiwOtAbMB/wcAASUGJgElJAAB8wOKAYsB8gH/AbQCrQOzAf8GAAEf
BiYBHyQAAf8BtQGKAbQB/wIAAf8BtAGtBLMB/wQAAR8ILAEfJAAB/wHxAf8EAAH/AbQFswH/AgABHwJN
AiwC3gIsAk0BHysAAf8BtASzAfMBAAEfAlMCTQHeAiUB3gJNAlMBHysAAf8BtAKzARkCAAElAd4CUwHe
ASUCAAElAd4CUwHeASUsAAH/AboBGQQAASUC3gElBAABJQLeASU1AAIlBgACJWMAAUIBTQE+BwABPgMA
ASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAT/BAAC/wLnBAAB+AH/AsMEAAHwAX8CgQQAAeABPwGA
AQEEAAHAAR8BwAEDBAABgAEPAeABBwUAAQcB8AEPBQABAwHwAQ8EAAEGAQEB4AEHBAABjwEAAcABAwQA
Af8CgAEBBAAB/wHBAoEEAAH/AeMCwwQAAv8C5wQABP8EAAs=
</value>
</data>
<metadata name="tooltip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">