[Scummvm-cvs-logs] SF.net SVN: scummvm: [21780] scummvm/trunk/engines/lure

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Tue Apr 11 03:46:04 CEST 2006


Revision: 21780
Author:   dreammaster
Date:     2006-04-11 03:45:22 -0700 (Tue, 11 Apr 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21780&view=rev

Log Message:
-----------
Resource loader enhanced to load hotspot proximity data and room walkable areas

Modified Paths:
--------------
    scummvm/trunk/engines/lure/res.cpp
    scummvm/trunk/engines/lure/res.h
Modified: scummvm/trunk/engines/lure/res.cpp
===================================================================
--- scummvm/trunk/engines/lure/res.cpp	2006-04-11 10:43:53 UTC (rev 21779)
+++ scummvm/trunk/engines/lure/res.cpp	2006-04-11 10:45:22 UTC (rev 21780)
@@ -68,7 +68,7 @@
 
 void Resources::reloadData() {
 	Disk &d = Disk::getReference();
-	MemoryBlock *mb;
+	MemoryBlock *mb, *paths;
 	uint16 *offset, offsetVal;
 	uint16 recordId;
 	int ctr;
@@ -78,13 +78,17 @@
 
 	// Load room data 
 	mb = d.getEntry(ROOM_DATA_RESOURCE_ID);
+	paths = d.getEntry(ROOM_PATHS_RESOURCE_ID);
+
 	offset = (uint16 *) mb->data();
 	for (ctr = 0; READ_LE_UINT16(offset) != 0xffff; ++ctr, ++offset) {
 		offsetVal = READ_LE_UINT16(offset);
+
 		if (offsetVal != 0) {
 			// Get room resource
 			RoomResource *rec = (RoomResource *) (mb->data() + offsetVal);
-			RoomData *newEntry = new RoomData(rec);
+			
+			RoomData *newEntry = new RoomData(rec, paths);
 			_roomData.push_back(newEntry);
 
 			if (rec->numExits > 0) {
@@ -99,6 +103,7 @@
 		}
 	}
 	delete mb;
+	delete paths;
 
 	// Load room exits
 	mb = d.getEntry(ROOM_EXITS_RESOURCE_ID);
@@ -249,6 +254,27 @@
 	}
 	delete mb;
 
+	// Load a list of hotspot proximities
+	mb = d.getEntry(HOTSPOT_PROXIMITY_RESOURCE_ID);
+	HotspotProximityResource *proxRec = (HotspotProximityResource *) mb->data();
+	while (FROM_LE_16(proxRec->hotspotId) != 0xffff) {
+		HotspotProximityData *newEntry = new HotspotProximityData(proxRec);
+		_proximityList.push_back(newEntry);
+		++joinRec;
+		++proxRec;
+	}
+	delete mb;
+
+	// Load in the list of room exit coordinates
+	mb = d.getEntry(EXIT_COORDINATES_RESOURCE_ID);
+	RoomExitCoordinateEntryResource *coordRec = (RoomExitCoordinateEntryResource *) mb->data();	
+	while (*((uint16 *) coordRec) != 0xffff) {
+		RoomExitCoordinates *newEntry = new RoomExitCoordinates(coordRec);
+		_coordinateList.push_back(newEntry);
+		++coordRec;
+	}
+	delete mb;
+
 	// Initialise delay list
 	_delayList.clear();
 

Modified: scummvm/trunk/engines/lure/res.h
===================================================================
--- scummvm/trunk/engines/lure/res.h	2006-04-11 10:43:53 UTC (rev 21779)
+++ scummvm/trunk/engines/lure/res.h	2006-04-11 10:45:22 UTC (rev 21780)
@@ -60,6 +60,8 @@
 	SequenceDelayList _delayList;
 	Action _currentAction;
 	MemoryBlock *_talkDialogData;
+	HotspotProximityList _proximityList;
+	RoomExitCoordinatesList _coordinateList;
 
 	TalkData *_activeTalkData;
 	TalkState _talkState;
@@ -105,6 +107,11 @@
 	ValueTableData &fieldList() { return _fieldList; }
 	SequenceDelayList &delayList() { return _delayList; }
 	MemoryBlock &getTalkDialogData() { return *_talkDialogData; }
+	HotspotProximityList &proximityList() { return _proximityList; }
+	HotspotProximityData *getHotspotProximity(uint16 hotspotId) { 
+		return _proximityList.getHotspot(hotspotId);
+	}
+	RoomExitCoordinatesList &coordinateList() { return _coordinateList; }
 	void copyCursorTo(Surface *s, uint8 cursorNum, int16 x, int16 y);
 
 	uint16 numInventoryItems();


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