[Scummvm-cvs-logs] SF.net SVN: scummvm:[44154] scummvm/trunk/engines/sci/engine/ static_selectors.cpp

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Thu Sep 17 15:22:15 CEST 2009


Revision: 44154
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44154&view=rev
Author:   fingolfin
Date:     2009-09-17 13:22:15 +0000 (Thu, 17 Sep 2009)

Log Message:
-----------
SCI: Simplify code in Kernel::checkStaticSelectorNames a bit (don't treat nodePtr & cantBeHere special)

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/static_selectors.cpp

Modified: scummvm/trunk/engines/sci/engine/static_selectors.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/static_selectors.cpp	2009-09-17 13:22:00 UTC (rev 44153)
+++ scummvm/trunk/engines/sci/engine/static_selectors.cpp	2009-09-17 13:22:15 UTC (rev 44154)
@@ -35,9 +35,6 @@
 	uint32 slot;
 };
 
-const int handleIndex = 41;
-const int canBeHereIndex = 54;
-
 static const char * const sci0Selectors[] = {
               "y",          "x",         "view",      "loop",        "cel", //  0 -  4
       "underBits",      "nsTop",       "nsLeft",  "nsBottom",    "nsRight", //  5 -  9
@@ -69,67 +66,63 @@
     {       "caller", 119 }, {          "cue", 121 }, {        "owner", 130 },
 	{    "completed", 159 }, {    "motionCue", 162 }, {       "cycler", 164 },
 	{     "moveDone", 170 }, {     "distance", 173 }, {    "setCursor", 254 },
-	{      "points",  316 }, {        "flags", 368 }
+	{      "points",  316 }, {        "flags", 368 }, {              0,   0 }
 };
 
 // Taken from Leisure Suit Larry 1 VGA (Full Game)
 static const SelectorRemap sci1SelectorRemap[] = {
+	{      "nodePtr",  44 }, {   "cantBeHere",  57 },
 	{        "flags", 102 }, {         "init", 104 }, {      "dispose", 105 },
 	{       "caller", 134 }, {          "cue", 136 }, {        "owner", 150 },
 	{       "setVol", 156 }, {    "setCursor", 183 }, {    "completed", 210 },
 	{       "cycler", 215 }, {     "distance", 224 }, {    "canBeHere", 232 },
-	{     "syncTime", 247 }, {      "syncCue", 248 }
+	{     "syncTime", 247 }, {      "syncCue", 248 }, {              0,   0 }
 };
 
 // Taken from KQ6 floppy (Full Game)
 static const SelectorRemap sci11SelectorRemap[] = {
+	{      "nodePtr",  41 }, {   "cantBeHere",  54 },
 	{        "flags",  99 }, {         "init", 110 }, {      "dispose", 111 },
 	{       "caller", 143 }, {          "cue", 145 }, {        "owner", 166 },
 	{       "setVol", 172 }, {    "setCursor", 197 }, {    "completed", 242 },
 	{       "cycler", 247 }, {     "distance", 256 }, {    "canBeHere", 264 },
-	{     "syncTime", 279 }, {      "syncCue", 280 }
+	{     "syncTime", 279 }, {      "syncCue", 280 }, {              0,   0 }
 };
 
 Common::StringList Kernel::checkStaticSelectorNames(SciVersion version) {
 	Common::StringList names;
-	int offset = (version < SCI_VERSION_1_1) ? 3 : 0;
-	int count = ARRAYSIZE(sci0Selectors) + offset;
-	names.resize(count);
+	const int offset = (version < SCI_VERSION_1_1) ? 3 : 0;
+	const int count = ARRAYSIZE(sci0Selectors) + offset;
 	const SelectorRemap *selectorRemap = sci0SelectorRemap;
-	uint32 selectorRemapSize = 0;
 	int i;
 
+	// Resize the list of selector names and fill in the SCI 0 names.
+	names.resize(count);
 	for (i = 0; i < offset; i++)
 		names[i].clear();
-
 	for (i = offset; i < count; i++)
 		names[i] = sci0Selectors[i - offset];
 
 	if (version <= SCI_VERSION_01) {
 		selectorRemap = sci0SelectorRemap;
-		selectorRemapSize = ARRAYSIZE(sci0SelectorRemap);
 	} else {
+		// Several new selectors were added in SCI 1 and later.
 		int count2 = ARRAYSIZE(sci1Selectors);
-		names[handleIndex + offset] = "nodePtr";
-		names[canBeHereIndex + offset] = "cantBeHere";
 		names.resize(count + count2);
-
 		for (i = count; i < count + count2; i++)
 			names[i] = sci1Selectors[i - count];
 
 		if (version < SCI_VERSION_1_1) {
 			selectorRemap = sci1SelectorRemap;
-			selectorRemapSize = ARRAYSIZE(sci1SelectorRemap);
 		} else {
 			selectorRemap = sci11SelectorRemap;
-			selectorRemapSize = ARRAYSIZE(sci11SelectorRemap);
 		}
 	}
 
-	for (uint32 k = 0; k < selectorRemapSize; k++) {
-		if (selectorRemap[k].slot >= names.size())
-			names.resize(selectorRemap[k].slot + 1);
-		names[selectorRemap[k].slot] = selectorRemap[k].name;
+	for (; selectorRemap->slot; ++selectorRemap) {
+		if (selectorRemap->slot >= names.size())
+			names.resize(selectorRemap->slot + 1);
+		names[selectorRemap->slot] = selectorRemap->name;
 	}
 
 	return names;


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