aboutsummaryrefslogtreecommitdiff
path: root/saga/saveload.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2005-05-08 14:04:06 +0000
committerAndrew Kurushin2005-05-08 14:04:06 +0000
commita81b093e65f90ea70c5b07676a1fcc46d3e95a5e (patch)
treee0fced8f17e32e28fe24a1c948d2a74e6a039699 /saga/saveload.cpp
parent781472641e32d1999660caa54c27b218c5b4298d (diff)
downloadscummvm-rg350-a81b093e65f90ea70c5b07676a1fcc46d3e95a5e.tar.gz
scummvm-rg350-a81b093e65f90ea70c5b07676a1fcc46d3e95a5e.tar.bz2
scummvm-rg350-a81b093e65f90ea70c5b07676a1fcc46d3e95a5e.zip
fixed sfSceneEq bug
fixed load actors entrance removed some orphans svn-id: r17964
Diffstat (limited to 'saga/saveload.cpp')
-rw-r--r--saga/saveload.cpp47
1 files changed, 20 insertions, 27 deletions
diff --git a/saga/saveload.cpp b/saga/saveload.cpp
index 37d1933991..36c397054f 100644
--- a/saga/saveload.cpp
+++ b/saga/saveload.cpp
@@ -39,26 +39,24 @@
namespace Saga {
-void SagaEngine::save() {
+void SagaEngine::save(const char *fileName) {
File out;
- out.open("iteSCUMMVM.sav", File::kFileWriteMode);
+ out.open(fileName, File::kFileWriteMode);
//TODO: version number
- out.writeSint16LE(_script->_commonBufferSize);
-
// Surrounding scene
out.writeSint32LE(_scene->getOutsetSceneNumber());
- out.writeSint32LE(0);
// Inset scene
out.writeSint32LE(_scene->currentSceneNumber());
- out.writeSint32LE(0);
uint16 i;
_actor->saveState(out);
+ out.writeSint16LE(_script->_commonBufferSize);
+
for (i = 0; i < _script->_commonBufferSize; i++)
out.writeByte(_script->_commonBuffer[i]);
@@ -68,36 +66,33 @@ void SagaEngine::save() {
out.close();
}
-void SagaEngine::load() {
+void SagaEngine::load(const char *fileName) {
File in;
int commonBufferSize;
- int scenenum, inset;
+ int sceneNumber, insetSceneNumber;
int mapx, mapy;
+ uint16 i;
- in.open("iteSCUMMVM.sav");
+ in.open(fileName);
if (!in.isOpen())
return;
- commonBufferSize = in.readSint16LE();
// Surrounding scene
- scenenum = in.readSint32LE();
- in.readSint32LE();
+ sceneNumber = in.readSint32LE();
// Inset scene
- inset = in.readSint32LE();
- in.readSint32LE();
-
- debug(0, "scene: %d out: %d", scenenum, inset);
+ insetSceneNumber = in.readSint32LE();
- uint16 i;
+ debug(0, "scene: #%d inset scene: #%d", sceneNumber, insetSceneNumber);
- _interface->clearInventory(); //TODO: interface load-save-state
+ _interface->clearInventory();
_actor->loadState(in);
+ commonBufferSize = in.readSint16LE();
for (i = 0; i < commonBufferSize; i++)
_script->_commonBuffer[i] = in.readByte();
@@ -108,20 +103,18 @@ void SagaEngine::load() {
_isoMap->setMapPosition(mapx, mapy);
- // FIXME: When save/load screen will be implemented we should
- // call these after that screen left by user
- _interface->draw();
-
- // FIXME: hmmm... now we always require actorsEntrance to be defined
- // so no way to restore at arbitrary position
_scene->clearSceneQueue();
- _scene->changeScene(scenenum, 0);
+ _scene->changeScene(sceneNumber, ACTOR_NO_ENTRANCE, kTransitionNoFade);
- if (inset != scenenum) {
+ if (insetSceneNumber != sceneNumber) {
_render->drawScene();
_scene->clearSceneQueue();
- _scene->changeScene(inset, 0);
+ _scene->changeScene(insetSceneNumber, ACTOR_NO_ENTRANCE, kTransitionNoFade);
}
+
+ // FIXME: When save/load screen will be implemented we should
+ // call these after that screen left by user
+ _interface->draw();
}
} // End of namespace Saga