From f680fb3e767f5dcf0ffd466a559e90e7059d58a7 Mon Sep 17 00:00:00 2001 From: kichikuou Date: Sun, 30 Apr 2017 15:52:22 +0900 Subject: [PATCH] Add savedir option --- src/fileio.cpp | 20 +++++++++++--------- src/fileio.h | 6 ++---- src/sdlmain.cpp | 3 +++ src/sys/nact_sys3.cpp | 10 +++++----- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/fileio.cpp b/src/fileio.cpp index d442b59..07d2ab6 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -7,6 +7,12 @@ #include "fileio.h" _TCHAR g_root[_MAX_PATH]; +const char* g_savedir; + +void FILEIO::SetSaveDir(const char* savedir) +{ + g_savedir = savedir; +} FILEIO::FILEIO() { @@ -25,7 +31,11 @@ FILEIO::~FILEIO(void) bool FILEIO::Fopen(const _TCHAR *filename, int mode) { _TCHAR path[_MAX_PATH]; - _stprintf_s(path, _MAX_PATH, _T("%s%s"), filename, g_root); + _stprintf_s(path, _MAX_PATH, _T("%s%s"), + (g_savedir && mode & FILEIO_SAVEDATA) ? g_savedir : g_root, + filename); + + mode &= ~FILEIO_SAVEDATA; if(fp != NULL) { Fclose(); @@ -36,14 +46,6 @@ bool FILEIO::Fopen(const _TCHAR *filename, int mode) fp = fopen(path, _T("rb")); } else if(mode == FILEIO_WRITE_BINARY) { fp = fopen(path, _T("wb")); - } else if(mode == FILEIO_READ_WRITE_BINARY) { - fp = fopen(path, _T("r+b")); - } else if(mode == FILEIO_READ_ASCII) { - fp = fopen(path, _T("r")); - } else if(mode == FILEIO_WRITE_ASCII) { - fp = fopen(path, _T("w")); - } else if(mode == FILEIO_READ_WRITE_ASCII) { - fp = fopen(path, _T("r+w")); } return (fp != NULL); } diff --git a/src/fileio.h b/src/fileio.h index 363c76d..8ea92fd 100644 --- a/src/fileio.h +++ b/src/fileio.h @@ -12,10 +12,7 @@ #define FILEIO_READ_BINARY 1 #define FILEIO_WRITE_BINARY 2 -#define FILEIO_READ_WRITE_BINARY 3 -#define FILEIO_READ_ASCII 4 -#define FILEIO_WRITE_ASCII 5 -#define FILEIO_READ_WRITE_ASCII 6 +#define FILEIO_SAVEDATA 4 #define FILEIO_SEEK_SET 0 #define FILEIO_SEEK_CUR 1 @@ -29,6 +26,7 @@ public: FILEIO(); ~FILEIO(); + static void SetSaveDir(const char* savedir); bool Fopen(const _TCHAR *filename, int mode); void Fclose(); uint32 Fseek(long offset, int origin); diff --git a/src/sdlmain.cpp b/src/sdlmain.cpp index bc4c198..b64cba4 100644 --- a/src/sdlmain.cpp +++ b/src/sdlmain.cpp @@ -1,4 +1,5 @@ #include "common.h" +#include "fileio.h" #include "sys/nact.h" extern "C" { @@ -26,6 +27,8 @@ int main(int argc, char *argv[]) for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "-antialias") == 0) ags_setAntialiasedStringMode(1); + if (strcmp(argv[i], "-savedir") == 0) + FILEIO::SetSaveDir(argv[++i]); } // system3 åˆ�期化 diff --git a/src/sys/nact_sys3.cpp b/src/sys/nact_sys3.cpp index 69cb3ae..276f06b 100644 --- a/src/sys/nact_sys3.cpp +++ b/src/sys/nact_sys3.cpp @@ -920,7 +920,7 @@ void NACT::cmd_l() if(index == 0) { // “ÁŽêƒZ�[ƒu FILEIO* fio = new FILEIO(); - if(fio->Fopen(_T("ASLEEP.DAT"), FILEIO_READ_BINARY)) { + if(fio->Fopen(_T("ASLEEP.DAT"), FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { // U01 - U20 for(int i = 21; i <= 40; i++) { var[i] = fio->Fgetw(); @@ -939,7 +939,7 @@ void NACT::cmd_l() path[7] = _T('A') + index - 1; FILEIO* fio = new FILEIO(); - if(fio->Fopen(path, FILEIO_READ_BINARY)) { + if(fio->Fopen(path, FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { fio->Fseek(112, FILEIO_SEEK_SET); int next_page = fio->Fgetw() - 1; @@ -1032,7 +1032,7 @@ void NACT::cmd_l() path[7] = _T('A') + index - 101; FILEIO* fio = new FILEIO(); - if(fio->Fopen(path, FILEIO_READ_BINARY)) { + if(fio->Fopen(path, FILEIO_READ_BINARY | FILEIO_SAVEDATA)) { fio->Fseek(112 + 16, FILEIO_SEEK_SET); var[0] = fio->Fgetw(); fio->Fclose(); @@ -1207,7 +1207,7 @@ void NACT::cmd_q() if(index == 0) { // “ÁŽêƒZ�[ƒu FILEIO* fio = new FILEIO(); - if(fio->Fopen(_T("ASLEEP.DAT"), FILEIO_WRITE_BINARY)) { + if(fio->Fopen(_T("ASLEEP.DAT"), FILEIO_WRITE_BINARY | FILEIO_SAVEDATA)) { // U01 - U20 for(int i = 21; i <= 40; i++) { fio->Fputw(var[i]); @@ -1226,7 +1226,7 @@ void NACT::cmd_q() path[7] = _T('A') + index - 1; FILEIO* fio = new FILEIO(); - if(fio->Fopen(path, FILEIO_WRITE_BINARY)) { + if(fio->Fopen(path, FILEIO_WRITE_BINARY | FILEIO_SAVEDATA)) { uint8 buffer[9510]; int p = 0;