[Scummvm-cvs-logs] CVS: scummvm/queen cutaway.cpp,1.97,1.98 graphics.cpp,1.64,1.65 graphics.h,1.49,1.50 journal.cpp,1.14,1.15 logic.cpp,1.154,1.155 queen.cpp,1.65,1.66 queen.h,1.22,1.23 talk.cpp,1.66,1.67 walk.cpp,1.33,1.34 xref.txt,1.53,1.54
Gregory Montoir
cyx at users.sourceforge.net
Mon Jan 5 05:41:02 CET 2004
Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv19416/queen
Modified Files:
cutaway.cpp graphics.cpp graphics.h journal.cpp logic.cpp
queen.cpp queen.h talk.cpp walk.cpp xref.txt
Log Message:
added a class to manage banks, Queen::Graphics cleanup
Index: cutaway.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/cutaway.cpp,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -d -r1.97 -r1.98
--- cutaway.cpp 5 Jan 2004 11:58:19 -0000 1.97
+++ cutaway.cpp 5 Jan 2004 13:40:17 -0000 1.98
@@ -137,7 +137,7 @@
if (_bankNames[0][0]) {
debug(6, "Loading bank '%s'", _bankNames[0]);
- _vm->graphics()->bankLoad(_bankNames[0], CUTAWAY_BANK);
+ _vm->bankMan()->load(_bankNames[0], CUTAWAY_BANK);
}
char entryString[MAX_STRING_SIZE];
@@ -536,7 +536,7 @@
if (anim.bank != 13) {
/* XXX if (OLDBANK != T) */ {
//debug(6, "Loading bank '%s'", _bankNames[anim.bank-1]);
- _vm->graphics()->bankLoad(_bankNames[anim.bank-1], CUTAWAY_BANK);
+ _vm->bankMan()->load(_bankNames[anim.bank-1], CUTAWAY_BANK);
// XXX OLDBANK=T;
}
@@ -701,7 +701,7 @@
objAnim[i].unpackFrame,
objAnim[i].originalFrame,
objAnim[i].bank);*/
- _vm->graphics()->bankUnpack(
+ _vm->bankMan()->unpack(
objAnim[i].unpackFrame,
objAnim[i].originalFrame,
objAnim[i].bank);
@@ -968,7 +968,7 @@
updateGameState();
- _vm->graphics()->bankErase(CUTAWAY_BANK);
+ _vm->bankMan()->close(CUTAWAY_BANK);
talk(nextFilename);
@@ -1156,7 +1156,7 @@
bank = 15;
else if (bank != 13) {
// XXX if(bank != oldBank) {
- _vm->graphics()->bankLoad(_bankNames[bank-1], CUTAWAY_BANK);
+ _vm->bankMan()->load(_bankNames[bank-1], CUTAWAY_BANK);
// XXX oldBank = bank;
// XXX }
bank = 8;
@@ -1168,7 +1168,7 @@
_vm->graphics()->bobClear(bobIndex);
}
else if (objectFrame) {
- _vm->graphics()->bankUnpack(ABS(frame), objectFrame, bank);
+ _vm->bankMan()->unpack(ABS(frame), objectFrame, bank);
pbs->frameNum = objectFrame;
if (frame < 0)
pbs->xflip = true;
@@ -1327,7 +1327,7 @@
if (frameIndex[i]) {
currentImage++;
//debug(6, "bankUnpack(%i, %i, %i)", i, currentImage, objAnim[0].bank);
- _vm->graphics()->bankUnpack(i, currentImage, objAnim[0].bank);
+ _vm->bankMan()->unpack(i, currentImage, objAnim[0].bank);
}
}
Index: graphics.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/graphics.cpp,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -d -r1.64 -r1.65
--- graphics.cpp 4 Jan 2004 20:25:21 -0000 1.64
+++ graphics.cpp 5 Jan 2004 13:40:23 -0000 1.65
@@ -180,45 +180,40 @@
}
-Graphics::Graphics(QueenEngine *vm)
- : _cameraBob(0), _vm(vm) {
+
+BankManager::BankManager(Resource *res)
+ : _res(res) {
memset(_frames, 0, sizeof(_frames));
memset(_banks, 0, sizeof(_banks));
- memset(_bobs, 0, sizeof(_bobs));
- memset(_sortedBobs, 0, sizeof(_sortedBobs));
- _sortedBobsCount = 0;
- _shrinkBuffer.data = new uint8[ BOB_SHRINK_BUF_SIZE ];
}
-Graphics::~Graphics() {
- uint32 i;
- for(i = 0; i < ARRAYSIZE(_banks); ++i) {
- delete[] _banks[i].data;
+BankManager::~BankManager() {
+ for(uint32 i = 0; i < MAX_BANKS_NUMBER; ++i) {
+ close(i);
}
- frameEraseAll(true);
- delete[] _shrinkBuffer.data;
+ eraseAllFrames(true);
}
-void Graphics::bankLoad(const char *bankname, uint32 bankslot) {
- bankErase(bankslot);
- _banks[bankslot].data = _vm->resource()->loadFile(bankname);
+void BankManager::load(const char *bankname, uint32 bankslot) {
+ close(bankslot);
+
+ _banks[bankslot].data = _res->loadFile(bankname);
if (!_banks[bankslot].data) {
- error("Unable to open bank '%s'", bankname);
+ error("Unable to open bank '%s'", bankname);
}
int16 entries = (int16)READ_LE_UINT16(_banks[bankslot].data);
if (entries < 0 || entries >= MAX_BANK_SIZE) {
- error("Maximum bank size exceeded or negative bank size : %d", entries);
+ error("Maximum bank size exceeded or negative bank size : %d", entries);
}
-
- debug(9, "Graphics::bankLoad(%s, %d) - entries = %d", bankname, bankslot, entries);
+
+ debug(9, "BankManager::load(%s, %d) - entries = %d", bankname, bankslot, entries);
uint32 offset = 2;
uint8 *p = _banks[bankslot].data;
- int16 i;
- for (i = 1; i <= entries; ++i) {
+ for (int16 i = 1; i <= entries; ++i) {
_banks[bankslot].indexes[i] = offset;
uint16 w = READ_LE_UINT16(p + offset + 0);
uint16 h = READ_LE_UINT16(p + offset + 2);
@@ -228,13 +223,13 @@
}
-void Graphics::bankUnpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) {
- debug(9, "Graphics::bankUnpack(%d, %d, %d)", srcframe, dstframe, bankslot);
+void BankManager::unpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) {
+ debug(9, "BankManager::unpack(%d, %d, %d)", srcframe, dstframe, bankslot);
uint8 *p = _banks[bankslot].data + _banks[bankslot].indexes[srcframe];
if (!_banks[bankslot].data)
- error("Graphics::bankUnpack(%i, %i, %i) called but _banks[bankslot].data is NULL!",
+ error("BankManager::bankUnpack(%i, %i, %i) called but _banks[bankslot].data is NULL!",
srcframe, dstframe, bankslot);
BobFrame *pbf = &_frames[dstframe];
@@ -248,12 +243,11 @@
uint32 size = pbf->width * pbf->height;
pbf->data = new uint8[ size ];
memcpy(pbf->data, p + 8, size);
-
}
-void Graphics::bankOverpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) {
- debug(9, "Graphics::bankOverpack(%d, %d, %d)", srcframe, dstframe, bankslot);
+void BankManager::overpack(uint32 srcframe, uint32 dstframe, uint32 bankslot) {
+ debug(9, "BankManager::overpack(%d, %d, %d)", srcframe, dstframe, bankslot);
uint8 *p = _banks[bankslot].data + _banks[bankslot].indexes[srcframe];
uint16 src_w = READ_LE_UINT16(p + 0);
@@ -261,7 +255,7 @@
// unpack if destination frame is smaller than source one
if (_frames[dstframe].width < src_w || _frames[dstframe].height < src_h) {
- bankUnpack(srcframe, dstframe, bankslot);
+ unpack(srcframe, dstframe, bankslot);
} else {
// copy data 'over' destination frame (without changing frame header)
memcpy(_frames[dstframe].data, p + 8, src_w * src_h);
@@ -269,31 +263,75 @@
}
-void Graphics::bankErase(uint32 bankslot) {
- debug(9, "Graphics::bankErase(%d)", bankslot);
+void BankManager::close(uint32 bankslot) {
+ debug(9, "BankManager::close(%d)", bankslot);
delete[] _banks[bankslot].data;
_banks[bankslot].data = 0;
}
+BobFrame *BankManager::fetchFrame(uint32 index) {
+ debug(9, "BankManager::fetchFrame(%d)", index);
+ if (index >= MAX_FRAMES_NUMBER) {
+ error("BankManager::fetchFrame() invalid frame index = %d", index);
+ }
+ return &_frames[index];
+}
+
+
+void BankManager::eraseFrame(uint32 index) {
+ BobFrame *pbf = &_frames[index];
+ pbf->width = 0;
+ pbf->height = 0;
+ delete[] pbf->data;
+ pbf->data = 0;
+}
+
+
+void BankManager::eraseAllFrames(bool joe) {
+ uint32 i = 0;
+ if (!joe) {
+ i = FRAMES_JOE + FRAMES_JOE_XTRA;
+ }
+ while (i < 256) {
+ eraseFrame(i);
+ ++i;
+ }
+}
+
+
+
+Graphics::Graphics(QueenEngine *vm)
+ : _cameraBob(0), _vm(vm) {
+ memset(_bobs, 0, sizeof(_bobs));
+ memset(_sortedBobs, 0, sizeof(_sortedBobs));
+ _sortedBobsCount = 0;
+ _shrinkBuffer.data = new uint8[ BOB_SHRINK_BUF_SIZE ];
+}
+
+
+Graphics::~Graphics() {
+ delete[] _shrinkBuffer.data;
+}
+
+
void Graphics::bobSetupControl() {
- bankLoad("control.BBK",17);
- bankUnpack(1, 1, 17); // Mouse pointer
- bankUnpack(3, 3, 17); // Up arrow dialogue
- bankUnpack(4, 4, 17); // Down arrow dialogue
- bankErase(17);
+ _vm->bankMan()->load("control.BBK",17);
+ _vm->bankMan()->unpack(1, 1, 17); // Mouse pointer
+ _vm->bankMan()->unpack(3, 3, 17); // Up arrow dialogue
+ _vm->bankMan()->unpack(4, 4, 17); // Down arrow dialogue
+ _vm->bankMan()->close(17);
- BobFrame *bf = &_frames[1];
+ BobFrame *bf = _vm->bankMan()->fetchFrame(1);
_vm->display()->setMouseCursor(bf->data, bf->width, bf->height, bf->xhotspot, bf->yhotspot);
}
void Graphics::bobDraw(const BobSlot *bs, int16 x, int16 y) {
- uint16 w, h;
-
debug(9, "Graphics::bobDraw(%d, %d, %d)", bs->frameNum, x, y);
- BobFrame *pbf = &_frames[bs->frameNum];
+ uint16 w, h;
+ BobFrame *pbf = _vm->bankMan()->fetchFrame(bs->frameNum);
if (bs->scale < 100) {
bobShrink(pbf, bs->scale);
pbf = &_shrinkBuffer;
@@ -304,7 +342,6 @@
const Box *box = &bs->box;
if(w != 0 && h != 0 && box->intersects(x, y, w, h)) {
-
uint8 *src = pbf->data;
uint16 x_skip = 0;
uint16 y_skip = 0;
@@ -346,7 +383,7 @@
void Graphics::bobDrawInventoryItem(uint32 frameNum, uint16 x, uint16 y) {
if (frameNum != 0) {
- BobFrame *bf = frame(frameNum);
+ BobFrame *bf = _vm->bankMan()->fetchFrame(frameNum);
_vm->display()->drawInventoryItem(bf->data, x, y, bf->width, bf->height);
} else {
_vm->display()->drawInventoryItem(NULL, x, y, 32, 32);
@@ -356,10 +393,10 @@
void Graphics::bobPaste(uint16 objNum, uint16 image) {
GraphicData *pgd = _vm->logic()->graphicData(objNum);
- _vm->graphics()->bankUnpack(pgd->firstFrame, image, 15);
- BobFrame *bf = frame(image);
+ _vm->bankMan()->unpack(pgd->firstFrame, image, 15);
+ BobFrame *bf = _vm->bankMan()->fetchFrame(image);
_vm->display()->drawBobPasteDown(bf->data, pgd->x, pgd->y, bf->width, bf->height);
- frameErase(image);
+ _vm->bankMan()->eraseFrame(image);
}
@@ -466,7 +503,7 @@
BobSlot *pbs = _sortedBobs[i];
if (pbs->active) {
- BobFrame *pbf = &_frames[ pbs->frameNum ];
+ BobFrame *pbf = _vm->bankMan()->fetchFrame(pbs->frameNum);
uint16 xh, yh, x, y;
xh = pbf->xhotspot;
@@ -633,27 +670,6 @@
}
-void Graphics::frameErase(uint32 fslot) {
- BobFrame *pbf = &_frames[fslot];
- pbf->width = 0;
- pbf->height = 0;
- delete[] pbf->data;
- pbf->data = 0;
-}
-
-
-void Graphics::frameEraseAll(bool joe) {
- int i = 0;
- if (!joe) {
- i = FRAMES_JOE + FRAMES_JOE_XTRA;
- }
- while (i < 256) {
- frameErase(i);
- ++i;
- }
-}
-
-
void Graphics::loadBackdrop(const char* name, uint16 room) {
char roomPrefix[20];
strcpy(roomPrefix, name);
@@ -869,7 +885,7 @@
x = pbs->x;
y = pbs->y;
- BobFrame *pbf = frame(pbs->frameNum);
+ BobFrame *pbf = _vm->bankMan()->fetchFrame(pbs->frameNum);
width = (pbf->width * pbs->scale) / 100;
height = (pbf->height * pbs->scale) / 100;
Index: graphics.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/graphics.h,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- graphics.h 4 Jan 2004 20:25:21 -0000 1.49
+++ graphics.h 5 Jan 2004 13:40:27 -0000 1.50
@@ -101,6 +101,46 @@
bool outlined;
};
+class Resource;
+
+class BankManager {
+public:
+
+ BankManager(Resource *res);
+ ~BankManager();
+
+ void load(const char *bankname, uint32 bankslot);
+ void unpack(uint32 srcframe, uint32 dstframe, uint32 bankslot);
+ void overpack(uint32 srcframe, uint32 dstframe, uint32 bankslot);
+ void close(uint32 bankslot);
+
+ BobFrame *fetchFrame(uint32 index);
+ void eraseFrame(uint32 index);
+ void eraseAllFrames(bool joe);
+
+ enum {
+ MAX_BANK_SIZE = 110,
+ MAX_FRAMES_NUMBER = 256,
+ MAX_BANKS_NUMBER = 18
+ };
+
+
+private:
+
+ struct PackedBank {
+ uint32 indexes[MAX_BANK_SIZE];
+ uint8 *data;
+ };
+
+ //! unbanked bob frames
+ BobFrame _frames[MAX_FRAMES_NUMBER];
+
+ //! banked bob frames
+ PackedBank _banks[MAX_BANKS_NUMBER];
+
+ Resource *_res;
+};
+
class QueenEngine;
@@ -110,11 +150,6 @@
Graphics(QueenEngine *vm);
~Graphics();
- void bankLoad(const char *bankname, uint32 bankslot); // loadbank()
- void bankUnpack(uint32 srcframe, uint32 dstframe, uint32 bankslot); // unpackbank()
- void bankOverpack(uint32 srcframe, uint32 dstframe, uint32 bankslot); // overpackbank()
- void bankErase(uint32 bankslot); // erase()
-
void bobSetupControl();
void bobDraw(const BobSlot *bs, int16 x, int16 y);
void bobDrawInventoryItem(uint32 frameNum, uint16 x, uint16 y);
@@ -144,10 +179,6 @@
int textCenterX(const char *text) const; // MIDDLE()
void textColor(uint16 y, uint8 color) { _texts[y].color = color; }
- void frameErase(uint32 fslot);
- void frameEraseAll(bool joe); // freeframes, freeallframes
- BobFrame *frame(int index) { return _frames + index; }
-
void loadBackdrop(const char *name, uint16 room);
void loadPanel();
@@ -157,9 +188,6 @@
void update(uint16 room);
enum {
- MAX_BANK_SIZE = 110,
- MAX_FRAMES_NUMBER = 256,
- MAX_BANKS_NUMBER = 18,
MAX_BOBS_NUMBER = 64,
MAX_STRING_LENGTH = 255,
MAX_STRING_SIZE = (MAX_STRING_LENGTH + 1),
@@ -168,17 +196,6 @@
private:
-
- struct PackedBank {
- uint32 indexes[MAX_BANK_SIZE];
- uint8 *data;
- };
-
- //! unbanked bob frames
- BobFrame _frames[MAX_FRAMES_NUMBER];
-
- //! banked bob frames
- PackedBank _banks[MAX_BANKS_NUMBER];
BobSlot _bobs[MAX_BOBS_NUMBER];
Index: journal.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/journal.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- journal.cpp 4 Jan 2004 20:25:21 -0000 1.14
+++ journal.cpp 5 Jan 2004 13:40:27 -0000 1.15
@@ -102,7 +102,7 @@
_vm->graphics()->cameraBob(-1);
_vm->graphics()->bobClearAll();
_vm->graphics()->textClear(0, GAME_SCREEN_HEIGHT - 1);
- _vm->graphics()->frameEraseAll(false);
+ _vm->bankMan()->eraseAllFrames(false);
_vm->graphics()->textCurrentColor(INK_JOURNAL);
int i;
@@ -123,18 +123,18 @@
_vm->logic()->zoneSet(ZONE_ROOM, ZN_TEXT_TOGGLE, 125 - 16, 168, 135, 177);
_vm->graphics()->loadBackdrop("journal.PCX", JOURNAL_ROOM);
- _vm->graphics()->bankLoad("journal.BBK", JOURNAL_BANK);
+ _vm->bankMan()->load("journal.BBK", JOURNAL_BANK);
for (i = 1; i <= 20; ++i) {
int frameNum = JOURNAL_FRAMES + i;
- _vm->graphics()->bankUnpack(i, frameNum, JOURNAL_BANK);
- BobFrame *bf = _vm->graphics()->frame(frameNum);
+ _vm->bankMan()->unpack(i, frameNum, JOURNAL_BANK);
+ BobFrame *bf = _vm->bankMan()->fetchFrame(frameNum);
bf->xhotspot = 0;
bf->yhotspot = 0;
if (i == FRAME_INFO_BOX) { // adjust info box hot spot to put it on top always
bf->yhotspot = 200;
}
}
- _vm->graphics()->bankErase(JOURNAL_BANK);
+ _vm->bankMan()->close(JOURNAL_BANK);
}
Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.cpp,v
retrieving revision 1.154
retrieving revision 1.155
diff -u -d -r1.154 -r1.155
--- logic.cpp 5 Jan 2004 11:58:19 -0000 1.154
+++ logic.cpp 5 Jan 2004 13:40:27 -0000 1.155
@@ -611,11 +611,11 @@
void Logic::roomErase() {
- _vm->graphics()->frameEraseAll(false);
- _vm->graphics()->bankErase(15);
- _vm->graphics()->bankErase(11);
- _vm->graphics()->bankErase(10);
- _vm->graphics()->bankErase(12);
+ _vm->bankMan()->eraseAllFrames(false);
+ _vm->bankMan()->close(15);
+ _vm->bankMan()->close(11);
+ _vm->bankMan()->close(10);
+ _vm->bankMan()->close(12);
if (_currentRoom >= 114) {
_vm->display()->palFadeOut(0, 255, _currentRoom);
@@ -689,7 +689,7 @@
if (pgd->lastFrame == 0) {
++_numFurnitureStatic;
++curImage;
- _vm->graphics()->bankUnpack(pgd->firstFrame, curImage, 15);
+ _vm->bankMan()->unpack(pgd->firstFrame, curImage, 15);
++_numFrames;
BobSlot *pbs = _vm->graphics()->bob(19 + _numFurnitureStatic);
pbs->curPos(pgd->x, pgd->y);
@@ -719,7 +719,7 @@
int k;
for (k = pgd->firstFrame; k <= lastFrame; ++k) {
++curImage;
- _vm->graphics()->bankUnpack(k, curImage, 15);
+ _vm->bankMan()->unpack(k, curImage, 15);
++_numFrames;
}
BobSlot *pbs = _vm->graphics()->bob(5 + curBob);
@@ -792,7 +792,7 @@
uint16 firstFrame = curImage + 1;
for (j = pgd->firstFrame; j <= lastFrame; ++j) {
++curImage;
- _vm->graphics()->bankUnpack(j, curImage, 15);
+ _vm->bankMan()->unpack(j, curImage, 15);
++_numFrames;
}
curBob = 5 + _numFurnitureAnimated + numObjectAnimated;
@@ -813,7 +813,7 @@
// FIXME: if((COMPANEL==2) && (FULLSCREEN==1)) bobs[CURRBOB].y2=199;
- _vm->graphics()->bankUnpack(pgd->firstFrame, curImage, 15);
+ _vm->bankMan()->unpack(pgd->firstFrame, curImage, 15);
++_numFrames;
if (pod->name > 0) {
BobSlot *pbs = _vm->graphics()->bob(curBob);
@@ -926,14 +926,14 @@
curImage += pgd->lastFrame - 1;
} else if (lastFrame != 0) {
// turn on an animated bob
- _vm->graphics()->bankUnpack(pgd->firstFrame, 2, 15);
+ _vm->bankMan()->unpack(pgd->firstFrame, 2, 15);
pbs->animating = false;
uint16 firstImage = curImage;
--curImage;
uint16 j;
for (j = pgd->firstFrame; j <= lastFrame; ++j) {
++curImage;
- _vm->graphics()->bankUnpack(j, curImage, 15);
+ _vm->bankMan()->unpack(j, curImage, 15);
}
pbs->curPos(pgd->x, pgd->y);
pbs->frameNum = firstImage;
@@ -942,8 +942,8 @@
}
} else {
// frame 2 is used as a buffer frame to prevent BOB flickering
- _vm->graphics()->bankUnpack(pgd->firstFrame, 2, 15);
- _vm->graphics()->bankUnpack(pgd->firstFrame, curImage, 15);
+ _vm->bankMan()->unpack(pgd->firstFrame, 2, 15);
+ _vm->bankMan()->unpack(pgd->firstFrame, curImage, 15);
pbs->curPos(pgd->x, pgd->y);
pbs->frameNum = curImage;
}
@@ -969,7 +969,7 @@
// load/setup objects associated to this room
sprintf(filename, "%s.BBK", room);
- _vm->graphics()->bankLoad(filename, 15);
+ _vm->bankMan()->load(filename, 15);
zoneSetup();
_numFrames = 37 + FRAMES_JOE_XTRA;
@@ -1069,7 +1069,7 @@
if (loadBank) {
const char *actorFile = _aFile[pp->actor->actorFile];
if (actorFile) {
- _vm->graphics()->bankLoad(actorFile, pp->actor->bankNum);
+ _vm->bankMan()->load(actorFile, pp->actor->bankNum);
}
// if actorFile is null, the person data is already loaded as
// it is contained in objects room bank (.bbk)
@@ -1097,7 +1097,7 @@
scale = currentRoomArea(a)->calcScale(pad->y);
}
- _vm->graphics()->bankUnpack(pad->bobFrameStanding, p.bobFrame, p.actor->bankNum);
+ _vm->bankMan()->unpack(pad->bobFrameStanding, p.bobFrame, p.actor->bankNum);
bool xflip = false;
uint16 person = currentRoomData() + noun;
if (_objectData[person].image == -3) {
@@ -1219,7 +1219,7 @@
for (i = 1; i <= 255; ++i) {
if (allocatedFrames[i] != 0) {
++curImage;
- _vm->graphics()->bankUnpack(i, curImage, person->actor->bankNum);
+ _vm->bankMan()->unpack(i, curImage, person->actor->bankNum);
}
}
@@ -1286,7 +1286,7 @@
// queen.c l.962-980 / l.1269-1294
for (i = 0; i < gd->lastFrame; ++i) {
- _vm->graphics()->bankUnpack(ABS(tempFrames[i]), firstImage + i, 15);
+ _vm->bankMan()->unpack(ABS(tempFrames[i]), firstImage + i, 15);
}
BobSlot *pbs = _vm->graphics()->bob(bobNum);
pbs->animating = false;
@@ -1323,16 +1323,16 @@
void Logic::joeSetupFromBanks(const char *animBank, const char *standBank) {
int i;
- _vm->graphics()->bankLoad(animBank, 13);
+ _vm->bankMan()->load(animBank, 13);
for (i = 11; i <= 28 + FRAMES_JOE_XTRA; ++i) {
- _vm->graphics()->bankUnpack(i - 10, i, 13);
+ _vm->bankMan()->unpack(i - 10, i, 13);
}
- _vm->graphics()->bankErase(13);
+ _vm->bankMan()->close(13);
- _vm->graphics()->bankLoad(standBank, 7);
- _vm->graphics()->bankUnpack(1, 33 + FRAMES_JOE_XTRA, 7);
- _vm->graphics()->bankUnpack(3, 34 + FRAMES_JOE_XTRA, 7);
- _vm->graphics()->bankUnpack(5, 35 + FRAMES_JOE_XTRA, 7);
+ _vm->bankMan()->load(standBank, 7);
+ _vm->bankMan()->unpack(1, 33 + FRAMES_JOE_XTRA, 7);
+ _vm->bankMan()->unpack(3, 34 + FRAMES_JOE_XTRA, 7);
+ _vm->bankMan()->unpack(5, 35 + FRAMES_JOE_XTRA, 7);
}
@@ -1410,8 +1410,8 @@
if (_currentRoom == 108) {
_vm->graphics()->cameraBob(-1);
- _vm->graphics()->bankLoad("joe_e.act", 7);
- _vm->graphics()->bankUnpack(2, 29 + FRAMES_JOE_XTRA, 7);
+ _vm->bankMan()->load("joe_e.act", 7);
+ _vm->bankMan()->unpack(2, 29 + FRAMES_JOE_XTRA, 7);
_vm->display()->horizontalScroll(320);
@@ -1476,7 +1476,7 @@
}
}
pbs->frameNum = 29 + FRAMES_JOE_XTRA;
- _vm->graphics()->bankUnpack(frame, pbs->frameNum, 7);
+ _vm->bankMan()->unpack(frame, pbs->frameNum, 7);
return frame;
}
@@ -1509,12 +1509,12 @@
case STATE_GRAB_UP:
// turn back
- _vm->graphics()->bankUnpack(5, 29 + FRAMES_JOE_XTRA, 7);
+ _vm->bankMan()->unpack(5, 29 + FRAMES_JOE_XTRA, 7);
bobJoe->xflip = (joeFacing() == DIR_LEFT);
bobJoe->scale = joeScale();
update();
// grab up
- _vm->graphics()->bankUnpack(7, 29 + FRAMES_JOE_XTRA, 7);
+ _vm->bankMan()->unpack(7, 29 + FRAMES_JOE_XTRA, 7);
bobJoe->xflip = (joeFacing() == DIR_LEFT);
bobJoe->scale = joeScale();
update();
@@ -1524,7 +1524,7 @@
}
if (frame != 0) {
- _vm->graphics()->bankUnpack(frame, 29 + FRAMES_JOE_XTRA, 7);
+ _vm->bankMan()->unpack(frame, 29 + FRAMES_JOE_XTRA, 7);
bobJoe->xflip = (joeFacing() == DIR_LEFT);
bobJoe->scale = joeScale();
update();
@@ -1678,7 +1678,7 @@
void Logic::inventorySetup() {
- _vm->graphics()->bankLoad("objects.BBK", 14);
+ _vm->bankMan()->load("objects.BBK", 14);
if (_vm->resource()->isInterview()) {
_inventoryItem[0] = 1;
_inventoryItem[1] = 2;
@@ -1702,7 +1702,7 @@
// whereas 2nd, 3rd and 4th uses frame 9
uint16 dstFrame = (itemNum != 0) ? 8 : 9;
// unpack frame for object and draw it
- _vm->graphics()->bankUnpack(_itemData[itemNum].frame, dstFrame, 14);
+ _vm->bankMan()->unpack(_itemData[itemNum].frame, dstFrame, 14);
_vm->graphics()->bobDrawInventoryItem(dstFrame, x, 14);
} else {
// no object, clear the panel
@@ -2620,7 +2620,7 @@
void Logic::asmMakeFrankGrowing() {
- _vm->graphics()->bankUnpack(1, 38, 15);
+ _vm->bankMan()->unpack(1, 38, 15);
BobSlot *bobFrank = _vm->graphics()->bob(5);
bobFrank->frameNum = 38;
bobFrank->curPos(160, 200);
@@ -2645,7 +2645,7 @@
void Logic::asmMakeRobotGrowing() {
- _vm->graphics()->bankUnpack(1, 38, 15);
+ _vm->bankMan()->unpack(1, 38, 15);
BobSlot *bobRobot = _vm->graphics()->bob(5);
bobRobot->frameNum = 38;
bobRobot->curPos(160, 200);
@@ -2888,8 +2888,8 @@
// 23/2/95 - Play lightning SFX
_vm->sound()->playSfx(_vm->logic()->currentRoomSfx());
- _vm->graphics()->bankUnpack(18, lightningBob->frameNum, 15);
- _vm->graphics()->bankUnpack(4, planeBob ->frameNum, 15);
+ _vm->bankMan()->unpack(18, lightningBob->frameNum, 15);
+ _vm->bankMan()->unpack(4, planeBob ->frameNum, 15);
// Plane plunges into the jungle!
BobSlot *fireBob = _vm->graphics()->bob(6);
@@ -2898,7 +2898,7 @@
fireBob->x = planeBob->x;
fireBob->y = planeBob->y + 10;
- _vm->graphics()->bankUnpack(19, fireBob->frameNum, 15);
+ _vm->bankMan()->unpack(19, fireBob->frameNum, 15);
update();
k = 20;
@@ -2910,8 +2910,8 @@
planeBob->x = fireBob->x = x;
if (k < 40) {
- _vm->graphics()->bankUnpack(j, planeBob->frameNum, 15);
- _vm->graphics()->bankUnpack(k, fireBob ->frameNum, 15);
+ _vm->bankMan()->unpack(j, planeBob->frameNum, 15);
+ _vm->bankMan()->unpack(k, fireBob ->frameNum, 15);
k++;
j++;
Index: queen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/queen.cpp,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -d -r1.65 -r1.66
--- queen.cpp 4 Jan 2004 20:25:21 -0000 1.65
+++ queen.cpp 5 Jan 2004 13:40:27 -0000 1.66
@@ -102,6 +102,7 @@
_timer->removeTimerProc(&timerHandler);
delete _bam;
delete _resource;
+ delete _bankMan;
delete _command;
delete _debugger;
delete _display;
@@ -120,7 +121,7 @@
void QueenEngine::go() {
initialise();
-
+
_logic->registerDefaultSettings();
_logic->readOptionSettings();
@@ -157,6 +158,7 @@
void QueenEngine::initialise(void) {
_bam = new BamScene(this);
_resource = new Resource(_gameDataPath, _system->get_savefile_manager(), getSavePath());
+ _bankMan = new BankManager(_resource);
_command = new Command(this);
_debugger = new Debugger(this);
_display = new Display(this, _system);
Index: queen.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/queen.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- queen.h 26 Dec 2003 12:58:27 -0000 1.22
+++ queen.h 5 Jan 2004 13:40:27 -0000 1.23
@@ -29,6 +29,7 @@
namespace Queen {
class BamScene;
+class BankManager;
class Command;
class Debugger;
class Display;
@@ -47,6 +48,7 @@
virtual ~QueenEngine();
BamScene *bam() const { return _bam; }
+ BankManager *bankMan() const { return _bankMan; }
Command *command() const { return _command; }
Debugger *debugger() const { return _debugger; }
Display *display() const { return _display; }
@@ -72,6 +74,7 @@
void gotTimerTick();
BamScene *_bam;
+ BankManager *_bankMan;
Command *_command;
Debugger *_debugger;
Display *_display;
Index: talk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/talk.cpp,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -d -r1.66 -r1.67
--- talk.cpp 2 Jan 2004 20:05:18 -0000 1.66
+++ talk.cpp 5 Jan 2004 13:40:27 -0000 1.67
@@ -735,7 +735,7 @@
offset += 4;
- _vm->graphics()->bankUnpack(frame, _vm->logic()->numFrames(), bankNum);
+ _vm->bankMan()->unpack(frame, _vm->logic()->numFrames(), bankNum);
bob2->frameNum = _vm->logic()->numFrames();
bob2->scale = 100;
@@ -759,7 +759,7 @@
if (parameters->animation[0] == 'T') {
// Torso animation
torso = true;
- _vm->graphics()->bankOverpack(parameters->body, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->body, startFrame, bankNum);
offset++;
}
else if (parameters->animation[0] == 'E') {
@@ -788,10 +788,10 @@
}
if (torso) {
- _vm->graphics()->bankOverpack(frame, startFrame, bankNum);
+ _vm->bankMan()->overpack(frame, startFrame, bankNum);
}
else {
- _vm->graphics()->bankUnpack(frame, startFrame, bankNum);
+ _vm->bankMan()->unpack(frame, startFrame, bankNum);
// XXX bobs[BNUM].scale=SF;
}
@@ -869,15 +869,15 @@
// Make the head move
qzx ^= 1;
if (parameters->af && qzx)
- _vm->graphics()->bankOverpack(parameters->af + head, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->af + head, startFrame, bankNum);
else {
- _vm->graphics()->bankOverpack(head, startFrame, bankNum);
+ _vm->bankMan()->overpack(head, startFrame, bankNum);
}
}
else {
debug(6, "[Talk::defaultAnimation] Body action!");
// Just do a body action
- _vm->graphics()->bankOverpack(parameters->body, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->body, startFrame, bankNum);
}
if (!_talkHead)
@@ -913,7 +913,7 @@
// Make sure that Person closes their mouths
if (!isJoe && parameters->ff > 0)
- _vm->graphics()->bankOverpack(parameters->ff, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->ff, startFrame, bankNum);
}
@@ -984,7 +984,7 @@
oracle = true;
uint16 frameNum = _vm->logic()->personFrames(bobNum);
for (i = 5; i <= 8; ++i) {
- _vm->graphics()->bankUnpack(i, frameNum, bankNum);
+ _vm->bankMan()->unpack(i, frameNum, bankNum);
++frameNum;
}
}
@@ -1070,10 +1070,10 @@
stringAnimation(parameters, startFrame, bankNum);
}
else {
- _vm->graphics()->bankUnpack(parameters->body, startFrame, bankNum);
+ _vm->bankMan()->unpack(parameters->body, startFrame, bankNum);
if (length == 0 && !isJoe && parameters->bf > 0) {
- _vm->graphics()->bankOverpack(parameters->bf, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->bf, startFrame, bankNum);
_vm->logic()->update();
}
@@ -1085,7 +1085,7 @@
if (-1 == parameters->rf) {
// Setup the Torso frames
- _vm->graphics()->bankOverpack(parameters->bf, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->bf, startFrame, bankNum);
if (isJoe)
parameters = findSpeechParameters(person->name, 0, _vm->logic()->joeFacing());
else
@@ -1094,7 +1094,7 @@
if (-2 == parameters->rf) {
// Setup the Torso frames
- _vm->graphics()->bankOverpack(parameters->bf, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->bf, startFrame, bankNum);
if (isJoe)
parameters = findSpeechParameters(person->name, 14, _vm->logic()->joeFacing());
else
@@ -1111,7 +1111,7 @@
if (oracle) {
uint16 frameNum = _vm->logic()->personFrames(bobNum);
for (i = 1; i <= 4; ++i) {
- _vm->graphics()->bankUnpack(i, frameNum, bankNum);
+ _vm->bankMan()->unpack(i, frameNum, bankNum);
++frameNum;
}
}
@@ -1137,12 +1137,12 @@
// 7/11/94, Ensure that correct mouth closed frame is used!
if (parameters->rf != -1)
// XXX should really be just "bf", but it is not always calculated... :-(
- _vm->graphics()->bankOverpack(parameters->bf, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->bf, startFrame, bankNum);
if (parameters->ff == 0)
- _vm->graphics()->bankOverpack(10, startFrame, bankNum);
+ _vm->bankMan()->overpack(10, startFrame, bankNum);
else
- _vm->graphics()->bankOverpack(parameters->ff, startFrame, bankNum);
+ _vm->bankMan()->overpack(parameters->ff, startFrame, bankNum);
}
}
}
Index: walk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/walk.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- walk.cpp 29 Dec 2003 20:18:31 -0000 1.33
+++ walk.cpp 5 Jan 2004 13:40:27 -0000 1.34
@@ -238,7 +238,7 @@
uint16 dstFrame = image;
uint16 srcFrame = ABS(pwd->anim.firstFrame);
while (srcFrame <= ABS(pwd->anim.lastFrame)) {
- _vm->graphics()->bankUnpack(srcFrame, dstFrame, bankNum);
+ _vm->bankMan()->unpack(srcFrame, dstFrame, bankNum);
++dstFrame;
++srcFrame;
}
@@ -374,9 +374,9 @@
pbs->animating = false;
pbs->scale = _walkData[_walkDataCount].area->calcScale(endy);
if (_walkData[_walkDataCount].anim.facing == DIR_BACK) {
- _vm->graphics()->bankUnpack(mpd->backStandingFrame, standingFrame, bankNum);
+ _vm->bankMan()->unpack(mpd->backStandingFrame, standingFrame, bankNum);
} else {
- _vm->graphics()->bankUnpack(mpd->frontStandingFrame, standingFrame, bankNum);
+ _vm->bankMan()->unpack(mpd->frontStandingFrame, standingFrame, bankNum);
}
uint16 obj = _vm->logic()->objectForPerson(bobNum);
if (_walkData[_walkDataCount].dx < 0) {
Index: xref.txt
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/xref.txt,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- xref.txt 4 Jan 2004 20:25:21 -0000 1.53
+++ xref.txt 5 Jan 2004 13:40:28 -0000 1.54
@@ -6,10 +6,12 @@
BANKS
=====
-erase() Graphics::bankErase
-loadbank() Graphics::bankLoad
-overpack() Graphics::bankOverpack
-unpack() Graphics::bankUnpack
+erase() BankManager::close
+freeallframes() BankManager::eraseAllFrames(true)
+freeframes() BankManager::eraseAllFrames(false)
+loadbank() BankManager::load
+overpack() BankManager::overpack
+unpack() BankManager::unpack
COMMAND
@@ -123,8 +125,6 @@
clearallbobs() Graphics::bobClearAll
clearbob() Graphics::bobClear
drawbobs() Graphics::bobDrawAll
-freeallframes() Graphics::frameEraseAll(true)
-freeframes() Graphics::frameEraseAll(false)
invbob() Graphics::bobDrawInventoryItem
loadbackdrop() Graphics::loadBackdrop
loadpanel() Graphics::loadPanel
More information about the Scummvm-git-logs
mailing list