[Scummvm-cvs-logs] CVS: scummvm/saga ihnm_introproc.cpp,1.45,1.46 scene.cpp,1.124,1.125 scene.h,1.65,1.66

Andrew Kurushin h00ligan at users.sourceforge.net
Mon Jul 25 10:36:02 CEST 2005


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

Modified Files:
	ihnm_introproc.cpp scene.cpp scene.h 
Log Message:
resolve scene resources without shift hack

Index: ihnm_introproc.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/ihnm_introproc.cpp,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- ihnm_introproc.cpp	19 Jul 2005 19:05:44 -0000	1.45
+++ ihnm_introproc.cpp	25 Jul 2005 17:35:29 -0000	1.46
@@ -36,8 +36,8 @@
 namespace Saga {
 
 SceneResourceData IHNM_IntroMovie1RL[] = {
-	{30, SAGA_BG_IMAGE, 0, 0, false} ,
-	{31, SAGA_ANIM_1, 0, 0, false}
+	{30, 2, 0, 0, false} ,
+	{31, 14, 0, 0, false}
 };
 
 SceneDescription IHNM_IntroMovie1Desc = {
@@ -47,8 +47,8 @@
 };
 
 SceneResourceData IHNM_IntroMovie2RL[] = {
-	{32, SAGA_BG_IMAGE, 0, 0, false} ,
-	{33, SAGA_ANIM_1, 0, 0, false}
+	{32, 2, 0, 0, false} ,
+	{33, 14, 0, 0, false}
 };
 
 SceneDescription IHNM_IntroMovie2Desc = {
@@ -58,8 +58,8 @@
 };
 
 SceneResourceData IHNM_IntroMovie3RL[] = {
-	{34, SAGA_BG_IMAGE, 0, 0, false},
-	{35, SAGA_ANIM_1, 0, 0, false}
+	{34, 2, 0, 0, false},
+	{35, 14, 0, 0, false}
 };
 
 SceneDescription IHNM_IntroMovie3Desc = {
@@ -69,8 +69,8 @@
 };
 
 SceneResourceData IHNM_IntroMovie4RL[] = {
-	{1227, SAGA_BG_IMAGE, 0, 0, false},
-	{1226, SAGA_ANIM_1, 0, 0, false}
+	{1227, 2, 0, 0, false},
+	{1226, 14, 0, 0, false}
 };
 
 SceneDescription IHNM_IntroMovie4Desc = {

Index: scene.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.cpp,v
retrieving revision 1.124
retrieving revision 1.125
diff -u -d -r1.124 -r1.125
--- scene.cpp	25 Jul 2005 02:38:43 -0000	1.124
+++ scene.cpp	25 Jul 2005 17:35:35 -0000	1.125
@@ -47,7 +47,67 @@
 namespace Saga {
 
 static int initSceneDoors[SCENE_DOORS_MAX] = {
-0, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 
+	0, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 
+};
+
+static SAGAResourceTypes ITESceneResourceTypes[26] = {
+	SAGA_ACTOR,
+	SAGA_OBJECT,
+	SAGA_BG_IMAGE,
+	SAGA_BG_MASK,
+SAGA_UNKNOWN,
+	SAGA_STRINGS,
+	SAGA_OBJECT_MAP,
+	SAGA_ACTION_MAP,
+	SAGA_ISO_IMAGES,
+	SAGA_ISO_MAP,
+	SAGA_ISO_PLATFORMS,
+	SAGA_ISO_METATILES,
+	SAGA_ENTRY,
+SAGA_UNKNOWN,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ISO_MULTI,
+	SAGA_PAL_ANIM,
+	SAGA_FACES,
+	SAGA_PALETTE
+};
+
+static SAGAResourceTypes IHNMSceneResourceTypes[28] = {
+	SAGA_ACTOR,
+SAGA_UNKNOWN,
+	SAGA_BG_IMAGE,
+	SAGA_BG_MASK,
+SAGA_UNKNOWN,
+	SAGA_STRINGS,
+	SAGA_OBJECT_MAP,
+	SAGA_ACTION_MAP,
+	SAGA_ISO_IMAGES,
+	SAGA_ISO_MAP,
+	SAGA_ISO_PLATFORMS,
+	SAGA_ISO_METATILES,
+	SAGA_ENTRY,
+SAGA_UNKNOWN,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ANIM,
+	SAGA_ISO_MULTI,
+	SAGA_PAL_ANIM,
+	SAGA_FACES,
+	SAGA_PALETTE
 };
 
 Scene::Scene(SagaEngine *vm) : _vm(vm) {
@@ -688,7 +748,17 @@
 	size_t resourceDataLength;
 	const byte *palPointer;
 	size_t i;
-	int resType;
+	SAGAResourceTypes *types;
+	int typesCount;
+	SAGAResourceTypes resType;
+
+	if (_vm->getGameType() == GType_IHNM) {
+		typesCount = ARRAYSIZE(IHNMSceneResourceTypes);
+		types = IHNMSceneResourceTypes;
+	} else {
+		typesCount = ARRAYSIZE(ITESceneResourceTypes);
+		types = ITESceneResourceTypes;
+	}
 
 	// Process the scene resource list
 	for (i = 0; i < _resourceListCount; i++) {
@@ -698,17 +768,16 @@
 		resourceData = _resourceList[i].buffer;
 		resourceDataLength = _resourceList[i].size;
 		
-		resType = _resourceList[i].resourceType;
-
-		if (_vm->getGameType() == GType_IHNM) {
-			// IHNM has more animation slots and so resource numbers are shifted
-			// We use this trick to avoid code duplication.
-			// SAGA_ANIM_X code is correctly dependent on _resourceList[i].resourceType
-			if (resType > SAGA_ANIM_7)
-				resType -= 3;
+		if (_resourceList[i].resourceType >= typesCount) {
+			error("Scene::processSceneResources() wrong resource type %i", _resourceList[i].resourceType);
 		}
 
+		resType = types[_resourceList[i].resourceType];
+
 		switch (resType) {
+		case SAGA_UNKNOWN:
+			warning("UNKNOWN resourceType %i", _resourceList[i].resourceType);
+			break;
 		case SAGA_ACTOR:
 			//for (a = actorsInScene; a; a = a->nextInScene)
 			//	if (a->obj.figID == glist->file_id)
@@ -807,15 +876,9 @@
 
 			_vm->_isoMap->loadMetaTiles(resourceData, resourceDataLength);
 			break;			
-		case SAGA_ANIM_1:
-		case SAGA_ANIM_2:
-		case SAGA_ANIM_3:
-		case SAGA_ANIM_4:
-		case SAGA_ANIM_5:
-		case SAGA_ANIM_6:
-		case SAGA_ANIM_7:
+		case SAGA_ANIM:
 			{
-				uint16 animId = _resourceList[i].resourceType - SAGA_ANIM_1;
+				uint16 animId = _resourceList[i].resourceType - 14;
 
 				debug(3, "Loading animation resource animId=%i", animId);
 

Index: scene.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/scene.h,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -d -r1.65 -r1.66
--- scene.h	25 Jul 2005 02:38:43 -0000	1.65
+++ scene.h	25 Jul 2005 17:35:35 -0000	1.66
@@ -59,32 +59,24 @@
 
 // Resource type numbers
 enum SAGAResourceTypes {
-	SAGA_ACTOR = 0,
-	SAGA_OBJECT = 1,
-	SAGA_BG_IMAGE = 2,
-	SAGA_BG_MASK = 3,
-	SAGA_STRINGS = 5,
-	SAGA_OBJECT_MAP = 6,
-	SAGA_ACTION_MAP = 7,
-	SAGA_ISO_IMAGES = 8,
-	SAGA_ISO_MAP = 9,
-	SAGA_ISO_PLATFORMS = 10,
-	SAGA_ISO_METATILES = 11,
-	SAGA_ENTRY = 12,
-	SAGA_ANIM_1 = 14,
-	SAGA_ANIM_2,
-	SAGA_ANIM_3,
-	SAGA_ANIM_4,
-	SAGA_ANIM_5,
-	SAGA_ANIM_6,
-	SAGA_ANIM_7,
-	//SAGA_ANIM_8,  // IHNM. We use trick to avoid code duplication
-	//SAGA_ANIM_9,  
-	//SAGA_ANIM_10, 
-	SAGA_ISO_MULTI = 22,
-	SAGA_PAL_ANIM = 23,
-	SAGA_FACES = 24,
-	SAGA_PALETTE = 25
+	SAGA_UNKNOWN,
+	SAGA_ACTOR,
+	SAGA_OBJECT,
+	SAGA_BG_IMAGE,
+	SAGA_BG_MASK,
+	SAGA_STRINGS,
+	SAGA_OBJECT_MAP,
+	SAGA_ACTION_MAP,
+	SAGA_ISO_IMAGES,
+	SAGA_ISO_MAP,
+	SAGA_ISO_PLATFORMS,
+	SAGA_ISO_METATILES,
+	SAGA_ENTRY,
+	SAGA_ANIM,
+	SAGA_ISO_MULTI,
+	SAGA_PAL_ANIM,
+	SAGA_FACES,
+	SAGA_PALETTE
 };
 
 #define SAGA_RESLIST_ENTRY_LEN 4





More information about the Scummvm-git-logs mailing list