Sector edit form: Add triggertag and triggerer fields

This commit is contained in:
MascaraSnake 2022-12-30 15:04:42 +01:00
parent c8c73a7c80
commit 24b045fbef
7 changed files with 138 additions and 49 deletions

View file

@ -251,6 +251,7 @@ mapformat_udmf
}
damagetypes = "Generic Water Fire Lava Electric Spike DeathPitTilt DeathPitNoTilt Instakill SpecialStage";
triggerertypes = "Player AllPlayers Mobj";
// LINEDEF FLAGS
linedefflags

View file

@ -244,24 +244,6 @@ universalfields
type = 1;
default = 0.90625;
}
triggertag
{
type = 15;
default = 0;
}
triggerer
{
type = 0;
default = 0;
enum
{
0 = "Player";
1 = "All players";
2 = "Object";
}
}
}
linedef

View file

@ -192,6 +192,9 @@ namespace CodeImp.DoomBuilder.Config
//mxd. Internal sounds. These logical sound names won't trigger a warning when they are not bound to actual sounds in SOUNDINFO.
private HashSet<string> internalsoundnames;
//Triggerer types
private HashSet<string> triggerertypes;
//mxd. Stuff to ignore
private HashSet<string> ignoreddirectories;
private HashSet<string> ignoredextensions;
@ -348,6 +351,9 @@ namespace CodeImp.DoomBuilder.Config
//mxd. Internal sounds
internal HashSet<string> InternalSoundNames { get { return internalsoundnames; } }
//Triggerer types
internal IEnumerable<string> TriggererTypes { get { return triggerertypes; } }
//mxd. Stuff to ignore
internal HashSet<string> IgnoredFileExtensions { get { return ignoredextensions; } }
internal HashSet<string> IgnoredDirectoryNames { get { return ignoreddirectories; } }
@ -529,7 +535,8 @@ namespace CodeImp.DoomBuilder.Config
char[] splitter = {' '};
damagetypes = new HashSet<string>(cfg.ReadSetting("damagetypes", "None").Split(splitter, StringSplitOptions.RemoveEmptyEntries), StringComparer.OrdinalIgnoreCase);
internalsoundnames = new HashSet<string>(cfg.ReadSetting("internalsoundnames", string.Empty).Split(splitter, StringSplitOptions.RemoveEmptyEntries), StringComparer.OrdinalIgnoreCase);
triggerertypes = new HashSet<string>(cfg.ReadSetting("triggerertypes", string.Empty).Split(splitter, StringSplitOptions.RemoveEmptyEntries), StringComparer.OrdinalIgnoreCase);
//mxd. Load stuff to ignore
ignoreddirectories = new HashSet<string>(cfg.ReadSetting("ignoreddirectories", string.Empty).Split(splitter, StringSplitOptions.RemoveEmptyEntries), StringComparer.OrdinalIgnoreCase);
ignoredextensions = new HashSet<string>(cfg.ReadSetting("ignoredextensions", string.Empty).Split(splitter, StringSplitOptions.RemoveEmptyEntries), StringComparer.OrdinalIgnoreCase);

View file

@ -84,6 +84,8 @@ uifields
color_floor = 0;
lightalpha = 0;
fadealpha = 0;
triggertag = 15;
triggerer = 2;
}
thing

View file

@ -42,6 +42,9 @@
System.Windows.Forms.Label label5;
System.Windows.Forms.Label labelLightAlpha;
System.Windows.Forms.Label labelFadeAlpha;
System.Windows.Forms.GroupBox grouptriggers;
System.Windows.Forms.Label labelTriggerer;
System.Windows.Forms.Label labelTriggerTag;
this.tagsselector = new CodeImp.DoomBuilder.Controls.TagsSelector();
this.resetdamagetype = new System.Windows.Forms.Button();
this.brightness = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
@ -54,12 +57,14 @@
this.sectorheightlabel = new System.Windows.Forms.Label();
this.sectorheight = new System.Windows.Forms.Label();
this.floorheight = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.triggerer = new System.Windows.Forms.ComboBox();
this.tabs = new System.Windows.Forms.TabControl();
this.tabproperties = new System.Windows.Forms.TabPage();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.flags = new CodeImp.DoomBuilder.Controls.CheckboxArrayControl();
this.tabColors = new System.Windows.Forms.TabPage();
this.groupBox8 = new System.Windows.Forms.GroupBox();
this.fadeAlpha = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.lightAlpha = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.lightColor = new CodeImp.DoomBuilder.Controls.ColorFieldsControl();
this.fadeColor = new CodeImp.DoomBuilder.Controls.ColorFieldsControl();
@ -104,7 +109,7 @@
this.cancel = new System.Windows.Forms.Button();
this.apply = new System.Windows.Forms.Button();
this.tooltip = new System.Windows.Forms.ToolTip(this.components);
this.fadeAlpha = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
this.triggerTag = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
groupaction = new System.Windows.Forms.GroupBox();
groupeffect = new System.Windows.Forms.GroupBox();
label16 = new System.Windows.Forms.Label();
@ -117,9 +122,13 @@
label5 = new System.Windows.Forms.Label();
labelLightAlpha = new System.Windows.Forms.Label();
labelFadeAlpha = new System.Windows.Forms.Label();
grouptriggers = new System.Windows.Forms.GroupBox();
labelTriggerer = new System.Windows.Forms.Label();
labelTriggerTag = new System.Windows.Forms.Label();
groupaction.SuspendLayout();
groupeffect.SuspendLayout();
groupfloorceiling.SuspendLayout();
grouptriggers.SuspendLayout();
this.tabs.SuspendLayout();
this.tabproperties.SuspendLayout();
this.groupBox3.SuspendLayout();
@ -428,6 +437,47 @@
labelLightAlpha.TabIndex = 18;
labelLightAlpha.Text = "Light alpha:";
//
// labelFadeAlpha
//
labelFadeAlpha.AutoSize = true;
labelFadeAlpha.Location = new System.Drawing.Point(6, 118);
labelFadeAlpha.Name = "labelFadeAlpha";
labelFadeAlpha.Size = new System.Drawing.Size(63, 13);
labelFadeAlpha.TabIndex = 20;
labelFadeAlpha.Text = "Fade alpha:";
//
// grouptriggers
//
grouptriggers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
grouptriggers.Controls.Add(labelTriggerTag);
grouptriggers.Controls.Add(this.triggerTag);
grouptriggers.Controls.Add(labelTriggerer);
grouptriggers.Controls.Add(this.triggerer);
grouptriggers.Location = new System.Drawing.Point(287, 186);
grouptriggers.Name = "grouptriggers";
grouptriggers.Size = new System.Drawing.Size(254, 138);
grouptriggers.TabIndex = 8;
grouptriggers.TabStop = false;
grouptriggers.Text = "Triggers";
//
// labelTriggerer
//
labelTriggerer.Location = new System.Drawing.Point(6, 48);
labelTriggerer.Name = "labelTriggerer";
labelTriggerer.Size = new System.Drawing.Size(74, 14);
labelTriggerer.TabIndex = 7;
labelTriggerer.Text = "Triggerer:";
labelTriggerer.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// triggerer
//
this.triggerer.FormattingEnabled = true;
this.triggerer.Location = new System.Drawing.Point(86, 44);
this.triggerer.Name = "triggerer";
this.triggerer.Size = new System.Drawing.Size(167, 21);
this.triggerer.TabIndex = 8;
//
// tabs
//
this.tabs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -450,6 +500,7 @@
//
// tabproperties
//
this.tabproperties.Controls.Add(grouptriggers);
this.tabproperties.Controls.Add(this.groupBox3);
this.tabproperties.Controls.Add(groupaction);
this.tabproperties.Controls.Add(groupeffect);
@ -513,6 +564,25 @@
this.groupBox8.TabStop = false;
this.groupBox8.Text = "Global sector colors";
//
// fadeAlpha
//
this.fadeAlpha.AllowDecimal = false;
this.fadeAlpha.AllowExpressions = false;
this.fadeAlpha.AllowNegative = false;
this.fadeAlpha.AllowRelative = false;
this.fadeAlpha.ButtonStep = 1;
this.fadeAlpha.ButtonStepBig = 1F;
this.fadeAlpha.ButtonStepFloat = 1F;
this.fadeAlpha.ButtonStepSmall = 1F;
this.fadeAlpha.ButtonStepsUseModifierKeys = true;
this.fadeAlpha.ButtonStepsWrapAround = false;
this.fadeAlpha.Location = new System.Drawing.Point(74, 113);
this.fadeAlpha.Name = "fadeAlpha";
this.fadeAlpha.Size = new System.Drawing.Size(81, 24);
this.fadeAlpha.StepValues = null;
this.fadeAlpha.TabIndex = 21;
this.fadeAlpha.WhenTextChanged += new System.EventHandler(this.fadeAlpha_WhenTextChanged);
//
// lightAlpha
//
this.lightAlpha.AllowDecimal = false;
@ -635,7 +705,7 @@
//
// floorAngleControl
//
this.floorAngleControl.Angle = -1980;
this.floorAngleControl.Angle = -2160;
this.floorAngleControl.AngleOffset = 90;
this.floorAngleControl.DoomAngleClamping = false;
this.floorAngleControl.Location = new System.Drawing.Point(6, 156);
@ -832,7 +902,7 @@
//
// ceilAngleControl
//
this.ceilAngleControl.Angle = -1980;
this.ceilAngleControl.Angle = -2160;
this.ceilAngleControl.AngleOffset = 90;
this.ceilAngleControl.DoomAngleClamping = false;
this.ceilAngleControl.Location = new System.Drawing.Point(6, 156);
@ -1097,33 +1167,32 @@
this.tooltip.InitialDelay = 10;
this.tooltip.ReshowDelay = 100;
//
// fadeAlpha
// triggerTag
//
this.fadeAlpha.AllowDecimal = false;
this.fadeAlpha.AllowExpressions = false;
this.fadeAlpha.AllowNegative = false;
this.fadeAlpha.AllowRelative = false;
this.fadeAlpha.ButtonStep = 1;
this.fadeAlpha.ButtonStepBig = 1F;
this.fadeAlpha.ButtonStepFloat = 1F;
this.fadeAlpha.ButtonStepSmall = 1F;
this.fadeAlpha.ButtonStepsUseModifierKeys = true;
this.fadeAlpha.ButtonStepsWrapAround = false;
this.fadeAlpha.Location = new System.Drawing.Point(74, 113);
this.fadeAlpha.Name = "fadeAlpha";
this.fadeAlpha.Size = new System.Drawing.Size(81, 24);
this.fadeAlpha.StepValues = null;
this.fadeAlpha.TabIndex = 21;
this.fadeAlpha.WhenTextChanged += new System.EventHandler(this.fadeAlpha_WhenTextChanged);
this.triggerTag.AllowDecimal = false;
this.triggerTag.AllowExpressions = false;
this.triggerTag.AllowNegative = false;
this.triggerTag.AllowRelative = false;
this.triggerTag.ButtonStep = 1;
this.triggerTag.ButtonStepBig = 1F;
this.triggerTag.ButtonStepFloat = 1F;
this.triggerTag.ButtonStepSmall = 1F;
this.triggerTag.ButtonStepsUseModifierKeys = true;
this.triggerTag.ButtonStepsWrapAround = false;
this.triggerTag.Location = new System.Drawing.Point(86, 14);
this.triggerTag.Name = "triggerTag";
this.triggerTag.Size = new System.Drawing.Size(81, 24);
this.triggerTag.StepValues = null;
this.triggerTag.TabIndex = 20;
//
// labelFadeAlpha
// labelTriggerTag
//
labelFadeAlpha.AutoSize = true;
labelFadeAlpha.Location = new System.Drawing.Point(6, 118);
labelFadeAlpha.Name = "labelFadeAlpha";
labelFadeAlpha.Size = new System.Drawing.Size(63, 13);
labelFadeAlpha.TabIndex = 20;
labelFadeAlpha.Text = "Fade alpha:";
labelTriggerTag.Location = new System.Drawing.Point(6, 19);
labelTriggerTag.Name = "labelTriggerTag";
labelTriggerTag.Size = new System.Drawing.Size(74, 14);
labelTriggerTag.TabIndex = 21;
labelTriggerTag.Text = "Trigger tag:";
labelTriggerTag.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// SectorEditFormSRB2
//
@ -1151,6 +1220,7 @@
groupeffect.PerformLayout();
groupfloorceiling.ResumeLayout(false);
groupfloorceiling.PerformLayout();
grouptriggers.ResumeLayout(false);
this.tabs.ResumeLayout(false);
this.tabproperties.ResumeLayout(false);
this.groupBox3.ResumeLayout(false);
@ -1236,5 +1306,7 @@
private System.Windows.Forms.GroupBox groupBox8;
private Controls.ButtonsNumericTextbox lightAlpha;
private Controls.ButtonsNumericTextbox fadeAlpha;
private System.Windows.Forms.ComboBox triggerer;
private Controls.ButtonsNumericTextbox triggerTag;
}
}

View file

@ -24,6 +24,7 @@ namespace CodeImp.DoomBuilder.Windows
#region ================== Constants
private const string NO_DAMAGETYPE = "None"; //mxd
private const string TRIGGERER_DEFAULT = "Player";
#endregion
@ -183,6 +184,10 @@ namespace CodeImp.DoomBuilder.Windows
damagetype.Items.Add(NO_DAMAGETYPE);
damagetype.Items.AddRange(General.Map.Data.DamageTypes);
//Fill triggerer list
List<string> ttypes = new List<string>(General.Map.Config.TriggererTypes);
triggerer.Items.AddRange(ttypes.ToArray());
// Initialize custom fields editor
fieldslist.Setup("sector");
@ -293,6 +298,8 @@ namespace CodeImp.DoomBuilder.Windows
// Misc
gravity.Text = sc.Fields.GetValue("gravity", 1.0).ToString();
triggerTag.Text = sc.Fields.GetValue("triggertag", 0).ToString();
triggerer.Text = sc.Fields.GetValue("triggerer", TRIGGERER_DEFAULT);
// Sector colors
fadeColor.SetValueFrom(sc.Fields, true);
@ -382,6 +389,9 @@ namespace CodeImp.DoomBuilder.Windows
// Misc
if(s.Fields.GetValue("gravity", 1.0).ToString() != gravity.Text) gravity.Text = "";
if (s.Fields.GetValue("triggertag", 0).ToString() != triggerTag.Text) triggerTag.Text = "";
if (triggerer.SelectedIndex > -1 && s.Fields.GetValue("triggerer", TRIGGERER_DEFAULT) != triggerer.Text)
triggerer.SelectedIndex = -1;
// Sector colors
fadeColor.SetValueFrom(s.Fields, false);
@ -665,6 +675,12 @@ namespace CodeImp.DoomBuilder.Windows
if(!string.IsNullOrEmpty(gravity.Text))
UniFields.SetFloat(s.Fields, "gravity", gravity.GetResultFloat(s.Fields.GetValue("gravity", 1.0)), 1.0);
if (!string.IsNullOrEmpty(triggerTag.Text))
UniFields.SetInteger(s.Fields, "triggertag", triggerTag.GetResult(s.Fields.GetValue("triggertag", 0)), 0);
if (!string.IsNullOrEmpty(triggerer.Text))
UniFields.SetString(s.Fields, "triggerer", triggerer.Text, TRIGGERER_DEFAULT);
// Clear horizontal slopes
double diff = Math.Abs(Math.Round(s.FloorSlopeOffset) - s.FloorSlopeOffset);
if (Math.Abs(s.FloorSlope.z) == 1.0 && diff < 0.000000001)

View file

@ -181,12 +181,21 @@
<metadata name="labelLightAlpha.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</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="labelFadeAlpha.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="grouptriggers.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="labelTriggerTag.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="labelTriggerer.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="resetfloorlight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m