aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/gui_v3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/gui_v3.cpp')
-rw-r--r--engines/kyra/gui_v3.cpp38
1 files changed, 33 insertions, 5 deletions
diff --git a/engines/kyra/gui_v3.cpp b/engines/kyra/gui_v3.cpp
index dff5db9da5..315be352e9 100644
--- a/engines/kyra/gui_v3.cpp
+++ b/engines/kyra/gui_v3.cpp
@@ -25,6 +25,7 @@
#include "kyra/kyra_v3.h"
#include "kyra/text_v3.h"
+#include "kyra/wsamovie.h"
namespace Kyra {
@@ -79,13 +80,13 @@ void KyraEngine_v3::showInventory() {
return;
_screen->copyBlockToPage(3, 0, 0, 320, 56, _interface);
- updateMalcolmSpiritText();
+ drawMalcolmsMoodText();
_inventoryState = true;
updateCLState();
redrawInventory(30);
-
+ drawMalcolmsMoodPointer(-1, 30);
//XXX
if (queryGameFlag(0x97))
@@ -214,14 +215,14 @@ void KyraEngine_v3::hideInventory() {
_screen->showMouse();
}
-void KyraEngine_v3::updateMalcolmSpiritText() {
- debugC(9, kDebugLevelMain, "KyraEngine_v3::updateMalcolmSpiritText()");
+void KyraEngine_v3::drawMalcolmsMoodText() {
+ debugC(9, kDebugLevelMain, "KyraEngine_v3::drawMalcolmsMoodText()");
static const int stringId[] = { 0x32, 0x37, 0x3C };
if (queryGameFlag(0x219))
return;
- const char *string = (const char*)getTableEntry(_cCodeFile, stringId[_malcolmsSpirit]);
+ const char *string = (const char*)getTableEntry(_cCodeFile, stringId[_malcolmsMood]);
Screen::FontId oldFont = _screen->setFont(Screen::FID_8_FNT);
_screen->_charWidth = -2;
@@ -249,6 +250,33 @@ void KyraEngine_v3::updateMalcolmSpiritText() {
_screen->_curPage = pageBackUp;
}
+void KyraEngine_v3::drawMalcolmsMoodPointer(int frame, int page) {
+ debugC(9, kDebugLevelMain, "KyraEngine_v3::drawMalcolmsMoodPointer(%d, %d)", frame, page);
+ static const int stateTable[] = {
+ 1, 6, 11
+ };
+
+ if (frame == -1)
+ frame = stateTable[_malcolmsMood];
+ if (queryGameFlag(0x219))
+ frame = 13;
+
+ if (page == 0) {
+ _invWsa->setX(0);
+ _invWsa->setY(0);
+ _invWsa->setDrawPage(0);
+ _invWsa->displayFrame(frame, 0);
+ _screen->updateScreen();
+ } else if (page == 30) {
+ _invWsa->setX(0);
+ _invWsa->setY(-144);
+ _invWsa->setDrawPage(2);
+ _invWsa->displayFrame(frame, 0);
+ }
+
+ _invWsaFrame = frame;
+}
+
void KyraEngine_v3::drawJestersStaff(int type, int page) {
debugC(9, kDebugLevelMain, "KyraEngine_v3::drawJestersStaff(%d, %d)", type, page);
int y = 155;