mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
Merged from revision: 7264
Feature: save/load tooltip displays time of save file modification, detailed display (with ctrl pressed) also shows save version (thx Buggler for idea) (by anv) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7265 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+55
-5
@@ -40,6 +40,10 @@
|
|||||||
|
|
||||||
#include "connect.h"
|
#include "connect.h"
|
||||||
|
|
||||||
|
#include "FileMan.h"
|
||||||
|
#include <vfs/Core/vfs.h>
|
||||||
|
#include <vfs/Core/vfs_file_raii.h>
|
||||||
|
|
||||||
#ifdef JA2UB
|
#ifdef JA2UB
|
||||||
#include "Strategic Movement.h"
|
#include "Strategic Movement.h"
|
||||||
|
|
||||||
@@ -151,6 +155,9 @@ UINT32 guiSaveLoadExitScreen = SAVE_LOAD_SCREEN;
|
|||||||
//Contains the array of valid save game locations
|
//Contains the array of valid save game locations
|
||||||
BOOLEAN gbSaveGameArray[ NUM_SAVE_GAMES ];
|
BOOLEAN gbSaveGameArray[ NUM_SAVE_GAMES ];
|
||||||
|
|
||||||
|
// anv: read times of modification to show them later
|
||||||
|
SYSTEMTIME gstSaveGameCreationTimeArray[ NUM_SAVE_GAMES ];
|
||||||
|
|
||||||
BOOLEAN gfDoingQuickLoad = FALSE;
|
BOOLEAN gfDoingQuickLoad = FALSE;
|
||||||
|
|
||||||
BOOLEAN gfFailedToSaveGameWhenInsideAMessageBox = FALSE;
|
BOOLEAN gfFailedToSaveGameWhenInsideAMessageBox = FALSE;
|
||||||
@@ -441,7 +448,7 @@ void InitMSysButtons(BOOLEAN delRegion)
|
|||||||
UINT8 i;
|
UINT8 i;
|
||||||
CHAR16 zString[512];
|
CHAR16 zString[512];
|
||||||
CHAR16 zString2[512];
|
CHAR16 zString2[512];
|
||||||
|
CHAR16 zString3[512];
|
||||||
if ( delRegion == TRUE )
|
if ( delRegion == TRUE )
|
||||||
{
|
{
|
||||||
for(i=0; i<NUM_SLOT; i++)
|
for(i=0; i<NUM_SLOT; i++)
|
||||||
@@ -477,6 +484,25 @@ void InitMSysButtons(BOOLEAN delRegion)
|
|||||||
swprintf( zString, pMessageStrings[MSG_SAVE_NORMAL_SLOT], VAL_SLOT_START + i - SAVE__END_TURN_NUM_2 );
|
swprintf( zString, pMessageStrings[MSG_SAVE_NORMAL_SLOT], VAL_SLOT_START + i - SAVE__END_TURN_NUM_2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// anv: add modification date
|
||||||
|
if( gbSaveGameArray[ VAL_SLOT_START + i ] )
|
||||||
|
{
|
||||||
|
swprintf( zString2, L"%04d", gstSaveGameCreationTimeArray[ VAL_SLOT_START + i ].wYear );
|
||||||
|
wcscpy( zString3, zString2 );
|
||||||
|
swprintf( zString2, L"/%02d", gstSaveGameCreationTimeArray[ VAL_SLOT_START + i ].wMonth );
|
||||||
|
wcscat( zString3, zString2 );
|
||||||
|
swprintf( zString2, L"/%02d ", gstSaveGameCreationTimeArray[ VAL_SLOT_START + i ].wDay );
|
||||||
|
wcscat( zString3, zString2 );
|
||||||
|
|
||||||
|
swprintf( zString2, L"%02d", gstSaveGameCreationTimeArray[ VAL_SLOT_START + i ].wHour );
|
||||||
|
wcscat( zString3, zString2 );
|
||||||
|
swprintf( zString2, L":%02d ", gstSaveGameCreationTimeArray[ VAL_SLOT_START + i ].wMinute );
|
||||||
|
wcscat( zString3, zString2 );
|
||||||
|
|
||||||
|
wcscat( zString3, zString );
|
||||||
|
wcscpy( zString, zString3 );
|
||||||
|
}
|
||||||
|
|
||||||
wcscpy( zString2,zString );
|
wcscpy( zString2,zString );
|
||||||
SetRegionFastHelpText( &gSelectedSaveRegion[ i ], zString2 );
|
SetRegionFastHelpText( &gSelectedSaveRegion[ i ], zString2 );
|
||||||
|
|
||||||
@@ -1318,7 +1344,31 @@ BOOLEAN InitSaveGameArray()
|
|||||||
if( !LoadSavedGameHeader( cnt2, &SaveGameHeader ) )
|
if( !LoadSavedGameHeader( cnt2, &SaveGameHeader ) )
|
||||||
gbSaveGameArray[VAL_SLOT_START + cnt] = FALSE;
|
gbSaveGameArray[VAL_SLOT_START + cnt] = FALSE;
|
||||||
else
|
else
|
||||||
|
{
|
||||||
gbSaveGameArray[VAL_SLOT_START + cnt] = TRUE;
|
gbSaveGameArray[VAL_SLOT_START + cnt] = TRUE;
|
||||||
|
|
||||||
|
// anv: read last modified date property of save file
|
||||||
|
#ifdef USE_VFS
|
||||||
|
// get full path to save file
|
||||||
|
vfs::Path vfsPath;
|
||||||
|
vfs::COpenReadFile rfile(zSaveGameName);
|
||||||
|
rfile->_getRealPath(vfsPath);
|
||||||
|
string str = vfsPath.to_string();
|
||||||
|
LPCSTR lpSaveGamePath = str.c_str();
|
||||||
|
// get file handle
|
||||||
|
HANDLE hFile = CreateFile( lpSaveGamePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL );
|
||||||
|
// read time attributes
|
||||||
|
FILETIME ftCreationTime, ftLastAccessedTime, ftLastWriteTime;
|
||||||
|
SYSTEMTIME stSystemTime;
|
||||||
|
GetFileTime( hFile, &ftCreationTime, &ftLastAccessedTime, &ftLastWriteTime );
|
||||||
|
// remember time
|
||||||
|
FileTimeToSystemTime( &ftLastWriteTime, &stSystemTime );
|
||||||
|
SystemTimeToTzSpecificLocalTime( NULL, &stSystemTime, &gstSaveGameCreationTimeArray[VAL_SLOT_START + cnt] );
|
||||||
|
// close
|
||||||
|
CloseHandle( hFile );
|
||||||
|
rfile->close();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gbSaveGameArray[VAL_SLOT_START + cnt] = FALSE;
|
gbSaveGameArray[VAL_SLOT_START + cnt] = FALSE;
|
||||||
@@ -1553,15 +1603,15 @@ BOOLEAN DisplaySaveGameEntry( INT32 bEntryID )
|
|||||||
swprintf( zDifString, L"%s %s", gzGIOScreenText[ GIO_EASY_TEXT + SaveGameHeader.sInitialGameOptions.ubDifficultyLevel - 1 ], zSaveLoadText[ SLG_DIFF ] );
|
swprintf( zDifString, L"%s %s", gzGIOScreenText[ GIO_EASY_TEXT + SaveGameHeader.sInitialGameOptions.ubDifficultyLevel - 1 ], zSaveLoadText[ SLG_DIFF ] );
|
||||||
|
|
||||||
//make a string containing the extended options
|
//make a string containing the extended options
|
||||||
swprintf( zMouseHelpTextString, L"%20ls %d %d %22ls %22ls", zDifString,
|
swprintf( zMouseHelpTextString, L"%s %d %d %22ls %22ls %22ld", zDifString,
|
||||||
SaveGameHeader.sInitialGameOptions.ubBobbyRayQuality,
|
SaveGameHeader.sInitialGameOptions.ubBobbyRayQuality,
|
||||||
SaveGameHeader.sInitialGameOptions.ubBobbyRayQuantity,
|
SaveGameHeader.sInitialGameOptions.ubBobbyRayQuantity,
|
||||||
SaveGameHeader.sInitialGameOptions.fGunNut ? zSaveLoadText[ SLG_ADDITIONAL_GUNS ] : zSaveLoadText[ SLG_NORMAL_GUNS ],
|
SaveGameHeader.sInitialGameOptions.fGunNut ? zSaveLoadText[ SLG_ADDITIONAL_GUNS ] : zSaveLoadText[ SLG_NORMAL_GUNS ],
|
||||||
SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_SCIFI ? zSaveLoadText[ SLG_SCIFI ] : (SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_PLATINUM ? zSaveLoadText[ SLG_PLATINUM ]: zSaveLoadText[ SLG_REALISTIC ]) );
|
SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_SCIFI ? zSaveLoadText[ SLG_SCIFI ] : (SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_PLATINUM ? zSaveLoadText[ SLG_PLATINUM ]: zSaveLoadText[ SLG_REALISTIC ]),
|
||||||
|
SaveGameHeader.uiSavedGameVersion );
|
||||||
|
|
||||||
//The date
|
//The date
|
||||||
DrawTextToScreen( zMouseHelpTextString, (UINT16)(usPosX+SLG_DATE_OFFSET_X), (UINT16)(usPosY+SLG_DATE_OFFSET_Y), 0, uiFont, ubFontColor, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED );
|
DrawTextToScreen( zMouseHelpTextString, (UINT16)(usPosX+SLG_DATE_OFFSET_X), (UINT16)(usPosY+SLG_DATE_OFFSET_Y), 0, uiFont, ubFontColor, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED ); }
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Create the string for the Data
|
//Create the string for the Data
|
||||||
|
|||||||
Reference in New Issue
Block a user