aboutsummaryrefslogtreecommitdiff
path: root/engines/hopkins
diff options
context:
space:
mode:
authorPaul Gilbert2012-09-17 18:53:29 +1000
committerPaul Gilbert2012-09-17 18:53:29 +1000
commit044f9b83ec5964dc352174de43a6889d350a5e2e (patch)
treeb4540c5be7e1411477f284e2d623862b264252de /engines/hopkins
parentdf410953c98ff5ca4a3ef9626d0ae680186378ac (diff)
downloadscummvm-rg350-044f9b83ec5964dc352174de43a6889d350a5e2e.tar.gz
scummvm-rg350-044f9b83ec5964dc352174de43a6889d350a5e2e.tar.bz2
scummvm-rg350-044f9b83ec5964dc352174de43a6889d350a5e2e.zip
HOPKINS: Bugfixes to the display of the starting menu
Diffstat (limited to 'engines/hopkins')
-rw-r--r--engines/hopkins/hopkins.cpp10
-rw-r--r--engines/hopkins/menu.cpp16
-rw-r--r--engines/hopkins/objects.cpp4
-rw-r--r--engines/hopkins/objects.h6
4 files changed, 31 insertions, 5 deletions
diff --git a/engines/hopkins/hopkins.cpp b/engines/hopkins/hopkins.cpp
index 460ae1355e..65b31903ac 100644
--- a/engines/hopkins/hopkins.cpp
+++ b/engines/hopkins/hopkins.cpp
@@ -38,6 +38,8 @@ HopkinsEngine::HopkinsEngine(OSystem *syst, const HopkinsGameDescription *gameDe
_gameDescription(gameDesc), _randomSource("Hopkins"), _animationManager() {
g_vm = this;
_animationManager.setParent(this);
+ _menuManager.setParent(this);
+ _objectsManager.setParent(this);
_soundManager.setParent(this);
}
@@ -104,7 +106,8 @@ LABEL_13:
if (!GLOBALS.SORTIE) {
GLOBALS.SORTIE = _menuManager.MENU();
if (GLOBALS.SORTIE == -1) {
- PUBQUIT();
+ if (!g_system->getEventManager()->shouldQuit())
+ PUBQUIT();
_globals.PERSO = _globals.dos_free2(_globals.PERSO);
REST_SYSTEM();
}
@@ -118,6 +121,9 @@ LABEL_13:
for (;;) {
for (;;) {
for (;;) {
+ if (g_system->getEventManager()->shouldQuit())
+ return Common::kNoError;
+
if (GLOBALS.SORTIE == 300)
goto LABEL_13;
if (GLOBALS.SORTIE == 18)
@@ -868,7 +874,7 @@ void HopkinsEngine::PUBQUIT() {
if (_eventsManager.BMOUSE() == 1)
mouseClicked = true;
- } while (!mouseClicked && g_system->getEventManager()->shouldQuit());
+ } while (!mouseClicked && !g_system->getEventManager()->shouldQuit());
if ((unsigned int)(xp - 167) <= 302 && (unsigned int)(yp - 47) <= 387) {
warning("Try to Connect...");
diff --git a/engines/hopkins/menu.cpp b/engines/hopkins/menu.cpp
index 5aa54b9fa6..17ee630aa9 100644
--- a/engines/hopkins/menu.cpp
+++ b/engines/hopkins/menu.cpp
@@ -21,6 +21,7 @@
*/
#include "common/scummsys.h"
+#include "common/events.h"
#include "hopkins/menu.h"
#include "hopkins/files.h"
#include "hopkins/hopkins.h"
@@ -36,8 +37,7 @@ void MenuManager::setParent(HopkinsEngine *vm) {
}
int MenuManager::MENU() {
- signed int v0;
- byte *v1;
+ byte *v1 = NULL;
signed int v2;
int v3;
int v4;
@@ -50,7 +50,7 @@ int MenuManager::MENU() {
signed int v12;
v6 = 0;
- for (;;) {
+ while (!g_system->getEventManager()->shouldQuit()) {
_vm->_globals.FORET = 0;
_vm->_eventsManager.CASSE = 0;
_vm->_globals.DESACTIVE_INVENT = 1;
@@ -96,6 +96,9 @@ int MenuManager::MENU() {
v12 = 0;
do {
+ if (g_system->getEventManager()->shouldQuit())
+ return -1;
+
v2 = 0;
v3 = _vm->_eventsManager.XMOUSE();
v4 = _vm->_eventsManager.YMOUSE();
@@ -210,6 +213,13 @@ int MenuManager::MENU() {
_vm->INTRORUN();
continue;
}
+
+ if ( v2 == 5 ) {
+ AFFICHE_SPEED(v1, 230, 386, 14);
+ _vm->_eventsManager.VBL();
+ _vm->_eventsManager.delay(200);
+ v6 = -1;
+ }
break;
}
diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp
index 441dc874b3..c464a0241f 100644
--- a/engines/hopkins/objects.cpp
+++ b/engines/hopkins/objects.cpp
@@ -31,6 +31,10 @@
namespace Hopkins {
+void ObjectsManager::setParent(HopkinsEngine *vm) {
+ _vm = vm;
+}
+
byte *ObjectsManager::CHANGE_OBJET(int objIndex) {
byte *result = ObjectsManager::CAPTURE_OBJET(objIndex, 1);
GLOBALS.Bufferobjet = result;
diff --git a/engines/hopkins/objects.h b/engines/hopkins/objects.h
index 8f97a5a7bc..7ebb93da9e 100644
--- a/engines/hopkins/objects.h
+++ b/engines/hopkins/objects.h
@@ -29,8 +29,14 @@
namespace Hopkins {
+class HopkinsEngine;
+
class ObjectsManager {
+private:
+ HopkinsEngine *_vm;
public:
+ void setParent(HopkinsEngine *vm);
+
byte *CHANGE_OBJET(int objIndex);
byte *CAPTURE_OBJET(int objIndex, int mode);