[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