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

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Tue Jun 3 02:49:28 CEST 2008


Revision: 32509
          http://scummvm.svn.sourceforge.net/scummvm/?rev=32509&view=rev
Author:   peres001
Date:     2008-06-02 17:49:27 -0700 (Mon, 02 Jun 2008)

Log Message:
-----------
Fixed initialization of parsers, necessary after the latest removal of static arrays.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/parallaction.h
    scummvm/trunk/engines/parallaction/parallaction_br.cpp
    scummvm/trunk/engines/parallaction/parallaction_ns.cpp
    scummvm/trunk/engines/parallaction/parser.h

Modified: scummvm/trunk/engines/parallaction/parallaction.h
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.h	2008-06-02 23:09:19 UTC (rev 32508)
+++ scummvm/trunk/engines/parallaction/parallaction.h	2008-06-03 00:49:27 UTC (rev 32509)
@@ -723,6 +723,7 @@
 	const Callable *_callables;
 
 	void parseLocation(const char* name);
+	void loadProgram(AnimationPtr a, const char *filename);
 
 	DECLARE_UNQUALIFIED_COMMAND_OPCODE(location);
 	DECLARE_UNQUALIFIED_COMMAND_OPCODE(open);

Modified: scummvm/trunk/engines/parallaction/parallaction_br.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction_br.cpp	2008-06-02 23:09:19 UTC (rev 32508)
+++ scummvm/trunk/engines/parallaction/parallaction_br.cpp	2008-06-03 00:49:27 UTC (rev 32509)
@@ -74,7 +74,9 @@
 	initCursors();
 	initOpcodes();
 	_locationParser = new LocationParser_br(this);
+	_locationParser->init();
 	_programParser = new ProgramParser_br(this);
+	_programParser->init();
 
 	_part = -1;
 
@@ -258,7 +260,26 @@
 	return;
 }
 
+void Parallaction_br::loadProgram(AnimationPtr a, const char *filename) {
+	debugC(1, kDebugParser, "loadProgram(Animation: %s, script: %s)", a->_name, filename);
 
+	Script *script = _disk->loadScript(filename);
+	ProgramPtr program(new Program);
+	program->_anim = a;
+
+	_programParser->parse(script, program);
+
+	delete script;
+
+	_vm->_location._programs.push_back(program);
+
+	debugC(1, kDebugParser, "loadProgram() done");
+
+	return;
+}
+
+
+
 void Parallaction_br::changeCharacter(const char *name) {
 
 }

Modified: scummvm/trunk/engines/parallaction/parallaction_ns.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction_ns.cpp	2008-06-02 23:09:19 UTC (rev 32508)
+++ scummvm/trunk/engines/parallaction/parallaction_ns.cpp	2008-06-03 00:49:27 UTC (rev 32509)
@@ -137,7 +137,9 @@
 	initCursors();
 	initOpcodes();
 	_locationParser = new LocationParser_ns(this);
+	_locationParser->init();
 	_programParser = new ProgramParser_ns(this);
+	_programParser->init();
 
 	_introSarcData1 = 0;
 	_introSarcData2 = 1;

Modified: scummvm/trunk/engines/parallaction/parser.h
===================================================================
--- scummvm/trunk/engines/parallaction/parser.h	2008-06-02 23:09:19 UTC (rev 32508)
+++ scummvm/trunk/engines/parallaction/parser.h	2008-06-03 00:49:27 UTC (rev 32509)
@@ -207,7 +207,6 @@
 	} _forwardedCommands[MAX_FORWARDS];
 	uint		_numForwardedCommands;
 
-	void init();
 	void clearSet(OpcodeSet &opcodes) {
 		for (Common::Array<const Opcode*>::iterator i = opcodes.begin(); i != opcodes.end(); ++i)
 			delete *i;
@@ -216,9 +215,10 @@
 
 public:
 	LocationParser_ns(Parallaction_ns *vm) : _vm(vm) {
-		init();
 	}
 
+	virtual void init();
+
 	virtual ~LocationParser_ns() {
 		delete _commandsNames;
 		delete _locationStmt;
@@ -282,13 +282,12 @@
 	DECLARE_UNQUALIFIED_ANIM_PARSER(moveto);
 	DECLARE_UNQUALIFIED_ANIM_PARSER(endanimation);
 
-	void init();
-
 public:
 	LocationParser_br(Parallaction_br *vm) : LocationParser_ns((Parallaction_ns*)vm), _vm(vm) {
-		init();
 	}
 
+	virtual void init();
+
 	virtual ~LocationParser_br() {
 		delete _commandsNames;
 		delete _locationStmt;
@@ -343,7 +342,6 @@
 	void		parseLValue(ScriptVar &var, const char *str);
 	virtual void	parseRValue(ScriptVar &var, const char *str);
 
-	void init();
 	void clearSet(OpcodeSet &opcodes) {
 		for (Common::Array<const Opcode*>::iterator i = opcodes.begin(); i != opcodes.end(); ++i)
 			delete *i;
@@ -352,9 +350,10 @@
 
 public:
 	ProgramParser_ns(Parallaction_ns *vm) : _vm(vm) {
-		init();
 	}
 
+	virtual void init();
+
 	virtual ~ProgramParser_ns() {
 		delete _instructionNames;
 		clearSet(_instructionParsers);
@@ -380,13 +379,12 @@
 
 	virtual void parseRValue(ScriptVar &var, const char *str);
 
-	void init();
-
 public:
 	ProgramParser_br(Parallaction_br *vm) : ProgramParser_ns((Parallaction_ns*)vm), _vm(vm) {
-		init();
 	}
 
+	virtual void init();
+
 	virtual ~ProgramParser_br() {
 		delete _instructionNames;
 		delete _parser;


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