aboutsummaryrefslogtreecommitdiff
path: root/engines/cruise
diff options
context:
space:
mode:
authorPaul Gilbert2009-04-18 12:03:21 +0000
committerPaul Gilbert2009-04-18 12:03:21 +0000
commitf53b4d3de4ce1676ca79630c26ae9557ef70b9b5 (patch)
tree870032c656f621223189b05a8122457751a33089 /engines/cruise
parent9efb96ce6957c4a22e1c0754fcb2857c12817119 (diff)
downloadscummvm-rg350-f53b4d3de4ce1676ca79630c26ae9557ef70b9b5.tar.gz
scummvm-rg350-f53b4d3de4ce1676ca79630c26ae9557ef70b9b5.tar.bz2
scummvm-rg350-f53b4d3de4ce1676ca79630c26ae9557ef70b9b5.zip
Implemented the 'Start Again' menu option to properly restart the game
svn-id: r39981
Diffstat (limited to 'engines/cruise')
-rw-r--r--engines/cruise/cruise_main.h1
-rw-r--r--engines/cruise/function.h1
-rw-r--r--engines/cruise/menu.cpp6
-rw-r--r--engines/cruise/saveload.h1
4 files changed, 9 insertions, 0 deletions
diff --git a/engines/cruise/cruise_main.h b/engines/cruise/cruise_main.h
index 649e8e7ef9..a7b12fa043 100644
--- a/engines/cruise/cruise_main.h
+++ b/engines/cruise/cruise_main.h
@@ -124,6 +124,7 @@ void closeAllMenu(void);
int removeFinishedScripts(scriptInstanceStruct *ptrHandle);
void initBigVar3(void);
void resetActorPtr(actorStruct *ptr);
+int initAllData(void);
} // End of namespace Cruise
diff --git a/engines/cruise/function.h b/engines/cruise/function.h
index 42f4e38f8b..6604d87bcb 100644
--- a/engines/cruise/function.h
+++ b/engines/cruise/function.h
@@ -35,6 +35,7 @@ int16 computeZoom(int param);
int16 subOp23(int param1, int param2);
void freeObjectList(cellStruct *pListHead);
int removeAnimation(actorStruct * pHead, int overlay, int objIdx, int objType);
+int16 Op_FadeOut(void);
} // End of namespace Cruise
diff --git a/engines/cruise/menu.cpp b/engines/cruise/menu.cpp
index 7c293525a4..7246ec65b4 100644
--- a/engines/cruise/menu.cpp
+++ b/engines/cruise/menu.cpp
@@ -261,6 +261,12 @@ int playerMenu(int menuX, int menuY) {
loadSavegameData(0);
break;
case 6: // restart
+ Op_FadeOut();
+ memset(globalScreen, 0, 320 * 200);
+ initVars();
+ initAllData();
+ changeCursor(CURSOR_NORMAL);
+ userEnabled = 0;
break;
case 7: // exit
return 1;
diff --git a/engines/cruise/saveload.h b/engines/cruise/saveload.h
index 96433bdee9..bb69918a48 100644
--- a/engines/cruise/saveload.h
+++ b/engines/cruise/saveload.h
@@ -42,6 +42,7 @@ struct CruiseSavegameHeader {
Common::Error saveSavegameData(int saveGameIdx, const Common::String &saveName);
Common::Error loadSavegameData(int saveGameIdx);
bool readSavegameHeader(Common::InSaveFile *in, CruiseSavegameHeader &header);
+void initVars(void);
} // End of namespace Cruise