[Scummvm-cvs-logs] SF.net SVN: scummvm: [30840] scummvm/trunk/engines/parallaction

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Sat Feb 9 23:07:51 CET 2008


Revision: 30840
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30840&view=rev
Author:   peres001
Date:     2008-02-09 14:07:51 -0800 (Sat, 09 Feb 2008)

Log Message:
-----------
Added new debug command to dump scripts execution status.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/debug.cpp
    scummvm/trunk/engines/parallaction/debug.h
    scummvm/trunk/engines/parallaction/exec_br.cpp
    scummvm/trunk/engines/parallaction/exec_ns.cpp
    scummvm/trunk/engines/parallaction/objects.cpp
    scummvm/trunk/engines/parallaction/objects.h

Modified: scummvm/trunk/engines/parallaction/debug.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/debug.cpp	2008-02-09 16:27:49 UTC (rev 30839)
+++ scummvm/trunk/engines/parallaction/debug.cpp	2008-02-09 22:07:51 UTC (rev 30840)
@@ -46,6 +46,7 @@
 	DCmd_Register("locations",	WRAP_METHOD(Debugger, Cmd_Locations));
 	DCmd_Register("gfxobjects",	WRAP_METHOD(Debugger, Cmd_GfxObjects));
 	DCmd_Register("set", 		WRAP_METHOD(Debugger, Cmd_Set));
+	DCmd_Register("programs", 	WRAP_METHOD(Debugger, Cmd_Programs));
 
 }
 
@@ -216,4 +217,25 @@
 	return true;
 }
 
+bool Debugger::Cmd_Programs(int argc, const char** argv) {
+
+	ProgramList::iterator b = _vm->_programs.begin();
+	ProgramList::iterator e = _vm->_programs.end();
+
+	const char *status[] = { "idle", "running", "completed" };
+
+	int i = 1;
+
+	DebugPrintf("+---+--------------------+----------+\n"
+				"| # | bound animation    |  status  |\n"
+				"+---+--------------------+----------+\n");
+	for ( ; b != e; b++, i++) {
+		Program *p = *b;
+		DebugPrintf("|%3i|%-20s|%-10s|\n", i, p->_anim->_name, status[p->_status] );
+	}
+	DebugPrintf("+---+--------------------+---------+\n");
+
+	return true;
+}
+
 } // namespace Parallaction

Modified: scummvm/trunk/engines/parallaction/debug.h
===================================================================
--- scummvm/trunk/engines/parallaction/debug.h	2008-02-09 16:27:49 UTC (rev 30839)
+++ scummvm/trunk/engines/parallaction/debug.h	2008-02-09 22:07:51 UTC (rev 30840)
@@ -30,6 +30,7 @@
 	bool Cmd_GfxObjects(int argc, const char **argv);
 	bool Cmd_GfxFeature(int argc, const char** argv);
 	bool Cmd_Set(int argc, const char** argv);
+	bool Cmd_Programs(int argc, const char** argv);
 };
 
 } // End of namespace Parallaction

Modified: scummvm/trunk/engines/parallaction/exec_br.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/exec_br.cpp	2008-02-09 16:27:49 UTC (rev 30839)
+++ scummvm/trunk/engines/parallaction/exec_br.cpp	2008-02-09 22:07:51 UTC (rev 30840)
@@ -489,6 +489,7 @@
 	if ((_instRunCtxt.anim->_flags & kFlagsLooping) == 0) {
 		_instRunCtxt.anim->_flags &= ~kFlagsActing;
 		runCommands(_instRunCtxt.anim->_commands, _instRunCtxt.anim);
+		_instRunCtxt.program->_status = kProgramDone;
 	}
 	_instRunCtxt.program->_ip = _instRunCtxt.program->_instructions.begin();
 

Modified: scummvm/trunk/engines/parallaction/exec_ns.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/exec_ns.cpp	2008-02-09 16:27:49 UTC (rev 30839)
+++ scummvm/trunk/engines/parallaction/exec_ns.cpp	2008-02-09 22:07:51 UTC (rev 30840)
@@ -180,6 +180,7 @@
 	if ((_instRunCtxt.anim->_flags & kFlagsLooping) == 0) {
 		_instRunCtxt.anim->_flags &= ~kFlagsActing;
 		runCommands(_instRunCtxt.anim->_commands, _instRunCtxt.anim);
+		_instRunCtxt.program->_status = kProgramDone;
 	}
 	_instRunCtxt.program->_ip = _instRunCtxt.program->_instructions.begin();
 
@@ -386,6 +387,8 @@
 		InstructionList::iterator inst = (*it)->_ip;
 		while (((*inst)->_index != INST_SHOW) && (a->_flags & kFlagsActing)) {
 
+			(*it)->_status = kProgramRunning;
+
 			debugC(9, kDebugExec, "Animation: %s, instruction: %s", a->_name, _instructionNamesRes[(*inst)->_index - 1]);
 
 			_instRunCtxt.inst = inst;

Modified: scummvm/trunk/engines/parallaction/objects.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/objects.cpp	2008-02-09 16:27:49 UTC (rev 30839)
+++ scummvm/trunk/engines/parallaction/objects.cpp	2008-02-09 22:07:51 UTC (rev 30840)
@@ -85,6 +85,7 @@
 	_loopCounter = 0;
 	_locals = new LocalVariable[NUM_LOCALS];
 	_numLocals = 0;
+	_status = kProgramIdle;
 }
 
 Program::~Program() {

Modified: scummvm/trunk/engines/parallaction/objects.h
===================================================================
--- scummvm/trunk/engines/parallaction/objects.h	2008-02-09 16:27:49 UTC (rev 30839)
+++ scummvm/trunk/engines/parallaction/objects.h	2008-02-09 22:07:51 UTC (rev 30840)
@@ -363,6 +363,11 @@
 
 };
 
+enum {
+	kProgramIdle,		// awaiting execution
+	kProgramRunning,	// running
+	kProgramDone		// execution completed
+};
 
 struct Program {
 	Animation		*_anim;
@@ -377,6 +382,8 @@
 	InstructionList::iterator	_loopStart;
 	InstructionList				_instructions;
 
+	uint32	_status;
+
 	Program();
 	~Program();
 


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