diff --git a/gameSource/objectBank.cpp b/gameSource/objectBank.cpp index 8de31f71..380682e4 100644 --- a/gameSource/objectBank.cpp +++ b/gameSource/objectBank.cpp @@ -261,7 +261,8 @@ void setDrawColor( FloatRGB inColor ) { static char shouldFileBeCached( char *inFileName ) { if( strstr( inFileName, ".txt" ) != NULL && strstr( inFileName, "groundHeat_" ) == NULL && - strcmp( inFileName, "nextObjectNumber.txt" ) != 0 ) { + strcmp( inFileName, "nextObjectNumber.txt" ) != 0 && + strcmp( inFileName, "nextObjectNumberOffset.txt" ) != 0 ) { return true; } return false; @@ -3052,6 +3053,7 @@ int addObject( const char *inDescription, int nextObjectNumber = 1; + int nextObjectNumberOffset = 0; if( objectsDir.exists() && objectsDir.isDirectory() ) { @@ -3069,6 +3071,23 @@ int addObject( const char *inDescription, delete [] nextNumberString; } } + + File *nextNumberOffsetFile = + objectsDir.getChildFile( "nextObjectNumberOffset.txt" ); + + if( nextNumberOffsetFile->exists() ) { + + char *nextNumberOffsetString = + nextNumberOffsetFile->readFileContents(); + + if( nextNumberOffsetString != NULL ) { + sscanf( nextNumberOffsetString, "%d", &nextObjectNumberOffset ); + + nextObjectNumber += nextObjectNumberOffset; + + delete [] nextNumberOffsetString; + } + } if( newID == -1 ) { newID = nextObjectNumber; @@ -3335,20 +3354,38 @@ int addObject( const char *inDescription, delete objectFile; if( inReplaceID == -1 ) { - nextObjectNumber++; - - - char *nextNumberString = autoSprintf( "%d", nextObjectNumber ); - - File *nextNumberFile = - objectsDir.getChildFile( "nextObjectNumber.txt" ); + if( nextObjectNumberOffset > 0 ) { + nextObjectNumberOffset++; + - nextNumberFile->writeToFile( nextNumberString ); + char *nextNumberOffsetString = autoSprintf( "%d", nextObjectNumberOffset ); - delete [] nextNumberString; + File *nextNumberOffsetFile = + objectsDir.getChildFile( "nextObjectNumberOffset.txt" ); + + nextNumberOffsetFile->writeToFile( nextNumberOffsetString ); + + delete [] nextNumberOffsetString; + + + delete nextNumberOffsetFile; + } + else { + nextObjectNumber++; + + char *nextNumberString = autoSprintf( "%d", nextObjectNumber ); - delete nextNumberFile; + File *nextNumberFile = + objectsDir.getChildFile( "nextObjectNumber.txt" ); + + nextNumberFile->writeToFile( nextNumberString ); + + delete [] nextNumberString; + + + delete nextNumberFile; + } } } diff --git a/gameSource/spriteBank.cpp b/gameSource/spriteBank.cpp index 85b546b3..a9306adb 100644 --- a/gameSource/spriteBank.cpp +++ b/gameSource/spriteBank.cpp @@ -84,7 +84,8 @@ void enableSpriteSearch( char inEnable ) { // not bulk data tga files) static char shouldFileBeCached( char *inFileName ) { if( strstr( inFileName, ".txt" ) != NULL && - strcmp( inFileName, "nextSpriteNumber.txt" ) != 0 ) { + strcmp( inFileName, "nextSpriteNumber.txt" ) != 0 && + strcmp( inFileName, "nextSpriteNumberOffset.txt" ) != 0 ) { return true; } return false; @@ -1013,6 +1014,7 @@ int addSprite( const char *inTag, SpriteHandle inSprite, int nextSpriteNumber = 1; + int nextSpriteNumberOffset = 0; File *nextNumberFile = spritesDir.getChildFile( "nextSpriteNumber.txt" ); @@ -1028,6 +1030,23 @@ int addSprite( const char *inTag, SpriteHandle inSprite, delete [] nextNumberString; } } + + File *nextNumberOffsetFile = + spritesDir.getChildFile( "nextSpriteNumberOffset.txt" ); + + if( nextNumberOffsetFile->exists() ) { + + char *nextNumberOffsetString = + nextNumberOffsetFile->readFileContents(); + + if( nextNumberOffsetString != NULL ) { + sscanf( nextNumberOffsetString, "%d", &nextSpriteNumberOffset ); + + nextSpriteNumber += nextSpriteNumberOffset; + + delete [] nextNumberOffsetString; + } + } @@ -1069,18 +1088,34 @@ int addSprite( const char *inTag, SpriteHandle inSprite, delete [] fileNameTXT; delete metaFile; - nextSpriteNumber++; - + if( nextSpriteNumberOffset > 0 ) { + nextSpriteNumberOffset++; + - - char *nextNumberString = autoSprintf( "%d", nextSpriteNumber ); - - nextNumberFile->writeToFile( nextNumberString ); - - delete [] nextNumberString; - - - delete nextNumberFile; + + char *nextNumberOffsetString = autoSprintf( "%d", nextSpriteNumberOffset ); + + nextNumberOffsetFile->writeToFile( nextNumberOffsetString ); + + delete [] nextNumberOffsetString; + + + delete nextNumberOffsetFile; + } + else { + nextSpriteNumber++; + + + + char *nextNumberString = autoSprintf( "%d", nextSpriteNumber ); + + nextNumberFile->writeToFile( nextNumberString ); + + delete [] nextNumberString; + + + delete nextNumberFile; + } } if( newID == -1 ) {