AVALANCHE: Upgrade Scrolls::normscroll().

This commit is contained in:
uruk 2013-08-16 19:24:40 +02:00
parent dc1e9022b1
commit 4430e435d8
2 changed files with 78 additions and 75 deletions

View file

@ -61,6 +61,76 @@ Avalot::Avalot(AvalancheEngine *vm) {
_vm = vm;
}
void Avalot::handleKeyDown(Common::Event &event) {
//if (keyboardclick)
// click();
//
// To be implemented later with the sounds, I assume.
if ((32 <= event.kbd.ascii) && (event.kbd.ascii <= 128) && (event.kbd.ascii != 47))
_vm->_parser->handleInputText(event);
else
switch (event.kbd.keycode) { // We can control Avvy with the numpad as well.
case Common::KEYCODE_KP8:
event.kbd.keycode = Common::KEYCODE_UP;
break;
case Common::KEYCODE_KP2:
event.kbd.keycode = Common::KEYCODE_DOWN;
break;
case Common::KEYCODE_KP6:
event.kbd.keycode = Common::KEYCODE_RIGHT;
break;
case Common::KEYCODE_KP4:
event.kbd.keycode = Common::KEYCODE_LEFT;
break;
case Common::KEYCODE_KP9:
event.kbd.keycode = Common::KEYCODE_PAGEUP;
break;
case Common::KEYCODE_KP3:
event.kbd.keycode = Common::KEYCODE_PAGEDOWN;
break;
case Common::KEYCODE_KP7:
event.kbd.keycode = Common::KEYCODE_HOME;
break;
case Common::KEYCODE_KP1:
event.kbd.keycode = Common::KEYCODE_END;
break;
}
switch (event.kbd.keycode) {
case Common::KEYCODE_UP:
case Common::KEYCODE_DOWN:
case Common::KEYCODE_RIGHT:
case Common::KEYCODE_LEFT:
case Common::KEYCODE_PAGEUP:
case Common::KEYCODE_PAGEDOWN:
case Common::KEYCODE_HOME:
case Common::KEYCODE_END:
case Common::KEYCODE_KP5:
if (_vm->_gyro->alive) {
_vm->_trip->handleMoveKey(event); // Fallthroughs are intended.
_vm->_lucerna->showrw();
if (_vm->_gyro->demo)
_vm->_basher->get_demorec();
return;
}
case Common::KEYCODE_BACKSPACE:
_vm->_parser->handleBackspace();
break;
case Common::KEYCODE_RETURN:
_vm->_parser->handleReturn();
break;
}
_vm->_lucerna->showrw();
if (_vm->_gyro->demo)
_vm->_basher->get_demorec();
}
void Avalot::setup() {
int16 gd, gm;
@ -150,76 +220,6 @@ void Avalot::setup() {
_vm->_visa->dixi('q', 83); // Info on the game, etc.
}
void Avalot::handleKeyDown(Common::Event &event) {
//if (keyboardclick)
// click();
//
// To be implemented later with the sounds, I assume.
if ((32 <= event.kbd.ascii) && (event.kbd.ascii <= 128) && (event.kbd.ascii != 47))
_vm->_parser->handleInputText(event);
else
switch (event.kbd.keycode) { // We can control Avvy with the numpad as well.
case Common::KEYCODE_KP8:
event.kbd.keycode = Common::KEYCODE_UP;
break;
case Common::KEYCODE_KP2:
event.kbd.keycode = Common::KEYCODE_DOWN;
break;
case Common::KEYCODE_KP6:
event.kbd.keycode = Common::KEYCODE_RIGHT;
break;
case Common::KEYCODE_KP4:
event.kbd.keycode = Common::KEYCODE_LEFT;
break;
case Common::KEYCODE_KP9:
event.kbd.keycode = Common::KEYCODE_PAGEUP;
break;
case Common::KEYCODE_KP3:
event.kbd.keycode = Common::KEYCODE_PAGEDOWN;
break;
case Common::KEYCODE_KP7:
event.kbd.keycode = Common::KEYCODE_HOME;
break;
case Common::KEYCODE_KP1:
event.kbd.keycode = Common::KEYCODE_END;
break;
}
switch (event.kbd.keycode) {
case Common::KEYCODE_UP:
case Common::KEYCODE_DOWN:
case Common::KEYCODE_RIGHT:
case Common::KEYCODE_LEFT:
case Common::KEYCODE_PAGEUP:
case Common::KEYCODE_PAGEDOWN:
case Common::KEYCODE_HOME:
case Common::KEYCODE_END:
case Common::KEYCODE_KP5:
if (_vm->_gyro->alive) {
_vm->_trip->handleMoveKey(event); // Fallthroughs are intended.
_vm->_lucerna->showrw();
if (_vm->_gyro->demo)
_vm->_basher->get_demorec();
return;
}
case Common::KEYCODE_BACKSPACE:
_vm->_parser->handleBackspace();
break;
case Common::KEYCODE_RETURN:
_vm->_parser->handleReturn();
break;
}
_vm->_lucerna->showrw();
if (_vm->_gyro->demo)
_vm->_basher->get_demorec();
}
void Avalot::run(Common::String arg) {
setup();

View file

@ -161,12 +161,14 @@ void Scrolls::normscroll() {
::Graphics::Surface temp;
temp.copyFrom(_vm->_graphics->_surface);
_vm->_graphics->_surface.copyFrom(_vm->_graphics->_scrolls); // TODO: Rework it using getSubArea !!!!!!!
_vm->_graphics->refreshScreen();
Common::Event event;
while (!_vm->shouldQuit()) {
_vm->_graphics->refreshScreen();
_vm->getEvent(event);
if ((event.type == Common::EVENT_KEYDOWN) && ((event.kbd.keycode == Common::KEYCODE_ESCAPE) || (event.kbd.keycode == Common::KEYCODE_RETURN) || (event.kbd.keycode == Common::KEYCODE_HASH) || (event.kbd.keycode == Common::KEYCODE_PLUS)))
if ((event.type == Common::EVENT_LBUTTONUP) ||
((event.type == Common::EVENT_KEYDOWN) && ((event.kbd.keycode == Common::KEYCODE_ESCAPE) || (event.kbd.keycode == Common::KEYCODE_RETURN) || (event.kbd.keycode == Common::KEYCODE_HASH) || (event.kbd.keycode == Common::KEYCODE_PLUS))))
break;
}
@ -205,7 +207,8 @@ void Scrolls::normscroll() {
//
//#ifdef RECORD record_one(); #endif
//
//_vm->_gyro->screturn = r == '#'; /* "back door" */
// _vm->_gyro->screturn = r == '#'; /* "back door" */
state(0);
_vm->_gyro->seescroll = false;
_vm->_lucerna->mousepage(_vm->_gyro->cp);
@ -558,7 +561,7 @@ void Scrolls::bubble(func2 gotoit) {
CursorMan.showMouse(false);
_vm->_gyro->dropsok = true;
/*setvisualpage(cp);
//setvisualpage(cp);
CursorMan.showMouse(true); /*sink;*/
_vm->_gyro->oncandopageswap = true;
resetscrolldriver();