Browse Source

save path customable in config file like game path( behaviour same as before if unspecified ); now savefile-only sync is possible

Pal Lockheart 7 years ago
parent
commit
fd53774a0a
5 changed files with 22 additions and 5 deletions
  1. 1 1
      global.c
  2. 15 0
      palcfg.c
  3. 2 0
      palcfg.h
  4. 3 3
      uigame.c
  5. 1 1
      util.c

+ 1 - 1
global.c

@@ -926,7 +926,7 @@ PAL_InitGameData(
    //
    // try loading from the saved game file.
    //
-   if (iSaveSlot == 0 || PAL_LoadGame(va("%s%d%s", PAL_SAVE_PREFIX, iSaveSlot, ".rpg")) != 0)
+   if (iSaveSlot == 0 || PAL_LoadGame(va("%s%d%s", gConfig.pszSavePath, iSaveSlot, ".rpg")) != 0)
    {
       //
       // Cannot load the saved game file. Load the defaults.

+ 15 - 0
palcfg.c

@@ -32,6 +32,7 @@ static const ConfigItem gConfigItems[PALCFG_ALL_MAX] = {
 
 	{ PALCFG_CD,                PALCFG_STRING,   "CD",                 2, "OGG", NULL, NULL },
 	{ PALCFG_GAMEPATH,          PALCFG_STRING,   "GAMEPATH",           8, NULL, NULL, NULL },
+	{ PALCFG_SAVEPATH,          PALCFG_STRING,   "SAVEPATH",           8, NULL, NULL, NULL },
 	{ PALCFG_MESSAGEFILE,       PALCFG_STRING,   "MESSAGEFILENAME",   15, NULL, NULL, NULL },
 	{ PALCFG_BDFFILE,           PALCFG_STRING,   "BDFFILENAME",       11, NULL, NULL, NULL },
 	{ PALCFG_MUSIC,             PALCFG_STRING,   "MUSIC",              5, "RIX", NULL, NULL },
@@ -278,6 +279,18 @@ PAL_LoadConfig(
 					}
 					break;
 				}
+				case PALCFG_SAVEPATH:
+				{
+					int n = strlen(value.sValue);
+					while (n > 0 && isspace(value.sValue[n - 1])) n--;
+					if (n > 0)
+					{
+						gConfig.pszSavePath = (char *)realloc(gConfig.pszSavePath, n + 1);
+						memcpy(gConfig.pszSavePath, value.sValue, n);
+						gConfig.pszSavePath[n] = '\0';
+					}
+					break;
+				}
 				case PALCFG_CD:
 				{
 					if (PAL_HAS_MP3 && SDL_strncasecmp(value.sValue, "MP3", 3) == 0)
@@ -367,6 +380,7 @@ PAL_LoadConfig(
 	// Set configurable global options
 	//
 	if (!gConfig.pszGamePath) gConfig.pszGamePath = strdup(PAL_PREFIX);
+	if (!gConfig.pszSavePath) gConfig.pszSavePath = strdup(PAL_SAVE_PREFIX);
 	gConfig.eMusicType = eMusicType;
 	gConfig.eCDType = eCDType;
 	gConfig.eOPLType = eOPLType;
@@ -446,6 +460,7 @@ PAL_SaveConfig(
 		sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_OPL), opl_types[gConfig.eOPLType]); fputs(buf, fp);
 
 		if (gConfig.pszGamePath) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_GAMEPATH), gConfig.pszGamePath); fputs(buf, fp); }
+		if (gConfig.pszSavePath) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_SAVEPATH), gConfig.pszSavePath); fputs(buf, fp); }
 		if (gConfig.pszMsgFile) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_MESSAGEFILE), gConfig.pszMsgFile); fputs(buf, fp); }
 		if (gConfig.pszBdfFile) { sprintf(buf, "%s=%s\n", PAL_ConfigName(PALCFG_BDFFILE), gConfig.pszBdfFile); fputs(buf, fp); }
 

+ 2 - 0
palcfg.h

@@ -72,6 +72,7 @@ typedef enum tagPALCFG_ITEM
 	/* Strings */
 	PALCFG_CD = PALCFG_STRING_MIN,
 	PALCFG_GAMEPATH,
+	PALCFG_SAVEPATH,
 	PALCFG_MESSAGEFILE,
 	PALCFG_BDFFILE,
 	PALCFG_MUSIC,
@@ -160,6 +161,7 @@ typedef struct tagCONFIGURATION
 
 	/* Configurable options */
 	char            *pszGamePath;
+	char            *pszSavePath;
 	char            *pszMsgFile;
 	char            *pszBdfFile;
 	CODEPAGE         uCodePage;

+ 3 - 3
uigame.c

@@ -194,7 +194,7 @@ PAL_SaveSlotMenu(
    //
    for (i = 1; i <= 5; i++)
    {
-      fp = fopen(va("%s%d%s", PAL_SAVE_PREFIX, i, ".rpg"), "rb");
+      fp = fopen(va("%s%d%s", gConfig.pszSavePath, i, ".rpg"), "rb");
       if (fp == NULL)
       {
          wSavedTimes = 0;
@@ -589,7 +589,7 @@ PAL_SystemMenu(
          iSavedTimes = 0;
          for (i = 1; i <= 5; i++)
          {
-            fp = fopen(va("%s%d%s", PAL_SAVE_PREFIX, i, ".rpg"), "rb");
+            fp = fopen(va("%s%d%s", gConfig.pszSavePath, i, ".rpg"), "rb");
             if (fp != NULL)
             {
                WORD wSavedTimes;
@@ -602,7 +602,7 @@ PAL_SystemMenu(
                }
             }
          }
-         PAL_SaveGame(va("%s%d%s", PAL_SAVE_PREFIX, iSlot, ".rpg"), iSavedTimes + 1);
+         PAL_SaveGame(va("%s%d%s", gConfig.pszSavePath, iSlot, ".rpg"), iSavedTimes + 1);
       }
       break;
 

+ 1 - 1
util.c

@@ -581,7 +581,7 @@ UTIL_OpenLog(
    VOID
 )
 {
-   if ((pLogFile = fopen(va("%slog.txt", PAL_SAVE_PREFIX), "a+")) == NULL)
+   if ((pLogFile = fopen(va("%slog.txt", gConfig.pszSavePath), "a+")) == NULL)
    {
       return NULL;
    }