Browse Source

[hellfire] pfile_get_save_path and frinds

pull/970/head
Anders Jenbo 5 years ago
parent
commit
6cfc2862d6
  1. 58
      Source/pfile.cpp

58
Source/pfile.cpp

@ -99,28 +99,50 @@ static char *GetSaveDirectory(char *dst, int dst_size, DWORD save_num)
return _strlwr(dst);
}
#ifdef HELLFIRE
static void pfile_get_save_path(char *pszBuf, DWORD dwBufSize, DWORD save_num, BOOL hellfire)
#else
static void pfile_get_save_path(char *pszBuf, DWORD dwBufSize, DWORD save_num)
#endif
{
const char *fmt;
DWORD plen;
char *s;
char path[MAX_PATH];
#ifdef SPAWN
const char *fmt = "\\share_%d.sv";
fmt = "\\share_%d.sv";
if (gbMaxPlayers <= 1)
fmt = "\\spawn%d.sv";
#elif defined(HELLFIRE)
if (gbMaxPlayers > 1) {
if (!hellfire)
fmt = "\\dlinfo_%d.drv";
else
fmt = "\\hrinfo_%d.drv";
plen = GetWindowsDirectory(pszBuf, MAX_PATH);
} else {
if (!hellfire)
fmt = "\\single_%d.sv";
else
fmt = "\\single_%d.hsv";
#else
const char *fmt = "\\multi_%d.sv";
fmt = "\\multi_%d.sv";
if (gbMaxPlayers <= 1)
fmt = "\\single_%d.sv";
#endif
// BUGFIX: ignores dwBufSize and uses MAX_PATH instead
plen = GetModuleFileName(ghInst, pszBuf, MAX_PATH);
s = strrchr(pszBuf, '\\');
if (s)
*s = '\0';
// BUGFIX: ignores dwBufSize and uses MAX_PATH instead
plen = GetModuleFileName(ghInst, pszBuf, MAX_PATH);
s = strrchr(pszBuf, '\\');
if (s)
*s = '\0';
#ifdef HELLFIRE
}
#endif
if (!plen)
app_fatal("Unable to get save directory");
@ -213,8 +235,13 @@ static BOOL pfile_open_archive(BOOL update, DWORD save_num)
{
char FileName[MAX_PATH];
#ifdef HELLFIRE
pfile_get_save_path(FileName, sizeof(FileName), save_num, TRUE);
if (OpenMPQ(FileName, gbMaxPlayers > 1, save_num))
#else
pfile_get_save_path(FileName, sizeof(FileName), save_num);
if (OpenMPQ(FileName, FALSE, save_num))
#endif
return TRUE;
if (update && gbMaxPlayers > 1)
@ -226,7 +253,12 @@ static void pfile_flush(BOOL is_single_player, DWORD save_num)
{
char FileName[MAX_PATH];
#ifdef HELLFIRE
pfile_get_save_path(FileName, sizeof(FileName), save_num, TRUE);
#else
pfile_get_save_path(FileName, sizeof(FileName), save_num);
#endif
mpqapi_flush_and_close(FileName, is_single_player, save_num);
}
@ -238,7 +270,11 @@ static HANDLE pfile_open_save_archive(BOOL *showFixedMsg, DWORD save_num)
char SrcStr[MAX_PATH];
HANDLE archive;
#ifdef HELLFIRE
pfile_get_save_path(SrcStr, sizeof(SrcStr), save_num, TRUE);
#else
pfile_get_save_path(SrcStr, sizeof(SrcStr), save_num);
#endif
if (SFileOpenArchive(SrcStr, 0x7000, FS_PC, &archive))
return archive;
return NULL;
@ -405,7 +441,11 @@ BOOL __stdcall pfile_ui_set_hero_infos(BOOL(__stdcall *ui_add_hero_info)(_uihero
continue;
if (!SRegLoadString("Diablo\\Converted", s, 0, NewFileName, sizeof(NewFileName))) {
while (save_num < MAX_CHARACTERS) {
#ifdef HELLFIRE
pfile_get_save_path(NewFileName, sizeof(NewFileName), save_num++, TRUE);
#else
pfile_get_save_path(NewFileName, sizeof(NewFileName), save_num++);
#endif
if (OpenFile(NewFileName, &ReOpenBuff, OF_EXIST) == HFILE_ERROR) {
if (CopyFile(FileName, NewFileName, TRUE)) {
DWORD attrib;
@ -544,7 +584,11 @@ BOOL __stdcall pfile_delete_save(_uiheroinfo *hero_info)
save_num = pfile_get_save_num_from_name(hero_info->name);
if (save_num < MAX_CHARACTERS) {
hero_names[save_num][0] = '\0';
#ifdef HELLFIRE
pfile_get_save_path(FileName, sizeof(FileName), save_num, TRUE);
#else
pfile_get_save_path(FileName, sizeof(FileName), save_num);
#endif
DeleteFile(FileName);
}
return TRUE;

Loading…
Cancel
Save