From a5ed7ba8a3eb26d3e3aa46bc87044608eacba57f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 10 Apr 2021 16:35:29 +0200 Subject: [PATCH] - two more simple .def commands. --- source/build/src/defs.cpp | 66 ++++++++++----------------------------- source/core/parsefuncs.h | 42 +++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 52 deletions(-) diff --git a/source/build/src/defs.cpp b/source/build/src/defs.cpp index be38f8bdd..dc8300d2e 100644 --- a/source/build/src/defs.cpp +++ b/source/build/src/defs.cpp @@ -325,6 +325,19 @@ static int32_t defsparser(scriptfile *script) case T_INCLUDEDEFAULT: defsparser_include(G_DefaultDefFile(), script, &pos); break; + case T_LOADGRP: + case T_CACHESIZE: + case T_SHADEFACTOR: + case T_GLOBALGAMEFLAGS: + parseSkip<1>(*script, pos); + break; + case T_SPRITECOL: + case T_2DCOLIDXRANGE: // NOTE: takes precedence over 2dcol, see InitCustomColors() + parseSkip<3>(*script, pos); + break; + case T_2DCOL: + parseSkip<4>(*script, pos); + break; case T_DEFINE: parseDefine(*script, pos); break; @@ -343,58 +356,11 @@ static int32_t defsparser(scriptfile *script) case T_ALPHAHACKRANGE: parseAlphahackRange(*script, pos); break; - case T_SPRITECOL: - case T_2DCOLIDXRANGE: // NOTE: takes precedence over 2dcol, see InitCustomColors() - parseSkip<3>(*script, pos); - break; - case T_2DCOL: - parseSkip<4>(*script, pos); - break; case T_FOGPAL: - { - int32_t p,r,g,b; - - if (scriptfile_getsymbol(script,&p)) break; - if (scriptfile_getnumber(script,&r)) break; - if (scriptfile_getnumber(script,&g)) break; - if (scriptfile_getnumber(script,&b)) break; - - r = clamp(r, 0, 63); - g = clamp(g, 0, 63); - b = clamp(b, 0, 63); - - lookups.makeTable(p, NULL, r<<2, g<<2, b<<2, 1); - } - break; + parseFogpal(*script, pos); + break; case T_NOFLOORPALRANGE: - { - int32_t b,e,i; - - if (scriptfile_getsymbol(script,&b)) break; - if (scriptfile_getsymbol(script,&e)) break; - - b = max(b, 1); - e = min(e, MAXPALOOKUPS-1); - - for (i = b; i <= e; i++) - lookups.tables[i].noFloorPal = true; - } - break; - case T_LOADGRP: - { - scriptfile_getstring(script,nullptr); -#if 0 - if (!scriptfile_getstring(pScript, &fileName) && firstPass) - { - fileSystem.AddAdditionalFile(fileName); - } -#endif - } - break; - case T_CACHESIZE: - case T_SHADEFACTOR: - case T_GLOBALGAMEFLAGS: - parseSkip<1>(*script, pos); + parseNoFloorpalRange(*script, pos); break; case T_ARTFILE: { diff --git a/source/core/parsefuncs.h b/source/core/parsefuncs.h index f36893671..4704988e8 100644 --- a/source/core/parsefuncs.h +++ b/source/core/parsefuncs.h @@ -48,7 +48,7 @@ void tileRemoveReplacement(int num); template void parseSkip(FScanner& sc, FScriptPosition& pos) { - for (int i = 0; i < cnt; i++) if (!sc.GetNumber(true)) return; + for (int i = 0; i < cnt; i++) if (!sc.GetString()) return; } void parseDefine(FScanner& sc, FScriptPosition& pos) @@ -365,4 +365,42 @@ void parseDefineTint(FScanner& sc, FScriptPosition& pos) if (!sc.GetNumber(f)) return; lookups.setPaletteTint(pal, r, g, b, 0, 0, 0, f); } - \ No newline at end of file + +//=========================================================================== +// +// +// +//=========================================================================== + +void parseFogpal(FScanner& sc, FScriptPosition& pos) +{ + int pal, r, g, b; + + if (!sc.GetNumber(pal, true)) return; + if (!sc.GetNumber(r)) return; + if (!sc.GetNumber(g)) return; + if (!sc.GetNumber(b)) return; + + r = clamp(r, 0, 63); + g = clamp(g, 0, 63); + b = clamp(b, 0, 63); + + lookups.makeTable(pal, nullptr, r << 2, g << 2, b << 2, 1); +} + +//=========================================================================== +// +// +// +//=========================================================================== + +void parseNoFloorpalRange(FScanner& sc, FScriptPosition& pos) +{ + int start, end; + if (!sc.GetNumber(start, true)) return; + if (!sc.GetNumber(end, true)) return; + if (start > 1) start = 1; + if (end > MAXPALOOKUPS - 1) end = MAXPALOOKUPS - 1; + for (int i = start; i <= end; i++) + lookups.tables[i].noFloorPal = true; +}