add PSPSaveFileManager class (subclassed DefaultSaveFileManager)

svn-id: r34891
This commit is contained in:
Joost Peters 2008-11-03 22:21:34 +00:00
parent 13561a008e
commit f12b76b7fb
4 changed files with 116 additions and 14 deletions

View File

@ -31,6 +31,7 @@ MODULE_OBJS := \
saves/default/default-saves.o \
saves/compressed/compressed-saves.o \
saves/posix/posix-saves.o \
saves/psp/psp-saves.o \
timer/default/default-timer.o
# Include common rules

View File

@ -30,7 +30,7 @@
#include "osys_psp.h"
#include "backends/saves/default/default-saves.h"
#include "backends/saves/psp/psp-saves.h"
#include "backends/timer/default/default-timer.h"
#include "graphics/surface.h"
#include "graphics/scaler.h"
@ -98,19 +98,7 @@ OSystem_PSP::~OSystem_PSP() {
void OSystem_PSP::initBackend() {
_savefile = new DefaultSaveFileManager("ms0:/scummvm_savegames");
const char *savePath = _savefile->getSavePath().c_str();
//check if the save directory exists
SceUID fd = sceIoDopen(savePath);
if (fd < 0) {
//No? then let's create it.
sceIoMkdir(savePath, 0777);
} else {
//it exists, so close it again.
sceIoDclose(fd);
}
_savefile = new PSPSaveFileManager;
_timer = new DefaultTimerManager();
setTimerCallback(&timer_handler, 10);

View File

@ -0,0 +1,62 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* $URL: $
* $Id: $
*
*/
#ifdef __PSP__
#include "backends/saves/psp/psp-saves.h"
#include "common/config-manager.h"
#include "common/savefile.h"
#define PSP_DEFAULT_SAVE_PATH "ms0:/scummvm_savegames"
PSPSaveFileManager::PSPSaveFileManager() {
// Register default savepath
ConfMan.registerDefault("savepath", PSP_DEFAULT_SAVE_PATH);
}
/*
PSPSaveFileManager::PSPSaveFileManager(const Common::String &defaultSavepath)
: DefaultSaveFileManager(defaultSavepath) {
}
*/
void PSPSaveFileManager::checkPath(const Common::FSNode &dir) {
const char *savePath = dir.getPath().c_str();
clearError();
//check if the save directory exists
SceUID fd = sceIoDopen(savePath);
if (fd < 0) {
//No? then let's create it.
sceIoMkdir(savePath, 0777);
} else {
//it exists, so close it again.
sceIoDclose(fd);
}
}
#endif

View File

@ -0,0 +1,51 @@
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* $URL: $
* $Id: $
*
*/
#ifndef BACKEND_PSP_SAVES_H
#define BACKEND_PSP_SAVES_H
#include "backends/saves/default/default-saves.h"
/**
* Customization of the DefaultSaveFileManager for the PSP platform.
* The only two differences are that the default constructor sets
* up a default savepath, and that checkPath tries to create the savedir,
* if missing, via the sceIoMkdir() call.
*/
class PSPSaveFileManager : public DefaultSaveFileManager {
public:
PSPSaveFileManager();
// PSPSaveFileManager(const Common::String &defaultSavepath);
protected:
/**
* Checks the given path for read access, existence, etc.
* In addition, tries to create a missing savedir, if possible.
* Sets the internal error and error message accordingly.
*/
virtual void checkPath(const Common::FSNode &dir);
};
#endif