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

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sun Aug 27 13:39:20 CEST 2006


Revision: 23781
Author:   dreammaster
Date:     2006-08-27 04:38:55 -0700 (Sun, 27 Aug 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=23781&view=rev

Log Message:
-----------
Added data for room header flags and actions

Modified Paths:
--------------
    scummvm/trunk/engines/lure/res_struct.cpp
    scummvm/trunk/engines/lure/res_struct.h
Modified: scummvm/trunk/engines/lure/res_struct.cpp
===================================================================
--- scummvm/trunk/engines/lure/res_struct.cpp	2006-08-27 11:37:38 UTC (rev 23780)
+++ scummvm/trunk/engines/lure/res_struct.cpp	2006-08-27 11:38:55 UTC (rev 23781)
@@ -33,6 +33,10 @@
 	"Look", "Look at", "Look through", "Ask", NULL, "Drink", "Status",
 	"Go to", "Return", "Bribe", "Examine"};
 
+const Action sortedActions[] = {ASK, BRIBE, BUY, CLOSE, DRINK, EXAMINE, GET, GIVE, 
+	GO_TO, LOCK, LOOK, LOOK_AT, LOOK_THROUGH, OPEN, OPERATE, PULL, PUSH, RETURN, 
+	STATUS, TALK_TO, TELL, UNLOCK, USE, NONE};
+
 int actionNumParams[NPC_JUMP_ADDRESS+1] = {0, 
 	1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 0, 1,
 	0, 1, 1, 1, 1, 0, 0, 2, 0, 1, 0, 0, 1, 1, 2, 2, 5, 2, 2, 1};
@@ -41,6 +45,9 @@
 
 RoomData::RoomData(RoomResource *rec, MemoryBlock *pathData) { 
 	roomNumber = FROM_LE_16(rec->roomNumber);
+	hdrFlags = rec->hdrFlags;
+	actions = FROM_LE_32(rec->actions) & 0xfffffff;
+	flags = (FROM_LE_32(rec->actions) >> 24) & 0xf0;
 	descId = FROM_LE_16(rec->descId);
 	sequenceOffset = FROM_LE_16(rec->sequenceOffset);
 	numLayers = FROM_LE_16(rec->numLayers);
@@ -308,7 +315,7 @@
 	pauseCtr = 0;
 	useHotspotId = 0;
 	v2b = 0;
-	v50 = 0;
+	actionHotspotId = 0;
 }
 
 // Hotspot override data
@@ -538,6 +545,7 @@
 		_params[paramCtr] = (uint16) va_arg(u_Arg, int);
 
 	va_end(u_Arg);
+	_numParams = actionNumParams[_action];
 }
 
 CharacterScheduleEntry::CharacterScheduleEntry(CharacterScheduleSet *parentSet, 
@@ -548,17 +556,14 @@
 		error("Invalid action encountered reading NPC schedule");
 
 	_action = (Action) rec->action;
-	for (int index = 0; index < actionNumParams[_action]; ++index) 
+	_numParams = actionNumParams[_action];
+	for (int index = 0; index < _numParams; ++index) 
 		_params[index] = FROM_LE_16(rec->params[index]);
 
 	rec = (CharacterScheduleResource *) ((byte *) rec + 
-		(actionNumParams[_action] + 1) * sizeof(uint16));
+		(_numParams + 1) * sizeof(uint16));
 }
 
-int CharacterScheduleEntry::numParams() { 
-	return actionNumParams[_action]; 
-}
-
 uint16 CharacterScheduleEntry::param(int index) {
 	if ((index < 0) || (index >= numParams()))
 		error("Invalid parameter index %d on handling action %d", index, _action);
@@ -567,6 +572,7 @@
 
 void CharacterScheduleEntry::setDetails(Action theAction, ...) {
 	_action = theAction;
+	_numParams = actionNumParams[_action];
 
 	va_list list;
 	va_start(list, theAction);
@@ -577,6 +583,15 @@
 	va_end(list);
 }
 
+void CharacterScheduleEntry::setDetails2(Action theAction, int numParamEntries, uint16 *paramList) {
+	_action = theAction;
+	_numParams = numParamEntries;
+
+	assert((numParamEntries >= 0) && (numParamEntries < (MAX_TELL_COMMANDS * 3)));
+	for (int paramCtr = 0; paramCtr < numParamEntries; ++paramCtr)
+		_params[paramCtr] = paramList[paramCtr];
+}
+
 CharacterScheduleEntry *CharacterScheduleEntry::next() {
 	if (_parent) {
 		CharacterScheduleSet::iterator i;

Modified: scummvm/trunk/engines/lure/res_struct.h
===================================================================
--- scummvm/trunk/engines/lure/res_struct.h	2006-08-27 11:37:38 UTC (rev 23780)
+++ scummvm/trunk/engines/lure/res_struct.h	2006-08-27 11:38:55 UTC (rev 23781)
@@ -31,6 +31,7 @@
 using namespace Common;
 
 extern const char *actionList[];
+extern const Action sortedActions[];
 
 /*-------------------------------------------------------------------------*/
 /* Structure definitions                                                   */
@@ -115,6 +116,9 @@
 
 struct RoomResource {
 	uint16 roomNumber;
+	uint8 hdrFlags;
+	uint8 unused;
+	uint32 actions;
 	uint16 descId;
 	uint16 numLayers;
 	uint16 layers[4];
@@ -318,6 +322,9 @@
 	RoomData(RoomResource *rec, MemoryBlock *pathData);
 
 	uint16 roomNumber;
+	uint8 hdrFlags;
+	uint8 flags;
+	uint32 actions;
 	uint16 descId;
 	uint16 numLayers;
 	uint16 layers[MAX_NUM_LAYERS];
@@ -427,7 +434,7 @@
 	uint16 useHotspotId;
 	uint16 use2HotspotId;
 	uint16 v2b;
-	uint16 v50;
+	uint16 actionHotspotId;
 
 	void enable() { flags |= 0x80; }
 	void disable() { flags &= 0x7F; }
@@ -583,7 +590,8 @@
 private:
 	CharacterScheduleSet *_parent;
 	Action _action;
-	uint16 _params[MAX_SCHEDULE_ENTRY_PARAMS];
+	uint16 _params[MAX_TELL_COMMANDS * 3];
+	int _numParams;
 public:
 	CharacterScheduleEntry() { _action = NONE; _parent = NULL; }
 	CharacterScheduleEntry(Action theAction, ...);
@@ -591,9 +599,10 @@
 		CharacterScheduleResource *&rec);
 
 	Action action() { return _action; }
-	int numParams();
+	int numParams() { return _numParams; }
 	uint16 param(int index);
 	void setDetails(Action theAction, ...);
+	void setDetails2(Action theAction, int numParamEntries, uint16 *paramList);
 	CharacterScheduleEntry *next();
 	CharacterScheduleSet *parent() { return _parent; }
 	uint16 id();


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