[Scummvm-cvs-logs] SF.net SVN: scummvm:[48256] scummvm/trunk/engines/m4

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sun Mar 14 06:39:47 CET 2010


Revision: 48256
          http://scummvm.svn.sourceforge.net/scummvm/?rev=48256&view=rev
Author:   dreammaster
Date:     2010-03-14 05:39:47 +0000 (Sun, 14 Mar 2010)

Log Message:
-----------
Further work on separating M4 specific scene code into the m4_scene.cpp file

Modified Paths:
--------------
    scummvm/trunk/engines/m4/actor.cpp
    scummvm/trunk/engines/m4/graphics.cpp
    scummvm/trunk/engines/m4/graphics.h
    scummvm/trunk/engines/m4/hotspot.h
    scummvm/trunk/engines/m4/m4.cpp
    scummvm/trunk/engines/m4/m4_scene.cpp
    scummvm/trunk/engines/m4/m4_scene.h
    scummvm/trunk/engines/m4/mads_scene.cpp
    scummvm/trunk/engines/m4/mads_scene.h
    scummvm/trunk/engines/m4/scene.cpp
    scummvm/trunk/engines/m4/scene.h
    scummvm/trunk/engines/m4/woodscript.h
    scummvm/trunk/engines/m4/ws_sequence.cpp

Modified: scummvm/trunk/engines/m4/actor.cpp
===================================================================
--- scummvm/trunk/engines/m4/actor.cpp	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/actor.cpp	2010-03-14 05:39:47 UTC (rev 48256)
@@ -59,7 +59,7 @@
 	info.height = info.sprite->height();
 	info.scaleX = info.scaleY = _scaling;
 	info.palette = _walkerSprites[_direction]->getPalette();
-	info.inverseColorTable = _vm->_scene->getInverseColorTable();
+	info.inverseColourTable = _m4Vm->scene()->getInverseColourTable();
 
 	_vm->_scene->drawSprite(x, y, info, Common::Rect(640, 400));
 }

Modified: scummvm/trunk/engines/m4/graphics.cpp
===================================================================
--- scummvm/trunk/engines/m4/graphics.cpp	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/graphics.cpp	2010-03-14 05:39:47 UTC (rev 48256)
@@ -282,7 +282,7 @@
 							r = CLIP((info.palette[destPixel].r * pixel) >> 10, 0, 31);
 							g = CLIP((info.palette[destPixel].g * pixel) >> 10, 0, 31);
 							b = CLIP((info.palette[destPixel].b * pixel) >> 10, 0, 31);
-							pixel = info.inverseColorTable[(b << 10) | (g << 5) | r];
+							pixel = info.inverseColourTable[(b << 10) | (g << 5) | r];
 						}
 					}
 

Modified: scummvm/trunk/engines/m4/graphics.h
===================================================================
--- scummvm/trunk/engines/m4/graphics.h	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/graphics.h	2010-03-14 05:39:47 UTC (rev 48256)
@@ -81,7 +81,7 @@
 	int width, height;
 	int scaleX, scaleY;
 	uint8 encoding;
-	byte *inverseColorTable;
+	byte *inverseColourTable;
 	RGB8 *palette;
 };
 

Modified: scummvm/trunk/engines/m4/hotspot.h
===================================================================
--- scummvm/trunk/engines/m4/hotspot.h	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/hotspot.h	2010-03-14 05:39:47 UTC (rev 48256)
@@ -96,6 +96,7 @@
 
 	int add(HotSpot *hotspot, bool head = false);
 	HotSpot *get(int index) { return _hotspots[index]; }
+	HotSpot &operator[](int idx) { return *get(idx); }
 	void remove(HotSpot *hotspot);
 	void unlinkItem(HotSpot *hotspot);
 	void clear();

Modified: scummvm/trunk/engines/m4/m4.cpp
===================================================================
--- scummvm/trunk/engines/m4/m4.cpp	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/m4.cpp	2010-03-14 05:39:47 UTC (rev 48256)
@@ -412,7 +412,7 @@
 			_scene->loadScene(_kernel->currentRoom);
 
 			_ws->setBackgroundSurface(_scene->getBackgroundSurface());
-			_ws->setInverseColorTable(_scene->getInverseColorTable());
+			_ws->setInverseColourTable(scene()->getInverseColourTable());
 
 			_kernel->loadSectionScriptFunctions();
 			_kernel->loadRoomScriptFunctions();

Modified: scummvm/trunk/engines/m4/m4_scene.cpp
===================================================================
--- scummvm/trunk/engines/m4/m4_scene.cpp	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/m4_scene.cpp	2010-03-14 05:39:47 UTC (rev 48256)
@@ -42,6 +42,7 @@
 	_vm = vm;
 	_sceneSprites = NULL;
 	_interfaceSurface = new M4InterfaceView(vm);
+	_inverseColourTable = NULL;
 }
 
 M4Scene::~M4Scene() {
@@ -59,6 +60,63 @@
 	printf("Scene has %d sprites, each one having %d colors\n", _sceneSprites->getCount(), _sceneSprites->getColorCount());
 }
 
+void M4Scene::loadSceneResources(int sceneNumber) {
+	char filename[kM4MaxFilenameSize];
+	int i = 0, x = 0, y = 0;
+	sprintf(filename, "%i.chk", sceneNumber);
+
+	Common::SeekableReadStream *sceneS = _vm->res()->get(filename);
+
+	if (sceneS != NULL) {
+		sceneS->read(_sceneResources.artBase, MAX_CHK_FILENAME_SIZE);
+		sceneS->read(_sceneResources.pictureBase, MAX_CHK_FILENAME_SIZE);
+		_sceneResources.hotspotCount = sceneS->readUint32LE();
+		_sceneResources.parallaxCount = sceneS->readUint32LE();
+		_sceneResources.propsCount = sceneS->readUint32LE();
+		_sceneResources.frontY = sceneS->readUint32LE();
+		_sceneResources.backY = sceneS->readUint32LE();
+		_sceneResources.frontScale = sceneS->readUint32LE();
+		_sceneResources.backScale = sceneS->readUint32LE();
+		for (i = 0; i < 16; i++)
+			_sceneResources.depthTable[i] = sceneS->readUint16LE();
+		_sceneResources.railNodeCount = sceneS->readUint32LE();
+
+		// Clear rails from previous scene
+		_vm->_rails->clearRails();
+
+		for (i = 0; i < _sceneResources.railNodeCount; i++) {
+			x = sceneS->readUint32LE();
+			y = sceneS->readUint32LE();
+			if (_vm->_rails->addRailNode(x, y, true) < 0) {
+				warning("Too many rail nodes defined for scene");
+			}
+		}
+
+		// Clear current hotspot lists
+		_sceneResources.hotspots->clear();
+		_sceneResources.parallax->clear();
+		_sceneResources.props->clear();
+
+		_sceneResources.hotspots->loadHotSpots(sceneS, _sceneResources.hotspotCount);
+		_sceneResources.parallax->loadHotSpots(sceneS, _sceneResources.parallaxCount);
+		_sceneResources.props->loadHotSpots(sceneS, _sceneResources.propsCount);
+
+		// Note that toss() deletes the MemoryReadStream
+		_vm->res()->toss(filename);
+	}
+}
+
+void M4Scene::loadSceneInverseColourTable(int sceneNumber) {
+	char filename[kM4MaxFilenameSize];
+	Common::SeekableReadStream *iplS;
+
+	sprintf(filename, "%i.ipl", sceneNumber);
+	iplS = _vm->res()->openFile(filename);
+	delete[] _inverseColourTable;
+	_inverseColourTable = new byte[iplS->size()];
+	iplS->read(_inverseColourTable, iplS->size());
+	_vm->res()->toss(filename);
+}
 void M4Scene::loadScene(int sceneNumber) {
 	Scene::loadScene(sceneNumber);
 
@@ -71,7 +129,6 @@
 
 	// Load scene def file (*.CHK)
 	loadSceneResources(sceneNumber);
-	loadSceneInverseColorTable(sceneNumber);
 
 	// TODO: set walker scaling
 	// TODO: destroy woodscript buffer
@@ -80,7 +137,7 @@
 	loadSceneCodes(sceneNumber);
 
 	// Load inverse color table file (*.IPL)
-	loadSceneInverseColorTable(sceneNumber);
+	loadSceneInverseColourTable(sceneNumber);
 
 	if (_vm->getGameType() != GType_Burger) {
 		// Load scene sprites file (*.SSB)
@@ -115,6 +172,12 @@
 	_vm->_viewManager->addView(_interfaceSurface);
 }
 
+void M4Scene::leaveScene() {
+	delete[] _inverseColourTable;
+
+	Scene::leaveScene();
+}
+
 void M4Scene::checkHotspotAtMousePos(int x, int y) {
 	if (_vm->getGameType() == GType_Riddle)
 		return;

Modified: scummvm/trunk/engines/m4/m4_scene.h
===================================================================
--- scummvm/trunk/engines/m4/m4_scene.h	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/m4_scene.h	2010-03-14 05:39:47 UTC (rev 48256)
@@ -50,8 +50,11 @@
 	M4SceneResources _sceneResources;
 	SpriteAsset *_sceneSprites;
 	SpriteAsset *_walkerSprite;
+	byte *_inverseColourTable;
 
 	void loadSceneSprites(int sceneNumber);
+	void loadSceneResources(int sceneNumber);
+	void loadSceneInverseColourTable(int sceneNumber);
 	void nextCommonCursor();
 public:
 	M4Scene(M4Engine *vm);
@@ -59,7 +62,7 @@
 
 	// Methods that differ between engines
 	virtual void loadScene(int sceneNumber);
-	virtual void leaveScene() {};
+	virtual void leaveScene();
 	virtual void loadSceneCodes(int sceneNumber, int index = 0);
 	virtual void show();
 	virtual void checkHotspotAtMousePos(int x, int y);
@@ -69,6 +72,7 @@
 	virtual void setStatusText(const char *text);
 	virtual void update();
 
+	byte *getInverseColourTable() const { return _inverseColourTable; }
 	M4InterfaceView *getInterface() { return (M4InterfaceView *)_interfaceSurface; };
 	M4SceneResources &getSceneResources() { return _sceneResources; };
 };

Modified: scummvm/trunk/engines/m4/mads_scene.cpp
===================================================================
--- scummvm/trunk/engines/m4/mads_scene.cpp	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/mads_scene.cpp	2010-03-14 05:39:47 UTC (rev 48256)
@@ -93,13 +93,7 @@
 	if (_currentScene >= 900)
 		return;
 
-	loadSceneHotSpotsMads(_currentScene);
-
-	// TODO: set walker scaling
-	// TODO: destroy woodscript buffer
-
-	// Load inverse color table file (*.IPL)
-	loadSceneInverseColorTable(_currentScene);
+	loadSceneHotspots(_currentScene);
 }
 
 void MadsScene::loadScene(int sceneNumber) {
@@ -132,6 +126,27 @@
 	_vm->res()->purge();
 }
 
+void MadsScene::loadSceneHotspots(int sceneNumber) {
+	char filename[kM4MaxFilenameSize];
+	sprintf(filename, "rm%i.hh", sceneNumber);
+	MadsPack hotSpotData(filename, _vm);
+	Common::SeekableReadStream *hotspotStream = hotSpotData.getItemStream(0);
+
+	int hotspotCount = hotspotStream->readUint16LE();
+	delete hotspotStream;
+
+	_sceneResources.hotspotCount = hotspotCount;
+
+	hotspotStream = hotSpotData.getItemStream(1);
+
+	// Clear current hotspot lists
+	_sceneResources.hotspots->clear();
+
+	_sceneResources.hotspots->loadHotSpots(hotspotStream, _sceneResources.hotspotCount);
+
+	delete hotspotStream;
+}
+
 void MadsScene::leaveScene() {
 	_sceneResources.hotspots->clear();
 	_sceneResources.parallax->clear();
@@ -453,7 +468,7 @@
 
 					if (_currentHotspot < hotspotCount) {
 						// Get the verb Id from the hotspot
-						verbId = 0;//selected hotspot
+						verbId = (*_madsVm->scene()->getSceneResources().hotspots)[_currentHotspot].getVerbID();
 					} else {
 						// Get the verb Id from the scene object
 						verbId = 0;//Scene_object[_currentHotspot - _hotspotCount].verbId;

Modified: scummvm/trunk/engines/m4/mads_scene.h
===================================================================
--- scummvm/trunk/engines/m4/mads_scene.h	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/mads_scene.h	2010-03-14 05:39:47 UTC (rev 48256)
@@ -168,6 +168,7 @@
 	void drawElements();
 	void loadScene2(const char *aaName);
 	void loadSceneTemporary();
+	void loadSceneHotspots(int sceneNumber);
 	void clearAction();
 	void appendActionVocab(int vocabId, bool capitalise);
 	void setAction();

Modified: scummvm/trunk/engines/m4/scene.cpp
===================================================================
--- scummvm/trunk/engines/m4/scene.cpp	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/scene.cpp	2010-03-14 05:39:47 UTC (rev 48256)
@@ -51,7 +51,6 @@
 	_palData = NULL;
 	_interfacePal = NULL;
 	_interfaceSurface = NULL;
-	_inverseColorTable = NULL;
 	_vm->_rails->setCodeSurface(_walkSurface);
 }
 
@@ -78,7 +77,6 @@
 void Scene::leaveScene() {
 	delete _palData;
 	delete _interfacePal;
-	delete[] _inverseColorTable;
 }
 
 void Scene::show() {
@@ -93,91 +91,6 @@
 	_vm->_viewManager->deleteView(_interfaceSurface);
 }
 
-void Scene::loadSceneResources(int sceneNumber) {
-	char filename[kM4MaxFilenameSize];
-	int i = 0, x = 0, y = 0;
-	sprintf(filename, "%i.chk", sceneNumber);
-
-	Common::SeekableReadStream *sceneS = _vm->res()->get(filename);
-
-	if (sceneS != NULL) {
-		sceneS->read(_sceneResources->artBase, MAX_CHK_FILENAME_SIZE);
-		sceneS->read(_sceneResources->pictureBase, MAX_CHK_FILENAME_SIZE);
-		_sceneResources->hotspotCount = sceneS->readUint32LE();
-		_sceneResources->parallaxCount = sceneS->readUint32LE();
-		_sceneResources->propsCount = sceneS->readUint32LE();
-		_sceneResources->frontY = sceneS->readUint32LE();
-		_sceneResources->backY = sceneS->readUint32LE();
-		_sceneResources->frontScale = sceneS->readUint32LE();
-		_sceneResources->backScale = sceneS->readUint32LE();
-		for (i = 0; i < 16; i++)
-			_sceneResources->depthTable[i] = sceneS->readUint16LE();
-		_sceneResources->railNodeCount = sceneS->readUint32LE();
-
-		// Clear rails from previous scene
-		_vm->_rails->clearRails();
-
-		for (i = 0; i < _sceneResources->railNodeCount; i++) {
-			x = sceneS->readUint32LE();
-			y = sceneS->readUint32LE();
-			if (_vm->_rails->addRailNode(x, y, true) < 0) {
-				warning("Too many rail nodes defined for scene");
-			}
-		}
-
-		// Clear current hotspot lists
-		_sceneResources->hotspots->clear();
-		_sceneResources->parallax->clear();
-		_sceneResources->props->clear();
-
-		_sceneResources->hotspots->loadHotSpots(sceneS, _sceneResources->hotspotCount);
-		_sceneResources->parallax->loadHotSpots(sceneS, _sceneResources->parallaxCount);
-		_sceneResources->props->loadHotSpots(sceneS, _sceneResources->propsCount);
-
-		// Note that toss() deletes the MemoryReadStream
-		_vm->res()->toss(filename);
-	}
-}
-
-void Scene::loadSceneHotSpotsMads(int sceneNumber) {
-	char filename[kM4MaxFilenameSize];
-	sprintf(filename, "rm%i.hh", sceneNumber);
-	MadsPack hotSpotData(filename, _vm);
-	Common::SeekableReadStream *hotspotStream = hotSpotData.getItemStream(0);
-
-	int hotspotCount = hotspotStream->readUint16LE();
-	delete hotspotStream;
-
-	_sceneResources->hotspotCount = hotspotCount;
-
-	hotspotStream = hotSpotData.getItemStream(1);
-
-	// Clear current hotspot lists
-	_sceneResources->hotspots->clear();
-
-	_sceneResources->hotspots->loadHotSpots(hotspotStream, _sceneResources->hotspotCount);
-
-	delete hotspotStream;
-}
-
-void Scene::loadSceneInverseColorTable(int sceneNumber) {
-	char filename[kM4MaxFilenameSize];
-	Common::SeekableReadStream *iplS;
-
-	if (_vm->isM4()) {
-		sprintf(filename, "%i.ipl", sceneNumber);
-		iplS = _vm->res()->openFile(filename);
-		delete[] _inverseColorTable;
-		_inverseColorTable = new byte[iplS->size()];
-		iplS->read(_inverseColorTable, iplS->size());
-		_vm->res()->toss(filename);
-	} else {
-		// TODO?
-		return;
-	}
-
-}
-
 void Scene::loadSceneSpriteCodes(int sceneNumber) {
 	char filename[kM4MaxFilenameSize];
 	sprintf(filename, "%i.ssc", sceneNumber);

Modified: scummvm/trunk/engines/m4/scene.h
===================================================================
--- scummvm/trunk/engines/m4/scene.h	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/scene.h	2010-03-14 05:39:47 UTC (rev 48256)
@@ -80,7 +80,6 @@
 
 class Scene : public View {
 private:
-	byte *_inverseColorTable;
 	HotSpotList _sceneHotspots;
 protected:
 	int _currentScene;
@@ -109,16 +108,12 @@
 
 	// TODO: perhaps move playIntro() someplace else?
 	void playIntro();
-	void loadSceneResources(int sceneNumber);
-	void loadSceneHotSpotsMads(int sceneNumber);
-	void loadSceneInverseColorTable(int sceneNumber);
 	void loadSceneSpriteCodes(int sceneNumber);
 	void showSprites();
 	void showHotSpots();
 	void showCodes();
 	int getCurrentScene() { return _currentScene; }
 	M4Surface *getBackgroundSurface() const { return _backgroundSurface; }
-	byte *getInverseColorTable() const { return _inverseColorTable; }
 	void showInterface();
 	void hideInterface();
 	void showMADSV2TextBox(char *text, int x, int y, char *faceName);

Modified: scummvm/trunk/engines/m4/woodscript.h
===================================================================
--- scummvm/trunk/engines/m4/woodscript.h	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/woodscript.h	2010-03-14 05:39:47 UTC (rev 48256)
@@ -319,8 +319,8 @@
 
 	RGB8 *getMainPalette() const;
 
-	void setInverseColorTable(byte *inverseColorTable) { _inverseColorTable = inverseColorTable; }
-	byte *getInverseColorTable() const { return _inverseColorTable; }
+	void setInverseColourTable(byte *inverseColourTable) { _inverseColourTable = inverseColourTable; }
+	byte *getInverseColourTable() const { return _inverseColourTable; }
 
 protected:
 	MadsM4Engine *_vm;
@@ -338,7 +338,7 @@
 
 	/* Misc */
 	int16 *_depthTable;
-	byte *_inverseColorTable;
+	byte *_inverseColourTable;
 	M4Surface *_backgroundSurface;
 	View *_surfaceView;
 

Modified: scummvm/trunk/engines/m4/ws_sequence.cpp
===================================================================
--- scummvm/trunk/engines/m4/ws_sequence.cpp	2010-03-14 03:40:16 UTC (rev 48255)
+++ scummvm/trunk/engines/m4/ws_sequence.cpp	2010-03-14 05:39:47 UTC (rev 48256)
@@ -289,7 +289,7 @@
 	info.hotX = _curFrame->xOffset;
 	info.hotY = _curFrame->yOffset;
 	info.encoding = _curFrame->encoding;
-	info.inverseColorTable = _vm->_scene->getInverseColorTable();
+	info.inverseColourTable = _m4Vm->scene()->getInverseColourTable();
 	info.palette = _ws->getMainPalette();
 	info.width = _curFrame->width();
 	info.height = _curFrame->height();


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