ACCESS: Finish the implementation of cmdHelp (still a redraw issue)

This commit is contained in:
Strangerke 2014-11-28 13:59:27 +01:00 committed by Paul Gilbert
parent 3f44538441
commit 2735101179
5 changed files with 53 additions and 5 deletions

View file

@ -726,7 +726,7 @@ void AmazonEngine::drawHelpText(const Common::String &msg) {
_events->showCursor();
}
void AmazonEngine::drawHelp() {
void AmazonEngine::drawHelp(const Common::String str) {
_events->hideCursor();
if (_useItem == 0) {
_buffer2.copyBuffer(_screen);
@ -760,7 +760,7 @@ void AmazonEngine::drawHelp() {
_screen->fadeIn();
helpTitle();
drawHelpText("TODO: WHICH BUFFER?");
drawHelpText(str);
}
void AmazonEngine::startChapter(int chapter) {

View file

@ -197,7 +197,7 @@ public:
*/
void freeInactivePlayer();
void drawHelp();
void drawHelp(const Common::String str);
virtual void establish(int esatabIndex, int sub);

View file

@ -1772,6 +1772,10 @@ RiverStruct *RIVEROBJECTTBL[6] = {
ENDRIVER1, RIVER2OBJECTS, ENDRIVER2
};
const int HELP1COORDS[2][4] = {
{ 76, 129, 168, 183 }, { 187, 240, 168, 183 }
};
} // End of namespace Amazon
} // End of namespace Access

View file

@ -126,6 +126,7 @@ extern RiverStruct RIVER2OBJECTS[53];
extern RiverStruct ENDRIVER2[1];
extern RiverStruct *RIVEROBJECTTBL[6];
extern const int HELP1COORDS[2][4];
} // End of namespace Amazon

View file

@ -1887,8 +1887,51 @@ void AmazonScripts::cmdHelp() {
if (level < _game->_helpLevel)
_game->_moreHelp = 0;
_game->drawHelp();
error("TODO: more cmdHelp");
_game->drawHelp(helpMessage);
while(true) {
while(!_vm->shouldQuit() && !_vm->_events->_leftButton)
_vm->_events->pollEventsAndWait();
_vm->_events->debounceLeft();
static const Common::Rect butn1 = Common::Rect(HELP1COORDS[0][0], HELP1COORDS[0][2], HELP1COORDS[0][1], HELP1COORDS[0][3]);
static const Common::Rect butn2 = Common::Rect(HELP1COORDS[1][0], HELP1COORDS[1][2], HELP1COORDS[1][1], HELP1COORDS[1][3]);
const Common::Point pt = _vm->_events->_mousePos;
int choice = -1;
if (butn1.contains(pt))
choice = 0;
else if (butn2.contains(pt))
choice = 1;
if (choice < 0)
continue;
if (choice == 1) {
_game->_helpLevel = 0;
_game->_moreHelp = 1;
_game->_useItem = 0;
_vm->_events->hideCursor();
_vm->_screen->restoreScreen();
_vm->_screen->setPanel(0);
_vm->_buffer2.copyFrom(*_vm->_screen);
_vm->_screen->restorePalette();
_vm->_screen->setPalette();
_vm->_events->showCursor();
free(_vm->_objectsTable[45]);
_vm->_objectsTable[45] = nullptr;
_vm->_timers.restoreTimers();
break;
} else {
if ((_game->_moreHelp == 0) || (choice != 0))
continue;
++_game->_helpLevel;
_game->_useItem = 1;
break;
}
}
findNull();
}
void AmazonScripts::cmdCycleBack() {