aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/hopkins/dialogs.cpp31
-rw-r--r--engines/hopkins/dialogs.h2
-rw-r--r--engines/hopkins/events.cpp12
-rw-r--r--engines/hopkins/events.h4
-rw-r--r--engines/hopkins/objects.cpp12
5 files changed, 45 insertions, 16 deletions
diff --git a/engines/hopkins/dialogs.cpp b/engines/hopkins/dialogs.cpp
index 7e4dc16d11..5e157ff66e 100644
--- a/engines/hopkins/dialogs.cpp
+++ b/engines/hopkins/dialogs.cpp
@@ -521,16 +521,35 @@ void DialogsManager::INVENT_ANIM() {
}
}
-void DialogsManager::TEST_INVENT() {
+void DialogsManager::TestForDialogOpening() {
if (_vm->_globals.PLAN_FLAG)
- _vm->_eventsManager.KEY_INVENT = 0;
- if (_vm->_eventsManager.KEY_INVENT == 1) {
+ _vm->_eventsManager.GAME_KEY = KEY_NONE;
+
+ if (_vm->_eventsManager.GAME_KEY != KEY_NONE) {
if (!INVENTFLAG) {
- _vm->_eventsManager.KEY_INVENT = 0;
+ GAME_KEY key = _vm->_eventsManager.GAME_KEY;
+ _vm->_eventsManager.GAME_KEY = KEY_NONE;
INVENTFLAG = 1;
- _vm->_dialogsManager.showInventory();
+
+ switch (key) {
+ case KEY_INVENTORY:
+ _vm->_dialogsManager.showInventory();
+ break;
+ case KEY_OPTIONS:
+ _vm->_dialogsManager.showOptionsDialog();
+ break;
+ case KEY_LOAD:
+ _vm->_dialogsManager.CHARGE_PARTIE();
+ break;
+ case KEY_SAVE:
+ _vm->_dialogsManager.SAUVE_PARTIE();
+ break;
+ default:
+ break;
+ }
+
INVENTFLAG = 0;
- _vm->_eventsManager.KEY_INVENT = 0;
+ _vm->_eventsManager.GAME_KEY = KEY_NONE;
}
}
}
diff --git a/engines/hopkins/dialogs.h b/engines/hopkins/dialogs.h
index 7e049bf717..3f4cdfadbb 100644
--- a/engines/hopkins/dialogs.h
+++ b/engines/hopkins/dialogs.h
@@ -55,7 +55,7 @@ public:
void showInventory();
void INVENT_ANIM();
- void TEST_INVENT();
+ void TestForDialogOpening();
void CHARGE_PARTIE();
void SAUVE_PARTIE();
void LOAD_SAUVE(int a1);
diff --git a/engines/hopkins/events.cpp b/engines/hopkins/events.cpp
index 0eb65c8f01..ea88e1de5a 100644
--- a/engines/hopkins/events.cpp
+++ b/engines/hopkins/events.cpp
@@ -44,7 +44,7 @@ EventsManager::EventsManager() {
_gameCounter = 0;
lItCounter = 0;
ESC_KEY = false;
- KEY_INVENT = false;
+ GAME_KEY = KEY_NONE;
btsouris = 0;
OLD_ICONE = 0;
@@ -260,7 +260,15 @@ void EventsManager::pollEvents() {
void EventsManager::handleKey(Common::Event &event) {
ESC_KEY = event.kbd.keycode == Common::KEYCODE_ESCAPE;
- KEY_INVENT = event.kbd.keycode == Common::KEYCODE_i || event.kbd.keycode == Common::KEYCODE_TAB;
+
+ if (event.kbd.keycode == Common::KEYCODE_i || event.kbd.keycode == Common::KEYCODE_TAB)
+ GAME_KEY = KEY_INVENTORY;
+ else if (event.kbd.keycode == Common::KEYCODE_F5)
+ GAME_KEY = KEY_SAVE;
+ else if (event.kbd.keycode == Common::KEYCODE_F7)
+ GAME_KEY = KEY_LOAD;
+ else if (event.kbd.keycode == Common::KEYCODE_F1 || event.kbd.keycode == Common::KEYCODE_o)
+ GAME_KEY = KEY_OPTIONS;
// Check for debugger
if ((event.kbd.keycode == Common::KEYCODE_d) && (event.kbd.flags & Common::KBD_CTRL)) {
diff --git a/engines/hopkins/events.h b/engines/hopkins/events.h
index 8aa87e0cdc..7979115a0f 100644
--- a/engines/hopkins/events.h
+++ b/engines/hopkins/events.h
@@ -34,6 +34,8 @@ namespace Hopkins {
class HopkinsEngine;
+enum GAME_KEY { KEY_NONE = 0, KEY_INVENTORY = 1, KEY_OPTIONS = 2, KEY_SAVE = 3, KEY_LOAD = 4 };
+
class EventsManager {
private:
HopkinsEngine *_vm;
@@ -60,7 +62,7 @@ public:
uint32 _priorFrameTime;
bool ESC_KEY;
bool NOESC;
- bool KEY_INVENT;
+ GAME_KEY GAME_KEY;
int btsouris;
public:
EventsManager();
diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp
index f8e229290b..11aaf579e5 100644
--- a/engines/hopkins/objects.cpp
+++ b/engines/hopkins/objects.cpp
@@ -2623,7 +2623,7 @@ void ObjectsManager::PLAN_BETA() {
v1 = 0;
_vm->_dialogsManager.INVENTFLAG = false;
- _vm->_eventsManager.KEY_INVENT = 0;
+ _vm->_eventsManager.GAME_KEY = KEY_NONE;
_vm->_globals.Max_Propre = 1;
_vm->_globals.Max_Ligne_Long = 1;
_vm->_globals.Max_Propre_Gen = 1;
@@ -2766,7 +2766,7 @@ void ObjectsManager::BTGAUCHE() {
_vm->_dialogsManager.INVENTFLAG = 1;
_vm->_dialogsManager.showInventory();
_vm->_dialogsManager.INVENTFLAG = 0;
- _vm->_eventsManager.KEY_INVENT = 0;
+ _vm->_eventsManager.GAME_KEY = KEY_NONE;
if (!_vm->_globals.SORTIE) {
_vm->_dialogsManager.INVENTFLAG = 0;
_vm->_eventsManager.btsouris = v1;
@@ -5565,7 +5565,7 @@ void ObjectsManager::PERSONAGE(const Common::String &s1, const Common::String &s
v5 = 0;
_vm->_dialogsManager.INVENTFLAG = 0;
- _vm->_eventsManager.KEY_INVENT = 0;
+ _vm->_eventsManager.GAME_KEY = KEY_NONE;
_vm->_dialogsManager.VIRE_INVENT = false;
_vm->_graphicsManager.ofscroll = 0;
_vm->_globals.PLAN_FLAG = 0;
@@ -5635,7 +5635,7 @@ void ObjectsManager::PERSONAGE(const Common::String &s1, const Common::String &s
}
if (v9 == 2)
BTDROITE();
- _vm->_dialogsManager.TEST_INVENT();
+ _vm->_dialogsManager.TestForDialogOpening();
VERIFZONE();
if (GOACTION == 1)
PARADISE();
@@ -5662,7 +5662,7 @@ void ObjectsManager::PERSONAGE2(const Common::String &s1, const Common::String &
int xp, yp;
_vm->_dialogsManager.INVENTFLAG = 0;
- _vm->_eventsManager.KEY_INVENT = 0;
+ _vm->_eventsManager.GAME_KEY = KEY_NONE;
verbe = 4;
_vm->_globals.MAX_COMPTE = 6;
_vm->_graphicsManager.ofscroll = 0;
@@ -5779,7 +5779,7 @@ LABEL_70:
}
}
if (!_vm->_globals.SORTIE) {
- _vm->_dialogsManager.TEST_INVENT();
+ _vm->_dialogsManager.TestForDialogOpening();
VERIFZONE();
if (_vm->_globals.chemin == (int16 *)g_PTRNUL
|| (GOHOME(), _vm->_globals.chemin == (int16 *)g_PTRNUL)) {