aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sky/control.cpp32
-rw-r--r--engines/sky/control.h5
-rw-r--r--engines/sky/intro.cpp2
-rw-r--r--engines/sky/mouse.cpp2
-rw-r--r--engines/sky/sky.cpp32
-rw-r--r--engines/sky/sky.h3
6 files changed, 33 insertions, 43 deletions
diff --git a/engines/sky/control.cpp b/engines/sky/control.cpp
index 04f6800aab..c03cf9688b 100644
--- a/engines/sky/control.cpp
+++ b/engines/sky/control.cpp
@@ -497,7 +497,7 @@ void Control::doControlPanel(void) {
_system->updateScreen();
_mouseClicked = false;
delay(50);
- if (_keyPressed == 27) { // escape pressed
+ if (_keyPressed.keycode == Common::KEYCODE_ESCAPE) { // escape pressed
_mouseClicked = false;
quitPanel = true;
}
@@ -841,7 +841,7 @@ bool Control::autoSaveExists(void) {
uint16 Control::saveRestorePanel(bool allowSave) {
- _keyPressed = 0;
+ _keyPressed.reset();
_mouseWheel = 0;
buttonControl(NULL);
_text->drawToScreen(WITH_MASK); // flush text restore buffer
@@ -898,21 +898,21 @@ uint16 Control::saveRestorePanel(bool allowSave) {
_system->updateScreen();
_mouseClicked = false;
delay(50);
- if (_keyPressed == 27) { // escape pressed
+ if (_keyPressed.keycode == Common::KEYCODE_ESCAPE) { // escape pressed
_mouseClicked = false;
clickRes = CANCEL_PRESSED;
quitPanel = true;
- } else if ((_keyPressed == 13) || (_keyPressed == 15)) {
+ } else if ((_keyPressed.keycode == Common::KEYCODE_RETURN) || (_keyPressed.keycode == Common::KEYCODE_KP_ENTER)) {
clickRes = handleClick(lookList[0]);
if (clickRes == GAME_SAVED)
saveDescriptions(saveGameTexts);
quitPanel = true;
_mouseClicked = false;
- _keyPressed = 0;
- } if (allowSave && _keyPressed) {
+ _keyPressed.reset();
+ } if (allowSave && _keyPressed.keycode) {
handleKeyPress(_keyPressed, _selectedGame * MAX_TEXT_LEN + saveGameTexts);
refreshNames = true;
- _keyPressed = 0;
+ _keyPressed.reset();
}
if (_mouseWheel) {
@@ -991,9 +991,9 @@ bool Control::checkKeyList(uint8 key) {
return false;
}
-void Control::handleKeyPress(uint8 key, uint8 *textBuf) {
+void Control::handleKeyPress(Common::KeyState kbd, uint8 *textBuf) {
- if (key == 8) { // backspace
+ if (kbd.keycode == Common::KEYCODE_BACKSPACE) { // backspace
for (uint8 cnt = 0; cnt < 6; cnt++)
if (!textBuf[cnt])
return;
@@ -1004,15 +1004,15 @@ void Control::handleKeyPress(uint8 key, uint8 *textBuf) {
} else {
if (_enteredTextWidth >= PAN_LINE_WIDTH - 10)
return;
- if (((key >= 'A') && (key <= 'Z')) || ((key >= 'a') && (key <= 'z')) ||
- ((key >= '0') && (key <= '9')) || checkKeyList(key)) {
+ if (((kbd.ascii >= 'A') && (kbd.ascii <= 'Z')) || ((kbd.ascii >= 'a') && (kbd.ascii <= 'z')) ||
+ ((kbd.ascii >= '0') && (kbd.ascii <= '9')) || checkKeyList(kbd.ascii)) {
uint8 strLen = 0;
while (textBuf[0]) {
textBuf++;
strLen++;
}
if (strLen < MAX_TEXT_LEN) {
- textBuf[0] = key;
+ textBuf[0] = kbd.ascii;
textBuf[1] = 0;
}
}
@@ -1556,18 +1556,14 @@ void Control::delay(unsigned int amount) {
uint32 start = _system->getMillis();
uint32 cur = start;
- _keyPressed = 0; //reset
+ _keyPressed.reset();
do {
Common::EventManager *eventMan = _system->getEventManager();
while (eventMan->pollEvent(event)) {
switch (event.type) {
case Common::EVENT_KEYDOWN:
- // Make sure backspace works right (this fixes a small issue on OS X)
- if (event.kbd.keycode == 8)
- _keyPressed = 8;
- else
- _keyPressed = (byte)event.kbd.ascii;
+ _keyPressed = event.kbd;
break;
case Common::EVENT_MOUSEMOVE:
if (!(SkyEngine::_systemVars.systemFlags & SF_MOUSE_LOCKED))
diff --git a/engines/sky/control.h b/engines/sky/control.h
index ebf66a9e16..217ab5714a 100644
--- a/engines/sky/control.h
+++ b/engines/sky/control.h
@@ -27,6 +27,7 @@
#define SKY_CONTROL_H
#include "common/stdafx.h"
+#include "common/events.h"
#include "common/scummsys.h"
class OSystem;
@@ -220,7 +221,7 @@ private:
void setUpGameSprites(uint8 *nameBuf, dataFileHeader **nameSprites, uint16 firstNum, uint16 selectedGame);
void showSprites(dataFileHeader **nameSprites, bool allowSave);
bool checkKeyList(uint8 key);
- void handleKeyPress(uint8 key, uint8 *textBuf);
+ void handleKeyPress(Common::KeyState kbd, uint8 *textBuf);
uint16 _selectedGame;
uint16 saveGameToFile(void);
@@ -243,7 +244,7 @@ private:
Sound *_skySound;
OSystem *_system;
bool _mouseClicked;
- byte _keyPressed;
+ Common::KeyState _keyPressed;
int _mouseWheel;
struct {
diff --git a/engines/sky/intro.cpp b/engines/sky/intro.cpp
index 482dc623cc..6d841495af 100644
--- a/engines/sky/intro.cpp
+++ b/engines/sky/intro.cpp
@@ -917,7 +917,7 @@ bool Intro::escDelay(uint32 msecs) {
do {
while (eventMan->pollEvent(event)) {
if (event.type == Common::EVENT_KEYDOWN) {
- if (event.kbd.keycode == 27)
+ if (event.kbd.keycode == Common::KEYCODE_ESCAPE)
return false;
} else if (event.type == Common::EVENT_QUIT) {
_quitProg = true;
diff --git a/engines/sky/mouse.cpp b/engines/sky/mouse.cpp
index c18eb6d901..524005b7e3 100644
--- a/engines/sky/mouse.cpp
+++ b/engines/sky/mouse.cpp
@@ -191,7 +191,7 @@ void Mouse::waitMouseNotPressed(int minDelay) {
while (eventMan->pollEvent(event)) {
switch (event.type) {
case Common::EVENT_KEYDOWN:
- if (event.kbd.ascii == 27) {
+ if (event.kbd.keycode == Common::KEYCODE_ESCAPE) {
minDelay = 0;
mousePressed = false;
}
diff --git a/engines/sky/sky.cpp b/engines/sky/sky.cpp
index 84038990aa..181d67cbf4 100644
--- a/engines/sky/sky.cpp
+++ b/engines/sky/sky.cpp
@@ -217,33 +217,29 @@ void SkyEngine::initVirgin() {
void SkyEngine::handleKey(void) {
- if (_keyPressed && _systemVars.paused) {
+ if (_keyPressed.keycode && _systemVars.paused) {
_skySound->fnUnPauseFx();
_systemVars.paused = false;
_skyScreen->setPaletteEndian((uint8 *)_skyCompact->fetchCpt(SkyEngine::_systemVars.currentPalette));
- _keyFlags = _keyPressed = 0;
- return;
- }
-
- if (_keyFlags == Common::KBD_CTRL) {
- if (_keyPressed == 'f')
+ } else if (_keyPressed.flags == Common::KBD_CTRL) {
+ if (_keyPressed.keycode == 'f')
_fastMode ^= 1;
- else if (_keyPressed == 'g')
+ else if (_keyPressed.keycode == 'g')
_fastMode ^= 2;
- else if (_keyPressed == 'd')
+ else if (_keyPressed.keycode == 'd')
_debugger->attach();
} else {
- switch (_keyPressed) {
+ switch (_keyPressed.ascii) {
case '`':
case '~':
case '#':
_debugger->attach();
break;
- case 63:
+ case Common::ASCII_F5:
_skyControl->doControlPanel();
break;
- case 27:
+ case Common::ASCII_ESCAPE:
if (!_systemVars.pastIntro)
_skyControl->restartGame();
break;
@@ -260,14 +256,14 @@ void SkyEngine::handleKey(void) {
}
}
- _keyFlags = _keyPressed = 0;
+ _keyPressed.reset();
}
int SkyEngine::go() {
_systemVars.quitGame = false;
- _keyFlags = _keyPressed = 0;
+ _keyPressed.reset();
uint16 result = 0;
if (ConfMan.hasKey("save_slot") && ConfMan.getInt("save_slot") >= 0)
@@ -517,7 +513,7 @@ void SkyEngine::delay(int32 amount) {
Common::Event event;
uint32 start = _system->getMillis();
- _keyFlags = _keyPressed = 0; //reset
+ _keyPressed.reset();
if (amount < 0)
amount = 0;
@@ -526,11 +522,7 @@ void SkyEngine::delay(int32 amount) {
while (_eventMan->pollEvent(event)) {
switch (event.type) {
case Common::EVENT_KEYDOWN:
- _keyFlags = event.kbd.flags;
- if (_keyFlags == Common::KBD_CTRL)
- _keyPressed = event.kbd.keycode;
- else
- _keyPressed = (byte)event.kbd.ascii;
+ _keyPressed = event.kbd;
break;
case Common::EVENT_MOUSEMOVE:
if (!(_systemVars.systemFlags & SF_MOUSE_LOCKED))
diff --git a/engines/sky/sky.h b/engines/sky/sky.h
index bc76e37eef..002964d6bb 100644
--- a/engines/sky/sky.h
+++ b/engines/sky/sky.h
@@ -27,6 +27,7 @@
#define SKY_H
#include "common/stdafx.h"
+#include "common/events.h"
#include "engines/engine.h"
namespace Sky {
@@ -60,7 +61,7 @@ class SkyCompact;
class SkyEngine : public Engine {
GUI::Debugger *getDebugger();
protected:
- byte _keyPressed, _keyFlags;
+ Common::KeyState _keyPressed;
bool _floppyIntro;
Sound *_skySound;