hostile-takeover/legacy/AuthorKit/mkpdb.bat
2014-07-06 17:47:28 -07:00

184 lines
3.4 KiB
Batchfile

@echo off
REM Usage:
REM mkpdb <-pdb database> [-tc template collection] [-ld level] [-size size] [-nocleanup]
REM -pdb database: e.g., htdata816.pdb
REM -tc template collection: e.g., grassy.tc
REM -ld level: e.g., grassy_test.ld
REM -size size: tile size (16, 24, or 32)
REM -gt
REM -lvl level: e.g., grassy_test.lvl
REM Example:
REM mkpdb -pdb htdata816.pdb -tc enva.tc -ld enva.ld -size 16
REM or
REM mkpdb -pdb htdata824.pdb -gt
SETLOCAL
REM Miscellaneous constants
set DEPTH=8
set FIXED_PAL=fixed_%DEPTH%bpp.pal
set TMPDIR=mkdb_temp
set TOOLDIR=.
set CREATORID=WARI
REM Parse command-line arguments
:NextArg
if "%1"=="" (
goto :ProcessArgs
) else if "%1"=="-tc" (
set TC=%2
shift
) else if "%1"=="-pdb" (
set PDB=%2
shift
) else if "%1"=="-ld" (
set LD=%2
shift
) else if "%1"=="-size" (
set TILESIZE=%2
shift
) else if "%1"=="-nocleanup" (
set NOCLEANUP=1
) else if "%1"=="-gt" (
set GOBTEMPLATES=1
) else if "%1"=="-lvl" (
set LVL=%TMPDIR%\%2
shift
) else (
echo Error: unknown argument "%1"
goto :EOF
)
shift
goto :NextArg
:ProcessArgs
REM Prompt user for any missing required arguments and fill in
REM defaults for missing optional ones.
if "%PDB%"=="" (
set /P PDB="Enter database (.pdb) file name: "
)
if "%PDB%"=="" (
echo Error: database file name required
goto :EOF
)
if "%TILESIZE%"=="" (
set TILESIZE=24
)
echo Tile size: %TILESIZE%
REM
set ARTDIR=art%DEPTH%%TILESIZE%
set ENV_PAL=%ARTDIR%\%TC:.tc=%_%DEPTH%bpp.pal
REM
md %TMPDIR%
cd %TMPDIR%
echo Unpacking database...
..\%TOOLDIR%\packpdb2 -u ..\%PDB% >stdout.txt
if %ERRORLEVEL% NEQ 0 (
cd ..
echo Error unpacking database
goto :Error
)
del stdout.txt
cd ..
if NOT "%TC%"=="" (
echo Calculating palette...
%TOOLDIR%\mcl -makepal %TILESIZE% %TC% 256 128 32 %FIXED_PAL% %ENV_PAL%
if %ERRORLEVEL% NEQ 0 (
echo Error creating palette
goto :Error
)
echo Crunching palette...
%TOOLDIR%\palbin %ENV_PAL% %TMPDIR%\%TC:.tc=%.palbin
if %ERRORLEVEL% NEQ 0 (
echo Error crunching palette
goto :Error
)
echo Creating shadow map...
%TOOLDIR%\shadowmap %ENV_PAL% %TMPDIR%\%TC:.tc=%.palbin.shadowmap 0.6
if %ERRORLEVEL% NEQ 0 (
echo Error creating shadow map
goto :Error
)
)
if "%LVL%"=="" (
set LVL=%TMPDIR%\%LD:.ld=%.lvl
)
if NOT "%LD%"=="" (
echo Crunching level...
%TOOLDIR%\mcl -levels %TILESIZE% %DEPTH% 0.8 0.9 0.9 1.1 1.3 %ARTDIR% %TMPDIR% %LD%
if %ERRORLEVEL% NEQ 0 (
echo Error compiling level
goto :Error
)
%TOOLDIR%\cl /nologo /EP /FI ..\res.h %LVL% > ini.tmp
if %ERRORLEVEL% NEQ 0 (
echo Error preprocessing level
goto :Error
)
%TOOLDIR%\inicrunch ini.tmp %LVL%
if %ERRORLEVEL% NEQ 0 (
del ini.tmp
echo Error inicrunching level
goto :Error
)
del ini.tmp
)
if NOT "%GOBTEMPLATES%"=="" (
echo Crunching GobTemplates...
%TOOLDIR%\cl /nologo /EP /I. GobTemplates.ini.pp > ini.tmp
if %ERRORLEVEL% NEQ 0 (
echo Error preprocessing GobTemplates
goto :Error
)
%TOOLDIR%\inicrunch ini.tmp %TMPDIR%\GobTemplates.ini
if %ERRORLEVEL% NEQ 0 (
del ini.tmp
echo Error inicrunching GobTemplates
goto :Error
)
del ini.tmp
)
%TOOLDIR%\packpdb2 -p %CREATORID% %PDB% %TMPDIR%\*.* -nocompress *.*
if %ERRORLEVEL% NEQ 0 (
echo Error packing database
goto :Error
)
endlocal
echo :NoError
if "%NOCLEANUP%"=="" (
@echo cleaning up...
if exist %TMPDIR% rd /q /s %TMPDIR%
)
endlocal
set MKPDB_RET=0
goto :EOF
:Error
echo :Error
if "%NOCLEANUP%"=="" (
@echo cleaning up...
if exist %TMPDIR% rd /q /s %TMPDIR%
)
endlocal
set MKPDB_RET=1