aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2007-09-18 17:01:45 +0000
committerEugene Sandulenko2007-09-18 17:01:45 +0000
commit34ceaf208fc03ac738be1ef022177815f78a9a2c (patch)
tree894b622605cb3f87c7cf8755c025ba9e15fd84da /engines
parentbf75630b425e358dfe9fe4b32492595ce4528494 (diff)
downloadscummvm-rg350-34ceaf208fc03ac738be1ef022177815f78a9a2c.tar.gz
scummvm-rg350-34ceaf208fc03ac738be1ef022177815f78a9a2c.tar.bz2
scummvm-rg350-34ceaf208fc03ac738be1ef022177815f78a9a2c.zip
Fix menu and tutorial it Troll's Tale
svn-id: r28941
Diffstat (limited to 'engines')
-rw-r--r--engines/agi/preagi.h3
-rw-r--r--engines/agi/preagi_common.cpp16
-rw-r--r--engines/agi/preagi_troll.cpp19
-rw-r--r--engines/agi/preagi_troll.h2
4 files changed, 27 insertions, 13 deletions
diff --git a/engines/agi/preagi.h b/engines/agi/preagi.h
index 4953813349..50c68991c9 100644
--- a/engines/agi/preagi.h
+++ b/engines/agi/preagi.h
@@ -68,8 +68,9 @@ public:
Common::String getTargetName() { return _targetName; }
// Screen
- void clearScreen(int attr);
+ void clearScreen(int attr, bool overrideDefault = true);
void clearGfxScreen(int attr);
+ void setDefaultTextColor(int attr) { _defaultColor = attr; }
// Keyboard
int getSelection(SelectionTypes type);
diff --git a/engines/agi/preagi_common.cpp b/engines/agi/preagi_common.cpp
index 164cc775f2..9ad494e410 100644
--- a/engines/agi/preagi_common.cpp
+++ b/engines/agi/preagi_common.cpp
@@ -36,8 +36,9 @@
namespace Agi {
// Screen functions
-void PreAgiEngine::clearScreen(int attr) {
- _defaultColor = attr;
+void PreAgiEngine::clearScreen(int attr, bool overrideDefault) {
+ if (overrideDefault)
+ _defaultColor = attr;
_gfx->clearScreen((attr & 0xF0) / 0x10);
}
@@ -85,7 +86,12 @@ void PreAgiEngine::drawStrMiddle(int row, int attr, const char *buffer) {
}
void PreAgiEngine::clearTextArea() {
- for (int row = IDI_MAX_ROW_PIC; row < 200 / 8; row++) {
+ int start = IDI_MAX_ROW_PIC;
+
+ if (getGameID() == GID_TROLL)
+ start = 21;
+
+ for (int row = start; row < 200 / 8; row++) {
clearRow(row);
}
}
@@ -126,7 +132,7 @@ int PreAgiEngine::getSelection(SelectionTypes type) {
case Common::EVENT_QUIT:
_system->quit();
case Common::EVENT_LBUTTONUP:
- if (type == 0)
+ if (type == kSelYesNo)
return 1;
case Common::EVENT_RBUTTONUP:
return 0;
@@ -158,7 +164,7 @@ int PreAgiEngine::getSelection(SelectionTypes type) {
default:
if (type == kSelYesNo) {
return 2;
- } else {
+ } else if (type == kSelNumber) {
return 10;
}
}
diff --git a/engines/agi/preagi_troll.cpp b/engines/agi/preagi_troll.cpp
index d5466a5a4c..2d45c2de19 100644
--- a/engines/agi/preagi_troll.cpp
+++ b/engines/agi/preagi_troll.cpp
@@ -47,8 +47,8 @@ void Troll::pressAnyKey() {
void Troll::drawMenu(const char *szMenu, int iSel) {
_vm->clearTextArea();
- _vm->drawStr(20, 0, kColorDefault, szMenu);
- _vm->drawStr(21 + iSel, 0, kColorDefault, " *");
+ _vm->drawStr(21, 0, kColorDefault, szMenu);
+ _vm->drawStr(22 + iSel, 0, kColorDefault, " *");
_vm->_gfx->doUpdate();
}
@@ -66,8 +66,9 @@ void Troll::getMenuSel(const char *szMenu, int *iSel, int nSel) {
case Common::EVENT_MOUSEMOVE:
y = event.mouse.y / 8;
- if (nSel > y - 21)
- *iSel = y - 21;
+ if (y >= 22)
+ if (nSel > y - 22)
+ *iSel = y - 22;
drawMenu(szMenu, *iSel);
break;
@@ -239,20 +240,24 @@ void Troll::tutorial() {
//char szTreasure[16] = {0};
for (;;) {
- //SetGfxMode();
+ _vm->clearScreen(0xFF);
+
_vm->printStr(IDS_TRO_TUTORIAL_0);
_vm->getSelection(kSelSpace);
+ _vm->clearScreen(0x55);
+ _vm->setDefaultTextColor(0x0F);
+
done = false;
while (!done) {
getMenuSel(IDS_TRO_TUTORIAL_1, &iSel, IDI_TRO_MAX_OPTION);
switch(iSel) {
case IDI_TRO_SEL_OPTION_1:
- _vm->clearGfxScreen(0x0B);
+ _vm->clearScreen(0x22, false);
_vm->_gfx->doUpdate();
break;
case IDI_TRO_SEL_OPTION_2:
- _vm->clearGfxScreen(0x00);
+ _vm->clearScreen(0x00, false);
_vm->_gfx->doUpdate();
break;
case IDI_TRO_SEL_OPTION_3:
diff --git a/engines/agi/preagi_troll.h b/engines/agi/preagi_troll.h
index aec7a97ada..681f3f07b4 100644
--- a/engines/agi/preagi_troll.h
+++ b/engines/agi/preagi_troll.h
@@ -115,6 +115,8 @@ const char IDS_TRO_NAME_TREASURE[][16] = {
#define IDI_TRO_SEL_OPTION_2 1
#define IDI_TRO_SEL_OPTION_3 2
+#define IDI_TRO_MAX_ROW_PIC 21
+
// offsets
#define IDA_TRO_BINNAME "troll.exe"