diff --git a/DS_Map/DSPRE.csproj b/DS_Map/DSPRE.csproj index 54be8ec..afb05ce 100644 --- a/DS_Map/DSPRE.csproj +++ b/DS_Map/DSPRE.csproj @@ -94,6 +94,7 @@ + True diff --git a/DS_Map/Extensions.cs b/DS_Map/Extensions.cs new file mode 100644 index 0000000..166b33d --- /dev/null +++ b/DS_Map/Extensions.cs @@ -0,0 +1,10 @@ +namespace DSPRE { + public static class Extensions { + public static int IndexOfNumber(this string str) { + return str.IndexOfAny("0123456789".ToCharArray()); + } + public static bool ContainsNumber(this string str) { + return str.IndexOfNumber() > 0; + } + } +} diff --git a/DS_Map/ROMFiles/ScriptCommand.cs b/DS_Map/ROMFiles/ScriptCommand.cs index 64adcfe..e7ba3a9 100644 --- a/DS_Map/ROMFiles/ScriptCommand.cs +++ b/DS_Map/ROMFiles/ScriptCommand.cs @@ -109,7 +109,7 @@ namespace DSPRE.ROMFiles { id = ushort.Parse(nameParts[0], NumberStyles.HexNumber, CultureInfo.InvariantCulture); } catch { string details; - if (wholeLine.Contains('@') && wholeLine.Contains('#')) { + if (wholeLine.Contains(':') && wholeLine.ContainsNumber()) { details = "This probably means you forgot to \"End\" the Script or Function above it."; details += Environment.NewLine + "Please, also note that only Functions can be terminated\nwith \"Return\"."; } else { diff --git a/DS_Map/ROMFiles/ScriptFile.cs b/DS_Map/ROMFiles/ScriptFile.cs index 62c8c7a..5ccb1a3 100644 --- a/DS_Map/ROMFiles/ScriptFile.cs +++ b/DS_Map/ROMFiles/ScriptFile.cs @@ -461,7 +461,7 @@ namespace DSPRE.ROMFiles { int i = 0; while (i < lineSourceL.Count) { int positionOfScriptNumber; - if (lineSourceL[i].IndexOf(':') < 0 || (positionOfScriptNumber = lineSourceL[i].IndexOfAny("0123456789".ToCharArray())) < 0) { //Script #1 + if (!lineSourceL[i].Contains(':') || (positionOfScriptNumber = lineSourceL[i].IndexOfNumber()) < 0) { //Script #1 continue; } uint scriptNumber = uint.Parse(lineSourceL[i++].Substring(positionOfScriptNumber).Split()[0].Replace(":", "")); @@ -497,7 +497,7 @@ namespace DSPRE.ROMFiles { int i = 0; while (i < lineSourceL.Count) { int positionOfActionNumber; - if (lineSourceL[i].IndexOf(':') < 0 || (positionOfActionNumber = lineSourceL[i].IndexOfAny("0123456789".ToCharArray())) < 0) { // Move on until script header is found + if (!lineSourceL[i].Contains(':') || (positionOfActionNumber = lineSourceL[i].IndexOfNumber()) < 0) { // Move on until script header is found continue; } uint actionNumber = uint.Parse(lineSourceL[i++].Substring(positionOfActionNumber).Split()[0].Replace(":", ""));