From ea6546ae25226a22b14cbb847f13ea17a22cd22a Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Wed, 28 Dec 2011 16:55:03 +0100 Subject: DREAMWEB: Clean up checkCoords --- engines/dreamweb/dreamweb.h | 16 +--------------- engines/dreamweb/keypad.cpp | 10 +++++----- engines/dreamweb/newplace.cpp | 2 +- engines/dreamweb/object.cpp | 6 +++--- engines/dreamweb/saveload.cpp | 8 ++++---- engines/dreamweb/structs.h | 3 +-- engines/dreamweb/stubs.cpp | 18 +++++++++++++++--- engines/dreamweb/talk.cpp | 4 ++-- 8 files changed, 32 insertions(+), 35 deletions(-) (limited to 'engines') diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index 6ca49b9b6f..5200a1bb7e 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -905,21 +905,7 @@ public: void setAllChanges(); void restoreAll(); void redrawMainScrn(); - - template - void checkCoords(const RectWithCallback *rectWithCallbacks) { - if (_newLocation != 0xff) - return; - - const RectWithCallback *r; - for (r = rectWithCallbacks; r->_xMin != 0xffff; ++r) { - if (r->contains(_mouseX, _mouseY)) { - (((T *)this)->*(r->_callback))(); - return; - } - } - } - + void checkCoords(const RectWithCallback *rectWithCallbacks); void newGame(); void deleteTaken(); void autoAppear(); diff --git a/engines/dreamweb/keypad.cpp b/engines/dreamweb/keypad.cpp index 4f34894dfa..30d44d3c73 100644 --- a/engines/dreamweb/keypad.cpp +++ b/engines/dreamweb/keypad.cpp @@ -28,7 +28,7 @@ const uint16 kKeypadx = 36+112; const uint16 kKeypady = 72; void DreamWebEngine::enterCode(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3) { - RectWithCallback keypadList[] = { + RectWithCallback keypadList[] = { { kKeypadx+9,kKeypadx+30,kKeypady+9,kKeypady+22,&DreamWebEngine::buttonOne }, { kKeypadx+31,kKeypadx+52,kKeypady+9,kKeypady+22,&DreamWebEngine::buttonTwo }, { kKeypadx+53,kKeypadx+74,kKeypady+9,kKeypady+22,&DreamWebEngine::buttonThree }, @@ -263,7 +263,7 @@ void DreamWebEngine::useMenu() { dumpPointer(); dumpMenu(); dumpTextLine(); - RectWithCallback menuList[] = { + RectWithCallback menuList[] = { { kMenux+54,kMenux+68,kMenuy+72,kMenuy+88,&DreamWebEngine::quitKey }, { 0,320,0,200,&DreamWebEngine::blank }, { 0xFFFF,0,0,0,0 } @@ -396,7 +396,7 @@ void DreamWebEngine::lastFolder() { } void DreamWebEngine::checkFolderCoords() { - RectWithCallback folderList[] = { + RectWithCallback folderList[] = { { 280,320,160,200, &DreamWebEngine::quitKey }, { 143,300,6,194, &DreamWebEngine::nextFolder }, { 0,143,6,194, &DreamWebEngine::lastFolder }, @@ -525,7 +525,7 @@ void DreamWebEngine::enterSymbol() { dumpPointer(); dumpTextLine(); dumpSymbol(); - RectWithCallback symbolList[] = { + RectWithCallback symbolList[] = { { kSymbolx+40,kSymbolx+64,kSymboly+2,kSymboly+16,&DreamWebEngine::quitSymbol }, { kSymbolx,kSymbolx+52,kSymboly+20,kSymboly+50,&DreamWebEngine::setTopLeft }, { kSymbolx+52,kSymbolx+104,kSymboly+20,kSymboly+50,&DreamWebEngine::setTopRight }, @@ -765,7 +765,7 @@ void DreamWebEngine::useDiary() { delPointer(); _getBack = 0; - RectWithCallback diaryList[] = { + RectWithCallback diaryList[] = { { kDiaryx+94,kDiaryx+110,kDiaryy+97,kDiaryy+113,&DreamWebEngine::diaryKeyN }, { kDiaryx+151,kDiaryx+167,kDiaryy+71,kDiaryy+87,&DreamWebEngine::diaryKeyP }, { kDiaryx+176,kDiaryx+192,kDiaryy+108,kDiaryy+124,&DreamWebEngine::quitKey }, diff --git a/engines/dreamweb/newplace.cpp b/engines/dreamweb/newplace.cpp index 6e8abca6ac..248f04a4d9 100644 --- a/engines/dreamweb/newplace.cpp +++ b/engines/dreamweb/newplace.cpp @@ -72,7 +72,7 @@ void DreamWebEngine::selectLocation() { if (_getBack == 1) break; - RectWithCallback destList[] = { + RectWithCallback destList[] = { { 238,258,4,44,&DreamWebEngine::nextDest }, { 104,124,4,44,&DreamWebEngine::lastDest }, { 280,308,4,44,&DreamWebEngine::lookAtPlace }, diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp index 064e2cab4b..249c275a3f 100644 --- a/engines/dreamweb/object.cpp +++ b/engines/dreamweb/object.cpp @@ -155,7 +155,7 @@ void DreamWebEngine::examineOb(bool examineAgain) { switch (_invOpen) { case 0: { - RectWithCallback examList[] = { + RectWithCallback examList[] = { { 273,320,157,198,&DreamWebEngine::getBackFromOb }, { 260,300,0,44,&DreamWebEngine::useObject }, { 210,254,0,44,&DreamWebEngine::selectOpenOb }, @@ -169,7 +169,7 @@ void DreamWebEngine::examineOb(bool examineAgain) { } case 1: { // Note: This table contains the non-constant _openChangeSize! - RectWithCallback invList1[] = { + RectWithCallback invList1[] = { { 273,320,157,198,&DreamWebEngine::getBackFromOb }, { 255,294,0,24,&DreamWebEngine::dropObject }, { kInventx+167,kInventx+167+(18*3),kInventy-18,kInventy-2,&DreamWebEngine::incRyanPage }, @@ -182,7 +182,7 @@ void DreamWebEngine::examineOb(bool examineAgain) { break; } default: { - RectWithCallback withList1[] = { + RectWithCallback withList1[] = { { 273,320,157,198,&DreamWebEngine::getBackFromOb }, { kInventx+167,kInventx+167+(18*3),kInventy-18,kInventy-2,&DreamWebEngine::incRyanPage }, { kInventx,kInventx+(5*kItempicsize), kInventy,kInventy+(2*kItempicsize),&DreamWebEngine::selectOb }, diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp index 415f1a80ef..29f1b916a4 100644 --- a/engines/dreamweb/saveload.cpp +++ b/engines/dreamweb/saveload.cpp @@ -142,7 +142,7 @@ void DreamWebEngine::doLoad(int savegameId) { vSync(); dumpPointer(); dumpTextLine(); - RectWithCallback loadlist[] = { + RectWithCallback loadlist[] = { { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamWebEngine::getBackToOps }, { kOpsx+128,kOpsx+190,kOpsy+12,kOpsy+100,&DreamWebEngine::actualLoad }, { kOpsx+2,kOpsx+92,kOpsy+4,kOpsy+81,&DreamWebEngine::selectSlot }, @@ -236,7 +236,7 @@ void DreamWebEngine::saveGame() { dumpPointer(); dumpTextLine(); - RectWithCallback savelist[] = { + RectWithCallback savelist[] = { { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamWebEngine::getBackToOps }, { kOpsx+128,kOpsx+190,kOpsy+12,kOpsy+100,&DreamWebEngine::actualSave }, { kOpsx+2,kOpsx+92,kOpsy+4,kOpsy+81,&DreamWebEngine::selectSlot }, @@ -327,7 +327,7 @@ void DreamWebEngine::doSaveLoad() { showMainOps(); workToScreen(); - RectWithCallback opsList[] = { + RectWithCallback opsList[] = { { kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamWebEngine::getBackFromOps }, { kOpsx+10,kOpsx+77,kOpsy+10,kOpsy+59,&DreamWebEngine::DOSReturn }, { kOpsx+128,kOpsx+190,kOpsy+16,kOpsy+100,&DreamWebEngine::discOps }, @@ -427,7 +427,7 @@ void DreamWebEngine::discOps() { workToScreenM(); _getBack = 0; - RectWithCallback discOpsList[] = { + RectWithCallback discOpsList[] = { { kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamWebEngine::loadGame }, { kOpsx+10,kOpsx+79,kOpsy+10,kOpsy+59,&DreamWebEngine::saveGame }, { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamWebEngine::getBackToOps }, diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h index fad2e1b5ae..ddc027120d 100644 --- a/engines/dreamweb/structs.h +++ b/engines/dreamweb/structs.h @@ -47,11 +47,10 @@ struct Sprite { uint8 hidden; }; -template struct RectWithCallback { uint16 _xMin, _xMax; uint16 _yMin, _yMax; - void (T::*_callback)(); + void (DreamWebEngine::*_callback)(); bool contains(uint16 x, uint16 y) const { return (x >= _xMin) && (x < _xMax) && (y >= _yMin) && (y < _yMax); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 990cb57e7a..afa8cc0eab 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -1803,7 +1803,7 @@ void DreamWebEngine::sortOutMap() { void DreamWebEngine::mainScreen() { _inMapArea = 0; if (_vars._watchOn == 1) { - RectWithCallback mainList[] = { + RectWithCallback mainList[] = { { 44,70,32,46,&DreamWebEngine::look }, { 0,50,0,180,&DreamWebEngine::inventory }, { 226,244,10,26,&DreamWebEngine::zoomOnOff }, @@ -1814,7 +1814,7 @@ void DreamWebEngine::mainScreen() { }; checkCoords(mainList); } else { - RectWithCallback mainList2[] = { + RectWithCallback mainList2[] = { { 44,70,32,46,&DreamWebEngine::look }, { 0,50,0,180,&DreamWebEngine::inventory }, { 226+48,244+48,10,26,&DreamWebEngine::zoomOnOff }, @@ -2679,7 +2679,7 @@ void DreamWebEngine::decide() { fadeScreenUp(); _getBack = 0; - RectWithCallback decideList[] = { + RectWithCallback decideList[] = { { kOpsx+69,kOpsx+124,kOpsy+30,kOpsy+76,&DreamWebEngine::newGame }, { kOpsx+20,kOpsx+87,kOpsy+10,kOpsy+59,&DreamWebEngine::DOSReturn }, { kOpsx+123,kOpsx+190,kOpsy+10,kOpsy+59,&DreamWebEngine::loadOld }, @@ -3143,4 +3143,16 @@ void DreamWebEngine::purgeAnItem() { } } +void DreamWebEngine::checkCoords(const RectWithCallback *rectWithCallbacks) { + if (_newLocation != 0xff) + return; + const RectWithCallback *r; + for (r = rectWithCallbacks; r->_xMin != 0xffff; ++r) { + if (r->contains(_mouseX, _mouseY)) { + (this->*(r->_callback))(); + return; + } + } +} + } // End of namespace DreamWeb diff --git a/engines/dreamweb/talk.cpp b/engines/dreamweb/talk.cpp index 2899e81d00..9a94f0f68d 100644 --- a/engines/dreamweb/talk.cpp +++ b/engines/dreamweb/talk.cpp @@ -40,7 +40,7 @@ void DreamWebEngine::talk() { showPointer(); workToScreen(); - RectWithCallback talkList[] = { + RectWithCallback talkList[] = { { 273,320,157,198,&DreamWebEngine::getBack1 }, { 240,290,2,44,&DreamWebEngine::moreTalk }, { 0,320,0,200,&DreamWebEngine::blank }, @@ -201,7 +201,7 @@ void DreamWebEngine::doSomeTalk() { bool DreamWebEngine::hangOnPQ() { _getBack = 0; - RectWithCallback quitList[] = { + RectWithCallback quitList[] = { { 273,320,157,198,&DreamWebEngine::getBack1 }, { 0,320,0,200,&DreamWebEngine::blank }, { 0xFFFF,0,0,0,0 } -- cgit v1.2.3