diff --git a/Source/Core/Properties/AssemblyInfo.cs b/Source/Core/Properties/AssemblyInfo.cs index 714454442e7d5fd91d378863e1f2f03c27b06b60..0876e49b67761369630665bd0b82694cae7a0ad2 100755 --- a/Source/Core/Properties/AssemblyInfo.cs +++ b/Source/Core/Properties/AssemblyInfo.cs @@ -30,6 +30,6 @@ using CodeImp.DoomBuilder; // Build Number // Revision // -[assembly: AssemblyVersion("2.3.0.2833")] +[assembly: AssemblyVersion("2.3.0.2834")] [assembly: NeutralResourcesLanguageAttribute("en")] -[assembly: AssemblyHash("a1dc4bb")] +[assembly: AssemblyHash("87fdd67")] diff --git a/Source/Core/ZDoom/DecorateStateStructure.cs b/Source/Core/ZDoom/DecorateStateStructure.cs index ac6e81903f973f2d1daa7e8815735ba58e411746..57dcd6924f956219f3f17f6e24f6e88d89556f31 100755 --- a/Source/Core/ZDoom/DecorateStateStructure.cs +++ b/Source/Core/ZDoom/DecorateStateStructure.cs @@ -45,7 +45,7 @@ namespace CodeImp.DoomBuilder.ZDoom parser.DataStream.Seek(-(lasttoken.Length + 1), SeekOrigin.Current); // Done here - return; + goto endofallthings; } //mxd. Start of inner scope? else if (token == "{") @@ -69,7 +69,7 @@ namespace CodeImp.DoomBuilder.ZDoom parser.DataStream.Seek(-1, SeekOrigin.Current); // Done here - return; + goto endofallthings; } else { @@ -97,7 +97,7 @@ namespace CodeImp.DoomBuilder.ZDoom parser.DataStream.Seek(-(token.Length + 1), SeekOrigin.Current); // Done here - return; + goto endofallthings; } // No first sprite yet? @@ -158,7 +158,11 @@ namespace CodeImp.DoomBuilder.ZDoom return; } - if (!parser.NextTokenIs(")")) return; + if (!parser.NextTokenIs(")")) + { + parser.ReportError("Expected closing parenthesis in Light()"); + return; + } } //mxd. Inner scope start. Step back and reparse using parent loop else if (t == "{") @@ -191,7 +195,7 @@ namespace CodeImp.DoomBuilder.ZDoom parser.DataStream.Seek(-1, SeekOrigin.Current); // Done here - return; + goto endofallthings; } // Read next token @@ -202,6 +206,11 @@ namespace CodeImp.DoomBuilder.ZDoom lasttoken = token; } + + // return + endofallthings: + + TrimLeft(); } #endregion diff --git a/Source/Core/ZDoom/StateStructure.cs b/Source/Core/ZDoom/StateStructure.cs index 60d011525308a752c53fc59b64b9afda3b7023e1..dd4a3e799965240cb3d931c7b6b98d12b63e879d 100755 --- a/Source/Core/ZDoom/StateStructure.cs +++ b/Source/Core/ZDoom/StateStructure.cs @@ -70,6 +70,24 @@ namespace CodeImp.DoomBuilder.ZDoom #endregion #region ================== Methods + + // This removes useless images from the start of the state (TNT1) + protected void TrimLeft() // :) + { + // postprocess: if there are only TNT1 sprites, do nothing. however, if there were normal sprites as well, use these. + int firstNonEmpty = -1; + for (int i = 0; i < sprites.Count; i++) + { + if (!sprites[i].Sprite.StartsWith("TNT1")) + { + firstNonEmpty = i; + break; + } + } + + if (firstNonEmpty > 0) + sprites.RemoveRange(0, firstNonEmpty); + } // This finds the first valid sprite and returns it public FrameInfo GetSprite(int index) diff --git a/Source/Core/ZDoom/ZScriptActorStructure.cs b/Source/Core/ZDoom/ZScriptActorStructure.cs index 36919d4ba2587b1ceeb9a95b913179ba59a19ab2..1ef7d22e41620ef4317a5ec04343082898f092fb 100755 --- a/Source/Core/ZDoom/ZScriptActorStructure.cs +++ b/Source/Core/ZDoom/ZScriptActorStructure.cs @@ -118,7 +118,15 @@ namespace CodeImp.DoomBuilder.ZDoom //parser.LogWarning(string.Format("{0} = [{1}]", propertyname, string.Join(", ", propertyvalues.ToArray()))); // set property - props[propertyname] = propertyvalues; + // translate "scale" to x and y scale + if (propertyname == "scale") + { + props["xscale"] = props["yscale"] = propertyvalues; + } + else + { + props[propertyname] = propertyvalues; + } break; } } diff --git a/Source/Core/ZDoom/ZScriptStateStructure.cs b/Source/Core/ZDoom/ZScriptStateStructure.cs index 35f85ceb11d8eb8b6b41ec3a822f48f4f4cd17aa..326ca5c0886c9e36daaec428d83df2c22dd7f6ce 100755 --- a/Source/Core/ZDoom/ZScriptStateStructure.cs +++ b/Source/Core/ZDoom/ZScriptStateStructure.cs @@ -82,7 +82,7 @@ namespace CodeImp.DoomBuilder.ZDoom if (token.Type == ZScriptTokenType.CloseCurly) { stream.Position--; - return; // done + break; // done } else if (token.Type == ZScriptTokenType.Identifier) { @@ -299,6 +299,8 @@ namespace CodeImp.DoomBuilder.ZDoom } // if identifier } // frame parsing loop (inner) } // state parsing loop (outer) + + TrimLeft(); } } } diff --git a/Source/Plugins/BuilderModes/Properties/AssemblyInfo.cs b/Source/Plugins/BuilderModes/Properties/AssemblyInfo.cs index fc4d207aa910acc9a96ab2346470de3c405ffc0b..cf9140bceb4e014b11af4e52dd05bd35b45ac64e 100755 --- a/Source/Plugins/BuilderModes/Properties/AssemblyInfo.cs +++ b/Source/Plugins/BuilderModes/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Resources; // Build Number // Revision // -[assembly: AssemblyVersion("2.3.0.2833")] +[assembly: AssemblyVersion("2.3.0.2834")] [assembly: NeutralResourcesLanguageAttribute("en")]