diff options
-rw-r--r-- | queen/command.cpp | 1 | ||||
-rw-r--r-- | queen/command.h | 2 | ||||
-rw-r--r-- | queen/cutaway.cpp | 18 | ||||
-rw-r--r-- | queen/display.cpp | 4 | ||||
-rw-r--r-- | queen/display.h | 8 | ||||
-rw-r--r-- | queen/graphics.cpp | 37 | ||||
-rw-r--r-- | queen/graphics.h | 7 | ||||
-rw-r--r-- | queen/input.h | 2 | ||||
-rw-r--r-- | queen/journal.cpp | 6 | ||||
-rw-r--r-- | queen/logic.cpp | 26 | ||||
-rw-r--r-- | queen/logic.h | 2 | ||||
-rw-r--r-- | queen/queen.cpp | 8 | ||||
-rw-r--r-- | queen/structs.h | 4 | ||||
-rw-r--r-- | queen/talk.cpp | 2 | ||||
-rw-r--r-- | queen/walk.cpp | 10 | ||||
-rw-r--r-- | queen/xref.txt | 8 |
16 files changed, 57 insertions, 88 deletions
diff --git a/queen/command.cpp b/queen/command.cpp index f73229ee10..bf9424cbad 100644 --- a/queen/command.cpp +++ b/queen/command.cpp @@ -1218,7 +1218,6 @@ int16 Command::setConditions(uint16 command, bool lastCmd) { if (cmdGs->id == command) { if (cmdGs->gameStateSlot > 0) { if (_logic->gameState(cmdGs->gameStateSlot) != cmdGs->gameStateValue) { - debug(0, "Command::setConditions() - Failed test %X", ret); debug(0, "Command::setConditions() - GS[%d] == %d (should be %d)", cmdGs->gameStateSlot, _logic->gameState(cmdGs->gameStateSlot), cmdGs->gameStateValue); // failed test ret = i; diff --git a/queen/command.h b/queen/command.h index 504fef771b..4825d029d8 100644 --- a/queen/command.h +++ b/queen/command.h @@ -87,7 +87,7 @@ struct SelectedCmdState { class Command { public: - Command(Logic*, Graphics*, Input*, Walk*, Sound*); + Command(Logic *, Graphics *, Input *, Walk *, Sound *); //! initialise command construction void clear(bool clearTexts); diff --git a/queen/cutaway.cpp b/queen/cutaway.cpp index d719a6ea68..f5742027a8 100644 --- a/queen/cutaway.cpp +++ b/queen/cutaway.cpp @@ -821,7 +821,7 @@ void Cutaway::changeRooms(CutawayObject &object) { mode = RDM_FADE_JOE_XY; } - _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), mode, 0, _comPanel, true); + _logic->roomDisplay(_logic->currentRoom(), mode, 0, _comPanel, true); _currentImage = _logic->numFrames(); @@ -1059,11 +1059,7 @@ byte *Cutaway::handleAnimation(byte *ptr, CutawayObject &object) { if (objAnim[i].mx || objAnim[i].my) { BobSlot *bob = _graphics->bob(objAnim[i].object); bob->frameNum = objAnim[i].originalFrame; - _graphics->bobMove( - objAnim[i].object, - objAnim[i].mx, - objAnim[i].my, - (object.specialMove > 0) ? object.specialMove : 4); + bob->move(objAnim[i].mx, objAnim[i].my, (object.specialMove > 0) ? object.specialMove : 4); } } @@ -1071,11 +1067,7 @@ byte *Cutaway::handleAnimation(byte *ptr, CutawayObject &object) { if (_logic->currentRoom() == ROOM_TEMPLE_OUTSIDE) { BobSlot *bob = _graphics->bob(0); if (bob->x < 320) - _graphics->bobMove( - 0, - bob->x + 346, - bob->y, - 4); + bob->move(bob->x + 346, bob->y, 4); } // Normal cutaway @@ -1513,7 +1505,7 @@ void Cutaway::stop() { _logic->joeY(joeY); _logic->currentRoom(joeRoom); _logic->oldRoom(_initialRoom); - _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_JOE_XY, 0, _comPanel, true); + _logic->roomDisplay(_logic->currentRoom(), RDM_FADE_JOE_XY, 0, _comPanel, true); } if (_input->cutawayQuit()) { @@ -1755,7 +1747,7 @@ int Cutaway::makeComplexAnimation(int16 currentImage, Cutaway::CutawayAnim *objA } } - _graphics->bobAnimString(bobNum, _cutAnim[bobNum]); + bob->animString(_cutAnim[bobNum]); return currentImage; } diff --git a/queen/display.cpp b/queen/display.cpp index 23912460ea..700840dd8d 100644 --- a/queen/display.cpp +++ b/queen/display.cpp @@ -817,7 +817,7 @@ void Display::waitForTimer() { } -void Display::mouseCursorInit(uint8 *buf, uint16 w, uint16 h, uint16 xhs, uint16 yhs) { +void Display::setMouseCursor(uint8 *buf, uint16 w, uint16 h, uint16 xhs, uint16 yhs) { // change transparency color match the one expected by the backend (0xFF) uint16 size = w * h; @@ -835,7 +835,7 @@ void Display::mouseCursorInit(uint8 *buf, uint16 w, uint16 h, uint16 xhs, uint16 } -void Display::mouseCursorShow(bool show) { +void Display::showMouseCursor(bool show) { _system->show_mouse(show); } diff --git a/queen/display.h b/queen/display.h index a5558b1da2..e922fc9c9e 100644 --- a/queen/display.h +++ b/queen/display.h @@ -73,7 +73,7 @@ public: void palConvert(uint8 *outPal, const uint8 *inPal, int start, int end); void palSet(const uint8 *pal, int start, int end, bool updateScreen = false); void palSetJoe(JoePalette pal); - void palFadeIn(int start, int end, uint16 roomNum, bool dynalum, int16 dynaX, int16 dynaY); + void palFadeIn(int start, int end, uint16 roomNum, bool dynalum = false, int16 dynaX = 0, int16 dynaY = 0); void palFadeOut(int start, int end, uint16 roomNum); void palFadePanel(); void palScroll(int start, int end); @@ -85,7 +85,7 @@ public: void screenMode(int comPanel, bool inCutaway); void prepareUpdate(); - void update(bool dynalum, int16 dynaX, int16 dynaY); + void update(bool dynalum = false, int16 dynaX = 0, int16 dynaY = 0); void blit(RenderingBuffer dstBuf, uint16 dstX, uint16 dstY, const uint8 *srcBuf, uint16 srcW, uint16 srcH, uint16 srcPitch, bool xflip, bool masked); void fill(RenderingBuffer dstBuf, uint16 x, uint16 y, uint16 w, uint16 h, uint8 color); @@ -107,8 +107,8 @@ public: void handleTimer(); void waitForTimer(); - void mouseCursorInit(uint8 *buf, uint16 w, uint16 h, uint16 xhs, uint16 yhs); - void mouseCursorShow(bool show); + void setMouseCursor(uint8 *buf, uint16 w, uint16 h, uint16 xhs, uint16 yhs); + void showMouseCursor(bool show); void drawBox(int16 x1, int16 y1, int16 x2, int16 y2, uint8 col); diff --git a/queen/graphics.cpp b/queen/graphics.cpp index 4c7b62eeee..6b90ec8321 100644 --- a/queen/graphics.cpp +++ b/queen/graphics.cpp @@ -140,28 +140,7 @@ void Graphics::bobSetupControl() { bankErase(17); BobFrame *bf = &_frames[1]; - _display->mouseCursorInit(bf->data, bf->width, bf->height, bf->xhotspot, bf->yhotspot); -} - - -void Graphics::bobAnimString(uint32 bobnum, const AnimFrame *animBuf) { - - debug(9, "Graphics::bobAnimString(%d)", bobnum); - _bobs[bobnum].animString(animBuf); -} - - -void Graphics::bobAnimNormal(uint32 bobnum, uint16 firstFrame, uint16 lastFrame, uint16 speed, bool rebound, bool xflip) { - - debug(9, "Graphics::bobAnimNormal(%d, %d, %d, %d)", bobnum, firstFrame, lastFrame, speed); - _bobs[bobnum].animNormal(firstFrame, lastFrame, speed, rebound, xflip); -} - - -void Graphics::bobMove(uint32 bobnum, int16 endx, int16 endy, int16 speed) { - - debug(9, "Graphics::bobMove(%d, %d, %d, %d)", bobnum, endx, endy, speed); - _bobs[bobnum].move(endx, endy, speed); + _display->setMouseCursor(bf->data, bf->width, bf->height, bf->xhotspot, bf->yhotspot); } @@ -417,11 +396,11 @@ void Graphics::bobPaste(uint32 frameNum, int16 x, int16 y) { } -void Graphics::bobShrink(const BobFrame* pbf, uint16 percentage) { +void Graphics::bobShrink(const BobFrame *bf, uint16 percentage) { // computing new size, rounding to upper value - uint16 new_w = (pbf->width * percentage + 50) / 100; - uint16 new_h = (pbf->height * percentage + 50) / 100; + uint16 new_w = (bf->width * percentage + 50) / 100; + uint16 new_h = (bf->height * percentage + 50) / 100; debug(9, "Graphics::bobShrink() - scale = %d, bufsize = %d", percentage, new_w * new_h); @@ -432,10 +411,10 @@ void Graphics::bobShrink(const BobFrame* pbf, uint16 percentage) { uint32 shrinker = (100 << 0x10) / percentage; uint16 x_scale = shrinker >> 0x10; - uint16 y_scale = x_scale * pbf->width; + uint16 y_scale = x_scale * bf->width; shrinker &= 0xFFFF; - uint8* src = pbf->data; + uint8* src = bf->data; uint8* dst = _shrinkBuffer.data; uint32 y_count = 0; @@ -455,7 +434,7 @@ void Graphics::bobShrink(const BobFrame* pbf, uint16 percentage) { src += y_scale; y_count += shrinker; if (y_count > 0xFFFF) { - src += pbf->width; + src += bf->width; y_count &= 0xFFFF; } } @@ -734,7 +713,6 @@ void Graphics::frameEraseAll(bool joe) { void Graphics::loadBackdrop(const char* name, uint16 room) { - // init Dynalum char roomPrefix[20]; strcpy(roomPrefix, name); roomPrefix[ strlen(roomPrefix) - 4 ] = '\0'; @@ -835,6 +813,7 @@ void Graphics::initFightBamScene() { _bobs[7].active = true; _bam.flag = 1; _bam.index = 0; + _bam._screenShaked = false; _bam._fightData = _bam._fight1Data; } diff --git a/queen/graphics.h b/queen/graphics.h index 53a6aab638..601de0468b 100644 --- a/queen/graphics.h +++ b/queen/graphics.h @@ -54,7 +54,7 @@ struct BobSlot { //! animation stuff bool animating; struct { - int16 speed, speedBak; // Must be signed! + int16 speed, speedBak; //! string based animation struct { @@ -144,13 +144,10 @@ public: void bankErase(uint32 bankslot); // erase() void bobSetupControl(); - void bobAnimString(uint32 bobnum, const AnimFrame *buf); // stringanim() - void bobAnimNormal(uint32 bobnum, uint16 firstFrame, uint16 lastFrame, uint16 speed, bool rebound, bool xflip); // makeanim() - void bobMove(uint32 bobnum, int16 endx, int16 endy, int16 speed); // movebob() void bobDraw(uint32 frameNum, int16 x, int16 y, uint16 scale, bool xflip, const Box& box); // bob() void bobDrawInventoryItem(uint32 bobnum, uint16 x, uint16 y); // invbob() void bobPaste(uint32 frameNum, int16 x, int16 y); // bobpaste() - void bobShrink(const BobFrame* pbf, uint16 percentage); // shrinkbob() + void bobShrink(const BobFrame *bf, uint16 percentage); void bobClear(uint32 bobnum); // clearbob() void bobSortAll(); // sortbobs() void bobDrawAll(); // drawbobs() diff --git a/queen/input.h b/queen/input.h index f4157eb860..3be94ea909 100644 --- a/queen/input.h +++ b/queen/input.h @@ -135,7 +135,7 @@ class Input { bool _canQuit; // inverse of CANTQUIT //! moved Cutaway::_quit here - bool _cutawayQuit; // cutawayQuit + bool _cutawayQuit; //! set if a dialogue is running bool _dialogueRunning; diff --git a/queen/journal.cpp b/queen/journal.cpp index f8f443ec91..7be4146a54 100644 --- a/queen/journal.cpp +++ b/queen/journal.cpp @@ -66,7 +66,7 @@ void Journal::use() { prepare(); redraw(); update(); - _display->palFadeIn(0, 255, JOURNAL_ROOM, false, 0, 0); + _display->palFadeIn(0, 255, JOURNAL_ROOM); _quitCleanly = true; _quit = false; @@ -154,7 +154,7 @@ void Journal::restore() { _logic->joeCutFacing(_logic->joeFacing()); _logic->oldRoom(_logic->currentRoom()); - _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_JOE, 0, 0, false); + _logic->roomDisplay(_logic->currentRoom(), RDM_FADE_JOE, 0, 0, false); } @@ -175,7 +175,7 @@ void Journal::update() { int16 y = 9 + _currentSaveSlot * 13 + 8; _display->drawBox(x, y, x + 6, y, INK_JOURNAL); } - _display->update(false, 0, 0); + _display->update(); } diff --git a/queen/logic.cpp b/queen/logic.cpp index c4599bd680..7043b26910 100644 --- a/queen/logic.cpp +++ b/queen/logic.cpp @@ -932,8 +932,8 @@ void Logic::roomSetupFurniture() { _graphics->bankUnpack(k, curImage, 15); ++_numFrames; } - _graphics->bobAnimNormal(5 + curBob, image, curImage, pgd->speed / 4, rebound, false); BobSlot *pbs = _graphics->bob(5 + curBob); + pbs->animNormal(image, curImage, pgd->speed / 4, rebound, false); pbs->x = pgd->x; pbs->y = pgd->y; ++curBob; @@ -1024,7 +1024,7 @@ void Logic::roomSetupObjects() { pbs->y = pgd->y; pbs->frameNum = firstFrame; if (pgd->speed > 0) { - _graphics->bobAnimNormal(curBob, firstFrame, curImage, pgd->speed / 4, rebound, false); + pbs->animNormal(firstFrame, curImage, pgd->speed / 4, rebound, false); } } ++numObjectAnimated; @@ -1055,7 +1055,7 @@ void Logic::roomSetupObjects() { for (i = firstRoomObj; i <= lastRoomObj; ++i) { ObjectData *pod = &_objectData[i]; if (pod->image == -3 || pod->image == -4) { - debug(9, "Logic::roomSetupObjects() - Setting up person %d", i); + debug(0, "Logic::roomSetupObjects() - Setting up person %X, name=%X", i, pod->name); uint16 noun = i - _roomData[_currentRoom]; if (pod->name > 0) { curImage = personSetup(noun, curImage); @@ -1177,7 +1177,7 @@ uint16 Logic::roomRefreshObject(uint16 obj) { pbs->y = pgd->y; pbs->frameNum = firstImage; if (pgd->speed > 0) { - _graphics->bobAnimNormal(curBob, firstImage, curImage, pgd->speed / 4, rebound, false); + pbs->animNormal(firstImage, curImage, pgd->speed / 4, rebound, false); } } else { @@ -1222,13 +1222,15 @@ void Logic::roomSetup(const char *room, int comPanel, bool inCutaway) { } -void Logic::roomDisplay(const char *room, RoomDisplayMode mode, uint16 scale, int comPanel, bool inCutaway) { +void Logic::roomDisplay(uint16 room, RoomDisplayMode mode, uint16 scale, int comPanel, bool inCutaway) { - debug(9, "Logic::roomDisplay(%s, %d, %d, %d, %d)", room, mode, scale, comPanel, inCutaway); + debug(9, "Logic::roomDisplay(%d, %d, %d, %d, %d)", room, mode, scale, comPanel, inCutaway); roomErase(); - // TODO: _sound->loadSFX(SFXNAME[_currentRoom]); - roomSetup(room, comPanel, inCutaway); + + // XXX _sound->loadSFX(SFXNAME[_currentRoom]); + + roomSetup(roomName(room), comPanel, inCutaway); ObjectData *pod = NULL; if (mode != RDM_FADE_NOJOE) { pod = joeSetupInRoom(mode != RDM_FADE_JOE_XY, scale); @@ -1487,7 +1489,7 @@ uint16 Logic::animCreate(uint16 curImage, const Person *person) { } // start animation - _graphics->bobAnimString(person->actor->bobNum, animFrames); + _graphics->bob(person->actor->bobNum)->animString(animFrames); return curImage; } @@ -2296,7 +2298,7 @@ void Logic::handlePinnacleRoom() { // camera does not follow Joe anymore _graphics->cameraBob(-1); - roomDisplay(roomName(ROOM_JUNGLE_PINNACLE), RDM_NOFADE_JOE, 100, 2, true); + roomDisplay(ROOM_JUNGLE_PINNACLE, RDM_NOFADE_JOE, 100, 2, true); BobSlot *joe = _graphics->bob(6); BobSlot *piton = _graphics->bob(7); @@ -2562,7 +2564,7 @@ void Logic::sceneStart() { debug(0, "[Logic::sceneStart] _scene = %i", _scene); _scene++; - _display->mouseCursorShow(false); + _display->showMouseCursor(false); if (1 == _scene) { // && _input->cutawayRunning()) { // sceneStart is always called when cutaway is running _display->palFadePanel(); @@ -2579,7 +2581,7 @@ void Logic::sceneStop() { return; _display->palSetAllDirty(); - _display->mouseCursorShow(true); + _display->showMouseCursor(true); zoneSetupPanel(); } diff --git a/queen/logic.h b/queen/logic.h index d2f3465f60..fc66980590 100644 --- a/queen/logic.h +++ b/queen/logic.h @@ -218,7 +218,7 @@ public: void roomSetupObjects(); // DISP_OBJECTS uint16 roomRefreshObject(uint16 obj); // REDISP_OBJECT void roomSetup(const char *room, int comPanel, bool inCutaway); - void roomDisplay(const char *room, RoomDisplayMode mode, uint16 joeScale, int comPanel, bool inCutaway); // DISP_ROOM + void roomDisplay(uint16 room, RoomDisplayMode mode, uint16 joeScale, int comPanel, bool inCutaway); // DISP_ROOM uint16 findScale(uint16 x, uint16 y); diff --git a/queen/queen.cpp b/queen/queen.cpp index e01d7b43c5..8c09ffe510 100644 --- a/queen/queen.cpp +++ b/queen/queen.cpp @@ -134,7 +134,7 @@ void QueenEngine::roomChanged() { if (pcGamesDemo) { _logic->currentRoom(79); } - _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_NOJOE, 100, 2, true); + _logic->roomDisplay(_logic->currentRoom(), RDM_FADE_NOJOE, 100, 2, true); if (_resource->isDemo()) { if (pcGamesDemo) { @@ -164,7 +164,7 @@ void QueenEngine::roomChanged() { _logic->currentRoom(ROOM_HOTEL_LOBBY); _logic->entryObj(584); - _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_JOE, 100, 2, true); + _logic->roomDisplay(_logic->currentRoom(), RDM_FADE_JOE, 100, 2, true); _logic->playCutaway("c70d.cut"); _logic->gameState(VAR_INTRO_PLAYED, 1); @@ -173,9 +173,9 @@ void QueenEngine::roomChanged() { _logic->inventoryRefresh(); } else { - _logic->roomDisplay(_logic->roomName(_logic->currentRoom()), RDM_FADE_JOE, 100, 1, false); + _logic->roomDisplay(_logic->currentRoom(), RDM_FADE_JOE, 100, 1, false); } - _display->mouseCursorShow(true); // _drawMouseFlag = 1; + _display->showMouseCursor(true); // _drawMouseFlag = 1; } diff --git a/queen/structs.h b/queen/structs.h index 34a74eb24e..6577e290fc 100644 --- a/queen/structs.h +++ b/queen/structs.h @@ -143,11 +143,11 @@ struct GraphicData { </tr> <tr> <td>firstFrame < 0</td> - <td>bobAnimString (animation is described by a string)</td> + <td>BobSlot::animString (animation is described by a string)</td> </tr> <tr> <td>firstFrame > 0</td> - <td>bobAnimNormal (animation is a sequence of frames)</td> + <td>BobSlot::animNormal (animation is a sequence of frames)</td> </tr> </table> */ diff --git a/queen/talk.cpp b/queen/talk.cpp index d4702d2261..c099850683 100644 --- a/queen/talk.cpp +++ b/queen/talk.cpp @@ -151,7 +151,7 @@ void Talk::talk(const char *filename, int personInRoom, char *cutawayFilename) { initialTalk(); // Lines 906-? in talk.c - _logic->display()->mouseCursorShow(true); + _logic->display()->showMouseCursor(true); int16 level=1, retval=0; int16 head = _dialogueTree[level][0].head; diff --git a/queen/walk.cpp b/queen/walk.cpp index 583040c8df..6837c77fd6 100644 --- a/queen/walk.cpp +++ b/queen/walk.cpp @@ -121,11 +121,11 @@ void Walk::animateJoe() { return; } if (lastDirection != pwd->anim.facing) { - _graphics->bobAnimNormal(0, pwd->anim.firstFrame, pwd->anim.lastFrame, 1, false, false); + pbs->animNormal(pwd->anim.firstFrame, pwd->anim.lastFrame, 1, false, false); } uint16 moveSpeed = _logic->findScale(pbs->x, pbs->y) * 6 / 100; - _graphics->bobMove(0, pbs->x + pwd->dx, pbs->y + pwd->dy, moveSpeed); + pbs->move(pbs->x + pwd->dx, pbs->y + pwd->dy, moveSpeed); pbs->xflip = (pbs->xdir < 0); while (pbs->moving) { // adjust Joe's movespeed according to scale @@ -259,15 +259,15 @@ void Walk::animatePerson(const MovePersonData *mpd, uint16 image, uint16 bobNum, } // pass across bobs direction ONLY if walk is a mirror flip! if (ABS(mpd->walkLeft1) == ABS(mpd->walkRight1)) { - _graphics->bobAnimNormal(bobNum, image, dstFrame - 1, mpd->animSpeed, false, pbs->xflip); + pbs->animNormal(image, dstFrame - 1, mpd->animSpeed, false, pbs->xflip); } else { - _graphics->bobAnimNormal(bobNum, image, dstFrame - 1, mpd->animSpeed, false, false); + pbs->animNormal(image, dstFrame - 1, mpd->animSpeed, false, false); } // move other actors at correct speed relative to scale uint16 moveSpeed = _logic->findScale(pbs->x, pbs->y) * mpd->moveSpeed / 100; - _graphics->bobMove(bobNum, pbs->x + pwd->dx, pbs->y + pwd->dy, moveSpeed); + pbs->move(pbs->x + pwd->dx, pbs->y + pwd->dy, moveSpeed); // flip if one set of frames for actor if (mpd->walkLeft1 < 0 || ABS(mpd->walkLeft1) == ABS(mpd->walkRight1)) { diff --git a/queen/xref.txt b/queen/xref.txt index bf2da95e53..b8f599f67d 100644 --- a/queen/xref.txt +++ b/queen/xref.txt @@ -130,13 +130,13 @@ invbob() Graphics::bobDrawInventoryItem loadbackdrop() Graphics::loadBackdrop loadpanel() Graphics::loadPanel MAKE_SPEAK_BOB() Graphics::bobSetText -makeanim() Graphics::bobAnimNormal -movebob() Graphics::bobMove +makeanim() BobSlot::animNormal +movebob() BobSlot::move pastebob() Graphics::bobPaste requestor() shrinkbob() Graphics::bobShrink sortbobs() Graphics::bobSortAll -stringanim() Graphics::bobAnimString +stringanim() BobSlot::animString - bobs Graphics::_bobs cambob Graphics::_cameraBob @@ -148,7 +148,7 @@ INPUT check_keys() Input::checkKeys() get_key() *not needed* - -drawmouseflag *not needed* (equivalent to _display->mouseCursorShow(bool)) +drawmouseflag *not needed* (equivalent to _display->showMouseCursor(bool)) key_commands Input::_currentCommandKeys key_language Input::_commandKeys KEYVERB Input::_keyVerb |