From da28fde4c61d8f050be8b2eb90b7b634869e3f22 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Fri, 18 Jun 2010 22:07:32 +0000 Subject: AGI: Change some #defines to enums svn-id: r50033 --- engines/agi/agi.cpp | 2 +- engines/agi/agi.h | 53 ++++++++++++++++++++++++++++++------------------ engines/agi/cycle.cpp | 6 +++--- engines/agi/op_cmd.cpp | 4 ++-- engines/agi/op_test.cpp | 2 +- engines/agi/saveload.cpp | 6 +++--- 6 files changed, 43 insertions(+), 30 deletions(-) diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp index 21b28fd445..0875646148 100644 --- a/engines/agi/agi.cpp +++ b/engines/agi/agi.cpp @@ -556,7 +556,7 @@ AgiEngine::AgiEngine(OSystem *syst, const AGIGameDescription *gameDesc) : AgiBas _restartGame = false; - _oldMode = -1; + _oldMode = INPUT_NONE; _predictiveDialogRunning = false; _predictiveDictText = NULL; diff --git a/engines/agi/agi.h b/engines/agi/agi.h index 34aa99b3f2..fb425b6b87 100644 --- a/engines/agi/agi.h +++ b/engines/agi/agi.h @@ -502,10 +502,32 @@ struct ScriptPos { int curIP; }; -#define EGO_VIEW_TABLE 0 -#define HORIZON 36 -#define _WIDTH 160 -#define _HEIGHT 168 +enum { + EGO_VIEW_TABLE = 0, + HORIZON = 36, + _WIDTH = 160, + _HEIGHT = 168 +}; + +enum InputMode { + INPUT_NORMAL = 0x01, + INPUT_GETSTRING = 0x02, + INPUT_MENU = 0x03, + INPUT_NONE = 0x04 +}; + +enum State { + STATE_INIT = 0x00, + STATE_LOADED = 0x01, + STATE_RUNNING = 0x02 +}; + +enum { + SBUF16_OFFSET = 0, + SBUF256_OFFSET = ((_WIDTH) * (_HEIGHT)), + FROM_SBUF16_TO_SBUF256_OFFSET = ((SBUF256_OFFSET) - (SBUF16_OFFSET)), + FROM_SBUF256_TO_SBUF16_OFFSET = ((SBUF16_OFFSET) - (SBUF256_OFFSET)) +}; /** * AGI game structure. @@ -513,10 +535,7 @@ struct ScriptPos { * by the interpreter. */ struct AgiGame { -#define STATE_INIT 0x00 -#define STATE_LOADED 0x01 -#define STATE_RUNNING 0x02 - int state; /**< state of the interpreter */ + State state; /**< state of the interpreter */ // TODO: Check whether adjMouseX and adjMouseY must be saved and loaded when using savegames. // If they must be then loading and saving is partially broken at the moment. @@ -540,12 +559,9 @@ struct AgiGame { uint8 inputBuffer[40]; /**< buffer for user input */ uint8 echoBuffer[40]; /**< buffer for echo.line */ int keypress; -#define INPUT_NORMAL 0x01 -#define INPUT_GETSTRING 0x02 -#define INPUT_MENU 0x03 -#define INPUT_NONE 0x04 - int inputMode; /**< keyboard input mode */ - int inputEnabled; /**< keyboard input enabled */ + + InputMode inputMode; /**< keyboard input mode */ + bool inputEnabled; /**< keyboard input enabled */ int lognum; /**< current logic number */ Common::Array execStack; @@ -573,10 +589,7 @@ struct AgiGame { char cursorChar; unsigned int colorFg; unsigned int colorBg; -#define SBUF16_OFFSET 0 -#define SBUF256_OFFSET ((_WIDTH) * (_HEIGHT)) -#define FROM_SBUF16_TO_SBUF256_OFFSET ((SBUF256_OFFSET) - (SBUF16_OFFSET)) -#define FROM_SBUF256_TO_SBUF16_OFFSET ((SBUF16_OFFSET) - (SBUF256_OFFSET)) + uint8 *sbufOrig; /**< Pointer to the 160x336 AGI screen buffer that contains vertically two 160x168 screens (16 color and 256 color). */ uint8 *sbuf16c; /**< 160x168 16 color (+control line & priority information) AGI screen buffer. Points at sbufOrig + SBUF16_OFFSET. */ uint8 *sbuf256c; /**< 160x168 256 color AGI screen buffer (For AGI256 and AGI256-2 support). Points at sbufOrig + SBUF256_OFFSET. */ @@ -834,7 +847,7 @@ public: int loadGameSimple(); uint8 *_intobj; - int _oldMode; + InputMode _oldMode; bool _restartGame; Menu* _menu; @@ -876,7 +889,7 @@ public: static void agiTimerFunctionLow(void *refCon); void initPriTable(); - void newInputMode(int); + void newInputMode(InputMode mode); void oldInputMode(); int getvar(int); diff --git a/engines/agi/cycle.cpp b/engines/agi/cycle.cpp index 40d6f2d008..ee55c783f1 100644 --- a/engines/agi/cycle.cpp +++ b/engines/agi/cycle.cpp @@ -177,9 +177,9 @@ void AgiEngine::updateTimer() { setvar(vDays, getvar(vDays) + 1); } -void AgiEngine::newInputMode(int i) { +void AgiEngine::newInputMode(InputMode mode) { _oldMode = _game.inputMode; - _game.inputMode = i; + _game.inputMode = mode; } void AgiEngine::oldInputMode() { @@ -436,7 +436,7 @@ int AgiEngine::runGame() { setvar(vFreePages, 180); // Set amount of free memory to realistic value setvar(vMaxInputChars, 38); _game.inputMode = INPUT_NONE; - _game.inputEnabled = 0; + _game.inputEnabled = false; _game.hasPrompt = 0; _game.state = STATE_RUNNING; diff --git a/engines/agi/op_cmd.cpp b/engines/agi/op_cmd.cpp index ab7e5010e7..9728ed9b42 100644 --- a/engines/agi/op_cmd.cpp +++ b/engines/agi/op_cmd.cpp @@ -1563,8 +1563,8 @@ cmd(shake_screen) { // Disables input while shaking to prevent bug // #1678230: AGI: Entering text while screen is shaking - int originalValue = game.inputEnabled; - game.inputEnabled = 0; + bool originalValue = game.inputEnabled; + game.inputEnabled = false; g_gfx->shakeStart(); diff --git a/engines/agi/op_test.cpp b/engines/agi/op_test.cpp index 71d307556b..f10cdd3f17 100644 --- a/engines/agi/op_test.cpp +++ b/engines/agi/op_test.cpp @@ -111,7 +111,7 @@ static uint8 testKeypressed() { game.keypress = 0; if (!x) { - int mode = game.inputMode; + InputMode mode = game.inputMode; game.inputMode = INPUT_NONE; g_agi->mainCycle(); diff --git a/engines/agi/saveload.cpp b/engines/agi/saveload.cpp index 88e279ecf8..88b14dcfe2 100644 --- a/engines/agi/saveload.cpp +++ b/engines/agi/saveload.cpp @@ -132,7 +132,7 @@ int AgiEngine::saveGame(const char *fileName, const char *description) { out->writeSint16BE((int16)_game.hasPrompt); out->writeSint16BE((int16)_game.gameFlags); - out->writeSint16BE((int16)_game.inputEnabled); + out->writeSint16BE(_game.inputEnabled); for (i = 0; i < _HEIGHT; i++) out->writeByte(_game.priTable[i]); @@ -302,7 +302,7 @@ int AgiEngine::loadGame(const char *fileName, bool checkId) { // TODO: played time } - _game.state = in->readByte(); + _game.state = (State)in->readByte(); in->read(loadId, 8); if (strcmp(loadId, _game.id) && checkId) { @@ -361,7 +361,7 @@ int AgiEngine::loadGame(const char *fileName, bool checkId) { _game.echoBuffer[0] = 0; _game.keypress = 0; - _game.inputMode = in->readSint16BE(); + _game.inputMode = (InputMode)in->readSint16BE(); _game.lognum = in->readSint16BE(); _game.playerControl = in->readSint16BE(); -- cgit v1.2.3