From f26492fa65393e691a9a6850d46543c5318a2f48 Mon Sep 17 00:00:00 2001 From: spherallic Date: Wed, 11 Oct 2023 00:17:29 +0200 Subject: [PATCH] Do not clear all custom objects if one or more SOC/Lua scripts throws an error Fix SOC errors being displayed as Lua errors --- Source/Core/Data/DataManager.cs | 10 ++++------ Source/Core/SRB2/SOCMobjStructure.cs | 5 ++++- Source/Core/SRB2/SOCParser.cs | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Source/Core/Data/DataManager.cs b/Source/Core/Data/DataManager.cs index 7f148423..8ed212bf 100755 --- a/Source/Core/Data/DataManager.cs +++ b/Source/Core/Data/DataManager.cs @@ -1874,7 +1874,6 @@ namespace CodeImp.DoomBuilder.Data if (lua.HasError) { lua.LogError(); - break; } } } @@ -1882,8 +1881,8 @@ namespace CodeImp.DoomBuilder.Data //mxd. Add to text resources collection currentreader = null; - if (lua.HasError) - lua.ClearActors(); + //if (lua.HasError) + // lua.ClearActors(); } // sphere: This loads things and level headers from SRB2 SOC files. @@ -1907,7 +1906,6 @@ namespace CodeImp.DoomBuilder.Data if (soc.HasError) { soc.LogError(); - break; } } } @@ -1915,8 +1913,8 @@ namespace CodeImp.DoomBuilder.Data //mxd. Add to text resources collection currentreader = null; - if (soc.HasError) - soc.ClearActors(); + //if (soc.HasError) + // soc.ClearActors(); } // [ZZ] this retrieves ZDoom actor structure by class name. diff --git a/Source/Core/SRB2/SOCMobjStructure.cs b/Source/Core/SRB2/SOCMobjStructure.cs index 3f8065de..c6a3ab7a 100644 --- a/Source/Core/SRB2/SOCMobjStructure.cs +++ b/Source/Core/SRB2/SOCMobjStructure.cs @@ -23,7 +23,7 @@ namespace CodeImp.DoomBuilder.ZDoom if (string.IsNullOrEmpty(objname)) { - parser.ReportError("Lua object structure has no object name or map thing number"); + parser.ReportError("SOC object structure has no object name or map thing number"); return; } @@ -67,6 +67,9 @@ namespace CodeImp.DoomBuilder.ZDoom parser.SkipWhitespace(false, true); token = parser.ReadToken(); + General.WriteLogLine(tokenname); + General.WriteLogLine(token); + // SOC definitions are terminated by an empty line. Blegh. if (tokenname == "\n") { diff --git a/Source/Core/SRB2/SOCParser.cs b/Source/Core/SRB2/SOCParser.cs index ea03d0d4..f45148c2 100644 --- a/Source/Core/SRB2/SOCParser.cs +++ b/Source/Core/SRB2/SOCParser.cs @@ -44,7 +44,7 @@ namespace CodeImp.DoomBuilder.ZDoom #region ================== Variables //mxd. Script type - internal override ScriptType ScriptType { get { return ScriptType.LUA; } } + internal override ScriptType ScriptType { get { return ScriptType.SOC; } } // SRB2 mobjs private Dictionary mobjs;