diff options
-rwxr-xr-x | configure | 71 | ||||
-rw-r--r-- | engines/agos/input.cpp | 4 | ||||
-rw-r--r-- | engines/cge/cge.cpp | 2 | ||||
-rw-r--r-- | engines/cge/fileio.cpp | 8 | ||||
-rw-r--r-- | engines/cge/fileio.h | 4 | ||||
-rw-r--r-- | engines/fullpipe/constants.h | 10 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene18and19.cpp | 164 | ||||
-rw-r--r-- | engines/voyeur/data.cpp | 2 | ||||
-rw-r--r-- | engines/voyeur/debugger.cpp | 35 |
9 files changed, 246 insertions, 54 deletions
@@ -850,7 +850,9 @@ Fine tuning of the installation directories: Special configuration feature: --host=HOST cross-compile to target HOST (arm-linux, ...) - special targets: android for Android + special targets: android-arm for Android ARM + android-mips for Android MIPS + android-x86 for Android x86 tizen for Samsung Tizen caanoo for Caanoo dingux for Dingux @@ -1271,11 +1273,21 @@ get_system_exe_extension $guessed_host NATIVEEXEEXT=$_exeext case $_host in -android | android-v7a | ouya) +android | android-arm | android-v7a | android-arm-v7a | ouya) _host_os=android _host_cpu=arm _host_alias=arm-linux-androideabi ;; +android-mips) + _host_os=android + _host_cpu=mipsel + _host_alias=mipsel-linux-android + ;; +android-x86) + _host_os=android + _host_cpu=i686 + _host_alias=i686-linux-android + ;; arm-riscos) _host_os=riscos _host_cpu=arm @@ -2042,18 +2054,34 @@ case $_host_os in ;; android) case $_host in - android) + android | android-arm) CXXFLAGS="$CXXFLAGS -march=armv5te" CXXFLAGS="$CXXFLAGS -mtune=xscale" CXXFLAGS="$CXXFLAGS -msoft-float" ABI="armeabi" + ANDROID_PLATFORM=4 ;; - android-v7a) + android-v7a | android-arm-v7a) CXXFLAGS="$CXXFLAGS -march=armv7-a" CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp" CXXFLAGS="$CXXFLAGS -mfpu=vfp" LDFLAGS="$LDFLAGS -Wl,--fix-cortex-a8" ABI="armeabi-v7a" + ANDROID_PLATFORM=4 + ;; + android-mips) + CXXFLAGS="$CXXFLAGS -march=mips32" + CXXFLAGS="$CXXFLAGS -mtune=mips32" + ABI="mips" + # Platform version 9 is needed as earlier versions of platform do not support this arch. + ANDROID_PLATFORM=9 + ;; + android-x86) + CXXFLAGS="$CXXFLAGS -march=i686" + CXXFLAGS="$CXXFLAGS -mtune=i686" + ABI="x86" + # Platform version 9 is needed as earlier versions of platform do not support this arch. + ANDROID_PLATFORM=9 ;; ouya) CXXFLAGS="$CXXFLAGS -march=armv7-a" @@ -2061,9 +2089,15 @@ case $_host_os in CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp" CXXFLAGS="$CXXFLAGS -mfpu=neon" ABI="armeabi-v7a" + ANDROID_PLATFORM=4 ;; esac - CXXFLAGS="$CXXFLAGS --sysroot=$ANDROID_NDK/platforms/android-4/arch-arm" + + # Setup platform version and arch + ABI_SHORT=`echo $ABI | cut -c1-3` + CXXFLAGS="$CXXFLAGS --sysroot=$ANDROID_NDK/platforms/android-$ANDROID_PLATFORM/arch-$ABI_SHORT" + LDFLAGS="$LDFLAGS --sysroot=$ANDROID_NDK/platforms/android-$ANDROID_PLATFORM/arch-$ABI_SHORT" + CXXFLAGS="$CXXFLAGS -fpic" CXXFLAGS="$CXXFLAGS -ffunction-sections" CXXFLAGS="$CXXFLAGS -funwind-tables" @@ -2076,16 +2110,23 @@ case $_host_os in fi CXXFLAGS="$CXXFLAGS -finline-limit=300" _optimization_level=-Os - CXXFLAGS="$CXXFLAGS -mthumb-interwork" - # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this. - CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5__" - CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5T__" - CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5E__" - CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5TE__" - # supress 'mangling of 'va_list' has changed in GCC 4.4' + + if test "$_host" = android -o "$_host" = android-arm; then + CXXFLAGS="$CXXFLAGS -mthumb-interwork" + # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this. + CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5__" + CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5T__" + CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5E__" + CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5TE__" + fi + + # surpress 'mangling of 'va_list' has changed in GCC 4.4' warning CXXFLAGS="$CXXFLAGS -Wno-psabi" - LDFLAGS="$LDFLAGS --sysroot=$ANDROID_NDK/platforms/android-4/arch-arm" - LDFLAGS="$LDFLAGS -mthumb-interwork" + + if test "$_host" = android -o "$_host" = android-arm; then + LDFLAGS="$LDFLAGS -mthumb-interwork" + fi + LDFLAGS="$LDFLAGS -L$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/`$CXX -dumpversion`/libs/$ABI/" LIBS="$LIBS -lsupc++" add_line_to_config_mk "ANDROID_SDK = $ANDROID_SDK" @@ -2352,7 +2393,7 @@ if test -n "$_host"; then # Cross-compiling mode - add your target here if needed echo "Cross-compiling to $_host" case "$_host" in - android | android-v7a | ouya) + android | android-arm | android-v7a | android-arm-v7a | android-mips | android-x86 | ouya) # we link a .so as default LDFLAGS="$LDFLAGS -shared" LDFLAGS="$LDFLAGS -Wl,-Bsymbolic,--no-undefined" diff --git a/engines/agos/input.cpp b/engines/agos/input.cpp index 35779323e3..8a4e87017a 100644 --- a/engines/agos/input.cpp +++ b/engines/agos/input.cpp @@ -450,7 +450,7 @@ void AGOSEngine_Feeble::handleMouseWheelDown() { void AGOSEngine_Simon1::handleMouseWheelUp() { HitArea *ha = findBox(206); - if (ha != NULL && (ha->flags & kBFBoxInUse)) { + if (ha != NULL && (ha->flags & kBFBoxInUse) && !(ha->flags & kBFBoxDead)) { if (_saveLoadRowCurPos != 1) { if (_saveLoadRowCurPos < 7) _saveLoadRowCurPos = 1; @@ -467,7 +467,7 @@ void AGOSEngine_Simon1::handleMouseWheelUp() { void AGOSEngine_Simon1::handleMouseWheelDown() { HitArea *ha = findBox(207); - if (ha != NULL && (ha->flags & kBFBoxInUse)) { + if (ha != NULL && (ha->flags & kBFBoxInUse) && !(ha->flags & kBFBoxDead)) { if (_saveDialogFlag) { _saveLoadRowCurPos += 1; if (_saveLoadRowCurPos >= _numSaveGameRows) diff --git a/engines/cge/cge.cpp b/engines/cge/cge.cpp index a409d765b4..49297b06ec 100644 --- a/engines/cge/cge.cpp +++ b/engines/cge/cge.cpp @@ -98,7 +98,7 @@ void CGEEngine::initSceneValues() { } void CGEEngine::init() { - debugC(1, kCGEDebugEngine, "CGEEngine::setup()"); + debugC(1, kCGEDebugEngine, "CGEEngine::init()"); // Initialize fields _lastFrame = 0; diff --git a/engines/cge/fileio.cpp b/engines/cge/fileio.cpp index 4fcf9f8ad8..2b1f74db02 100644 --- a/engines/cge/fileio.cpp +++ b/engines/cge/fileio.cpp @@ -93,13 +93,11 @@ ResourceManager::~ResourceManager() { delete _buff[i]._page; } -uint16 ResourceManager::XCrypt(byte *buf, uint16 length) { +void ResourceManager::XCrypt(byte *buf, uint16 length) { byte *b = buf; for (uint16 i = 0; i < length; i++) *b++ ^= kCryptSeed; - - return kCryptSeed; } bool ResourceManager::seek(int32 offs, int whence) { @@ -118,7 +116,7 @@ uint16 ResourceManager::read(byte *buf, uint16 length) { } BtPage *ResourceManager::getPage(int level, uint16 pageId) { - debugC(1, kCGEDebugFile, "IoHand::getPage(%d, %d)", level, pageId); + debugC(1, kCGEDebugFile, "ResourceManager::getPage(%d, %d)", level, pageId); if (_buff[level]._pageNo != pageId) { int32 pos = pageId * kBtSize; @@ -142,7 +140,7 @@ BtPage *ResourceManager::getPage(int level, uint16 pageId) { } BtKeypack *ResourceManager::find(const char *key) { - debugC(1, kCGEDebugFile, "IoHand::find(%s)", key); + debugC(1, kCGEDebugFile, "ResourceManager::find(%s)", key); int lev = 0; uint16 nxt = kBtValRoot; diff --git a/engines/cge/fileio.h b/engines/cge/fileio.h index 803d6b2d58..059d2c9a44 100644 --- a/engines/cge/fileio.h +++ b/engines/cge/fileio.h @@ -86,13 +86,13 @@ class ResourceManager { uint16 catRead(byte *buf, uint16 length); Common::File *_catFile; Common::File *_datFile; - uint16 XCrypt(byte *buf, uint16 length); + void XCrypt(byte *buf, uint16 length); public: ResourceManager(); ~ResourceManager(); uint16 read(byte *buf, uint16 length); - bool seek(int32 offs, int whence = 0); + bool seek(int32 offs, int whence = SEEK_SET); BtKeypack *find(const char *key); bool exist(const char *name); diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index 64f528a667..9062fe949d 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -887,7 +887,11 @@ namespace Fullpipe { #define MSG_SC18_SHOWGIRLJUMPTO 1499 #define MSG_SC18_SHOWMANJUMP 1510 #define MSG_SC18_SHOWMANJUMPTO 1508 +#define MV_BOY18_JUMPFROM 1478 #define MV_BOY18_JUMPTO 1481 +#define MV_GRL18_JUMPFROM 1485 +#define MV_GRL18_JUMPTO 1488 +#define MV_KSL_CALMDOWN 1476 #define MV_KSL_INBOY 1491 #define MV_KSL_INGIRL 1493 #define MV_KSL_INMAN 1504 @@ -898,12 +902,17 @@ namespace Fullpipe { #define MV_KSL_SWINGBOY 1462 #define MV_KSL_SWINGGIRL 1464 #define MV_KSL_SWINGMAN 1502 +#define MV_MAN18_JUMPTOTRUBA 1511 +#define MV_MAN18_STANDKRESLO 1500 #define MV_WHR18_SPIN 1300 #define PIC_SC18_DOMIN 5184 #define PIC_SC18_LADDER1 1471 #define PIC_SC18_LADDER2 1472 #define PIC_SC18_LADDER3 3299 #define PIC_SC18_RTRUBA 1520 +#define QU_SC19_MANJUMP1 1516 +#define QU_SC19_MANJUMP2 1517 +#define QU_SC19_MANJUMP3 1518 #define SND_18_006 3906 #define SND_18_010 4994 #define ST_KSL_BOY 1463 @@ -912,6 +921,7 @@ namespace Fullpipe { #define ST_KSL_JUMPGIRL 1494 #define ST_KSL_JUMPMAN 1505 #define ST_KSL_MAN 1503 +#define ST_KSL_REACT 1474 // Scene 19 #define ANI_CORDIE 1529 diff --git a/engines/fullpipe/scenes/scene18and19.cpp b/engines/fullpipe/scenes/scene18and19.cpp index 29ee8ba211..30ae8aa1d6 100644 --- a/engines/fullpipe/scenes/scene18and19.cpp +++ b/engines/fullpipe/scenes/scene18and19.cpp @@ -48,6 +48,9 @@ struct Swinger { int sfield_24; }; + +#define ANGLE(x) ((x) * M_PI / 180) + void scene18_preload() { g_fp->_scene3 = 0; @@ -145,7 +148,7 @@ void scene18_setupSwingers(StaticANIObject *ani, Scene *sc) { for (int i = 0; i < 8; i++) { swinger = new Swinger; - swinger->angle = (double)i * M_PI / 4.0; + swinger->angle = (double)i * ANGLE(45); swinger->sx = g_vars->scene18_var20 - (int)(cos(swinger->angle) * -575.0); swinger->sy = g_vars->scene18_var04 - (int)(sin(swinger->angle) * -575.0) + 87; swinger->ix = swinger->sx; @@ -385,7 +388,18 @@ int scene19_updateCursor() { } void sceneHandler18_clickBoard() { - warning("STUB: sceneHandler18_clickBoard()"); + if (ABS(967 - g_fp->_aniMan->_ox) > 1 || ABS(379 - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) { + MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 967, 379, 1, ST_MAN_RIGHT); + ExCommand *ex = new ExCommand(0, 17, MSG_SC18_MANREADY, 0, 0, 0, 1, 0, 0, 0); + + ex->_excFlags = 2; + + mq->addExCommandToEnd(ex); + + postExCommand(g_fp->_aniMan->_id, 2, 967, 379, 0, -1); + } else { + g_vars->scene18_var28 = 1; + } } void sceneHandler18and19_showManJump() { @@ -405,7 +419,43 @@ void sceneHandler18and19_showManJump() { } void sceneHandler18_showManJumpTo() { - warning("STUB: sceneHandler18_showManJumpTo()"); + int x, y; + + if (g_vars->scene18_var07[g_vars->scene18_var31]->ani->_movement) { + x = g_vars->scene18_var07[g_vars->scene18_var31]->ani->_movement->_ox; + y = g_vars->scene18_var07[g_vars->scene18_var31]->ani->_movement->_oy; + } else { + x = g_vars->scene18_var07[g_vars->scene18_var31]->ani->_ox; + y = g_vars->scene18_var07[g_vars->scene18_var31]->ani->_oy; + } + + g_fp->_aniMan->show1(x + 62, y + 5, MV_MAN18_JUMPTOTRUBA, 0); + g_fp->_aniMan->_priority = 35; + + int mqid = 0; + + if (g_vars->scene18_var13 == 1) { + mqid = QU_SC19_MANJUMP1; + } else if (g_vars->scene18_var13 == 2) { + mqid = QU_SC19_MANJUMP2; + } else if (g_vars->scene18_var13 == 3) { + mqid = QU_SC19_MANJUMP3; + } + + if (mqid) { + MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(mqid), 0, 0); + + g_fp->_aniMan2 = g_fp->_aniMan; + g_vars->scene18_var15 = 0; + + mq->setFlags(mq->getFlags() | 1); + mq->chain(0); + } + + g_vars->scene18_var07[g_vars->scene18_var31]->sflags = 1; + + g_vars->scene18_var07[g_vars->scene18_var31]->ani->changeStatics2(ST_KSL_NORM); + g_vars->scene18_var07[g_vars->scene18_var31]->ani->_priority = 30; } void sceneHandler18and19_showGirlJumpTo() { @@ -422,7 +472,28 @@ void sceneHandler18and19_showGirlJumpTo() { } void sceneHandler18and19_showGirlJump() { - warning("STUB: sceneHandler18and19_showGirlJump()"); + StaticANIObject *ani = g_vars->scene18_var07[g_vars->scene18_var32]->ani; + int x, y; + + if (ani->_movement) { + x = ani->_movement->_ox; + y = ani->_movement->_oy; + } else { + x = ani->_ox; + y = ani->_oy; + } + + g_vars->scene18_girl->show1(x - 62, y - 10, MV_GRL18_JUMPFROM, 0); + g_vars->scene18_girl->_priority = 50; + g_vars->scene18_girl->startAnim(MV_GRL18_JUMPFROM, 0, -1); + + g_vars->scene18_var07[g_vars->scene18_var32]->sflags = 1; + + g_vars->scene18_var07[g_vars->scene18_var32]->ani->changeStatics2(ST_KSL_REACT); + g_vars->scene18_var07[g_vars->scene18_var32]->ani->startAnim(MV_KSL_CALMDOWN, 0, -1); + + g_vars->scene18_var23 = 1; + g_vars->scene18_var25++; } void sceneHandler18and19_showBoyJumpTo() { @@ -438,7 +509,27 @@ void sceneHandler18and19_showBoyJumpTo() { } void sceneHandler18and19_showBoyJump() { - warning("STUB: sceneHandler18and19_showBoyJump()"); + StaticANIObject *ani = g_vars->scene18_var07[g_vars->scene18_var32]->ani; + int x, y; + + if (ani->_movement) { + x = ani->_movement->_ox; + y = ani->_movement->_oy; + } else { + x = ani->_ox; + y = ani->_oy; + } + + g_vars->scene18_boy->show1(x - 48, y + 8, MV_BOY18_JUMPFROM, 0); + g_vars->scene18_boy->_priority = 50; + g_vars->scene18_boy->startAnim(MV_BOY18_JUMPFROM, 0, -1); + + g_vars->scene18_var07[g_vars->scene18_var32]->sflags = 1; + + g_vars->scene18_var07[g_vars->scene18_var32]->ani->changeStatics2(ST_KSL_REACT); + g_vars->scene18_var07[g_vars->scene18_var32]->ani->startAnim(MV_KSL_CALMDOWN, 0, -1); + + g_vars->scene18_var26 = 1; } void sceneHandler18and19_boyJumpTo() { @@ -449,11 +540,17 @@ void sceneHandler18and19_boyJumpTo() { } void sceneHandler18and19_girlJumpTo() { - warning("STUB: sceneHandler18and19_girlJumpTo()"); + g_vars->scene18_girl->stopAnim_maybe(); + g_vars->scene18_girl->show1(g_vars->scene18_var05, g_vars->scene18_var06, MV_GRL18_JUMPTO, 0); + g_vars->scene18_girl->_priority = 50; + g_vars->scene18_girl->startAnim(MV_GRL18_JUMPTO, 0, -1); } void sceneHandler18and19_manStandArmchair() { - warning("STUB: sceneHandler18and19_manStandArmchair()"); + g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT); + g_fp->_aniMan->_flags |= 1; + g_fp->_aniMan->_priority = 35; + g_fp->_aniMan->startAnim(MV_MAN18_STANDKRESLO, 0, -1); } void sceneHandler18and19_drawRiders() { @@ -462,16 +559,16 @@ void sceneHandler18and19_drawRiders() { if (g_vars->scene18_var21 >= 359) g_vars->scene18_var21 = 0; - for (int i = 0; i < g_vars->scene18_var07.size(); i++) { + for (uint i = 0; i < g_vars->scene18_var07.size(); i++) { Swinger *swinger = g_vars->scene18_var07[i]; double oldangle = swinger->angle; - swinger->angle += M_PI / 180; + swinger->angle += ANGLE(1); - if (swinger->angle > 2 * M_PI) { - swinger->angle -= 2 * M_PI; - oldangle -= 2 * M_PI; + if (swinger->angle > ANGLE(360)) { + swinger->angle -= ANGLE(360); + oldangle -= ANGLE(360); } int ix = g_vars->scene18_var20 - (int)(cos(swinger->angle) * -575.0); @@ -480,7 +577,7 @@ void sceneHandler18and19_drawRiders() { if (!g_vars->scene18_var21) { ix = swinger->sx; iy = swinger->sy; - swinger->angle = (double)i * M_PI / 4; + swinger->angle = (double)i * ANGLE(45); } if (swinger->ani->_movement) @@ -512,27 +609,27 @@ void sceneHandler18and19_drawRiders() { } if (g_vars->scene18_var22) { - if ((swinger->sflags & 2) && swinger->angle >= 2.792526803190933 && oldangle < 2.792526803190933) { // 8 pi / 9 + if ((swinger->sflags & 2) && swinger->angle >= ANGLE(160) && oldangle < ANGLE(160)) { swinger->sflags = 8; swinger->ani->changeStatics2(ST_KSL_BOY); swinger->ani->startAnim(MV_KSL_JUMPBOY, 0, -1); g_vars->scene18_var32 = i; - } else if ((swinger->sflags & 4) && swinger->angle >= 2.82743338823082 && oldangle < 2.82743338823082) { // 9 pi / 10 + } else if ((swinger->sflags & 4) && swinger->angle >= ANGLE(162) && oldangle < ANGLE(162)) { swinger->sflags = 16; swinger->ani->changeStatics2(ST_KSL_GIRL); swinger->ani->startAnim(MV_KSL_JUMPGIRL, 0, -1); g_vars->scene18_var32 = i; } else if (g_vars->scene18_var23) { - if (g_vars->scene18_var24 > 0 && (swinger->sflags & 1) && swinger->angle >= 3.228859116189517 && oldangle < 3.228859116189517) { // 37 pi / 36 + if (g_vars->scene18_var24 > 0 && (swinger->sflags & 1) && swinger->angle >= ANGLE(185) && oldangle < ANGLE(185)) { g_vars->scene18_var33 = i; sceneHandler18and19_boyJumpTo(); } - } else if (g_vars->scene18_var25 > 0 && (swinger->sflags & 1) && swinger->angle >= 3.263765701229403 && oldangle < 3.263765701229403) { // 187 pi / 180 + } else if (g_vars->scene18_var25 > 0 && (swinger->sflags & 1) && swinger->angle >= ANGLE(187) && oldangle < ANGLE(187)) { g_vars->scene18_var33 = i; sceneHandler18and19_girlJumpTo(); } - if (swinger->angle >= 3.490658503988667 && oldangle < 3.490658503988667) { // 10 pi / 9 + if (swinger->angle >= ANGLE(200) && oldangle < ANGLE(200)) { if (g_vars->scene18_var26) g_vars->scene18_var24++; @@ -540,7 +637,7 @@ void sceneHandler18and19_drawRiders() { } } - if (g_vars->scene18_var28 && (swinger->sflags & 1) && swinger->angle >= 1.448623279155297 && oldangle < 1.448623279155297) { // 83 pi / 180 + if (g_vars->scene18_var28 && (swinger->sflags & 1) && swinger->angle >= ANGLE(83) && oldangle < ANGLE(83)) { g_vars->scene18_var27 = i; sceneHandler18and19_manStandArmchair(); } @@ -549,18 +646,18 @@ void sceneHandler18and19_drawRiders() { continue; if (i == g_vars->scene18_var27) { - if (swinger->angle >= 2.967059728390367 && oldangle < 2.967059728390367) { // 17 pi / 18 + if (swinger->angle >= ANGLE(170) && oldangle < ANGLE(170)) { g_fp->_gameLoader->preloadScene(SC_18, TrubaRight); - } else if (swinger->angle >= 0.4363323129985833 && oldangle < 0.4363323129985833) { // 5 pi / 36 + } else if (swinger->angle >= ANGLE(25) && oldangle < ANGLE(25)) { g_fp->_gameLoader->preloadScene(SC_19, TrubaRight); - } else if (swinger->angle >= 4.1887902047864 && oldangle < 4.1887902047864) { // 4 pi / 3 + } else if (swinger->angle >= ANGLE(270) && oldangle < ANGLE(270)) { g_fp->_sceneRect.translate(1200, 0); } } if (g_vars->scene18_var13 > 0) { if (swinger->sflags & 0x20) { - double newa = (double)g_vars->scene18_var14 * 0.01745329251994333;// pi / 180 + double newa = (double)g_vars->scene18_var14 * ANGLE(1); if (newa <= swinger->angle && oldangle < newa) { swinger->ani->changeStatics2(ST_KSL_MAN); @@ -575,7 +672,26 @@ void sceneHandler18and19_drawRiders() { } void sceneHandler18and19_animateRiders() { - warning("STUB: sceneHandler18and19_animateRiders()"); + for (uint i = 0; i < g_vars->scene18_var07.size(); i++) { + Swinger *swinger = g_vars->scene18_var07[i]; + + if (!swinger->ani->_movement) { + int mv = 0; + + if (swinger->sflags & 2) + mv = MV_KSL_SWINGBOY; + else if (swinger->sflags & 4) + mv = MV_KSL_SWINGGIRL; + else if (swinger->sflags & 0x20) + mv = MV_KSL_SWINGMAN; + + if (mv) + swinger->ani->startAnim(mv, 0, -1); + + if (swinger->ani->_movement) + swinger->ani->_movement->_counter = 0; + } + } } int sceneHandler18(ExCommand *cmd) { diff --git a/engines/voyeur/data.cpp b/engines/voyeur/data.cpp index 3ab5716991..ec5170cd32 100644 --- a/engines/voyeur/data.cpp +++ b/engines/voyeur/data.cpp @@ -49,7 +49,7 @@ SVoy::SVoy(VoyeurEngine *vm):_vm(vm) { _audioVisualStartTime = 0; _audioVisualDuration = 0; _boltGroupId2 = 0; - _computerTextId = 0; + _computerTextId = -1; _computerTimeMin = _computerTimeMax = 0; _eventCount = 0; _fadingStep1 = 0; diff --git a/engines/voyeur/debugger.cpp b/engines/voyeur/debugger.cpp index fdd0825181..234300bce5 100644 --- a/engines/voyeur/debugger.cpp +++ b/engines/voyeur/debugger.cpp @@ -92,10 +92,37 @@ bool Debugger::Cmd_Time(int argc, const char **argv) { } bool Debugger::Cmd_Hotspots(int argc, const char **argv) { + if (_vm->_voy->_computerTextId >= 0) { + DebugPrintf("Hotspot Computer Screen %d - %d,%d->%d,%d\n", + _vm->_voy->_computerTextId, + _vm->_voy->_computerScreenRect.left, + _vm->_voy->_computerScreenRect.top, + _vm->_voy->_computerScreenRect.right, + _vm->_voy->_computerScreenRect.bottom); + } + +#if 0 + // Room hotspots + BoltEntry &boltEntry = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 4); + if (boltEntry._rectResource) { + Common::Array<RectEntry> &hotspots = boltEntry._rectResource->_entries; + for (uint hotspotIdx = 0; hotspotIdx < hotspots.size(); ++hotspotIdx) { + Common::String pos = Common::String::format("(%d,%d->%d,%d)", + hotspots[hotspotIdx].left, hotspots[hotspotIdx].top, + hotspots[hotspotIdx].right, hotspots[hotspotIdx].bottom); + int arrIndex = hotspots[hotspotIdx]._arrIndex; + if (_vm->_voy->_roomHotspotsEnabled[arrIndex - 1]) { + DebugPrintf("Hotspot Room %d - %s - Enabled\n", arrIndex, pos); + } else { + DebugPrintf("Hotspot Room - %s - Disabled\n", pos); + } + } + } +#endif + + // Outside view hotspots BoltEntry &boltEntry = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 1); - if (!boltEntry._rectResource) { - DebugPrintf("No hotspots available\n"); - } else { + if (boltEntry._rectResource) { Common::Array<RectEntry> &hotspots = boltEntry._rectResource->_entries; for (uint hotspotIdx = 0; hotspotIdx < hotspots.size(); ++hotspotIdx) { @@ -130,7 +157,7 @@ bool Debugger::Cmd_Hotspots(int argc, const char **argv) { } } - DebugPrintf("\n"); + DebugPrintf("\nEnd of list\n"); return true; } |