diff --git a/GameSettings.cpp b/GameSettings.cpp index 06c667ca..5d429fe1 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -581,10 +581,8 @@ void LoadGameExternalOptions() // WANNE: Drop Items gGameExternalOptions.ubEnemiesItemDrop = iniReader.ReadInteger("JA2 Gameplay Settings","ENEMIES_ITEM_DROP", 0); - // WANNE: Auto save: Attention: The game always crashes after a "normal" savegame is loaded after loading an autosave - // So for now USE_AUTO_SAVE is always false. - // The game crashes when removing mouse region that are not set - //gGameExternalOptions.gfUseAutoSave = iniReader.ReadBoolean("JA2 Gameplay Settings","USE_AUTO_SAVE",FALSE); + // WANNE: External sector Loadscreens [2007-05-19] + gGameExternalOptions.gfUseExternalLoadscreens = iniReader.ReadBoolean("JA2 Gameplay Settings","USE_EXTERNALIZED_LOADSCREENS", FALSE); // Militia settings gGameExternalOptions.guiAllowMilitiaGroupsDelay = iniReader.ReadInteger("JA2 Gameplay Settings","ALLOW_MILITIA_MOBILE_DELAY",1); diff --git a/GameSettings.h b/GameSettings.h index 205f50c5..3f462bca 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -347,6 +347,9 @@ typedef struct // WANNE INT32 ubEnemiesItemDrop; + // WANNE: External sector loadscreens [2007-05-19] + BOOLEAN gfUseExternalLoadscreens; + BOOLEAN gfUseAutoSave; //Merc Assignment settings diff --git a/Init.cpp b/Init.cpp index 5538f6bd..66254bb1 100644 --- a/Init.cpp +++ b/Init.cpp @@ -119,7 +119,23 @@ BOOLEAN LoadExternalGameplayData(STR directoryName) return FALSE; // WANNE: Enemy drops - end - + + // WANNE: Sector Loadscreens [2007-05-18] + strcpy(fileName, directoryName); + strcat(fileName, SECTORLOADSCREENSFILENAME); + + if ( FileExists(fileName) ) + { + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); + if(!ReadInSectorLoadscreensStats(gSectorLoadscreens, fileName)) + return FALSE; + } + else + { + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("File does not exist, fileName = %s", fileName)); + // Reset ini-option + gGameExternalOptions.gfUseExternalLoadscreens = FALSE; + } strcpy(fileName, directoryName); strcat(fileName, AMMOTYPESFILENAME); diff --git a/JA2.vcproj b/JA2.vcproj index 9092efc5..af923b14 100644 --- a/JA2.vcproj +++ b/JA2.vcproj @@ -43,7 +43,7 @@ ubTraversability[ 4 ] ) - { - case TOWN: - if( fNight ) - { - if( Random( 2 ) ) + case SEC_P3: + if( fNight ) + return LOADINGSCREEN_NIGHTPALACE; + return LOADINGSCREEN_DAYPALACE; + case SEC_H13: + case SEC_H14: //military installations + case SEC_I13: + case SEC_N7: + if( fNight ) + return LOADINGSCREEN_NIGHTMILITARY; + return LOADINGSCREEN_DAYMILITARY; + case SEC_K4: + if( fNight ) + return LOADINGSCREEN_NIGHTLAB; + return LOADINGSCREEN_DAYLAB; + case SEC_J9: + if( fNight ) + return LOADINGSCREEN_NIGHTPRISON; + return LOADINGSCREEN_DAYPRISON; + case SEC_D2: + case SEC_D15: + case SEC_I8: + case SEC_N4: + if( fNight ) + return LOADINGSCREEN_NIGHTSAM; + return LOADINGSCREEN_DAYSAM; + case SEC_F8: + if( fNight ) + return LOADINGSCREEN_NIGHTHOSPITAL; + return LOADINGSCREEN_DAYHOSPITAL; + case SEC_B13: + case SEC_N3: + if( fNight ) + return LOADINGSCREEN_NIGHTAIRPORT; + return LOADINGSCREEN_DAYAIRPORT; + case SEC_L11: + case SEC_L12: + if( fNight ) + return LOADINGSCREEN_NIGHTBALIME; + return LOADINGSCREEN_DAYBALIME; + case SEC_H3: + case SEC_H8: + case SEC_D4: + if( fNight ) + return LOADINGSCREEN_NIGHTMINE; + return LOADINGSCREEN_DAYMINE; + } + + pSector = &SectorInfo[ ubSectorID ]; + switch( pSector->ubTraversability[ 4 ] ) + { + case TOWN: + if( fNight ) { - return LOADINGSCREEN_NIGHTTOWN2; + if( Random( 2 ) ) + { + return LOADINGSCREEN_NIGHTTOWN2; + } + else + { + return LOADINGSCREEN_NIGHTTOWN1; + } } - return LOADINGSCREEN_NIGHTTOWN1; - } - if( Random( 2 ) ) - { - return LOADINGSCREEN_DAYTOWN2; - } - return LOADINGSCREEN_DAYTOWN1; - case SAND: - case SAND_ROAD: - if( fNight ) - { - return LOADINGSCREEN_NIGHTDESERT; - } - return LOADINGSCREEN_DAYDESERT; - case FARMLAND: - case FARMLAND_ROAD: - case ROAD: - if( fNight ) - { - return LOADINGSCREEN_NIGHTGENERIC; - } - return LOADINGSCREEN_DAYGENERIC; - case PLAINS: - case SPARSE: - case HILLS: - case PLAINS_ROAD: - case SPARSE_ROAD: - case HILLS_ROAD: - if( fNight ) - { - return LOADINGSCREEN_NIGHTWILD; - } - return LOADINGSCREEN_DAYWILD; - case DENSE: - case SWAMP: - case SWAMP_ROAD: - case DENSE_ROAD: - if( fNight ) - { - return LOADINGSCREEN_NIGHTFOREST; - } - return LOADINGSCREEN_DAYFOREST; - case TROPICS: - case TROPICS_ROAD: - case WATER: - case NS_RIVER: - case EW_RIVER: - case COASTAL: - case COASTAL_ROAD: - if( fNight ) - { - return LOADINGSCREEN_NIGHTTROPICAL; - } - return LOADINGSCREEN_DAYTROPICAL; - default: - Assert( 0 ); - if( fNight ) - { - return LOADINGSCREEN_NIGHTGENERIC; - } - return LOADINGSCREEN_DAYGENERIC; - } - break; + else + { + if( Random( 2 ) ) + { + return LOADINGSCREEN_DAYTOWN2; + } + else + { + return LOADINGSCREEN_DAYTOWN1; + } + } + case SAND: + case SAND_ROAD: + if( fNight ) + { + return LOADINGSCREEN_NIGHTDESERT; + } + else + { + return LOADINGSCREEN_DAYDESERT; + } + case FARMLAND: + case FARMLAND_ROAD: + case ROAD: + if( fNight ) + { + return LOADINGSCREEN_NIGHTGENERIC; + } + else + { + return LOADINGSCREEN_DAYGENERIC; + } + case PLAINS: + case SPARSE: + case HILLS: + case PLAINS_ROAD: + case SPARSE_ROAD: + case HILLS_ROAD: + if( fNight ) + { + return LOADINGSCREEN_NIGHTWILD; + } + else + { + return LOADINGSCREEN_DAYWILD; + } + case DENSE: + case SWAMP: + case SWAMP_ROAD: + case DENSE_ROAD: + if( fNight ) + { + return LOADINGSCREEN_NIGHTFOREST; + } + else + { + return LOADINGSCREEN_DAYFOREST; + } + case TROPICS: + case TROPICS_ROAD: + case WATER: + case NS_RIVER: + case EW_RIVER: + case COASTAL: + case COASTAL_ROAD: + if( fNight ) + { + return LOADINGSCREEN_NIGHTTROPICAL; + } + else + { + return LOADINGSCREEN_DAYTROPICAL; + } + default: + Assert( 0 ); + if( fNight ) + { + return LOADINGSCREEN_NIGHTGENERIC; + } + else + { + return LOADINGSCREEN_DAYGENERIC; + } + } + break; + /* WANNE: Sir-Tech System */ + } + + // Basement Level 1 case 1: switch( ubSectorID ) { @@ -181,6 +538,7 @@ UINT8 GetLoadScreenID( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) return LOADINGSCREEN_MINE; } break; + // Basement Level 2 and 3 case 2: case 3: //all level 2 and 3 maps are caves! @@ -193,7 +551,10 @@ UINT8 GetLoadScreenID( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) { return LOADINGSCREEN_NIGHTGENERIC; } - return LOADINGSCREEN_DAYGENERIC; + else + { + return LOADINGSCREEN_DAYGENERIC; + } } } @@ -207,713 +568,846 @@ void DisplayLoadScreenWithID( UINT8 ubLoadScreenID ) HVSURFACE hVSurface; UINT32 uiLoadScreen; STRING512 smallImage; + BOOLEAN fExternalLS = FALSE; bShowSmallImage = FALSE; vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE; - switch( ubLoadScreenID ) + if (gGameExternalOptions.gfUseExternalLoadscreens) { - case LOADINGSCREEN_NOTHING: - strcpy(smallImage, "LOADSCREENS\\LS_Heli.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_1024x768.sti"); - } - break; - case LOADINGSCREEN_DAYGENERIC: - strcpy(smallImage, "LOADSCREENS\\LS_DayGeneric.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayGeneric.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayGeneric_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayGeneric_1024x768.sti"); - } - break; - case LOADINGSCREEN_DAYTOWN1: - strcpy(smallImage, "LOADSCREENS\\LS_DayTown1.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown1.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown1_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown1_1024x768.sti"); - } - break; - case LOADINGSCREEN_DAYTOWN2: - strcpy(smallImage, "LOADSCREENS\\LS_DayTown2.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown2.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown2_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown2_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYWILD: - strcpy(smallImage, "LOADSCREENS\\LS_DayWild.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayWild.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayWild_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayWild_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYTROPICAL: - strcpy(smallImage, "LOADSCREENS\\LS_DayTropical.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTropical.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTropical_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTropical_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYFOREST: - strcpy(smallImage, "LOADSCREENS\\LS_DayForest.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayForest.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayForest_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayForest_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYDESERT: - strcpy(smallImage, "LOADSCREENS\\LS_DayDesert.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayDesert.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayDesert_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayDesert_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYPALACE: - strcpy(smallImage, "LOADSCREENS\\LS_DayPalace.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPalace.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPalace_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPalace_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTGENERIC: - strcpy(smallImage, "LOADSCREENS\\LS_NightGeneric.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightGeneric.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightGeneric_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightGeneric_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTWILD: - strcpy(smallImage, "LOADSCREENS\\LS_NightWild.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightWild.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightWild_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightWild_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTTOWN1: - strcpy(smallImage, "LOADSCREENS\\LS_NightTown1.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown1.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown1_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown1_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTTOWN2: - strcpy(smallImage, "LOADSCREENS\\LS_NightTown2.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown2.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown2_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown2_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTFOREST: - strcpy(smallImage, "LOADSCREENS\\LS_NightForest.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightForest.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightForest_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightForest_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTTROPICAL: - strcpy(smallImage, "LOADSCREENS\\LS_NightTropical.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTropical.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTropical_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTropical_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTDESERT: - strcpy(smallImage, "LOADSCREENS\\LS_NightDesert.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightDesert.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightDesert_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightDesert_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTPALACE: - strcpy(smallImage, "LOADSCREENS\\LS_NightPalace.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPalace.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPalace_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPalace_1024x768.sti"); - } - - break; - case LOADINGSCREEN_HELI: - strcpy(smallImage, "LOADSCREENS\\LS_Heli.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_1024x768.sti"); - } - - break; - case LOADINGSCREEN_BASEMENT: - strcpy(smallImage, "LOADSCREENS\\LS_Basement.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Basement.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Basement_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Basement_1024x768.sti"); - } - - break; - case LOADINGSCREEN_MINE: - strcpy(smallImage, "LOADSCREENS\\LS_Mine.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Mine.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Mine_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Mine_1024x768.sti"); - } - - break; - case LOADINGSCREEN_CAVE: - strcpy(smallImage, "LOADSCREENS\\LS_Cave.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Cave.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Cave_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Cave_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYPINE: - strcpy(smallImage, "LOADSCREENS\\LS_DayPine.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPine.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPine_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPine_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTPINE: - strcpy(smallImage, "LOADSCREENS\\LS_NightPine.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPine.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPine_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPine_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYMILITARY: - strcpy(smallImage, "LOADSCREENS\\LS_DayMilitary.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMilitary.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMilitary_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMilitary_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTMILITARY: - strcpy(smallImage, "LOADSCREENS\\LS_NightMilitary.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMilitary.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMilitary_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMilitary_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYSAM: - strcpy(smallImage, "LOADSCREENS\\LS_DaySAM.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DaySAM.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DaySAM_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DaySAM_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTSAM: - strcpy(smallImage, "LOADSCREENS\\LS_NightSAM.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightSAM.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightSAM_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightSAM_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYPRISON: - strcpy(smallImage, "LOADSCREENS\\LS_DayPrison.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPrison.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPrison_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPrison_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTPRISON: - strcpy(smallImage, "LOADSCREENS\\LS_NightPrison.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPrison.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPrison_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPrison_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYHOSPITAL: - strcpy(smallImage, "LOADSCREENS\\LS_DayHospital.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayHospital.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayHospital_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayHospital_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTHOSPITAL: - strcpy(smallImage, "LOADSCREENS\\LS_NightHospital.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightHospital.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightHospital_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightHospital_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYAIRPORT: - strcpy(smallImage, "LOADSCREENS\\LS_DayAirport.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayAirport.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayAirport_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayAirport_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTAIRPORT: - strcpy(smallImage, "LOADSCREENS\\LS_NightAirport.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightAirport.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightAirport_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightAirport_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYLAB: - strcpy(smallImage, "LOADSCREENS\\LS_DayLab.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayLab.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayLab_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayLab_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTLAB: - strcpy(smallImage, "LOADSCREENS\\LS_NightLab.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightLab.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightLab_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightLab_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYOMERTA: - strcpy(smallImage, "LOADSCREENS\\LS_DayOmerta.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayOmerta.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayOmerta_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayOmerta_1024x768.sti"); - } - break; - case LOADINGSCREEN_NIGHTOMERTA: - strcpy(smallImage, "LOADSCREENS\\LS_NightOmerta.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightOmerta.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightOmerta_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightOmerta_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYCHITZENA: - strcpy(smallImage, "LOADSCREENS\\LS_DayChitzena.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayChitzena.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayChitzena_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayChitzena_1024x768.sti"); - } - - break; - case LOADINGSCREEN_NIGHTCHITZENA: - strcpy(smallImage, "LOADSCREENS\\LS_NightChitzena.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightChitzena.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightChitzena_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightChitzena_1024x768.sti"); - } - - break; - case LOADINGSCREEN_DAYMINE: - strcpy(smallImage, "LOADSCREENS\\LS_DayMine.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMine.sti" ); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMine_800x600.sti" ); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMine_1024x768.sti" ); - } - - break; - case LOADINGSCREEN_NIGHTMINE: - strcpy(smallImage, "LOADSCREENS\\LS_NightMine.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMine.sti" ); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMine_800x600.sti" ); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMine_1024x768.sti" ); - } - - break; - case LOADINGSCREEN_DAYBALIME: - strcpy(smallImage, "LOADSCREENS\\LS_DayBalime.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayBalime.sti" ); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayBalime_800x600.sti" ); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayBalime_1024x768.sti" ); - } - - break; - case LOADINGSCREEN_NIGHTBALIME: - strcpy(smallImage, "LOADSCREENS\\LS_NightBalime.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightBalime.sti" ); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightBalime_800x600.sti" ); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightBalime_1024x768.sti" ); - } - - break; - default: - strcpy(smallImage, "LOADSCREENS\\LS_Heli.sti"); - if (iResolution == 0) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli.sti"); - } - else if (iResolution == 1) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_800x600.sti"); - } - else if (iResolution == 2) - { - strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_1024x768.sti"); - } - break; + if ((ubLoadScreenID == HELI || ubLoadScreenID == DAY || ubLoadScreenID == DAY_ALT || + ubLoadScreenID == NIGHT || ubLoadScreenID == NIGHT_ALT) && szSector != NULL) + { + fExternalLS = TRUE; + } + else + { + fExternalLS = FALSE; + } } + else + { + if ((ubLoadScreenID == HELI || ubLoadScreenID == DAY || ubLoadScreenID == DAY_ALT || + ubLoadScreenID == NIGHT || ubLoadScreenID == NIGHT_ALT) && szSector != NULL) + { + fExternalLS = TRUE; + } + else + { + fExternalLS = FALSE; + } + } + + if (fExternalLS) + { + // Get the image path + char szImagePath[80]; + char szImageFormat[5]; + char szFullImagePath[80]; + + // Start screen + if (ubLoadScreenID == HELI) + { + strncpy(szImagePath, gSectorLoadscreens[0].szDay, 80); + + strncpy(szImageFormat, ".", MAX_IMAGE_FORMAT_CHARS); + strcat(szImageFormat, gSectorLoadscreens[0].szImageFormat); + } + else + { + for (int i = 1; i < MAX_SECTOR_LOADSCREENS; i++) + { + // We found the sector + if (strcmp(gSectorLoadscreens[i].szLocation, szSector) == 0) + { + strncpy(szImageFormat, ".", MAX_IMAGE_FORMAT_CHARS); + + strcat(szImageFormat, gSectorLoadscreens[i].szImageFormat); + + BOOLEAN fAlternate = gSectorLoadscreens[i].RandomAltSector; + + if (fAlternate) + { + // Day + if (ubLoadScreenID == DAY) + { + if( Random( 2 ) ) + { + ubLoadScreenID = DAY; + } + else + { + ubLoadScreenID = DAY_ALT; + } + } + // Night + else + { + if( Random( 2 ) ) + { + ubLoadScreenID = NIGHT; + } + else + { + ubLoadScreenID = NIGHT_ALT; + } + } + } + + switch (ubLoadScreenID) + { + case DAY: + strncpy(szImagePath, gSectorLoadscreens[i].szDay, MAX_IMAGE_PATH_CHARS); + break; + case DAY_ALT: + strncpy(szImagePath, gSectorLoadscreens[i].szDayAlt, MAX_IMAGE_PATH_CHARS); + break; + case NIGHT: + strncpy(szImagePath, gSectorLoadscreens[i].szNight, MAX_IMAGE_PATH_CHARS); + break; + case NIGHT_ALT: + strncpy(szImagePath, gSectorLoadscreens[i].szNightAlt, MAX_IMAGE_PATH_CHARS); + break; + } + break; + } + } + } + + // Small image: 640x480 + strncpy(szFullImagePath, szImagePath, 80); + strcat(szFullImagePath, szImageFormat); + strcpy(smallImage,szFullImagePath); + + // Actual image, depending on the resolution + if (iResolution == 1) + { + strncpy(szFullImagePath, szImagePath, 80); + strcat(szFullImagePath, "_800x600"); + strcat(szFullImagePath, szImageFormat); + } + else if (iResolution == 2) + { + strncpy(szFullImagePath, szImagePath, 80); + strcat(szFullImagePath, "_1024x768"); + strcat(szFullImagePath, szImageFormat); + } + + strcpy(vs_desc.ImageFile,szFullImagePath); + } + else + { + switch( ubLoadScreenID ) + { + case LOADINGSCREEN_NOTHING: + strcpy(smallImage, "LOADSCREENS\\LS_Heli.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_1024x768.sti"); + } + break; + + case LOADINGSCREEN_DAYGENERIC: + strcpy(smallImage, "LOADSCREENS\\LS_DayGeneric.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayGeneric.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayGeneric_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayGeneric_1024x768.sti"); + } + break; + case LOADINGSCREEN_DAYTOWN1: + strcpy(smallImage, "LOADSCREENS\\LS_DayTown1.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown1.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown1_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown1_1024x768.sti"); + } + break; + case LOADINGSCREEN_DAYTOWN2: + strcpy(smallImage, "LOADSCREENS\\LS_DayTown2.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown2.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown2_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTown2_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYWILD: + strcpy(smallImage, "LOADSCREENS\\LS_DayWild.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayWild.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayWild_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayWild_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYTROPICAL: + strcpy(smallImage, "LOADSCREENS\\LS_DayTropical.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTropical.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTropical_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayTropical_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYFOREST: + strcpy(smallImage, "LOADSCREENS\\LS_DayForest.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayForest.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayForest_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayForest_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYDESERT: + strcpy(smallImage, "LOADSCREENS\\LS_DayDesert.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayDesert.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayDesert_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayDesert_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYPALACE: + strcpy(smallImage, "LOADSCREENS\\LS_DayPalace.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPalace.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPalace_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPalace_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTGENERIC: + strcpy(smallImage, "LOADSCREENS\\LS_NightGeneric.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightGeneric.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightGeneric_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightGeneric_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTWILD: + strcpy(smallImage, "LOADSCREENS\\LS_NightWild.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightWild.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightWild_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightWild_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTTOWN1: + strcpy(smallImage, "LOADSCREENS\\LS_NightTown1.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown1.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown1_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown1_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTTOWN2: + strcpy(smallImage, "LOADSCREENS\\LS_NightTown2.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown2.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown2_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTown2_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTFOREST: + strcpy(smallImage, "LOADSCREENS\\LS_NightForest.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightForest.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightForest_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightForest_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTTROPICAL: + strcpy(smallImage, "LOADSCREENS\\LS_NightTropical.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTropical.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTropical_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightTropical_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTDESERT: + strcpy(smallImage, "LOADSCREENS\\LS_NightDesert.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightDesert.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightDesert_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightDesert_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTPALACE: + strcpy(smallImage, "LOADSCREENS\\LS_NightPalace.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPalace.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPalace_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPalace_1024x768.sti"); + } + + break; + + case LOADINGSCREEN_HELI: + + strcpy(smallImage, "LOADSCREENS\\LS_Heli.sti"); + + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_1024x768.sti"); + } + + break; + + case LOADINGSCREEN_BASEMENT: + strcpy(smallImage, "LOADSCREENS\\LS_Basement.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Basement.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Basement_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Basement_1024x768.sti"); + } + + break; + case LOADINGSCREEN_MINE: + strcpy(smallImage, "LOADSCREENS\\LS_Mine.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Mine.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Mine_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Mine_1024x768.sti"); + } + + break; + case LOADINGSCREEN_CAVE: + strcpy(smallImage, "LOADSCREENS\\LS_Cave.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Cave.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Cave_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Cave_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYPINE: + strcpy(smallImage, "LOADSCREENS\\LS_DayPine.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPine.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPine_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPine_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTPINE: + strcpy(smallImage, "LOADSCREENS\\LS_NightPine.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPine.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPine_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPine_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYMILITARY: + strcpy(smallImage, "LOADSCREENS\\LS_DayMilitary.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMilitary.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMilitary_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMilitary_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTMILITARY: + strcpy(smallImage, "LOADSCREENS\\LS_NightMilitary.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMilitary.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMilitary_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMilitary_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYSAM: + strcpy(smallImage, "LOADSCREENS\\LS_DaySAM.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DaySAM.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DaySAM_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DaySAM_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTSAM: + strcpy(smallImage, "LOADSCREENS\\LS_NightSAM.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightSAM.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightSAM_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightSAM_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYPRISON: + strcpy(smallImage, "LOADSCREENS\\LS_DayPrison.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPrison.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPrison_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayPrison_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTPRISON: + strcpy(smallImage, "LOADSCREENS\\LS_NightPrison.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPrison.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPrison_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightPrison_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYHOSPITAL: + strcpy(smallImage, "LOADSCREENS\\LS_DayHospital.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayHospital.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayHospital_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayHospital_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTHOSPITAL: + strcpy(smallImage, "LOADSCREENS\\LS_NightHospital.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightHospital.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightHospital_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightHospital_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYAIRPORT: + strcpy(smallImage, "LOADSCREENS\\LS_DayAirport.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayAirport.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayAirport_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayAirport_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTAIRPORT: + strcpy(smallImage, "LOADSCREENS\\LS_NightAirport.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightAirport.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightAirport_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightAirport_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYLAB: + strcpy(smallImage, "LOADSCREENS\\LS_DayLab.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayLab.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayLab_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayLab_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTLAB: + strcpy(smallImage, "LOADSCREENS\\LS_NightLab.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightLab.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightLab_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightLab_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYOMERTA: + strcpy(smallImage, "LOADSCREENS\\LS_DayOmerta.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayOmerta.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayOmerta_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayOmerta_1024x768.sti"); + } + break; + case LOADINGSCREEN_NIGHTOMERTA: + strcpy(smallImage, "LOADSCREENS\\LS_NightOmerta.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightOmerta.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightOmerta_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightOmerta_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYCHITZENA: + strcpy(smallImage, "LOADSCREENS\\LS_DayChitzena.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayChitzena.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayChitzena_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayChitzena_1024x768.sti"); + } + + break; + case LOADINGSCREEN_NIGHTCHITZENA: + strcpy(smallImage, "LOADSCREENS\\LS_NightChitzena.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightChitzena.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightChitzena_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightChitzena_1024x768.sti"); + } + + break; + case LOADINGSCREEN_DAYMINE: + strcpy(smallImage, "LOADSCREENS\\LS_DayMine.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMine.sti" ); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMine_800x600.sti" ); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayMine_1024x768.sti" ); + } + + break; + case LOADINGSCREEN_NIGHTMINE: + strcpy(smallImage, "LOADSCREENS\\LS_NightMine.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMine.sti" ); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMine_800x600.sti" ); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightMine_1024x768.sti" ); + } + + break; + case LOADINGSCREEN_DAYBALIME: + strcpy(smallImage, "LOADSCREENS\\LS_DayBalime.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayBalime.sti" ); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayBalime_800x600.sti" ); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_DayBalime_1024x768.sti" ); + } + + break; + case LOADINGSCREEN_NIGHTBALIME: + strcpy(smallImage, "LOADSCREENS\\LS_NightBalime.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightBalime.sti" ); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightBalime_800x600.sti" ); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_NightBalime_1024x768.sti" ); + } + + break; + default: + strcpy(smallImage, "LOADSCREENS\\LS_Heli.sti"); + if (iResolution == 0) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli.sti"); + } + else if (iResolution == 1) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_800x600.sti"); + } + else if (iResolution == 2) + { + strcpy(vs_desc.ImageFile, "LOADSCREENS\\LS_Heli_1024x768.sti"); + } + break; + + /* WANNE: Sir tech made - END */ + } // Switch - END + } // Sti loadscreen (big image) is not available if ( AddVideoSurface( &vs_desc, &uiLoadScreen ) == FALSE && iResolution > 0) diff --git a/Loading Screen.h b/Loading Screen.h index 0bdb6738..c4a7f24e 100644 --- a/Loading Screen.h +++ b/Loading Screen.h @@ -48,6 +48,11 @@ enum LOADINGSCREEN_NIGHTMINE, LOADINGSCREEN_DAYBALIME, LOADINGSCREEN_NIGHTBALIME, + DAY, + NIGHT, + HELI, + DAY_ALT, + NIGHT_ALT }; @@ -62,4 +67,23 @@ UINT8 GetLoadScreenID( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ); //and refreshing the screen with it. void DisplayLoadScreenWithID( UINT8 ubLoadScreenID ); +#define MAX_SECTOR_LOADSCREENS 257 // 16x16 + Start Sector +#define MAX_LOCATION_CHARS 10 +#define MAX_IMAGE_FORMAT_CHARS 5 +#define MAX_IMAGE_PATH_CHARS 80 + +typedef struct +{ + UINT32 uiIndex; + CHAR8 szLocation[MAX_LOCATION_CHARS]; + BOOLEAN RandomAltSector; + CHAR8 szImageFormat[MAX_IMAGE_FORMAT_CHARS]; + CHAR8 szDay[MAX_IMAGE_PATH_CHARS]; + CHAR8 szNight[MAX_IMAGE_PATH_CHARS]; + CHAR8 szDayAlt[MAX_IMAGE_PATH_CHARS]; + CHAR8 szNightAlt[MAX_IMAGE_PATH_CHARS]; +} SECTOR_LOADSCREENS; + +extern SECTOR_LOADSCREENS gSectorLoadscreens[MAX_SECTOR_LOADSCREENS]; + #endif \ No newline at end of file diff --git a/Tactical/Tactical.vcproj b/Tactical/Tactical.vcproj index 3735a806..396e15b6 100644 --- a/Tactical/Tactical.vcproj +++ b/Tactical/Tactical.vcproj @@ -5618,6 +5618,9 @@ + + diff --git a/Tactical/XML.h b/Tactical/XML.h index 8cca9bb6..66ad65d4 100644 --- a/Tactical/XML.h +++ b/Tactical/XML.h @@ -3,6 +3,7 @@ #include "armsdealerinvinit.h" #include "EnemyItemDrops.h" +#include "Loading Screen.h" enum { @@ -70,7 +71,7 @@ typedef PARSE_STAGE; #define MOVEMENTCOSTFILENAME "Map\\MovementCosts.xml" #define ALTSECTORSFILENAME "Map\\AltSectors.xml" #define SAMSITESFILENAME "Map\\SamSites.xml" -#define ROAMINGMILITIAFILENAME "Map\\RestrictedRoamingMilitia.xml" +#define ROAMINGMILITIAFILENAME "Map\\RestrictedRoamingMilitia.xml" #define GARRISONFILENAME "Army\\GarrisonGroups.xml" @@ -84,6 +85,9 @@ typedef PARSE_STAGE; #define ENEMYARMOURDROPSFILENAME "EnemyArmourDrops.xml" #define ENEMYMISCDROPSFILENAME "EnemyMiscDrops.xml" +// WANNE: Sector loadscreens [2007-05-18] +#define SECTORLOADSCREENSFILENAME "Map\\SectorLoadscreens.xml" + extern BOOLEAN ReadInItemStats(STR fileName, BOOLEAN localizedVersion); extern BOOLEAN WriteItemStats(); @@ -154,6 +158,10 @@ extern BOOLEAN WriteEnemyArmourDropsStats(ARMOUR_DROPS *pEnemyArmourDrops, STR f extern BOOLEAN ReadInEnemyMiscDropsStats(MISC_DROPS *pEnemyMiscDrops, STR fileName); extern BOOLEAN WriteEnemyMiscDropsStats(MISC_DROPS *pEnemyMiscDrops, STR fileName); +// WANNE: Sector Loadscreens [2007-05-18] +extern BOOLEAN ReadInSectorLoadscreensStats(SECTOR_LOADSCREENS *pSectorLoadscreens, STR fileName); +extern BOOLEAN WriteSectorLoadscreensStats(SECTOR_LOADSCREENS *pSectorLoadscreens, STR fileName); + // Lesh: burst sounds and explosion info extern BOOLEAN ReadInBurstSoundArray(STR fileName); extern BOOLEAN WriteBurstSoundArray(); diff --git a/Tactical/XML_SectorLoadscreens.cpp b/Tactical/XML_SectorLoadscreens.cpp new file mode 100644 index 00000000..33303b5b --- /dev/null +++ b/Tactical/XML_SectorLoadscreens.cpp @@ -0,0 +1,375 @@ +#ifdef PRECOMPILEDHEADERS + #include "Tactical All.h" +#else + #include "sgp.h" + #include "overhead types.h" + #include "Sound Control.h" + #include "Soldier Control.h" + #include "overhead.h" + #include "Event Pump.h" + #include "weapons.h" + #include "Animation Control.h" + #include "sys globals.h" + #include "Handle UI.h" + #include "Isometric Utils.h" + #include "worldman.h" + #include "math.h" + #include "points.h" + #include "ai.h" + #include "los.h" + #include "renderworld.h" + #include "opplist.h" + #include "interface.h" + #include "message.h" + #include "campaign.h" + #include "items.h" + #include "text.h" + #include "Soldier Profile.h" + #include "tile animation.h" + #include "Dialogue Control.h" + #include "SkillCheck.h" + #include "explosion control.h" + #include "Quests.h" + #include "Physics.h" + #include "Random.h" + #include "Vehicles.h" + #include "bullets.h" + #include "morale.h" + #include "meanwhile.h" + #include "SkillCheck.h" + #include "gamesettings.h" + #include "SaveLoadMap.h" + #include "Debug Control.h" + #include "expat.h" + #include "XML.h" + #include "SectorLoadscreens.h" +#endif + +struct +{ + PARSE_STAGE curElement; + + CHAR8 szCharData[MAX_CHAR_DATA_LENGTH+1]; + SECTOR_LOADSCREENS curSectorLoadscreens; + SECTOR_LOADSCREENS * curArray; + + UINT32 maxArraySize; + UINT32 curIndex; + UINT32 currentDepth; + UINT32 maxReadDepth; +} +typedef sectorLoadscreensParseData; + +static void XMLCALL +sectorLoadscreensStartElementHandle(void *userData, const XML_Char *name, const XML_Char **atts) +{ + sectorLoadscreensParseData * pData = (sectorLoadscreensParseData *)userData; + + if(pData->currentDepth <= pData->maxReadDepth) //are we reading this element? + { + if(strcmp(name, "LOADSCREENS") == 0 && pData->curElement == ELEMENT_NONE) + { + pData->curElement = ELEMENT_LIST; + + memset(pData->curArray,0,sizeof(SECTOR_LOADSCREENS)*pData->maxArraySize); + + pData->maxReadDepth++; //we are not skipping this element + } + else if(strcmp(name, "SECTOR") == 0 && pData->curElement == ELEMENT_LIST) + { + pData->curElement = ELEMENT; + + memset(&pData->curSectorLoadscreens,0,sizeof(SECTOR_LOADSCREENS)); + + pData->maxReadDepth++; //we are not skipping this element + } + else if (pData->curElement == ELEMENT && + (strcmp(name, "uiIndex") == 0 || + strcmp(name, "szLocation") == 0 || + strcmp(name, "RandomAltSector") == 0 || + strcmp(name, "szImageFormat") == 0 || + strcmp(name, "szDay") == 0 || + strcmp(name, "szNight") == 0 || + strcmp(name, "szDayAlt") == 0 || + strcmp(name, "szNightAlt") == 0)) + { + pData->curElement = ELEMENT_PROPERTY; + + pData->maxReadDepth++; //we are not skipping this element + } + + pData->szCharData[0] = '\0'; + } + + pData->currentDepth++; + +} + +static void XMLCALL +sectorLoadscreensCharacterDataHandle(void *userData, const XML_Char *str, int len) +{ + sectorLoadscreensParseData * pData = (sectorLoadscreensParseData *)userData; + + if( (pData->currentDepth <= pData->maxReadDepth) && + (strlen(pData->szCharData) < MAX_CHAR_DATA_LENGTH) + ){ + strncat(pData->szCharData,str,__min((unsigned int)len,MAX_CHAR_DATA_LENGTH-strlen(pData->szCharData))); + } +} + + +static void XMLCALL +sectorLoadscreensEndElementHandle(void *userData, const XML_Char *name) +{ + char temp; + sectorLoadscreensParseData * pData = (sectorLoadscreensParseData *)userData; + + if(pData->currentDepth <= pData->maxReadDepth) //we're at the end of an element that we've been reading + { + if(strcmp(name, "LOADSCREENS") == 0) + { + pData->curElement = ELEMENT_NONE; + } + else if(strcmp(name, "SECTOR") == 0) + { + pData->curElement = ELEMENT_LIST; + + if(pData->curSectorLoadscreens.uiIndex < pData->maxArraySize) + { + pData->curArray[pData->curSectorLoadscreens.uiIndex] = pData->curSectorLoadscreens; //write the inventory into the table + } + } + else if(strcmp(name, "uiIndex") == 0) + { + pData->curElement = ELEMENT; + pData->curSectorLoadscreens.uiIndex = (UINT32) atol(pData->szCharData); + } + else if(strcmp(name, "szLocation") == 0) + { + pData->curElement = ELEMENT; + + if(MAX_LOCATION_CHARS >= strlen(pData->szCharData)) + strcpy(pData->curSectorLoadscreens.szLocation,pData->szCharData); + else + { + strncpy(pData->curSectorLoadscreens.szLocation,pData->szCharData,MAX_LOCATION_CHARS); + pData->curSectorLoadscreens.szLocation[MAX_LOCATION_CHARS] = '\0'; + } + + for(int i=0;iszCharData),MAX_LOCATION_CHARS);i++) + { + temp = pData->szCharData[i]; + pData->curSectorLoadscreens.szLocation[i] = temp; + //DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("itemEndElementHandle: szLocation[%d] = %s, temp = %s",i,&pData->curSectorLoadscreens.szLocation[i],&temp)); + } + } + else if(strcmp(name, "RandomAltSector") == 0) + { + pData->curElement = ELEMENT; + pData->curSectorLoadscreens.RandomAltSector = (BOOLEAN) atol(pData->szCharData); + } + else if(strcmp(name, "szImageFormat") == 0) + { + pData->curElement = ELEMENT; + + if(MAX_IMAGE_FORMAT_CHARS >= strlen(pData->szCharData)) + strcpy(pData->curSectorLoadscreens.szImageFormat,pData->szCharData); + else + { + strncpy(pData->curSectorLoadscreens.szImageFormat,pData->szCharData,MAX_IMAGE_FORMAT_CHARS); + pData->curSectorLoadscreens.szImageFormat[MAX_IMAGE_FORMAT_CHARS] = '\0'; + } + + for(int i=0;iszCharData),MAX_IMAGE_FORMAT_CHARS);i++) + { + temp = pData->szCharData[i]; + pData->curSectorLoadscreens.szImageFormat[i] = temp; + //DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("itemEndElementHandle: szImageFormat[%d] = %s, temp = %s",i,&pData->curSectorLoadscreens.szImageFormat[i],&temp)); + } + } + else if(strcmp(name, "szDay") == 0) + { + pData->curElement = ELEMENT; + + if(MAX_IMAGE_PATH_CHARS >= strlen(pData->szCharData)) + strcpy(pData->curSectorLoadscreens.szDay,pData->szCharData); + else + { + strncpy(pData->curSectorLoadscreens.szDay,pData->szCharData,MAX_IMAGE_PATH_CHARS); + pData->curSectorLoadscreens.szDay[MAX_IMAGE_PATH_CHARS] = '\0'; + } + + for(int i=0;iszCharData),MAX_IMAGE_PATH_CHARS);i++) + { + temp = pData->szCharData[i]; + pData->curSectorLoadscreens.szDay[i] = temp; + //DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("itemEndElementHandle: szDay[%d] = %s, temp = %s",i,&pData->curSectorLoadscreens.szDay[i],&temp)); + } + } + else if(strcmp(name, "szNight") == 0) + { + pData->curElement = ELEMENT; + + if(MAX_IMAGE_PATH_CHARS >= strlen(pData->szCharData)) + strcpy(pData->curSectorLoadscreens.szNight,pData->szCharData); + else + { + strncpy(pData->curSectorLoadscreens.szNight,pData->szCharData,MAX_IMAGE_PATH_CHARS); + pData->curSectorLoadscreens.szNight[MAX_IMAGE_PATH_CHARS] = '\0'; + } + + for(int i=0;iszCharData),MAX_IMAGE_PATH_CHARS);i++) + { + temp = pData->szCharData[i]; + pData->curSectorLoadscreens.szNight[i] = temp; + //DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("itemEndElementHandle: szNight[%d] = %s, temp = %s",i,&pData->curSectorLoadscreens.szNight[i],&temp)); + } + } + else if(strcmp(name, "szDayAlt") == 0) + { + pData->curElement = ELEMENT; + + if(MAX_IMAGE_PATH_CHARS >= strlen(pData->szCharData)) + strcpy(pData->curSectorLoadscreens.szDayAlt,pData->szCharData); + else + { + strncpy(pData->curSectorLoadscreens.szDayAlt,pData->szCharData,MAX_IMAGE_PATH_CHARS); + pData->curSectorLoadscreens.szDayAlt[MAX_IMAGE_PATH_CHARS] = '\0'; + } + + for(int i=0;iszCharData),MAX_IMAGE_PATH_CHARS);i++) + { + temp = pData->szCharData[i]; + pData->curSectorLoadscreens.szDayAlt[i] = temp; + //DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("itemEndElementHandle: szDayAlt[%d] = %s, temp = %s",i,&pData->curSectorLoadscreens.szDayAlt[i],&temp)); + } + } + else if(strcmp(name, "szNightAlt") == 0) + { + pData->curElement = ELEMENT; + + // WANNE + if(MAX_IMAGE_PATH_CHARS >= strlen(pData->szCharData)) + strcpy(pData->curSectorLoadscreens.szNightAlt,pData->szCharData); + else + { + strncpy(pData->curSectorLoadscreens.szNightAlt,pData->szCharData,MAX_IMAGE_PATH_CHARS); + pData->curSectorLoadscreens.szNightAlt[MAX_IMAGE_PATH_CHARS] = '\0'; + } + + for(int i=0;iszCharData),MAX_IMAGE_PATH_CHARS);i++) + { + temp = pData->szCharData[i]; + pData->curSectorLoadscreens.szNightAlt[i] = temp; + //DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("itemEndElementHandle: szNightAlt[%d] = %s, temp = %s",i,&pData->curSectorLoadscreens.szNightAlt[i],&temp)); + } + } + + pData->maxReadDepth--; + } + + pData->currentDepth--; +} + + + + +BOOLEAN ReadInSectorLoadscreensStats(SECTOR_LOADSCREENS *pSectorLoadscreens, STR fileName) +{ + HWFILE hFile; + UINT32 uiBytesRead; + UINT32 uiFSize; + CHAR8 * lpcBuffer; + XML_Parser parser = XML_ParserCreate(NULL); + + sectorLoadscreensParseData pData; + + DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading SectorLoadscreens.xml" ); + + // Open inventory file + hFile = FileOpen( fileName, FILE_ACCESS_READ, FALSE ); + if ( !hFile ) + return( FALSE ); + + uiFSize = FileGetSize(hFile); + lpcBuffer = (CHAR8 *) MemAlloc(uiFSize+1); + + //Read in block + if ( !FileRead( hFile, lpcBuffer, uiFSize, &uiBytesRead ) ) + { + MemFree(lpcBuffer); + return( FALSE ); + } + + lpcBuffer[uiFSize] = 0; //add a null terminator + + FileClose( hFile ); + + + XML_SetElementHandler(parser, sectorLoadscreensStartElementHandle, sectorLoadscreensEndElementHandle); + XML_SetCharacterDataHandler(parser, sectorLoadscreensCharacterDataHandle); + + + memset(&pData,0,sizeof(pData)); + pData.curArray = pSectorLoadscreens; + pData.maxArraySize = MAX_SECTOR_LOADSCREENS; + + XML_SetUserData(parser, &pData); + + + if(!XML_Parse(parser, lpcBuffer, uiFSize, TRUE)) + { + CHAR8 errorBuf[511]; + + sprintf(errorBuf, "XML Parser Error in SectorLoadscreens.xml: %s at line %d", XML_ErrorString(XML_GetErrorCode(parser)), XML_GetCurrentLineNumber(parser)); + LiveMessage(errorBuf); + + MemFree(lpcBuffer); + return FALSE; + } + + MemFree(lpcBuffer); + + + XML_ParserFree(parser); + + + return( TRUE ); +} + +BOOLEAN WriteSectorLoadscreensStats(SECTOR_LOADSCREENS *pSectorLoadscreens, STR fileName) +{ + HWFILE hFile; + + //Debug code; make sure that what we got from the file is the same as what's there + // Open a new file + hFile = FileOpen( fileName, FILE_ACCESS_WRITE | FILE_CREATE_ALWAYS, FALSE ); + if ( !hFile ) + return( FALSE ); + + { + UINT32 cnt; + + FilePrintf(hFile,"\r\n"); + for(cnt = 0;cnt < MAXITEMS;cnt++) + { + + FilePrintf(hFile,"\t\r\n"); + + FilePrintf(hFile,"\t\t%d\r\n", cnt); + FilePrintf(hFile,"\t\t%d\r\n", pSectorLoadscreens[cnt].szLocation); + FilePrintf(hFile,"\t\t%d\r\n", pSectorLoadscreens[cnt].RandomAltSector); + FilePrintf(hFile,"\t\t%d\r\n", pSectorLoadscreens[cnt].szImageFormat); + FilePrintf(hFile,"\t\t%d\r\n", pSectorLoadscreens[cnt].szDay); + FilePrintf(hFile,"\t\t%d\r\n", pSectorLoadscreens[cnt].szNight); + FilePrintf(hFile,"\t\t%d\r\n", pSectorLoadscreens[cnt].szDayAlt); + FilePrintf(hFile,"\t\t%d\r\n", pSectorLoadscreens[cnt].szNightAlt); + + FilePrintf(hFile,"\t\r\n"); + } + FilePrintf(hFile,"\r\n"); + } + FileClose( hFile ); + + return( TRUE ); +} \ No newline at end of file