[Scummvm-cvs-logs] SF.net SVN: scummvm: [32833] scummvm/trunk/engines/parallaction

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Sun Jun 29 11:30:32 CEST 2008


Revision: 32833
          http://scummvm.svn.sourceforge.net/scummvm/?rev=32833&view=rev
Author:   peres001
Date:     2008-06-29 02:30:32 -0700 (Sun, 29 Jun 2008)

Log Message:
-----------
Changed all remaining code to use the GfxObj class to keep frames data. This allows for more uniform processing during rendering, and also fixes the display of dialogue faces for BRA.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/dialogue.cpp
    scummvm/trunk/engines/parallaction/disk.h
    scummvm/trunk/engines/parallaction/disk_br.cpp
    scummvm/trunk/engines/parallaction/disk_ns.cpp
    scummvm/trunk/engines/parallaction/gfxbase.cpp
    scummvm/trunk/engines/parallaction/graphics.cpp
    scummvm/trunk/engines/parallaction/graphics.h
    scummvm/trunk/engines/parallaction/gui_br.cpp
    scummvm/trunk/engines/parallaction/objects.h
    scummvm/trunk/engines/parallaction/parallaction.h

Modified: scummvm/trunk/engines/parallaction/dialogue.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/dialogue.cpp	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/dialogue.cpp	2008-06-29 09:30:32 UTC (rev 32833)
@@ -51,8 +51,8 @@
 	bool			_askPassword;
 
 	bool			isNpc;
-	Frames			*_questioner;
-	Frames			*_answerer;
+	GfxObj			*_questioner;
+	GfxObj			*_answerer;
 
 	Question		*_q;
 
@@ -229,7 +229,7 @@
 		answer = 0;
 
 		displayQuestion();
-		
+
 		if (_engineFlags & kEngineQuit)
 			return;
 

Modified: scummvm/trunk/engines/parallaction/disk.h
===================================================================
--- scummvm/trunk/engines/parallaction/disk.h	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/disk.h	2008-06-29 09:30:32 UTC (rev 32833)
@@ -55,13 +55,13 @@
 
 	virtual Script* loadLocation(const char *name) = 0;
 	virtual Script* loadScript(const char* name) = 0;
-	virtual Frames* loadTalk(const char *name) = 0;
-	virtual Frames* loadObjects(const char *name) = 0;
+	virtual GfxObj* loadTalk(const char *name) = 0;
+	virtual GfxObj* loadObjects(const char *name) = 0;
 	virtual Frames* loadPointer(const char *name) = 0;
-	virtual Frames* loadHead(const char* name) = 0;
+	virtual GfxObj* loadHead(const char* name) = 0;
 	virtual Font* loadFont(const char* name) = 0;
-	virtual Frames* loadStatic(const char* name) = 0;
-	virtual Frames* loadFrames(const char* name) = 0;
+	virtual GfxObj* loadStatic(const char* name) = 0;
+	virtual GfxObj* loadFrames(const char* name) = 0;
 	virtual void loadSlide(BackgroundInfo& info, const char *filename) = 0;
 	virtual void loadScenery(BackgroundInfo& info, const char* background, const char* mask, const char* path) = 0;
 	virtual Table* loadTable(const char* name) = 0;
@@ -147,13 +147,13 @@
 
 	Script* loadLocation(const char *name);
 	Script* loadScript(const char* name);
-	Frames* loadTalk(const char *name);
-	Frames* loadObjects(const char *name);
+	GfxObj* loadTalk(const char *name);
+	GfxObj* loadObjects(const char *name);
 	Frames* loadPointer(const char *name);
-	Frames* loadHead(const char* name);
+	GfxObj* loadHead(const char* name);
 	Font* loadFont(const char* name);
-	Frames* loadStatic(const char* name);
-	Frames* loadFrames(const char* name);
+	GfxObj* loadStatic(const char* name);
+	GfxObj* loadFrames(const char* name);
 	void loadSlide(BackgroundInfo& info, const char *filename);
 	void loadScenery(BackgroundInfo& info, const char* background, const char* mask, const char* path);
 	Table* loadTable(const char* name);
@@ -181,13 +181,13 @@
 
 	Script* loadLocation(const char *name);
 	Script* loadScript(const char* name);
-	Frames* loadTalk(const char *name);
-	Frames* loadObjects(const char *name);
+	GfxObj* loadTalk(const char *name);
+	GfxObj* loadObjects(const char *name);
 	Frames* loadPointer(const char *name);
-	Frames* loadHead(const char* name);
+	GfxObj* loadHead(const char* name);
 	Font* loadFont(const char* name);
-	Frames* loadStatic(const char* name);
-	Frames* loadFrames(const char* name);
+	GfxObj* loadStatic(const char* name);
+	GfxObj* loadFrames(const char* name);
 	void loadSlide(BackgroundInfo& info, const char *filename);
 	void loadScenery(BackgroundInfo& info, const char* background, const char* mask, const char* path);
 	Table* loadTable(const char* name);
@@ -220,13 +220,13 @@
 	void setLanguage(uint16 language);
 	Script* loadLocation(const char *name);
 	Script* loadScript(const char* name);
-	Frames* loadTalk(const char *name);
-	Frames* loadObjects(const char *name);
+	GfxObj* loadTalk(const char *name);
+	GfxObj* loadObjects(const char *name);
 	Frames* loadPointer(const char *name);
-	Frames* loadHead(const char* name);
+	GfxObj* loadHead(const char* name);
 	Font* loadFont(const char* name);
-	Frames* loadStatic(const char* name);
-	Frames* loadFrames(const char* name);
+	GfxObj* loadStatic(const char* name);
+	GfxObj* loadFrames(const char* name);
 	void loadSlide(BackgroundInfo& info, const char *filename);
 	void loadScenery(BackgroundInfo& info, const char* name, const char* mask, const char* path);
 	Table* loadTable(const char* name);
@@ -248,10 +248,10 @@
 	AmigaDisk_br(Parallaction *vm);
 	virtual ~AmigaDisk_br();
 
-	Frames* loadTalk(const char *name);
+	GfxObj* loadTalk(const char *name);
 	Font* loadFont(const char* name);
-	Frames* loadStatic(const char* name);
-	Frames* loadFrames(const char* name);
+	GfxObj* loadStatic(const char* name);
+	GfxObj* loadFrames(const char* name);
 	void loadSlide(BackgroundInfo& info, const char *filename);
 	void loadScenery(BackgroundInfo& info, const char* name, const char* mask, const char* path);
 };

Modified: scummvm/trunk/engines/parallaction/disk_br.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/disk_br.cpp	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/disk_br.cpp	2008-06-29 09:30:32 UTC (rev 32833)
@@ -138,7 +138,7 @@
 DosDisk_br::~DosDisk_br() {
 }
 
-Frames* DosDisk_br::loadTalk(const char *name) {
+GfxObj* DosDisk_br::loadTalk(const char *name) {
 	debugC(5, kDebugDisk, "DosDisk_br::loadTalk(%s)", name);
 
 	Common::File stream;
@@ -151,7 +151,7 @@
 			errorFileNotFound(path);
 	}
 
-	return createSprites(stream);
+	return new GfxObj(0, createSprites(stream), name);
 }
 
 Script* DosDisk_br::loadLocation(const char *name) {
@@ -184,7 +184,7 @@
 }
 
 //	there are no Head resources in Big Red Adventure
-Frames* DosDisk_br::loadHead(const char* name) {
+GfxObj* DosDisk_br::loadHead(const char* name) {
 	debugC(5, kDebugDisk, "DosDisk_br::loadHead");
 	return 0;
 }
@@ -235,7 +235,7 @@
 }
 
 
-Frames* DosDisk_br::loadObjects(const char *name) {
+GfxObj* DosDisk_br::loadObjects(const char *name) {
 	debugC(5, kDebugDisk, "DosDisk_br::loadObjects");
 	return 0;
 }
@@ -244,7 +244,7 @@
 	sprintf(path, "%s.bmp", name);
 }
 
-Frames* DosDisk_br::loadStatic(const char* name) {
+GfxObj* DosDisk_br::loadStatic(const char* name) {
 	debugC(5, kDebugDisk, "DosDisk_br::loadStatic");
 
 	char path[PATH_LEN];
@@ -256,7 +256,7 @@
 
 	Graphics::Surface *surf = new Graphics::Surface;
 	loadBitmap(stream, *surf, 0);
-	return new SurfaceToFrames(surf);
+	return new GfxObj(0, new SurfaceToFrames(surf), name);
 }
 
 Sprites* DosDisk_br::createSprites(Common::ReadStream &stream) {
@@ -280,7 +280,7 @@
 	return sprites;
 }
 
-Frames* DosDisk_br::loadFrames(const char* name) {
+GfxObj* DosDisk_br::loadFrames(const char* name) {
 	debugC(5, kDebugDisk, "DosDisk_br::loadFrames");
 
 	char path[PATH_LEN];
@@ -291,7 +291,7 @@
 		errorFileNotFound(path);
 
 
-	return createSprites(stream);
+	return new GfxObj(0, createSprites(stream), name);
 }
 
 // Slides in Nippon Safes are basically screen-sized pictures with valid
@@ -552,7 +552,7 @@
 	return;
 }
 
-Frames* AmigaDisk_br::loadStatic(const char* name) {
+GfxObj* AmigaDisk_br::loadStatic(const char* name) {
 	debugC(1, kDebugDisk, "AmigaDisk_br::loadStatic '%s'", name);
 
 	char path[PATH_LEN];
@@ -570,7 +570,7 @@
 
 	free(pal);
 
-	return new SurfaceToFrames(surf);
+	return new GfxObj(0, new SurfaceToFrames(surf));
 }
 
 Sprites* AmigaDisk_br::createSprites(const char *path) {
@@ -600,22 +600,22 @@
 	return sprites;
 }
 
-Frames* AmigaDisk_br::loadFrames(const char* name) {
+GfxObj* AmigaDisk_br::loadFrames(const char* name) {
 	debugC(1, kDebugDisk, "AmigaDisk_br::loadFrames '%s'", name);
 
 	char path[PATH_LEN];
 	sprintf(path, "%s/anims/%s", _partPath, name);
 
-	return createSprites(path);
+	return new GfxObj(0, createSprites(path));
 }
 
-Frames* AmigaDisk_br::loadTalk(const char *name) {
+GfxObj* AmigaDisk_br::loadTalk(const char *name) {
 	debugC(1, kDebugDisk, "AmigaDisk_br::loadTalk '%s'", name);
 
 	char path[PATH_LEN];
 	sprintf(path, "%s/talks/%s.tal", _partPath, name);
 
-	return createSprites(path);
+	return new GfxObj(0, createSprites(path));
 }
 
 Font* AmigaDisk_br::loadFont(const char* name) {

Modified: scummvm/trunk/engines/parallaction/disk_ns.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/disk_ns.cpp	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/disk_ns.cpp	2008-06-29 09:30:32 UTC (rev 32833)
@@ -385,12 +385,12 @@
 	return new Cnv(numFrames, width, height, data);
 }
 
-Frames* DosDisk_ns::loadTalk(const char *name) {
+GfxObj* DosDisk_ns::loadTalk(const char *name) {
 
 	const char *ext = strstr(name, ".talk");
 	if (ext != NULL) {
 		// npc talk
-		return loadCnv(name);
+		return new GfxObj(0, loadCnv(name), name);
 
 	}
 
@@ -401,7 +401,7 @@
 		sprintf(v20, "%stal", name);
 	}
 
-	return loadExternalCnv(v20);
+	return new GfxObj(0, loadExternalCnv(v20), name);
 }
 
 Script* DosDisk_ns::loadLocation(const char *name) {
@@ -434,14 +434,14 @@
 	return new Script(new DummyArchiveStream(_resArchive), true);
 }
 
-Frames* DosDisk_ns::loadHead(const char* name) {
+GfxObj* DosDisk_ns::loadHead(const char* name) {
 
 	char path[PATH_LEN];
 
 	sprintf(path, "%shead", name);
 	path[8] = '\0';
 
-	return loadExternalStaticCnv(path);
+	return new GfxObj(0, loadExternalStaticCnv(path));
 }
 
 
@@ -457,15 +457,15 @@
 }
 
 
-Frames* DosDisk_ns::loadObjects(const char *name) {
+GfxObj* DosDisk_ns::loadObjects(const char *name) {
 
 	char path[PATH_LEN];
 	sprintf(path, "%sobj", name);
-	return loadExternalCnv(path);
+	return new GfxObj(0, loadExternalCnv(path), name);
 }
 
 
-Frames* DosDisk_ns::loadStatic(const char* name) {
+GfxObj* DosDisk_ns::loadStatic(const char* name) {
 
 	char path[PATH_LEN];
 
@@ -487,11 +487,11 @@
 	Graphics::PackBitsReadStream decoder(_resArchive);
 	decoder.read(cnv->pixels, w*h);
 
-	return new SurfaceToFrames(cnv);
+	return new GfxObj(0, new SurfaceToFrames(cnv), name);
 }
 
-Frames* DosDisk_ns::loadFrames(const char* name) {
-	return loadCnv(name);
+GfxObj* DosDisk_ns::loadFrames(const char* name) {
+	return new GfxObj(0, loadCnv(name), name);
 }
 
 //
@@ -1025,7 +1025,7 @@
 	return makeStaticCnv(stream);
 }
 
-Frames* AmigaDisk_ns::loadStatic(const char* name) {
+GfxObj* AmigaDisk_ns::loadStatic(const char* name) {
 	debugC(1, kDebugDisk, "AmigaDisk_ns::loadStatic '%s'", name);
 
 	Common::SeekableReadStream *s = openArchivedFile(name, true);
@@ -1033,7 +1033,7 @@
 
 	delete s;
 
-	return cnv;
+	return new GfxObj(0, cnv, name);
 }
 
 Common::SeekableReadStream *AmigaDisk_ns::openArchivedFile(const char* name, bool errorOnFileNotFound) {
@@ -1258,7 +1258,7 @@
 	return;
 }
 
-Frames* AmigaDisk_ns::loadFrames(const char* name) {
+GfxObj* AmigaDisk_ns::loadFrames(const char* name) {
 	debugC(1, kDebugDisk, "AmigaDisk_ns::loadFrames '%s'", name);
 
 	Common::SeekableReadStream *s;
@@ -1273,10 +1273,10 @@
 	Cnv *cnv = makeCnv(*s);
 	delete s;
 
-	return cnv;
+	return new GfxObj(0, cnv, name);
 }
 
-Frames* AmigaDisk_ns::loadHead(const char* name) {
+GfxObj* AmigaDisk_ns::loadHead(const char* name) {
 	debugC(1, kDebugDisk, "AmigaDisk_ns::loadHead '%s'", name);
 
 	char path[PATH_LEN];
@@ -1287,11 +1287,11 @@
 
 	delete s;
 
-	return cnv;
+	return new GfxObj(0, cnv, name);
 }
 
 
-Frames* AmigaDisk_ns::loadObjects(const char *name) {
+GfxObj* AmigaDisk_ns::loadObjects(const char *name) {
 	debugC(1, kDebugDisk, "AmigaDisk_ns::loadObjects");
 
 	char path[PATH_LEN];
@@ -1305,11 +1305,11 @@
 	Cnv *cnv = makeCnv(*s);
 	delete s;
 
-	return cnv;
+	return new GfxObj(0, cnv, name);
 }
 
 
-Frames* AmigaDisk_ns::loadTalk(const char *name) {
+GfxObj* AmigaDisk_ns::loadTalk(const char *name) {
 	debugC(1, kDebugDisk, "AmigaDisk_ns::loadTalk '%s'", name);
 
 	Common::SeekableReadStream *s;
@@ -1328,7 +1328,7 @@
 	Cnv *cnv = makeCnv(*s);
 	delete s;
 
-	return cnv;
+	return new GfxObj(0, cnv, name);
 }
 
 Table* AmigaDisk_ns::loadTable(const char* name) {

Modified: scummvm/trunk/engines/parallaction/gfxbase.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/gfxbase.cpp	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/gfxbase.cpp	2008-06-29 09:30:32 UTC (rev 32833)
@@ -86,27 +86,27 @@
 }
 
 GfxObj* Gfx::loadAnim(const char *name) {
-	Frames *frames = _disk->loadFrames(name);
-	GfxObj *obj = new GfxObj(kGfxObjTypeAnim, frames, name);
+	GfxObj *obj = _disk->loadFrames(name);
 	assert(obj);
 
+	obj->type = kGfxObjTypeAnim;
 	return obj;
 }
 
 
 GfxObj* Gfx::loadGet(const char *name) {
-	Frames *frames = _disk->loadStatic(name);
-	GfxObj *obj = new GfxObj(kGfxObjTypeGet, frames, name);
+	GfxObj *obj = _disk->loadStatic(name);
 	assert(obj);
 
+	obj->type = kGfxObjTypeGet;
 	return obj;
 }
 
 GfxObj* Gfx::loadDoor(const char *name) {
-	Frames *frames = _disk->loadFrames(name);
-	GfxObj *obj = new GfxObj(kGfxObjTypeDoor, frames, name);
+	GfxObj *obj = _disk->loadFrames(name);
 	assert(obj);
 
+	obj->type = kGfxObjTypeDoor;
 	return obj;
 }
 

Modified: scummvm/trunk/engines/parallaction/graphics.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/graphics.cpp	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/graphics.cpp	2008-06-29 09:30:32 UTC (rev 32833)
@@ -356,7 +356,17 @@
 
 	Graphics::Surface *surf = g_system->lockScreen();
 	for (uint i = 0; i < _numItems; i++) {
-		blt(_items[i].rect, _items[i].data->getData(_items[i].frame), surf, LAYER_FOREGROUND, _items[i].transparentColor);
+		GfxObj *obj = _items[i].data;
+
+		Common::Rect rect;
+		obj->getRect(obj->frame, rect);
+		rect.translate(obj->x, obj->y);
+
+		if (obj->getSize(obj->frame) == obj->getRawSize(obj->frame)) {
+			blt(rect, obj->getData(obj->frame), surf, LAYER_FOREGROUND, _items[i].transparentColor);
+		} else {
+			unpackBlt(rect, obj->getData(obj->frame), obj->getRawSize(obj->frame), surf, LAYER_FOREGROUND, _items[i].transparentColor);
+		}
 	}
 	g_system->unlockScreen();
 }
@@ -949,7 +959,7 @@
 
 
 
-int Gfx::setItem(Frames* frames, uint16 x, uint16 y, byte transparentColor) {
+int Gfx::setItem(GfxObj* frames, uint16 x, uint16 y, byte transparentColor) {
 	int id = _numItems;
 
 	_items[id].data = frames;
@@ -965,9 +975,9 @@
 
 void Gfx::setItemFrame(uint item, uint16 f) {
 	assert(item < _numItems);
-	_items[item].frame = f;
-	_items[item].data->getRect(f, _items[item].rect);
-	_items[item].rect.moveTo(_items[item].x, _items[item].y);
+	_items[item].data->frame = f;
+	_items[item].data->x = _items[item].x;
+	_items[item].data->y = _items[item].y;
 }
 
 Gfx::Balloon* Gfx::getBalloon(uint id) {

Modified: scummvm/trunk/engines/parallaction/graphics.h
===================================================================
--- scummvm/trunk/engines/parallaction/graphics.h	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/graphics.h	2008-06-29 09:30:32 UTC (rev 32833)
@@ -157,11 +157,11 @@
 		r.setHeight(_height);
 	}
 	uint	getRawSize(uint16 index) {
-		assert(index == 0);
+		assert(index < _num);
 		return getSize(index);
 	}
 	uint	getSize(uint16 index) {
-		assert(index == 0);
+		assert(index < _num);
 		return _width * _height;
 	}
 
@@ -487,7 +487,7 @@
 	void getStringExtent(Font *font, char *text, uint16 maxwidth, int16* width, int16* height);
 
 	// other items
-	int setItem(Frames* frames, uint16 x, uint16 y, byte transparentColor = 0);
+	int setItem(GfxObj* obj, uint16 x, uint16 y, byte transparentColor = 0);
 	void setItemFrame(uint item, uint16 f);
 	void hideDialogueStuff();
 	void freeBalloons();
@@ -549,7 +549,7 @@
 	Graphics::Surface 	_bitmapMask;
 	int32 				getRenderMode(const char *type);
 
-protected:
+public:
 	static int16 _dialogueBalloonX[5];
 
 	struct Balloon {
@@ -567,7 +567,7 @@
 		uint16 x;
 		uint16 y;
 		uint16 frame;
-		Frames *data;
+		GfxObj *data;
 
 		byte transparentColor;
 		Common::Rect rect;

Modified: scummvm/trunk/engines/parallaction/gui_br.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/gui_br.cpp	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/gui_br.cpp	2008-06-29 09:30:32 UTC (rev 32833)
@@ -122,7 +122,7 @@
 	// TODO: filter menu entries according to progress in game
 
 	#define NUM_MENULINES	7
-	Frames *_lines[NUM_MENULINES];
+	GfxObj *_lines[NUM_MENULINES];
 
 	const char *menuStrings[NUM_MENULINES] = {
 		"SEE INTRO",
@@ -157,7 +157,7 @@
 
 	int i;
 	for (i = 0; i < availItems; i++) {
-		_lines[i] = guiRenderMenuItem(menuStrings[i]);
+		_lines[i] = new GfxObj(0, guiRenderMenuItem(menuStrings[i]), "MenuItem");
 		uint id = _gfx->setItem(_lines[i], MENUITEMS_X, MENUITEMS_Y + MENUITEM_HEIGHT * i, 0xFF);
 		_gfx->setItemFrame(id, 0);
 	}

Modified: scummvm/trunk/engines/parallaction/objects.h
===================================================================
--- scummvm/trunk/engines/parallaction/objects.h	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/objects.h	2008-06-29 09:30:32 UTC (rev 32833)
@@ -209,7 +209,7 @@
 	}
 };
 struct ExamineData {	// size = 28
-	Frames	*_cnv;
+	GfxObj	*_cnv;
 	uint16		_opBase;		   // unused
 	uint16		field_12;			// unused
 	char*		_description;

Modified: scummvm/trunk/engines/parallaction/parallaction.h
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.h	2008-06-28 22:16:51 UTC (rev 32832)
+++ scummvm/trunk/engines/parallaction/parallaction.h	2008-06-29 09:30:32 UTC (rev 32833)
@@ -202,9 +202,9 @@
 
 
 	AnimationPtr	_ani;
-	Frames			*_head;
-	Frames			*_talk;
-	Frames			*_objs;
+	GfxObj			*_head;
+	GfxObj			*_talk;
+	GfxObj			*_objs;
 	PathBuilder		_builder;
 	WalkNodeList	*_walkPath;
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list