[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