[Scummvm-cvs-logs] SF.net SVN: scummvm:[50975] scummvm/trunk/engines/sci/resource.cpp

mthreepwood at users.sourceforge.net mthreepwood at users.sourceforge.net
Sun Jul 18 03:32:48 CEST 2010


Revision: 50975
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50975&view=rev
Author:   mthreepwood
Date:     2010-07-18 01:32:48 +0000 (Sun, 18 Jul 2010)

Log Message:
-----------
Cleanup and simplify resource type remapping.

Modified Paths:
--------------
    scummvm/trunk/engines/sci/resource.cpp

Modified: scummvm/trunk/engines/sci/resource.cpp
===================================================================
--- scummvm/trunk/engines/sci/resource.cpp	2010-07-18 00:18:27 UTC (rev 50974)
+++ scummvm/trunk/engines/sci/resource.cpp	2010-07-18 01:32:48 UTC (rev 50975)
@@ -133,87 +133,44 @@
 		return "invalid";
 }
 
-struct ResTypeMap {
-	byte sciType;
-	ResourceType type;
+static const ResourceType s_resTypeMapSci0[] = {
+	kResourceTypeView, kResourceTypePic, kResourceTypeScript, kResourceTypeText,          // 0x00-0x03
+	kResourceTypeSound, kResourceTypeMemory, kResourceTypeVocab, kResourceTypeFont,       // 0x04-0x07
+	kResourceTypeCursor, kResourceTypePatch, kResourceTypeBitmap, kResourceTypePalette,   // 0x08-0x0B
+	kResourceTypeCdAudio, kResourceTypeAudio, kResourceTypeSync, kResourceTypeMessage,    // 0x0C-0x0F
+	kResourceTypeMap, kResourceTypeHeap, kResourceTypeAudio36, kResourceTypeSync36,       // 0x10-0x13
+	kResourceTypeTranslation                                                              // 0x14
 };
 
-static const ResTypeMap s_resTypeMapSci0[] = {
-	{ 0, kResourceTypeView },
-	{ 1, kResourceTypePic },
-	{ 2, kResourceTypeScript },
-	{ 3, kResourceTypeText },
-	{ 4, kResourceTypeSound },
-	{ 5, kResourceTypeMemory },
-	{ 6, kResourceTypeVocab },
-	{ 7, kResourceTypeFont },
-	{ 8, kResourceTypeCursor },
-	{ 9, kResourceTypePatch },
-	{ 10, kResourceTypeBitmap },
-	{ 11, kResourceTypePalette },
-	{ 12, kResourceTypeCdAudio },
-	{ 13, kResourceTypeAudio },
-	{ 14, kResourceTypeSync },
-	{ 15, kResourceTypeMessage },
-	{ 16, kResourceTypeMap },
-	{ 17, kResourceTypeHeap },
-	{ 18, kResourceTypeAudio36 },
-	{ 19, kResourceTypeSync36 },
-	{ 20, kResourceTypeTranslation },
-};
-
 #ifdef ENABLE_SCI32
-static const ResTypeMap s_resTypeMapSci21[] = {
-	{ 0, kResourceTypeView },
-	{ 1, kResourceTypePic },
-	{ 2, kResourceTypeScript },
-	{ 3, kResourceTypeText },
-	{ 4, kResourceTypeSound },
-	{ 5, kResourceTypeMemory },
-	{ 6, kResourceTypeVocab },
-	{ 7, kResourceTypeFont },
-	{ 8, kResourceTypeCursor },
-	{ 9, kResourceTypePatch },
-	{ 10, kResourceTypeBitmap },
-	{ 11, kResourceTypePalette },
-	// 12 is Wave, but SCI seems to just store it in Audio resources
-	{ 13, kResourceTypeAudio },
-	{ 14, kResourceTypeSync },
-	{ 15, kResourceTypeMessage },
-	{ 16, kResourceTypeMap },
-	{ 17, kResourceTypeHeap },
-	{ 18, kResourceTypeChunk },
-	{ 19, kResourceTypeAudio36 },
-	{ 20, kResourceTypeSync36 },
-	{ 21, kResourceTypeTranslation },
-	{ 22, kResourceTypeRobot },
-	{ 23, kResourceTypeVMD }
+// TODO: 12 should be "Wave", but SCI seems to just store it in Audio resources
+static const ResourceType s_resTypeMapSci21[] = {
+	kResourceTypeView, kResourceTypePic, kResourceTypeScript, kResourceTypeText,          // 0x00-0x03
+	kResourceTypeSound, kResourceTypeMemory, kResourceTypeVocab, kResourceTypeFont,       // 0x04-0x07
+	kResourceTypeCursor, kResourceTypePatch, kResourceTypeBitmap, kResourceTypePalette,   // 0x08-0x0B
+	kResourceTypeInvalid, kResourceTypeAudio, kResourceTypeSync, kResourceTypeMessage,    // 0x0C-0x0F
+	kResourceTypeMap, kResourceTypeHeap, kResourceTypeChunk, kResourceTypeAudio36,        // 0x10-0x13
+	kResourceTypeSync36, kResourceTypeTranslation, kResourceTypeRobot, kResourceTypeVMD   // 0x14-0x17
 };
 #endif
 
 ResourceType ResourceManager::convertResType(byte type) {
 	type &= 0x7f;
-	uint32 tableSize = 0;
-	const ResTypeMap *map = 0;
 
 	if (_mapVersion != kResVersionSci32) {
 		// SCI0 - SCI2
-		tableSize = ARRAYSIZE(s_resTypeMapSci0);
-		map = s_resTypeMapSci0;
+		if (type < ARRAYSIZE(s_resTypeMapSci0))
+			return s_resTypeMapSci0[type];
 	} else {
 		// SCI2.1+
 #ifdef ENABLE_SCI32
-		tableSize = ARRAYSIZE(s_resTypeMapSci21);
-		map = s_resTypeMapSci21;
+		if (type < ARRAYSIZE(s_resTypeMapSci21))
+			return s_resTypeMapSci21[type];
 #else
 		error("SCI32 support not compiled in");
 #endif
 	}
 
-	for (uint32 i = 0; i < tableSize; i++)
-		if (map[i].sciType == type)
-			return map[i].type;
-
 	return kResourceTypeInvalid;
 }
 


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