aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/gui_eob.cpp
diff options
context:
space:
mode:
authorathrxx2011-12-17 22:55:19 +0100
committerJohannes Schickel2011-12-26 16:18:17 +0100
commitd807b3d42b4a49dfe8262f496f9b341aef3c8bdd (patch)
treec1407b7c107b06a084f1135d9863a6bd0e635faf /engines/kyra/gui_eob.cpp
parentc0e782fd0b2ba9de69563e8bcb4fb43e2f311b35 (diff)
downloadscummvm-rg350-d807b3d42b4a49dfe8262f496f9b341aef3c8bdd.tar.gz
scummvm-rg350-d807b3d42b4a49dfe8262f496f9b341aef3c8bdd.tar.bz2
scummvm-rg350-d807b3d42b4a49dfe8262f496f9b341aef3c8bdd.zip
KYRA: (EOB) - implement EOB1 party transfer
Diffstat (limited to 'engines/kyra/gui_eob.cpp')
-rw-r--r--engines/kyra/gui_eob.cpp104
1 files changed, 57 insertions, 47 deletions
diff --git a/engines/kyra/gui_eob.cpp b/engines/kyra/gui_eob.cpp
index ab92e08046..080af941df 100644
--- a/engines/kyra/gui_eob.cpp
+++ b/engines/kyra/gui_eob.cpp
@@ -2308,6 +2308,46 @@ bool GUI_EoB::confirmDialogue2(int dim, int id, int deflt) {
return newHighlight ? false : true;
}
+void GUI_EoB::messageDialogue(int dim, int id, int buttonTextCol) {
+ int od = _screen->curDimIndex();
+ _screen->setScreenDim(dim);
+ Screen::FontId of = _screen->setFont(Screen::FID_8_FNT);
+
+ drawTextBox(dim, id);
+ const ScreenDim *dm = _screen->getScreenDim(dim);
+
+ int bx = ((dm->sx + dm->w) << 3) - ((strlen(_vm->_menuOkString) << 3) + 16);
+ int by = dm->sy + dm->h - 19;
+ int bw = (strlen(_vm->_menuOkString) << 3) + 7;
+
+ drawMenuButtonBox(bx, by, bw, 14, false, false);
+ _screen->printShadedText(_vm->_menuOkString, bx + 4, by + 3, buttonTextCol, 0);
+ _screen->updateScreen();
+
+ for (bool runLoop = true; runLoop && !_vm->shouldQuit(); ) {
+ int inputFlag = _vm->checkInput(0, false, 0) & 0x8ff;
+ _vm->removeInputTop();
+
+ if (inputFlag == 199 || inputFlag == 201) {
+ if (_vm->posWithinRect(_vm->_mouseX, _vm->_mouseY, bx, by, bx + bw, by + 14))
+ runLoop = false;
+ } else if (inputFlag == _vm->_keyMap[Common::KEYCODE_SPACE] || inputFlag == _vm->_keyMap[Common::KEYCODE_RETURN] || inputFlag == _vm->_keyMap[Common::KEYCODE_o]) {
+ runLoop = false;
+ }
+ }
+
+ drawMenuButtonBox(bx, by, bw, 14, true, true);
+ _screen->updateScreen();
+ _vm->_system->delayMillis(80);
+ drawMenuButtonBox(bx, by, bw, 14, false, true);
+ _screen->updateScreen();
+
+ _screen->copyRegion(0, dm->h, dm->sx << 3, dm->sy, dm->w << 3, dm->h, 2, 0, Screen::CR_NO_P_CHECK);
+ _screen->setScreenDim(od);
+ _screen->setFont(of);
+ dm = _screen->getScreenDim(dim);
+}
+
void GUI_EoB::messageDialogue2(int dim, int id, int buttonTextCol) {
drawMenuButtonBox(_screen->_curDim->sx << 3, _screen->_curDim->sy, _screen->_curDim->w << 3, _screen->_curDim->h, false, false);
@@ -2496,6 +2536,15 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
return _keyPressed.keycode == Common::KEYCODE_ESCAPE ? -1 : len;
}
+void GUI_EoB::transferWaitBox() {
+ const ScreenDim *dm = _screen->getScreenDim(11);
+ int xo = dm->sx;
+ int yo = dm->sy;
+ _screen->modifyScreenDim(11, dm->sx + 9, dm->sy + 24, dm->w, dm->h);
+ displayTextBox(-4);
+ _screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
+}
+
Common::String GUI_EoB::transferTargetMenu(Common::Array<Common::String> &targets) {
_savegameListSize = targets.size();
if (_savegameList) {
@@ -2542,13 +2591,14 @@ Common::String GUI_EoB::transferFileMenu(Common::String &target) {
int slot = 0;
do {
slot = selectSaveSlotDialogue(72, 14, 4);
- if (slot < 6) {
- if (_saveSlotIdTemp[slot] == -1)
- messageDialogue(11, 65, 6);
- else {
- _screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
- return _vm->getSavegameFilename(target, _saveSlotIdTemp[slot]);
- }
+ if (slot == 6)
+ break;
+
+ if (_saveSlotIdTemp[slot] == -1)
+ messageDialogue(11, 65, 6);
+ else {
+ _screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
+ return _vm->getSavegameFilename(target, _saveSlotIdTemp[slot]);
}
} while (_saveSlotIdTemp[slot] == -1);
@@ -3488,46 +3538,6 @@ bool GUI_EoB::confirmDialogue(int id) {
return result;
}
-void GUI_EoB::messageDialogue(int dim, int id, int buttonTextCol) {
- int od = _screen->curDimIndex();
- _screen->setScreenDim(dim);
- Screen::FontId of = _screen->setFont(Screen::FID_8_FNT);
-
- drawTextBox(dim, id);
- const ScreenDim *dm = _screen->getScreenDim(dim);
-
- int bx = ((dm->sx + dm->w) << 3) - ((strlen(_vm->_menuOkString) << 3) + 16);
- int by = dm->sy + dm->h - 19;
- int bw = (strlen(_vm->_menuOkString) << 3) + 7;
-
- drawMenuButtonBox(bx, by, bw, 14, false, false);
- _screen->printShadedText(_vm->_menuOkString, bx + 4, by + 3, buttonTextCol, 0);
- _screen->updateScreen();
-
- for (bool runLoop = true; runLoop && !_vm->shouldQuit(); ) {
- int inputFlag = _vm->checkInput(0, false, 0) & 0x8ff;
- _vm->removeInputTop();
-
- if (inputFlag == 199 || inputFlag == 201) {
- if (_vm->posWithinRect(_vm->_mouseX, _vm->_mouseY, bx, by, bx + bw, by + 14))
- runLoop = false;
- } else if (inputFlag == _vm->_keyMap[Common::KEYCODE_SPACE] || inputFlag == _vm->_keyMap[Common::KEYCODE_RETURN] || inputFlag == _vm->_keyMap[Common::KEYCODE_o]) {
- runLoop = false;
- }
- }
-
- drawMenuButtonBox(bx, by, bw, 14, true, true);
- _screen->updateScreen();
- _vm->_system->delayMillis(80);
- drawMenuButtonBox(bx, by, bw, 14, false, true);
- _screen->updateScreen();
-
- _screen->copyRegion(0, dm->h, dm->sx << 3, dm->sy, dm->w << 3, dm->h, 2, 0, Screen::CR_NO_P_CHECK);
- _screen->setScreenDim(od);
- _screen->setFont(of);
- dm = _screen->getScreenDim(dim);
-}
-
int GUI_EoB::selectCharacterDialogue(int id) {
uint8 flags = (id == 26) ? (_vm->game() == GI_EOB1 ? 0x04 : 0x14) : 0x02;
_vm->removeInputTop();