From a03d5c5291ff8592f87972e5570bb74870c004ff Mon Sep 17 00:00:00 2001 From: MascaraSnake Date: Fri, 15 Jan 2016 19:34:02 +0100 Subject: [PATCH] Allow angle/flags/parameter descriptions to be changed per Thing type --- Build/Configurations/Srb2-21slopeszb.cfg | 148 +++++++++++++++++++++++ Source/Core/Config/ThingCategory.cs | 18 +++ Source/Core/Config/ThingTypeInfo.cs | 24 ++++ Source/Core/Windows/ThingEditForm.cs | 12 +- 4 files changed, 201 insertions(+), 1 deletion(-) diff --git a/Build/Configurations/Srb2-21slopeszb.cfg b/Build/Configurations/Srb2-21slopeszb.cfg index 2450d3a..cd02192 100644 --- a/Build/Configurations/Srb2-21slopeszb.cfg +++ b/Build/Configurations/Srb2-21slopeszb.cfg @@ -2682,6 +2682,7 @@ thingtypes sprite = "FISHA0"; width = 8; height = 28; + angletext = "Jump strength"; } 103 { @@ -2754,6 +2755,7 @@ thingtypes sprite = "TURRI1"; width = 12; height = 64; + angletext = "Firing delay"; } 112 { @@ -2936,6 +2938,9 @@ thingtypes height = 16; flags8text = "[8] Sea Egg shooting point"; sprite = "internal:eggmanway"; + angletext = "No. (Sea Egg)"; + flagsvaluetext = "No. (Brak)"; + parametertext = "Next"; } 293 { @@ -3277,6 +3282,7 @@ thingtypes sprite = "STPTA0"; width = 64; height = 80; + angletext = "Angle/Order"; } 526 { @@ -3314,6 +3320,7 @@ thingtypes sprite = "internal:chain1"; height = 32; flags8text = "[8] Double size"; + angletext = "Tag"; } 1107 { @@ -3322,6 +3329,7 @@ thingtypes sprite = "internal:chain2"; height = 32; flags8text = "[8] Double size"; + angletext = "Tag"; } 1108 { @@ -3390,6 +3398,7 @@ thingtypes width = 16; flags4text = "[4] Invisible"; flags8text = "[8] No distance check"; + angletext = "Lift height"; } 541 { @@ -3609,6 +3618,7 @@ thingtypes { title = "Zoom Tube Waypoint"; sprite = "internal:zoom"; + angletext = "Order"; } 754 @@ -3617,6 +3627,7 @@ thingtypes flags4text = "[4] Fades using XY"; flags8text = "[8] Push using XYZ"; sprite = "GWLGA0"; + angletext = "Radius"; } 755 { @@ -3624,30 +3635,35 @@ thingtypes flags4text = "[4] Fades using XY"; flags8text = "[8] Pull using XYZ"; sprite = "GWLRA0"; + angletext = "Radius"; } 760 { title = "PolyObject Anchor"; sprite = "internal:polyanchor"; + angletext = "ID"; } 761 { title = "PolyObject Spawn Point"; sprite = "internal:polycenter"; + angletext = "ID"; } 762 { title = "PolyObject Spawn Point (Crush)"; sprite = "internal:polycentercrush"; + angletext = "ID"; } 780 { title = "Skybox View Point"; sprite = "internal:skyb"; flags4text = "[4] In-map reference point"; + angletext = "View height"; } } @@ -3676,6 +3692,7 @@ thingtypes height = 42; flags4text = "[4] Retractable"; flags8text = "[8] Solid"; + angletext = "Retraction interval"; } 524 { @@ -3711,6 +3728,7 @@ thingtypes sprite = "internal:mace1"; flags4text = "[4] No sounds"; flags8text = "[8] Double size"; + angletext = "Tag"; } 1104 { @@ -3718,12 +3736,14 @@ thingtypes sprite = "internal:mace2"; flags4text = "[4] No sounds"; flags8text = "[8] Double size"; + angletext = "Tag"; } 1202 { arrow = 1; title = "Rock Spawner"; sprite = "ROIAA0"; + angletext = "Tag"; } 1300 { @@ -3732,6 +3752,8 @@ thingtypes sprite = "internal:flameh"; width = 16; flags8text = "[8] Waves vertically"; + angletext = "On/Off time"; + parametertext = "Strength"; } 1301 { @@ -3739,6 +3761,8 @@ thingtypes sprite = "internal:flamev"; width = 16; flags8text = "[8] Shoot downwards"; + angletext = "On/Off time"; + parametertext = "Strength"; } 1500 { @@ -3812,6 +3836,8 @@ thingtypes sprite = "PRTLA0"; width = 8; height = 16; + angletext = "Particle speed"; + parametertext = "Interval"; } 800 { @@ -3872,6 +3898,7 @@ thingtypes width = 8; height = 16; hangs = 1; + angletext = "Dripping interval"; } 1003 { @@ -4024,6 +4051,7 @@ thingtypes width = 16; height = 56; flags8text = "[8] Die upon time up"; + angletext = "Time limit"; } 1704 { @@ -4033,6 +4061,8 @@ thingtypes width = 32; height = 64; unflippable = true; + flagsvaluetext = "Pitch"; + angletext = "Yaw"; } 1705 { @@ -4043,6 +4073,8 @@ thingtypes height = 160; unflippable = true; centerHitbox = true; + flagsvaluetext = "Height"; + angletext = "Pitch/Yaw"; } 1706 { @@ -4098,6 +4130,7 @@ thingtypes height = 160; unflippable = true; centerHitbox = true; + flagsvaluetext = "Radius"; } } @@ -4116,6 +4149,9 @@ thingtypes circle = 1; unflippable = true; ignoreZ = true; + flagsvaluetext = "Order"; + angletext = "Radius/Direction"; + parametertext = "Mare"; } 1701 { @@ -4123,6 +4159,8 @@ thingtypes sprite = "internal:axis2"; unflippable = true; ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 1702 { @@ -4130,6 +4168,8 @@ thingtypes sprite = "internal:axis3"; unflippable = true; ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 1710 { @@ -4137,6 +4177,8 @@ thingtypes sprite = "CAPSA0"; width = 72; height = 144; + angletext = "Rings"; + parametertext = "Mare"; } } @@ -4153,16 +4195,29 @@ thingtypes title = "(Mare 2) Axis"; sprite = "internal:axis1"; circle = 1; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + angletext = "Radius/Direction"; + parametertext = "Mare"; } 5797 { title = "(Mare 2) Axis Transfer"; sprite = "internal:axis2"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 5798 { title = "(Mare 2) Axis Transfer Line"; sprite = "internal:axis3"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 5806 { @@ -4170,6 +4225,8 @@ thingtypes sprite = "CAPSA0"; width = 72; height = 144; + angletext = "Rings"; + parametertext = "Mare"; } } @@ -4186,16 +4243,29 @@ thingtypes title = "(Mare 3) Axis"; sprite = "internal:axis1"; circle = 1; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + angletext = "Radius/Direction"; + parametertext = "Mare"; } 9893 { title = "(Mare 3) Axis Transfer"; sprite = "internal:axis2"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 9894 { title = "(Mare 3) Axis Transfer Line"; sprite = "internal:axis3"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 9902 { @@ -4203,6 +4273,8 @@ thingtypes sprite = "CAPSA0"; width = 72; height = 144; + angletext = "Rings"; + parametertext = "Mare"; } } @@ -4219,16 +4291,29 @@ thingtypes title = "(Mare 4) Axis"; sprite = "internal:axis1"; circle = 1; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + angletext = "Radius/Direction"; + parametertext = "Mare"; } 13989 { title = "(Mare 4) Axis Transfer"; sprite = "internal:axis2"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 13990 { title = "(Mare 4) Axis Transfer Line"; sprite = "internal:axis3"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 13998 { @@ -4236,6 +4321,8 @@ thingtypes sprite = "CAPSA0"; width = 72; height = 144; + angletext = "Rings"; + parametertext = "Mare"; } } @@ -4252,16 +4339,29 @@ thingtypes title = "(Mare 5) Axis"; sprite = "internal:axis1"; circle = 1; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + angletext = "Radius/Direction"; + parametertext = "Mare"; } 18085 { title = "(Mare 5) Axis Transfer"; sprite = "internal:axis2"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 18086 { title = "(Mare 5) Axis Transfer Line"; sprite = "internal:axis3"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 18094 { @@ -4269,6 +4369,8 @@ thingtypes sprite = "CAPSA0"; width = 72; height = 144; + angletext = "Rings"; + parametertext = "Mare"; } } @@ -4285,16 +4387,29 @@ thingtypes title = "(Mare 6) Axis"; sprite = "internal:axis1"; circle = 1; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + angletext = "Radius/Direction"; + parametertext = "Mare"; } 22181 { title = "(Mare 6) Axis Transfer"; sprite = "internal:axis2"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 22182 { title = "(Mare 6) Axis Transfer Line"; sprite = "internal:axis3"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 22190 { @@ -4302,6 +4417,8 @@ thingtypes sprite = "CAPSA0"; width = 72; height = 144; + angletext = "Rings"; + parametertext = "Mare"; } } @@ -4318,16 +4435,29 @@ thingtypes title = "(Mare 7) Axis"; sprite = "internal:axis1"; circle = 1; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + angletext = "Radius/Direction"; + parametertext = "Mare"; } 26277 { title = "(Mare 7) Axis Transfer"; sprite = "internal:axis2"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 26278 { title = "(Mare 7) Axis Transfer Line"; sprite = "internal:axis3"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 26286 { @@ -4335,6 +4465,8 @@ thingtypes sprite = "CAPSA0"; width = 72; height = 144; + angletext = "Rings"; + parametertext = "Mare"; } } @@ -4351,16 +4483,29 @@ thingtypes title = "(Mare 8) Axis"; sprite = "internal:axis1"; circle = 1; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + angletext = "Radius/Direction"; + parametertext = "Mare"; } 30373 { title = "(Mare 8) Axis Transfer"; sprite = "internal:axis2"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 30374 { title = "(Mare 8) Axis Transfer Line"; sprite = "internal:axis3"; + unflippable = true; + ignoreZ = true; + flagsvaluetext = "Order"; + parametertext = "Mare"; } 30382 { @@ -4368,6 +4513,8 @@ thingtypes sprite = "CAPSA0"; width = 72; height = 144; + angletext = "Rings"; + parametertext = "Mare"; } } @@ -4419,6 +4566,7 @@ thingtypes sprite = "PUMAA0"; width = 8; height = 16; + angletext = "Jump strength"; } 1806 { diff --git a/Source/Core/Config/ThingCategory.cs b/Source/Core/Config/ThingCategory.cs index 28d0dbe..2dd14ee 100644 --- a/Source/Core/Config/ThingCategory.cs +++ b/Source/Core/Config/ThingCategory.cs @@ -63,6 +63,9 @@ namespace CodeImp.DoomBuilder.Config private readonly bool isUnflippable; private readonly bool ignoreZ; private readonly bool centerHitbox; + private readonly string angletext; + private readonly string flagsvaluetext; + private readonly string parametertext; // Disposing private bool isdisposed; @@ -100,6 +103,9 @@ namespace CodeImp.DoomBuilder.Config public bool IsUnflippable { get { return isUnflippable; } } public bool IgnoreZ { get { return ignoreZ; } } public bool CenterHitbox { get { return centerHitbox; } } + public string AngleText { get { return angletext; } } + public string FlagsValueText { get { return flagsvaluetext; } } + public string ParameterText { get { return parametertext; } } #endregion #region ================== Constructor / Disposer @@ -135,6 +141,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = parent.isUnflippable; this.ignoreZ = parent.ignoreZ; this.centerHitbox = parent.centerHitbox; + this.angletext = parent.angletext; + this.flagsvaluetext = parent.flagsvaluetext; + this.parametertext = parent.parametertext; } // Set default properties else @@ -158,6 +167,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = false; this.ignoreZ = false; this.centerHitbox = false; + this.angletext = "Angle"; + this.flagsvaluetext = "Flags value"; + this.parametertext = "Parameter"; } // We have no destructor @@ -217,6 +229,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = cfg.ReadSetting("thingtypes." + name + ".unflippable", parent.isUnflippable); this.ignoreZ = cfg.ReadSetting("thingtypes." + name + ".ignoreZ", parent.ignoreZ); this.centerHitbox = cfg.ReadSetting("thingtypes." + name + ".centerHitbox", parent.centerHitbox); + this.angletext = cfg.ReadSetting("thingtypes." + name + ".angletext", parent.angletext); + this.flagsvaluetext = cfg.ReadSetting("thingtypes." + name + ".flagsvaluetext", parent.flagsvaluetext); + this.parametertext = cfg.ReadSetting("thingtypes." + name + ".parametertext", parent.parametertext); } else { @@ -239,6 +254,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = cfg.ReadSetting("thingtypes." + name + ".unflippable", false); this.ignoreZ = cfg.ReadSetting("thingtypes." + name + ".ignoreZ", false); this.centerHitbox = cfg.ReadSetting("thingtypes." + name + ".centerHitbox", false); + this.angletext = cfg.ReadSetting("thingtypes." + name + ".angletext", "Angle"); + this.flagsvaluetext = cfg.ReadSetting("thingtypes." + name + ".flagsvaluetext", "Flags value"); + this.parametertext = cfg.ReadSetting("thingtypes." + name + ".parametertext", "Parameter"); } // Safety diff --git a/Source/Core/Config/ThingTypeInfo.cs b/Source/Core/Config/ThingTypeInfo.cs index cec12f0..cf62bef 100644 --- a/Source/Core/Config/ThingTypeInfo.cs +++ b/Source/Core/Config/ThingTypeInfo.cs @@ -79,6 +79,9 @@ namespace CodeImp.DoomBuilder.Config private bool isUnflippable; private bool ignoreZ; private bool centerHitbox; + private string angletext; + private string flagsvaluetext; + private string parametertext; //mxd. GLOOME rendering settings private Thing.SpriteRenderMode rendermode; @@ -127,6 +130,9 @@ namespace CodeImp.DoomBuilder.Config public bool IsUnflippable { get { return isUnflippable; } } public bool IgnoreZ { get { return ignoreZ; } } public bool CenterHitbox { get { return centerHitbox; } } + public string AngleText { get { return angletext; } } + public string FlagsValueText { get { return flagsvaluetext; } } + public string ParameterText { get { return parametertext; } } #endregion #region ================== Constructor / Disposer @@ -166,6 +172,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = false; this.ignoreZ = false; this.centerHitbox = false; + this.angletext = "Angle"; + this.flagsvaluetext = "Flags value"; + this.parametertext = "Parameter"; // We have no destructor GC.SuppressFinalize(this); @@ -210,6 +219,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = cfg.ReadSetting("thingtypes." + cat.Name + "." + key + ".unflippable", cat.IsUnflippable); this.ignoreZ = cfg.ReadSetting("thingtypes." + cat.Name + "." + key + ".ignoreZ", cat.IgnoreZ); this.centerHitbox = cfg.ReadSetting("thingtypes." + cat.Name + "." + key + ".centerHitbox", cat.CenterHitbox); + this.angletext = cfg.ReadSetting("thingtypes." + cat.Name + "." + key + ".angletext", cat.AngleText); + this.flagsvaluetext = cfg.ReadSetting("thingtypes." + cat.Name + "." + key + ".flagsvaluetext", cat.FlagsValueText); + this.parametertext = cfg.ReadSetting("thingtypes." + cat.Name + "." + key + ".parametertext", cat.ParameterText); // Read the args for (int i = 0; i < Linedef.NUM_ARGS; i++) @@ -266,6 +278,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = cat.IsUnflippable; this.ignoreZ = cat.IgnoreZ; this.centerHitbox = cat.CenterHitbox; + this.angletext = cat.AngleText; + this.flagsvaluetext = cat.FlagsValueText; + this.parametertext = cat.ParameterText; // Safety if (this.radius < 4f) this.radius = 8f; @@ -316,6 +331,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = cat.IsUnflippable; this.ignoreZ = cat.IgnoreZ; this.centerHitbox = cat.CenterHitbox; + this.angletext = cat.AngleText; + this.flagsvaluetext = cat.FlagsValueText; + this.parametertext = cat.ParameterText; // Safety if (this.radius < 4f) this.radius = 8f; @@ -363,6 +381,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = cat.IsUnflippable; this.ignoreZ = cat.IgnoreZ; this.centerHitbox = cat.CenterHitbox; + this.angletext = cat.AngleText; + this.flagsvaluetext = cat.FlagsValueText; + this.parametertext = cat.ParameterText; // Safety if (this.radius < 4f) this.radius = 8f; @@ -412,6 +433,9 @@ namespace CodeImp.DoomBuilder.Config this.isUnflippable = other.isUnflippable; this.ignoreZ = other.ignoreZ; this.centerHitbox = other.centerHitbox; + this.angletext = other.angletext; + this.flagsvaluetext = other.flagsvaluetext; + this.parametertext = other.parametertext; //mxd. Copy GLOOME properties this.rendermode = other.rendermode; diff --git a/Source/Core/Windows/ThingEditForm.cs b/Source/Core/Windows/ThingEditForm.cs index 6ddd2a8..b0ecf62 100644 --- a/Source/Core/Windows/ThingEditForm.cs +++ b/Source/Core/Windows/ThingEditForm.cs @@ -282,7 +282,15 @@ namespace CodeImp.DoomBuilder.Windows thingprops.Add(new ThingProperties(t)); } - if (allsametype) flags.UpdateCheckboxes(newFlags); + if (allsametype) + { + flags.UpdateCheckboxes(newFlags); + if (ti != null) + { + groupBox4.Text = ti.AngleText; + label3.Text = thinginfo.FlagsValueText + ":"; + } + } preventchanges = false; @@ -628,6 +636,8 @@ namespace CodeImp.DoomBuilder.Windows IDictionary newFlags = (thinginfo == null || thinginfo.Flags.Count == 0) ? General.Map.Config.ThingFlags : thinginfo.Flags; flags.UpdateCheckboxes(newFlags); + groupBox4.Text = (thinginfo == null) ? "Angle" : thinginfo.AngleText; + label3.Text = (thinginfo == null) ? "Flags value:" : thinginfo.FlagsValueText + ":"; General.Map.IsChanged = true; if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);