From ca74eb3e8b77cd49bad7a0fa6e261531ea8c0f44 Mon Sep 17 00:00:00 2001 From: Arnaud Boutonné Date: Wed, 1 Sep 2010 22:11:01 +0000 Subject: HUGO: Fix labyrinth bug in Hugo 2 for Windows svn-id: r52485 --- engines/hugo/engine.cpp | 15 --------------- engines/hugo/hugo.cpp | 2 ++ engines/hugo/hugo.h | 2 +- tools/create_hugo/create_hugo.cpp | 1 + tools/create_hugo/create_hugo.h | 2 +- 5 files changed, 5 insertions(+), 17 deletions(-) diff --git a/engines/hugo/engine.cpp b/engines/hugo/engine.cpp index 082cbdd685..1a097cd90a 100644 --- a/engines/hugo/engine.cpp +++ b/engines/hugo/engine.cpp @@ -523,9 +523,6 @@ void HugoEngine::processMaze() { debugC(1, kDebugEngine, "processMaze"); - //actlist alnewscr = {&aheroxy,&astophero,&aherostop,&anewscr,NULL}; - //actlist_pt alist = &alnewscr[0]; - currImage = _hero->currImagePtr; // Get ptr to current image x1 = _hero->x + currImage->x1; // Left edge of object x2 = _hero->x + currImage->x2; // Right edge @@ -534,41 +531,29 @@ void HugoEngine::processMaze() { if (x1 < _maze.x1) { // Exit west -// anewscr.screen = *_screen_p - 1; _actListArr[_alNewscrIndex][3].a8.screenIndex = *_screen_p - 1; -// aheroxy.x = _maze.x2 - SHIFT - (x2 - x1); _actListArr[_alNewscrIndex][0].a2.x = _maze.x2 - SHIFT - (x2 - x1); -// aheroxy.y = _hero_p->y; _actListArr[_alNewscrIndex][0].a2.y = _hero->y; _status.routeIndex = -1; scheduler().insertActionList(_alNewscrIndex); } else if (x2 > _maze.x2) { // Exit east -// anewscr.screen = *_screen_p + 1; _actListArr[_alNewscrIndex][3].a8.screenIndex = *_screen_p + 1; -// aheroxy.x = _maze.x1 + SHIFT; _actListArr[_alNewscrIndex][0].a2.x = _maze.x1 + SHIFT; -// aheroxy.y = _hero_p->y; _actListArr[_alNewscrIndex][0].a2.y = _hero->y; _status.routeIndex = -1; scheduler().insertActionList(_alNewscrIndex); } else if (y1 < _maze.y1 - SHIFT) { // Exit north -// anewscr.screen = *_screen_p - _maze.size; _actListArr[_alNewscrIndex][3].a8.screenIndex = *_screen_p - _maze.size; -// aheroxy.x = _maze.x3; // special offset for perspective _actListArr[_alNewscrIndex][0].a2.x = _maze.x3; -// aheroxy.y = _maze.y2 - SHIFT - (y2 - y1); _actListArr[_alNewscrIndex][0].a2.y = _maze.y2 - SHIFT - (y2 - y1); _status.routeIndex = -1; scheduler().insertActionList(_alNewscrIndex); } else if (y2 > _maze.y2 - SHIFT / 2) { // Exit south -// anewscr.screen = *_screen_p + _maze.size; _actListArr[_alNewscrIndex][3].a8.screenIndex = *_screen_p + _maze.size; -// aheroxy.x = _maze.x4; // special offset for perspective _actListArr[_alNewscrIndex][0].a2.x = _maze.x4; -// aheroxy.y = _maze.y1 + SHIFT; _actListArr[_alNewscrIndex][0].a2.y = _maze.y1 + SHIFT; _status.routeIndex = -1; scheduler().insertActionList(_alNewscrIndex); diff --git a/engines/hugo/hugo.cpp b/engines/hugo/hugo.cpp index 1329ae84ec..1c0b52e49a 100644 --- a/engines/hugo/hugo.cpp +++ b/engines/hugo/hugo.cpp @@ -848,6 +848,7 @@ bool HugoEngine::loadHugoDat() { case INIT_MAZE: // 30 _actListArr[i][j].a30.timer = in.readSint16BE(); _actListArr[i][j].a30.mazeSize = in.readByte(); + _actListArr[i][j].a30.x1 = in.readSint16BE(); _actListArr[i][j].a30.y1 = in.readSint16BE(); _actListArr[i][j].a30.x2 = in.readSint16BE(); _actListArr[i][j].a30.y2 = in.readSint16BE(); @@ -1130,6 +1131,7 @@ bool HugoEngine::loadHugoDat() { in.readSint16BE(); in.readSint16BE(); in.readSint16BE(); + in.readSint16BE(); in.readByte(); break; case EXIT_MAZE: // 31 diff --git a/engines/hugo/hugo.h b/engines/hugo/hugo.h index 3b78b41016..532f18d2eb 100644 --- a/engines/hugo/hugo.h +++ b/engines/hugo/hugo.h @@ -33,7 +33,7 @@ #include "hugo/game.h" #define HUGO_DAT_VER_MAJ 0 // 1 byte -#define HUGO_DAT_VER_MIN 18 // 1 byte +#define HUGO_DAT_VER_MIN 19 // 1 byte #define DATAALIGNMENT 4 namespace Common { diff --git a/tools/create_hugo/create_hugo.cpp b/tools/create_hugo/create_hugo.cpp index 2c73996510..8c93b0d597 100644 --- a/tools/create_hugo/create_hugo.cpp +++ b/tools/create_hugo/create_hugo.cpp @@ -1154,6 +1154,7 @@ void writeActListArray(FILE *outFile, const actList actListArr[], int nbrElem) { case INIT_MAZE: // 30 writeSint16BE(outFile, ((act *) actListArr[i][j])->a30.timer); writeByte(outFile, ((act *) actListArr[i][j])->a30.mazeSize); + writeSint16BE(outFile, ((act *) actListArr[i][j])->a30.x1); writeSint16BE(outFile, ((act *) actListArr[i][j])->a30.y1); writeSint16BE(outFile, ((act *) actListArr[i][j])->a30.x2); writeSint16BE(outFile, ((act *) actListArr[i][j])->a30.y2); diff --git a/tools/create_hugo/create_hugo.h b/tools/create_hugo/create_hugo.h index 8a8a5a9e27..671b5c9142 100644 --- a/tools/create_hugo/create_hugo.h +++ b/tools/create_hugo/create_hugo.h @@ -31,7 +31,7 @@ #define DATAALIGNMENT 4 #define HUGO_DAT_VER_MAJ 0 // 1 byte -#define HUGO_DAT_VER_MIN 18 // 1 byte +#define HUGO_DAT_VER_MIN 19 // 1 byte typedef unsigned char uint8; typedef unsigned char byte; -- cgit v1.2.3