[Scummvm-cvs-logs] SF.net SVN: scummvm:[55325] scummvm/trunk/engines/hugo

strangerke at users.sourceforge.net strangerke at users.sourceforge.net
Wed Jan 19 15:45:19 CET 2011


Revision: 55325
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55325&view=rev
Author:   strangerke
Date:     2011-01-19 14:45:18 +0000 (Wed, 19 Jan 2011)

Log Message:
-----------
HUGO: Add specific decodeString() for H1 Dos

This fixes act3 logic. 
Also move some functions from public to protected.

Modified Paths:
--------------
    scummvm/trunk/engines/hugo/schedule.cpp
    scummvm/trunk/engines/hugo/schedule.h
    scummvm/trunk/engines/hugo/schedule_v1d.cpp
    scummvm/trunk/engines/hugo/schedule_v2d.cpp

Modified: scummvm/trunk/engines/hugo/schedule.cpp
===================================================================
--- scummvm/trunk/engines/hugo/schedule.cpp	2011-01-19 09:03:09 UTC (rev 55324)
+++ scummvm/trunk/engines/hugo/schedule.cpp	2011-01-19 14:45:18 UTC (rev 55325)
@@ -98,19 +98,6 @@
 }
 
 /**
-* Decode a string
-*/
-void Scheduler::decodeString(char *line) {
-	debugC(1, kDebugSchedule, "decodeString(%s)", line);
-
-	static const char *cypher = getCypher();
-
-	for (uint16 i = 0; i < strlen(line); i++)
-		line[i] -= cypher[i % strlen(cypher)];
-	debugC(1, kDebugSchedule, "result : %s", line);
-}
-
-/**
 * Return system time in ticks.  A tick is 1/TICKS_PER_SEC mS
 */
 uint32 Scheduler::getWinTicks() {

Modified: scummvm/trunk/engines/hugo/schedule.h
===================================================================
--- scummvm/trunk/engines/hugo/schedule.h	2011-01-19 09:03:09 UTC (rev 55324)
+++ scummvm/trunk/engines/hugo/schedule.h	2011-01-19 14:45:18 UTC (rev 55325)
@@ -53,11 +53,9 @@
 	Scheduler(HugoEngine *vm);
 	virtual ~Scheduler();
 
-	virtual uint32 getTicks() = 0;
-
+	virtual void decodeString(char *line) = 0;
 	virtual void runScheduler() = 0;
 
-	void decodeString(char *line);
 	void freeActListArr();
 	void initEventQueue();
 	void insertActionList(uint16 actIndex);
@@ -85,6 +83,9 @@
 	act    **_actListArr;
 
 	virtual const char *getCypher() = 0;
+
+	virtual uint32 getTicks() = 0;
+
 	virtual void delEventType(action_t actTypeDel) = 0;
 	virtual void delQueue(event_t *curEvent) = 0;
 	virtual void promptAction(act *action) = 0;
@@ -103,11 +104,14 @@
 	Scheduler_v1d(HugoEngine *vm);
 	~Scheduler_v1d();
 
+	virtual void decodeString(char *line);
+	virtual void runScheduler();
+
+protected:
 	virtual const char *getCypher();
+
 	virtual uint32 getTicks();
-	virtual void runScheduler();
 
-protected:
 	virtual void delEventType(action_t actTypeDel);
 	virtual void delQueue(event_t *curEvent);
 	virtual void promptAction(act *action);
@@ -118,9 +122,11 @@
 	Scheduler_v2d(HugoEngine *vm);
 	virtual ~Scheduler_v2d();
 
-	virtual const char *getCypher();
+	void decodeString(char *line);
 
 protected:
+	virtual const char *getCypher();
+	
 	void delEventType(action_t actTypeDel);
 	void delQueue(event_t *curEvent);
 	void promptAction(act *action);
@@ -131,6 +137,7 @@
 	Scheduler_v3d(HugoEngine *vm);
 	~Scheduler_v3d();
 
+protected:
 	const char *getCypher();
 };
 
@@ -139,9 +146,11 @@
 	Scheduler_v1w(HugoEngine *vm);
 	~Scheduler_v1w();
 
+	void runScheduler();
+
+protected:
 	uint32 getTicks();
 
-	void runScheduler();
 };
 } // End of namespace Hugo
 #endif //HUGO_SCHEDULE_H

Modified: scummvm/trunk/engines/hugo/schedule_v1d.cpp
===================================================================
--- scummvm/trunk/engines/hugo/schedule_v1d.cpp	2011-01-19 09:03:09 UTC (rev 55324)
+++ scummvm/trunk/engines/hugo/schedule_v1d.cpp	2011-01-19 14:45:18 UTC (rev 55325)
@@ -107,18 +107,20 @@
 
 void Scheduler_v1d::promptAction(act *action) {
 	Utils::Box(BOX_PROMPT, "%s", _vm->_file->fetchString(action->a3.promptIndex));
+
+	warning("STUB: doAction(act3)");
+	// TODO: The answer of the player is not handled currently! Once it'll be read in the messageBox, uncomment this block
+#if 0
 	char response[256];
-	strcpy(response, _vm->_file->fetchString(action->a3.responsePtr[0]));
+	// TODO: Put user input in response
+
+	Utils::strlwr(response);
 	if (action->a3.encodedFl) {
 		warning("Encrypted flag set");
 		decodeString(response);
 	}
 
-	warning("STUB: doAction(act3), expecting answer %s", response);
-
-	// TODO: The answer of the player is not handled currently! Once it'll be read in the messageBox, uncomment this block
-#if 0
-	if (strstr (response, action->a3.response))
+	if (strstr(response, _vm->_file->fetchString(action->a3.responsePtr[0]))
 		insertActionList(action->a3.actPassIndex);
 	else
 		insertActionList(action->a3.actFailIndex);
@@ -127,4 +129,19 @@
 	// HACK: As the answer is not read, currently it's always considered correct
 	insertActionList(action->a3.actPassIndex);
 }
+
+/**
+* Decode a response to a prompt
+*/
+void Scheduler_v1d::decodeString(char *line) {
+	debugC(1, kDebugSchedule, "decodeString(%s)", line);
+
+	static const char *cypher = getCypher();
+
+	for(uint16 i = 0; i < strlen(line); i++) {
+		line[i] = (line[i] + cypher[i]) % '~';
+		if (line[i] < ' ')
+			line[i] += ' ';
+	}
+}
 } // End of namespace Hugo

Modified: scummvm/trunk/engines/hugo/schedule_v2d.cpp
===================================================================
--- scummvm/trunk/engines/hugo/schedule_v2d.cpp	2011-01-19 09:03:09 UTC (rev 55324)
+++ scummvm/trunk/engines/hugo/schedule_v2d.cpp	2011-01-19 14:45:18 UTC (rev 55325)
@@ -126,4 +126,17 @@
 	// HACK: As the answer is not read, currently it's always considered correct
 	insertActionList(action->a3.actPassIndex);
 }
+
+/**
+* Decode a string
+*/
+void Scheduler_v2d::decodeString(char *line) {
+	debugC(1, kDebugSchedule, "decodeString(%s)", line);
+
+	static const char *cypher = getCypher();
+
+	for (uint16 i = 0; i < strlen(line); i++)
+		line[i] -= cypher[i % strlen(cypher)];
+	debugC(1, kDebugSchedule, "result : %s", line);
+}
 } // End of namespace Hugo


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