mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 08:51:24 +00:00
- several smaller texture (un)definition commands.
This commit is contained in:
parent
8c5a9c23c3
commit
01f93f4cca
3 changed files with 93 additions and 76 deletions
|
@ -389,90 +389,20 @@ static int32_t defsparser(scriptfile *script)
|
|||
parseCopyTile(*script, pos);
|
||||
break;
|
||||
case T_IMPORTTILE:
|
||||
{
|
||||
int32_t tile;
|
||||
FString fn;
|
||||
|
||||
if (scriptfile_getsymbol(script,&tile)) break;
|
||||
if (scriptfile_getstring(script,&fn)) break;
|
||||
|
||||
if (check_tile("importtile", tile, script, pos))
|
||||
break;
|
||||
|
||||
int32_t const texstatus = tileImportFromTexture(fn, tile, 255, 0);
|
||||
if (texstatus < 0)
|
||||
break;
|
||||
|
||||
picanm[tile] = {};
|
||||
|
||||
parseImportTile(*script, pos);
|
||||
break;
|
||||
}
|
||||
case T_DUMMYTILE:
|
||||
{
|
||||
int32_t tile, xsiz, ysiz;
|
||||
|
||||
if (scriptfile_getsymbol(script,&tile)) break;
|
||||
if (scriptfile_getsymbol(script,&xsiz)) break;
|
||||
if (scriptfile_getsymbol(script,&ysiz)) break;
|
||||
|
||||
if (check_tile("dummytile", tile, script, pos))
|
||||
break;
|
||||
|
||||
tileSetDummy(tile, xsiz, ysiz);
|
||||
|
||||
parseDummyTile(*script, pos);
|
||||
break;
|
||||
}
|
||||
case T_DUMMYTILERANGE:
|
||||
{
|
||||
int32_t tile1,tile2,xsiz,ysiz,i;
|
||||
|
||||
if (scriptfile_getsymbol(script,&tile1)) break;
|
||||
if (scriptfile_getsymbol(script,&tile2)) break;
|
||||
if (scriptfile_getnumber(script,&xsiz)) break;
|
||||
if (scriptfile_getnumber(script,&ysiz)) break;
|
||||
|
||||
if (check_tile_range("dummytilerange", &tile1, &tile2, script, pos))
|
||||
break;
|
||||
|
||||
if (xsiz < 0 || ysiz < 0)
|
||||
break; // TODO: message
|
||||
|
||||
for (i=tile1; i<=tile2; i++)
|
||||
{
|
||||
tileSetDummy(i, xsiz, ysiz);
|
||||
}
|
||||
|
||||
parseDummyTileRange(*script, pos);
|
||||
break;
|
||||
}
|
||||
|
||||
case T_UNDEFINETILE:
|
||||
{
|
||||
int32_t tile;
|
||||
|
||||
if (scriptfile_getsymbol(script,&tile)) break;
|
||||
|
||||
if (check_tile("undefinetile", tile, script, pos))
|
||||
break;
|
||||
|
||||
tileDelete(tile);
|
||||
|
||||
parseUndefineTile(*script, pos);
|
||||
break;
|
||||
}
|
||||
case T_UNDEFINETILERANGE:
|
||||
{
|
||||
int32_t tile1, tile2;
|
||||
|
||||
if (scriptfile_getsymbol(script,&tile1)) break;
|
||||
if (scriptfile_getsymbol(script,&tile2)) break;
|
||||
|
||||
if (check_tile_range("undefinetilerange", &tile1, &tile2, script, pos))
|
||||
break;
|
||||
|
||||
for (bssize_t i = tile1; i <= tile2; i++)
|
||||
tileDelete(i);
|
||||
|
||||
parseUndefineTileRange(*script, pos);
|
||||
break;
|
||||
}
|
||||
|
||||
case T_DEFINEMODEL:
|
||||
{
|
||||
|
|
|
@ -46,7 +46,7 @@ FString gVolumeSubtitles[MAXVOLUMES];
|
|||
int32_t gVolumeFlags[MAXVOLUMES];
|
||||
int gDefaultVolume = 0, gDefaultSkill = 1;
|
||||
|
||||
MapRecord mapList[512]; // Due to how this gets used it needs to be static. EDuke defines 7 episode plus one spare episode with 64 potential levels each and relies on the static array which is freely accessible by scripts.
|
||||
MapRecord mapList[512];
|
||||
MapRecord *currentLevel; // level that is currently played. (The real level, not what script hacks modfifying the current level index can pretend.)
|
||||
MapRecord* lastLevel; // Same here, for the last level.
|
||||
unsigned int numUsedSlots;
|
||||
|
|
|
@ -317,6 +317,93 @@ void parseCopyTile(FScanner& sc, FScriptPosition& pos)
|
|||
//
|
||||
//===========================================================================
|
||||
|
||||
void parseImportTile(FScanner& sc, FScriptPosition& pos)
|
||||
{
|
||||
int tile;
|
||||
|
||||
if (!sc.GetNumber(tile, true)) return;
|
||||
if (!sc.GetString()) return;
|
||||
if (!ValidateTilenum("importtile", tile, pos)) return;
|
||||
|
||||
int texstatus = tileImportFromTexture(sc.String, tile, 255, 0);
|
||||
if (texstatus >= 0) TileFiles.tiledata[tile].picanm = {};
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
void parseDummyTile(FScanner& sc, FScriptPosition& pos)
|
||||
{
|
||||
int tile, xsiz, ysiz;
|
||||
|
||||
if (!sc.GetNumber(tile, true)) return;
|
||||
if (!sc.GetNumber(xsiz, true)) return;
|
||||
if (!sc.GetNumber(ysiz, true)) return;
|
||||
if (!ValidateTilenum("dummytile", tile, pos)) return;
|
||||
tileSetDummy(tile, xsiz, ysiz);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
void parseDummyTileRange(FScanner& sc, FScriptPosition& pos)
|
||||
{
|
||||
int tile1, tile2, xsiz, ysiz;
|
||||
|
||||
if (!sc.GetNumber(tile1, true)) return;
|
||||
if (!sc.GetNumber(tile2, true)) return;
|
||||
if (!sc.GetNumber(xsiz, true)) return;
|
||||
if (!sc.GetNumber(ysiz, true)) return;
|
||||
if (!ValidateTileRange("dummytilerange", tile1, tile2, pos)) return;
|
||||
if (xsiz < 0 || ysiz < 0) return;
|
||||
|
||||
for (int i = tile1; i <= tile2; i++) tileSetDummy(i, xsiz, ysiz);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
void parseUndefineTile(FScanner& sc, FScriptPosition& pos)
|
||||
{
|
||||
int tile;
|
||||
|
||||
if (!sc.GetNumber(tile, true)) return;
|
||||
if (ValidateTilenum("undefinetile", tile, pos))
|
||||
tileDelete(tile);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
void parseUndefineTileRange(FScanner& sc, FScriptPosition& pos)
|
||||
{
|
||||
int tile1, tile2;
|
||||
|
||||
if (!sc.GetNumber(tile1, true)) return;
|
||||
if (!sc.GetNumber(tile2, true)) return;
|
||||
if (!ValidateTileRange("undefinetilerange", tile1, tile2, pos)) return;
|
||||
|
||||
for (int i = tile1; i <= tile2; i++) tileDelete(i);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
void parseDefineSkybox(FScanner& sc, FScriptPosition& pos)
|
||||
{
|
||||
int tile, palette;
|
||||
|
|
Loading…
Reference in a new issue