[Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.161,1.162 game.cpp,1.90,1.91 interface.h,1.67,1.68 resnames.h,1.34,1.35 rscfile.cpp,1.30,1.31 rscfile.h,1.16,1.17 saga.cpp,1.124,1.125 scene.cpp,1.135,1.136 scene.h,1.68,1.69 script.h,1.100,1.101

Eugene Sandulenko sev at users.sourceforge.net
Fri Aug 5 16:15:20 CEST 2005


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10239

Modified Files:
	actor.cpp game.cpp interface.h resnames.h rscfile.cpp 
	rscfile.h saga.cpp scene.cpp scene.h script.h 
Log Message:
o Some cleanup
o Fix warnings
o Implemented IHNM changeChapter()
o WIP for metaResources


Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/actor.cpp,v
retrieving revision 1.161
retrieving revision 1.162
diff -u -d -r1.161 -r1.162
--- actor.cpp	29 Jul 2005 17:57:40 -0000	1.161
+++ actor.cpp	5 Aug 2005 23:14:09 -0000	1.162
@@ -577,7 +577,8 @@
 			if (actor->flags & kProtagonist) {
 				actor->finalTarget = actor->location;
 				_centerActor = _protagonist = actor;
-			} else if (_vm->_scene->currentSceneResourceId() == RID_ITE_OVERMAP_SCENE) {
+			} else if (_vm->getGameType() == GType_ITE && 
+					   _vm->_scene->currentSceneResourceId() == RID_ITE_OVERMAP_SCENE) {
 				continue;
 			}
 

Index: game.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/game.cpp,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -d -r1.90 -r1.91
--- game.cpp	4 Aug 2005 12:11:56 -0000	1.90
+++ game.cpp	5 Aug 2005 23:14:09 -0000	1.91
@@ -325,16 +325,7 @@
 	{"music.rsc", GAME_MUSICFILE}
 };
 
-// Inherit the Earth - Mac Dreamers version
 static GameFileDescription ITEMACCD_G_GameFiles[] = {
-	{"ITE Resources", GAME_RESOURCEFILE},
-	{"ITE Scripts", GAME_SCRIPTFILE},
-	{"ITE Sounds", GAME_SOUNDFILE},
-	{"ITE Music", GAME_MUSICFILE_GM},
-	{"ITE Voices", GAME_VOICEFILE}
-};
-
-static GameFileDescription ITEMACCD2_G_GameFiles[] = {
 	{"ITE Resources.bin", GAME_RESOURCEFILE | GAME_MACBINARY},
 	{"ITE Scripts.bin", GAME_SCRIPTFILE | GAME_MACBINARY},
 	{"ITE Sounds.bin", GAME_SOUNDFILE | GAME_MACBINARY},
@@ -869,8 +860,8 @@
 		&ITE_DisplayInfo,
 		ITE_DEFAULT_SCENE,
 		&ITE_Resources,
-		ARRAYSIZE(ITEMACCD2_G_GameFiles),
-		ITEMACCD2_G_GameFiles,
+		ARRAYSIZE(ITEMACCD_G_GameFiles),
+		ITEMACCD_G_GameFiles,
 		ARRAYSIZE(ITEWINDEMO_GameFonts),
 		ITEWINDEMO_GameFonts,
 		&ITEMACCD_G_GameSound,

Index: interface.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.h,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -d -r1.67 -r1.68
--- interface.h	30 Jul 2005 21:11:21 -0000	1.67
+++ interface.h	5 Aug 2005 23:14:10 -0000	1.68
@@ -69,7 +69,8 @@
 	kPanelProtect,
 	kPanelPlacard,
 	kPanelMap,
-	kPanelSceneSubstitute
+	kPanelSceneSubstitute,
+	kPanelUnknown
 //	kPanelInventory
 };
 

Index: resnames.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/resnames.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- resnames.h	4 Aug 2005 10:48:54 -0000	1.34
+++ resnames.h	5 Aug 2005 23:14:10 -0000	1.35
@@ -42,7 +42,9 @@
 
 //obj names
 #define ITE_OBJ_MAP 14
-#define ITE_MAGIC_HAT 0
+#define ITE_OBJ_MAGIC_HAT 0
+
+#define IHNM_OBJ_PROFILE 0x4000
 
 //actor names
 #define ITE_ACTOR_PUZZLE 176

Index: rscfile.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/rscfile.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- rscfile.cpp	4 Aug 2005 10:23:49 -0000	1.30
+++ rscfile.cpp	5 Aug 2005 23:14:10 -0000	1.31
@@ -421,4 +421,48 @@
 	}
 }
 
+static int metaResourceTable[] = { 0, 326, 517, 677, 805, 968, 1165, 0, 1271 };
+
+void Resource::loadGlobalResources(int chapter, int actorsEntrance) {
+	// TODO
+	//if (module.voiceLUT)
+	//	free module.voiceLUT;
+
+	// TODO: close chapeter context, or rather reassign it in our case
+
+	ResourceContext *resourceContext;
+
+	resourceContext = _vm->_resource->getContext(GAME_RESOURCEFILE);
+	if (resourceContext == NULL) {
+		error("Resource::loadGlobalResources() resource context not found");
+	}
+
+	byte *resourcePointer;
+	size_t resourceLength;
+
+	_vm->_resource->loadResource(resourceContext, metaResourceTable[chapter],
+								 resourcePointer, resourceLength);
+
+	MemoryReadStream metaS(resourcePointer, resourceLength);
+
+	_metaResource.sceneIndex = metaS.readSint16LE();
+	_metaResource.obectCount = metaS.readSint16LE();
+	_metaResource.field_4 = metaS.readSint32LE();
+	_metaResource.field_8 = metaS.readSint32LE();
+	_metaResource.mainSpritesID = metaS.readSint32LE();
+	_metaResource.objectResourceID = metaS.readSint32LE();
+	_metaResource.actorCount = metaS.readSint16LE();
+	_metaResource.field_16 = metaS.readSint32LE();
+	_metaResource.actorsResourceID = metaS.readSint32LE();
+	_metaResource.protagFaceSpritesID = metaS.readSint32LE();
+	_metaResource.field_22 = metaS.readSint32LE();
+	_metaResource.field_26 = metaS.readSint16LE();
+	_metaResource.field_28 = metaS.readSint16LE();
+	_metaResource.field_2a = metaS.readSint32LE();
+	_metaResource.cutawayListResourceID = metaS.readSint32LE();
+	_metaResource.songTableID = metaS.readSint32LE();
+
+	free(resourcePointer);
+}
+
 } // End of namespace Saga

Index: rscfile.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/rscfile.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- rscfile.h	4 Aug 2005 10:23:49 -0000	1.16
+++ rscfile.h	5 Aug 2005 23:14:11 -0000	1.17
@@ -89,6 +89,29 @@
 	}
 };
 
+struct MetaResource {
+	int16 sceneIndex;
+	int16 obectCount;
+	int32 field_4;
+	int32 field_8;
+	int32 mainSpritesID;
+	int32 objectResourceID;
+	int16 actorCount;
+	int32 field_16;
+	int32 actorsResourceID;
+	int32 protagFaceSpritesID;
+	int32 field_22;
+	int16 field_26;
+	int16 field_28;
+	int32 field_2a;
+	int32 cutawayListResourceID;
+	int32 songTableID;
+
+	MetaResource() {
+		memset(this, 0, sizeof(*this));
+	}
+};
+
 class Resource {
 public:
 	Resource(SagaEngine *vm);
@@ -99,6 +122,8 @@
 	size_t getResourceSize(ResourceContext *context, uint32 resourceId);
 	uint32 convertResourceId(uint32 resourceId);
 
+	void loadGlobalResources(int chapter, int actorsEntrance);
+
 	ResourceContext *getContext(uint16 fileType, int serial = 0) {
 		int i;
 		for (i = 0; i < _contextsCount; i++) {
@@ -137,6 +162,7 @@
 	bool loadMacContext(ResourceContext *context);
 	bool loadSagaContext(ResourceContext *context, uint32 contextOffset, uint32 contextSize);
 
+	MetaResource _metaResource;
 };
 
 } // End of namespace Saga

Index: saga.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/saga.cpp,v
retrieving revision 1.124
retrieving revision 1.125
diff -u -d -r1.124 -r1.125
--- saga.cpp	4 Aug 2005 10:48:54 -0000	1.124
+++ saga.cpp	5 Aug 2005 23:14:11 -0000	1.125
@@ -300,7 +300,7 @@
 		_scene->changeScene(ConfMan.getInt("start_scene"), 0, kTransitionNoFade);
 	} else if (ConfMan.hasKey("boot_param")) {
 		if (getGameType() == GType_ITE)
-			_interface->addToInventory(_actor->objIndexToId(ITE_MAGIC_HAT));
+			_interface->addToInventory(_actor->objIndexToId(ITE_OBJ_MAGIC_HAT));
 		_scene->changeScene(ConfMan.getInt("boot_param"), 0, kTransitionNoFade);
 	} else if (ConfMan.hasKey("save_slot")) {
 		// First scene sets up palette

Index: scene.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.cpp,v
retrieving revision 1.135
retrieving revision 1.136
diff -u -d -r1.135 -r1.136
--- scene.cpp	4 Aug 2005 14:49:03 -0000	1.135
+++ scene.cpp	5 Aug 2005 23:14:11 -0000	1.136
@@ -472,6 +472,38 @@
 	loadScene(&sceneParams);
 }
 
+void Scene::changeChapter(int chapter, int16 sceneNumber, int actorsEntrance) {
+	if (chapter == 6)
+		_vm->_interface->setLeftPortrait(0);
+
+	freeCutawayList();
+	_vm->_script->freeModules();
+	// deleteAllScenes();
+
+	// installSomeAlarm()
+
+	_vm->_interface->clearInventory();
+	_vm->_resource->loadGlobalResources(chapter, actorsEntrance);
+	_vm->_interface->addToInventory(IHNM_OBJ_PROFILE);
+	_vm->_interface->activate();
+	
+	if (chapter == 8 || chapter == -1)
+		_vm->_interface->setMode(kPanelUnknown);
+	else
+		_vm->_interface->setMode(kPanelMain);
+
+	_vm->_script->setVerb(kVerbIHNMWalkTo);
+
+	if (sceneNumber != -2)
+		changeScene(sceneNumber, actorsEntrance, kTransitionFade);
+}
+
+void Scene::freeCutawayList() {
+	// TODO
+	// It has to be in different class
+	warning("STUB: freeCutawayList()");
+}
+
 void Scene::getSlopes(int &beginSlope, int &endSlope) {
 	beginSlope = _vm->getSceneHeight() - _sceneDescription.beginSlope;
 	endSlope = _vm->getSceneHeight() - _sceneDescription.endSlope;
@@ -675,7 +707,7 @@
 
 	q_event = _vm->_events->chain(q_event, &event);
 
-	if (loadSceneParams->transitionType == kTransitionFade ) {
+	if (loadSceneParams->transitionType == kTransitionFade) {
 
 		_vm->_interface->setFadeMode(kFadeOut);
 

Index: scene.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.h,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -d -r1.68 -r1.69
--- scene.h	31 Jul 2005 12:03:03 -0000	1.68
+++ scene.h	5 Aug 2005 23:14:11 -0000	1.69
@@ -249,6 +249,8 @@
 		_sceneQueue.clear();
 	}
 	void changeScene(uint16 sceneNumber, int actorsEntrance, SceneTransitionType transitionType);
+	void changeChapter(int chapter, int16 sceneNumber, int actorsEntrance);
+	void freeCutawayList();
 
 	bool isSceneLoaded() const { return _sceneLoaded; }
 

Index: script.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/script.h,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -d -r1.100 -r1.101
--- script.h	30 Jul 2005 21:11:21 -0000	1.100
+++ script.h	5 Aug 2005 23:14:11 -0000	1.101
@@ -72,6 +72,16 @@
 	kVerbWalkOnly = 13,
 	kVerbLookOnly = 14,
 
+	kVerbIHNMNone = 0,
+	kVerbIHNMWalkTo = 1,
+	kVerbIHNMLookAt = 2,
+	kVerbIHNMTake = 3,
+	kVerbIHNMUse = 4,
+	kVerbIHNMTalkTo = 5,
+	kVerbIHNMSwallow = 6,
+	kVerbIHNMGive = 7,
+	kVerbIHNMPush = 8,
+
 	kVerbTypesMax = kVerbLookOnly + 1
 };
 





More information about the Scummvm-git-logs mailing list