diff --git a/Build/Configurations/Includes/UDMF_misc.cfg b/Build/Configurations/Includes/UDMF_misc.cfg index 7364780aae7bdff3eb52b9d99de51e37a1c31403..fc9bb24abaadcd06330ce4dec3c3b6c73ffd064b 100644 --- a/Build/Configurations/Includes/UDMF_misc.cfg +++ b/Build/Configurations/Includes/UDMF_misc.cfg @@ -65,6 +65,7 @@ sectorflags silent = "Silent"; hidden = "Not shown on automap"; nofallingdamage = "No falling damage"; + waterzone = "Sector is under water and swimmable"; norespawn = "Players can't respawn in this sector"; dropactors = "Actors drop with instantly moving floors"; } diff --git a/Documents/udmf_zdoom.txt b/Documents/udmf_zdoom.txt index bdd70322ebc506a198da97eafd30c8c5d1c88fdf..3241bf4c84a606987ac32fc39fb62282db626471 100644 --- a/Documents/udmf_zdoom.txt +++ b/Documents/udmf_zdoom.txt @@ -113,6 +113,7 @@ Note: All <bool> fields default to false unless mentioned otherwise. blockprojectiles = <bool>;// Line blocks all projectiles blockuse = <bool>; // Line blocks all use actions blocksight = <bool>; // Line blocks monster line of sight + blockhitscan = <bool>; // Line blocks hitscan attacks locknumber = <int>; // Line special is locked arg0str = <string>; // Alternate string-based version of arg0 @@ -186,6 +187,7 @@ Note: All <bool> fields default to false unless mentioned otherwise. soundsequence = <string>; // The sound sequence to play when this sector moves. Placing a // sound sequence thing in the sector will override this property. hidden = <bool>; // if true this sector will not be drawn on the textured automap. + waterzone = <bool>; // Sector is under water and swimmable * Note about dropactors @@ -203,6 +205,8 @@ Note: All <bool> fields default to false unless mentioned otherwise. // Parameter is the conversation ID, 0 meaning none. countsecret = <bool>; // Picking up this actor counts as a secret. arg0str = <string>; // Alternate string-based version of arg0 + gravity = <float>; // Set per-actor gravity. Positive values are multiplied with the class's property, + // negative values are used as their absolute. Default = 1.0. * Note about arg0str @@ -328,6 +332,9 @@ Added back locknumber property. 1.20 25.02.2012 Added arg0str thing property. +1.21 09.08.2013 +Added waterzone sector property. + =============================================================================== EOF =============================================================================== diff --git a/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs b/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs index b539473d1cf9d5c842efe88852dadac0acb69a84..f37441a6eba8390424f91efa0995ce77f4d5182f 100644 --- a/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs +++ b/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs @@ -65,8 +65,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom { //sky1 or sky2 if (token == "sky1" || token == "sky2") { - //Form1.Trace("Got sky " + token); - string skyType = token; SkipWhitespace(true); token = StripTokenQuotes(ReadToken()).ToLowerInvariant(); @@ -135,7 +133,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom { float scrollSpeed = 0; if (!ReadSignedFloat(token, ref scrollSpeed)) { // Not numeric! - General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + skyType + " scroll speed value, but got '" + token + "'"); datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again continue; } diff --git a/Source/Core/Resources/UDMF_UI.cfg b/Source/Core/Resources/UDMF_UI.cfg index 613d0f54e88d252d1195af441e0992aebac8a010..79599875fb89a43aba219e29ffa463350f8ba58e 100644 --- a/Source/Core/Resources/UDMF_UI.cfg +++ b/Source/Core/Resources/UDMF_UI.cfg @@ -61,6 +61,7 @@ uifields thing { arg0str; - conversation; + conversation; + gravity; } } \ No newline at end of file diff --git a/Source/Core/Windows/ThingEditForm.Designer.cs b/Source/Core/Windows/ThingEditForm.Designer.cs index f212f2777c1b828805dfd6e7ee77c6d760f73c8c..8833c03a8201b9baa45753d0ed0942a954f912bc 100644 --- a/Source/Core/Windows/ThingEditForm.Designer.cs +++ b/Source/Core/Windows/ThingEditForm.Designer.cs @@ -32,6 +32,8 @@ namespace CodeImp.DoomBuilder.Windows System.Windows.Forms.GroupBox groupBox2; System.Windows.Forms.Label label7; this.thingtype = new CodeImp.DoomBuilder.Controls.ThingBrowserControl(); + this.gravity = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox(); + this.labelGravity = new System.Windows.Forms.Label(); this.cbRandomAngle = new System.Windows.Forms.CheckBox(); this.cbAbsoluteHeight = new System.Windows.Forms.CheckBox(); this.label2 = new System.Windows.Forms.Label(); @@ -119,6 +121,8 @@ namespace CodeImp.DoomBuilder.Windows // groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + groupBox2.Controls.Add(this.gravity); + groupBox2.Controls.Add(this.labelGravity); groupBox2.Controls.Add(this.cbRandomAngle); groupBox2.Controls.Add(this.cbAbsoluteHeight); groupBox2.Controls.Add(this.label2); @@ -130,17 +134,39 @@ namespace CodeImp.DoomBuilder.Windows groupBox2.Controls.Add(this.zlabel); groupBox2.Controls.Add(this.anglecontrol); groupBox2.Controls.Add(this.labelAngle); - groupBox2.Location = new System.Drawing.Point(397, 246); + groupBox2.Location = new System.Drawing.Point(394, 216); groupBox2.Name = "groupBox2"; - groupBox2.Size = new System.Drawing.Size(249, 134); + groupBox2.Size = new System.Drawing.Size(252, 164); groupBox2.TabIndex = 2; groupBox2.TabStop = false; groupBox2.Text = " Coordination "; // + // gravity + // + this.gravity.AllowDecimal = true; + this.gravity.AllowNegative = true; + this.gravity.AllowRelative = false; + this.gravity.ButtonStep = 8; + this.gravity.ButtonStepFloat = 0.1F; + this.gravity.Location = new System.Drawing.Point(61, 118); + this.gravity.Name = "gravity"; + this.gravity.Size = new System.Drawing.Size(72, 24); + this.gravity.StepValues = null; + this.gravity.TabIndex = 19; + // + // labelGravity + // + this.labelGravity.Location = new System.Drawing.Point(5, 123); + this.labelGravity.Name = "labelGravity"; + this.labelGravity.Size = new System.Drawing.Size(50, 14); + this.labelGravity.TabIndex = 18; + this.labelGravity.Text = "Gravity:"; + this.labelGravity.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // // cbRandomAngle // this.cbRandomAngle.AutoSize = true; - this.cbRandomAngle.Location = new System.Drawing.Point(38, 114); + this.cbRandomAngle.Location = new System.Drawing.Point(151, 19); this.cbRandomAngle.Name = "cbRandomAngle"; this.cbRandomAngle.Size = new System.Drawing.Size(94, 18); this.cbRandomAngle.TabIndex = 17; @@ -151,7 +177,7 @@ namespace CodeImp.DoomBuilder.Windows // cbAbsoluteHeight // this.cbAbsoluteHeight.AutoSize = true; - this.cbAbsoluteHeight.Location = new System.Drawing.Point(38, 93); + this.cbAbsoluteHeight.Location = new System.Drawing.Point(37, 94); this.cbAbsoluteHeight.Name = "cbAbsoluteHeight"; this.cbAbsoluteHeight.Size = new System.Drawing.Size(102, 18); this.cbAbsoluteHeight.TabIndex = 16; @@ -161,7 +187,7 @@ namespace CodeImp.DoomBuilder.Windows // // label2 // - this.label2.Location = new System.Drawing.Point(12, 21); + this.label2.Location = new System.Drawing.Point(5, 21); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(50, 14); this.label2.TabIndex = 15; @@ -170,9 +196,9 @@ namespace CodeImp.DoomBuilder.Windows // // label1 // - this.label1.Location = new System.Drawing.Point(9, 46); + this.label1.Location = new System.Drawing.Point(5, 46); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(53, 14); + this.label1.Size = new System.Drawing.Size(50, 14); this.label1.TabIndex = 14; this.label1.Text = "Y:"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -184,7 +210,7 @@ namespace CodeImp.DoomBuilder.Windows this.posX.AllowRelative = true; this.posX.ButtonStep = 8; this.posX.ButtonStepFloat = 1F; - this.posX.Location = new System.Drawing.Point(68, 16); + this.posX.Location = new System.Drawing.Point(61, 16); this.posX.Name = "posX"; this.posX.Size = new System.Drawing.Size(72, 24); this.posX.StepValues = null; @@ -198,7 +224,7 @@ namespace CodeImp.DoomBuilder.Windows this.posY.AllowRelative = true; this.posY.ButtonStep = 8; this.posY.ButtonStepFloat = 1F; - this.posY.Location = new System.Drawing.Point(68, 41); + this.posY.Location = new System.Drawing.Point(61, 41); this.posY.Name = "posY"; this.posY.Size = new System.Drawing.Size(72, 24); this.posY.StepValues = null; @@ -212,7 +238,7 @@ namespace CodeImp.DoomBuilder.Windows this.posZ.AllowRelative = true; this.posZ.ButtonStep = 8; this.posZ.ButtonStepFloat = 1F; - this.posZ.Location = new System.Drawing.Point(68, 66); + this.posZ.Location = new System.Drawing.Point(61, 66); this.posZ.Name = "posZ"; this.posZ.Size = new System.Drawing.Size(72, 24); this.posZ.StepValues = null; @@ -226,7 +252,7 @@ namespace CodeImp.DoomBuilder.Windows this.angle.AllowRelative = true; this.angle.ButtonStep = 1; this.angle.ButtonStepFloat = 1F; - this.angle.Location = new System.Drawing.Point(186, 16); + this.angle.Location = new System.Drawing.Point(186, 41); this.angle.Name = "angle"; this.angle.Size = new System.Drawing.Size(57, 24); this.angle.StepValues = null; @@ -235,9 +261,9 @@ namespace CodeImp.DoomBuilder.Windows // // zlabel // - this.zlabel.Location = new System.Drawing.Point(6, 71); + this.zlabel.Location = new System.Drawing.Point(5, 71); this.zlabel.Name = "zlabel"; - this.zlabel.Size = new System.Drawing.Size(56, 14); + this.zlabel.Size = new System.Drawing.Size(50, 14); this.zlabel.TabIndex = 9; this.zlabel.Text = "Height:"; this.zlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -247,7 +273,7 @@ namespace CodeImp.DoomBuilder.Windows this.anglecontrol.BackColor = System.Drawing.SystemColors.Control; this.anglecontrol.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.anglecontrol.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.anglecontrol.Location = new System.Drawing.Point(153, 46); + this.anglecontrol.Location = new System.Drawing.Point(152, 71); this.anglecontrol.Name = "anglecontrol"; this.anglecontrol.Size = new System.Drawing.Size(84, 84); this.anglecontrol.TabIndex = 2; @@ -257,7 +283,7 @@ namespace CodeImp.DoomBuilder.Windows // labelAngle // this.labelAngle.AutoSize = true; - this.labelAngle.Location = new System.Drawing.Point(149, 21); + this.labelAngle.Location = new System.Drawing.Point(149, 46); this.labelAngle.Name = "labelAngle"; this.labelAngle.Size = new System.Drawing.Size(38, 14); this.labelAngle.TabIndex = 8; @@ -310,7 +336,7 @@ namespace CodeImp.DoomBuilder.Windows this.spritetex.BackColor = System.Drawing.SystemColors.AppWorkspace; this.spritetex.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.spritetex.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.spritetex.Location = new System.Drawing.Point(284, 252); + this.spritetex.Location = new System.Drawing.Point(284, 222); this.spritetex.Name = "spritetex"; this.spritetex.Size = new System.Drawing.Size(104, 100); this.spritetex.TabIndex = 22; @@ -323,7 +349,7 @@ namespace CodeImp.DoomBuilder.Windows this.settingsgroup.Controls.Add(this.flags); this.settingsgroup.Location = new System.Drawing.Point(284, 6); this.settingsgroup.Name = "settingsgroup"; - this.settingsgroup.Size = new System.Drawing.Size(362, 234); + this.settingsgroup.Size = new System.Drawing.Size(362, 204); this.settingsgroup.TabIndex = 1; this.settingsgroup.TabStop = false; this.settingsgroup.Text = " Settings "; @@ -337,7 +363,7 @@ namespace CodeImp.DoomBuilder.Windows this.flags.Columns = 3; this.flags.Location = new System.Drawing.Point(19, 19); this.flags.Name = "flags"; - this.flags.Size = new System.Drawing.Size(337, 208); + this.flags.Size = new System.Drawing.Size(337, 178); this.flags.TabIndex = 0; this.flags.VerticalSpacing = 1; // @@ -732,5 +758,7 @@ namespace CodeImp.DoomBuilder.Windows private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox conversationID; private System.Windows.Forms.Label labelID; private System.Windows.Forms.ComboBox scriptNumbers; + private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox gravity; + private System.Windows.Forms.Label labelGravity; } } \ No newline at end of file diff --git a/Source/Core/Windows/ThingEditForm.cs b/Source/Core/Windows/ThingEditForm.cs index fa92ccc65cb9f125e1597fd006a028c38f4ff761..2aa1e19d92578a7436453e702270b7603a0e49ca 100644 --- a/Source/Core/Windows/ThingEditForm.cs +++ b/Source/Core/Windows/ThingEditForm.cs @@ -104,6 +104,8 @@ namespace CodeImp.DoomBuilder.Windows // Hide unused controls labelID.Visible = false; //mxd conversationID.Visible = false; //mxd + labelGravity.Visible = false; //mxd + gravity.Visible = false; //mxd } // Tag/Effects? @@ -185,6 +187,7 @@ namespace CodeImp.DoomBuilder.Windows if(General.Map.FormatInterface.HasCustomFields) { fieldslist.SetValues(ft.Fields, true); conversationID.Text = ft.Fields.GetValue("conversation", 0).ToString(); + gravity.Text = ft.Fields.GetValue("gravity", 1.0f).ToString(); arg0str = ft.Fields.GetValue("arg0str", string.Empty); haveArg0Str = !string.IsNullOrEmpty(arg0str); } @@ -256,6 +259,9 @@ namespace CodeImp.DoomBuilder.Windows if(t.Fields.GetValue("conversation", 0).ToString() != conversationID.Text) conversationID.Text = ""; + if(t.Fields.GetValue("gravity", 1.0f).ToString() != gravity.Text) + gravity.Text = ""; + if (arg0str != t.Fields.GetValue("arg0str", string.Empty)) { haveArg0Str = true; arg0str = string.Empty; @@ -487,6 +493,9 @@ namespace CodeImp.DoomBuilder.Windows if(!string.IsNullOrEmpty(conversationID.Text)) UDMFTools.SetInteger(t.Fields, "conversation", conversationID.GetResult(t.Fields.GetValue("conversation", 0)), 0, false); + + if(!string.IsNullOrEmpty(gravity.Text)) + UDMFTools.SetFloat(t.Fields, "gravity", gravity.GetResultFloat(t.Fields.GetValue("gravity", 1.0f)), 1.0f, false); } // Update settings diff --git a/Source/Core/Windows/ThingEditForm.resx b/Source/Core/Windows/ThingEditForm.resx index f4c5e6edb8ad5ce6041ae126d93d5a4eb01c569a..dffbb6ff2ee9a75e12d84b9eb3b294f480a3573d 100644 --- a/Source/Core/Windows/ThingEditForm.resx +++ b/Source/Core/Windows/ThingEditForm.resx @@ -138,6 +138,24 @@ <metadata name="actiongroup.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> + <metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="tabcustom.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="actiongroup.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="hexenpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="doompanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> <metadata name="hexenpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> @@ -150,13 +168,19 @@ <metadata name="arg2label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="doompanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <metadata name="arg1label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <metadata name="arg0label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="tabcustom.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <metadata name="arg2label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="doompanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> + <value>True</value> + </metadata> + <metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> <metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">