diff --git a/Utils/MkLevel/Layers/MkLevelLayerThing.cpp b/Utils/MkLevel/Layers/MkLevelLayerThing.cpp index 9b39f3df1..430b3cf25 100644 --- a/Utils/MkLevel/Layers/MkLevelLayerThing.cpp +++ b/Utils/MkLevel/Layers/MkLevelLayerThing.cpp @@ -75,13 +75,55 @@ void CMkLevelLayerThing::ProcessList(CMkLevel *Core) { int i,ListSize=ThingList.size(); CIni &Config=Core->GetConfig(); +int KeyCount=Config.GetKeyCount(GetTypeName()); +vector Counts; + + Counts.resize(KeyCount); + for (i=0;iAddInfItem(OutName,Counts[i]); + } + } + +/*****************************************************************************/ +int CMkLevelLayerThing::CountThing(CMkLevel *Core,const char *Name) +{ +int i,ListSize=ThingList.size(); +int Count=0; + + for (i=0; i const &Files = MyFiles.GetFileInfoVector(); if (Files.size()>1) Usage("Too many Levels specified\n"); Level.SetAppDir(argv[0]); - Level.Init(Files[0],OutStr,TPBase,TPW,TPH); + Level.Init(Files[0],OutStr,IncDir,TPBase,TPW,TPH); Level.Load(); Level.Process(); Level.Write(); diff --git a/Utils/MkLevel/MkLevel.cpp b/Utils/MkLevel/MkLevel.cpp index f262f531f..18326a288 100644 --- a/Utils/MkLevel/MkLevel.cpp +++ b/Utils/MkLevel/MkLevel.cpp @@ -61,7 +61,7 @@ GFName Path=AppPath; } //*************************************************************************** -void CMkLevel::Init(const char *Filename,const char *OutFilename,int TPBase,int TPW,int TPH) +void CMkLevel::Init(const char *Filename,const char *OutFilename,const char *IncDir,int TPBase,int TPW,int TPH) { // Setup filenames and paths GFName Path; @@ -74,7 +74,12 @@ GFName Path; InPath=Path.FullName(); Path=OutFilename; Path.Ext(""); + LevelFullName=Path.File(); + LevelFullName.Upper(); OutName=Path.FullName(); + OutIncName=IncDir; + OutIncName+=Path.File(); + OutIncName+="_INF.h"; // Load ini file Config.LoadAndImport(GString(AppDir+ConfigFilename)); @@ -869,7 +874,8 @@ GString OutFilename=OutName+".Lvl"; fwrite(&LevelHdr,1,sizeof(sLevelHdr),File); fclose(File); - +// Write Info header File + WriteIncFile(); } //*************************************************************************** @@ -1135,3 +1141,49 @@ int Vtx[3]; } } } + +//*************************************************************************** +//*** Inf File ************************************************************** +//*************************************************************************** +void CMkLevel::AddInfItem(const char *Name,int Val) +{ +sInfItem Item; + + Item.Name=Name; + Item.Name.Upper(); + Item.Val=Val; + + InfList.Add(Item); +} + +//*************************************************************************** +void CMkLevel::WriteIncFile() +{ +GString DefStr; + + DefStr=LevelFullName+"_INF"; + File=fopen(OutIncName,"wt"); + + fprintf(File,"// %s Info Header\n",LevelFullName); + fprintf(File,"\n"); + fprintf(File,"#ifndef\t__%s_INF_HEADER__\n",LevelFullName); + fprintf(File,"#define\t__%s_INF_HEADER__\n",LevelFullName); + fprintf(File,"\n"); + fprintf(File,"\n"); + fprintf(File,"enum\t%s\n",DefStr); + fprintf(File,"{\n"); + +int ListSize=InfList.size(); + for (int i=0; i InfList; + }; //*************************************************************************** diff --git a/build/mklevel.pl b/build/mklevel.pl index 580909ee7..b5dea1b04 100644 --- a/build/mklevel.pl +++ b/build/mklevel.pl @@ -28,7 +28,7 @@ clean$Chapter\_$Level\_LVL :\n\t\$(RM) -f \$($Chapter\_$Level\_OUT) \$($Chapter\ $Chapter\_$Level\_LVL :\t\$($Chapter\_$Level\_IN) \$($Chapter\_$Level\_OUT) : \$($Chapter\_$Level\_IN) -\t\@\$(MKLEVEL) \$($Chapter\_$Level\_IN) -o:\$($Chapter\_$Level\_OUT) \$(LEVELS_OPTS) +\t\@\$(MKLEVEL) \$($Chapter\_$Level\_IN) -o:\$($Chapter\_$Level\_OUT) -i:\$(INC_DIR) \$(LEVELS_OPTS) eot ; diff --git a/tools/Data/bin/MkLevel.exe b/tools/Data/bin/MkLevel.exe index 9e1e532d2..8c6737a4a 100644 Binary files a/tools/Data/bin/MkLevel.exe and b/tools/Data/bin/MkLevel.exe differ