From be8bbb143e0fbc32b6f0c4d90ec54196347f17ea Mon Sep 17 00:00:00 2001 From: Gregory Montoir Date: Sat, 18 Oct 2003 08:12:14 +0000 Subject: minor adds + cleanup + fix parallax problem svn-id: r10887 --- queen/graphics.cpp | 33 +++++++++++++++++++++------------ queen/graphics.h | 1 + 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/queen/graphics.cpp b/queen/graphics.cpp index f1b87209ef..9c844e611a 100644 --- a/queen/graphics.cpp +++ b/queen/graphics.cpp @@ -64,6 +64,8 @@ void Graphics::bankLoad(const char *bankname, uint32 bankslot) { error("Maximum bank size exceeded or negative bank size : %d", entries); } + debug(9, "Graphics::bankLoad(%s, %d) - entries = %d", bankname, bankslot, entries); + uint32 offset = 2; uint8 *p = _banks[bankslot].data; for (i = 1; i <= entries; ++i) { @@ -74,12 +76,13 @@ void Graphics::bankLoad(const char *bankname, uint32 bankslot) { offset += w * h + 8; } - debug(5, "Loaded bank '%s' in slot %d, %d entries", bankname, bankslot, entries); } void Graphics::bankUnpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) { + debug(9, "Graphics::bankUnpack(%d, %d, %d)", srcframe, dstframe, bankslot); + uint8 *p = _banks[bankslot].data + _banks[bankslot].indexes[srcframe]; if (!_banks[bankslot].data) @@ -98,12 +101,13 @@ void Graphics::bankUnpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) { pbf->data = new uint8[ size ]; memcpy(pbf->data, p + 8, size); - debug(5, "Unpacked frame %d from bank slot %d to frame slot %d", srcframe, bankslot, dstframe); } void Graphics::bankOverpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) { + debug(9, "Graphics::bankOverpack(%d, %d, %d)", srcframe, dstframe, bankslot); + uint8 *p = _banks[bankslot].data + _banks[bankslot].indexes[srcframe]; uint16 src_w = READ_LE_UINT16(p + 0); uint16 src_h = READ_LE_UINT16(p + 2); @@ -116,17 +120,14 @@ void Graphics::bankOverpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) { // copy data 'over' destination frame (without changing frame header) memcpy(_frames[dstframe].data, p + 8, src_w * src_h); } - - debug(5, "Overpacked frame %d from bank slot %d to frame slot %d", srcframe, bankslot, dstframe); } void Graphics::bankErase(uint32 bankslot) { - + + debug(9, "Graphics::bankErase(%d)", bankslot); delete[] _banks[bankslot].data; - _banks[bankslot].data = 0; - - debug(5, "Erased bank in slot %d", bankslot); + _banks[bankslot].data = 0; } @@ -171,7 +172,7 @@ void Graphics::bobAnimNormal(uint32 bobnum, uint16 firstFrame, uint16 lastFrame, void Graphics::bobMove(uint32 bobnum, uint16 endx, uint16 endy, int16 speed) { - debug(5, "Graphics::bobMove(%d, %d, %d, %d)", bobnum, endx, endy, speed); + debug(9, "Graphics::bobMove(%d, %d, %d, %d)", bobnum, endx, endy, speed); BobSlot *pbs = &_bobs[bobnum]; @@ -299,7 +300,7 @@ void Graphics::bobDraw(uint32 bobnum, uint16 x, uint16 y, uint16 scale, bool xfl uint16 w, h; - debug(5, "Preparing to draw frame %d, scale = %d, coords = (%d,%d)", bobnum, scale, x, y); + debug(9, "Graphics::bobDraw(%d, %d, %d, %d)", bobnum, x, y, scale); BobFrame *pbf = &_frames[bobnum]; if (scale < 100) { @@ -379,7 +380,7 @@ void Graphics::bobShrink(const BobFrame* pbf, uint16 percentage) { uint16 new_w = (pbf->width * percentage + 50) / 100; uint16 new_h = (pbf->height * percentage + 50) / 100; - debug(5, "Shrinking bob, buffer size = %d", new_w * new_h); + debug(9, "Graphics::bobShrink() - scale = %d, bufsize = %d", percentage, new_w * new_h); if (new_w != 0 && new_h != 0) { @@ -502,7 +503,7 @@ void Graphics::bobDrawAll() { } // adjusts position to hot-spot and screen scroll - x = pbs->x - xh; // - _display->scrollx; + x = pbs->x - xh - _display->horizontalScroll(); y = pbs->y - yh; bobDraw(pbs->frameNum, x, y, pbs->scale, pbs->xflip, pbs->box); @@ -581,6 +582,7 @@ void Graphics::bobCustomParallax(uint16 roomNum) { break; case 116: // CR 2 - CD-Rom pan right while Rita talks... _cameraBob = -1; + debug(9, "Graphics::bobCustomParallax() - %d", screenScroll); if (screenScroll < 80) { _display->horizontalScroll(screenScroll + 4); // Joe's body and head @@ -618,6 +620,13 @@ void Graphics::textSet(uint16 x, uint16 y, const char *text, bool outlined) { } +void Graphics::textSetCentered(uint16 y, const char *text, bool outlined) { + + uint16 x = (GAME_SCREEN_WIDTH - textWidth(text)) / 2; + textSet(x, y, text, outlined); +} + + void Graphics::textDrawAll() { int y; for (y = GAME_SCREEN_HEIGHT - 1; y > 0; --y) { diff --git a/queen/graphics.h b/queen/graphics.h index 7a80bdb3d0..f6580096ea 100644 --- a/queen/graphics.h +++ b/queen/graphics.h @@ -139,6 +139,7 @@ public: void textCurrentColor(uint8 color); // ink() void textSet(uint16 x, uint16 y, const char *text, bool outlined = true); // text() + void textSetCentered(uint16 y, const char *text, bool outlined = true); void textDrawAll(); // drawtext() void textClear(uint16 y1, uint16 y2); // blanktexts() uint16 textWidth(const char* text) const; // textlen() -- cgit v1.2.3