[Scummvm-cvs-logs] SF.net SVN: scummvm: [31738] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Apr 27 00:22:21 CEST 2008


Revision: 31738
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31738&view=rev
Author:   lordhoto
Date:     2008-04-26 15:22:21 -0700 (Sat, 26 Apr 2008)

Log Message:
-----------
Implemented opcode 129 o3_chapterChange.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_v3.cpp
    scummvm/trunk/engines/kyra/kyra_v3.h
    scummvm/trunk/engines/kyra/script_v3.cpp

Modified: scummvm/trunk/engines/kyra/kyra_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.cpp	2008-04-26 22:13:19 UTC (rev 31737)
+++ scummvm/trunk/engines/kyra/kyra_v3.cpp	2008-04-26 22:22:21 UTC (rev 31738)
@@ -1678,6 +1678,25 @@
 
 #pragma mark -
 
+void KyraEngine_v3::changeChapter(int newChapter, int sceneId, int malcolmShapes, int facing) {
+	debugC(9, kDebugLevelMain, "KyraEngine_v3::changeChapter(%d, %d, %d, %d)", newChapter, sceneId, malcolmShapes, facing);	
+	resetItemList();
+
+	_curChapter = newChapter;
+	runStartupScript(newChapter, 0);
+	_mainCharacter.dlgIndex = 0;
+
+	_malcolmsMood = 1;
+	memset(_newSceneDlgState, 0, sizeof(_newSceneDlgState));
+
+	if (malcolmShapes >= 0)
+		loadMalcolmShapes(malcolmShapes);
+
+	enterNewScene(sceneId, facing, 0, 0, 0);
+}
+
+#pragma mark -
+
 Movie *KyraEngine_v3::createWSAMovie() {
 	WSAMovieV2 *movie = new WSAMovieV2(this, _screen);
 	assert(movie);

Modified: scummvm/trunk/engines/kyra/kyra_v3.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.h	2008-04-26 22:13:19 UTC (rev 31737)
+++ scummvm/trunk/engines/kyra/kyra_v3.h	2008-04-26 22:22:21 UTC (rev 31738)
@@ -662,7 +662,9 @@
 	uint8 *_screenBuffer;
 	uint8 *_paletteOverlay;
 	bool _useActorBuffer;
+
 	int _curChapter;
+	void changeChapter(int newChapter, int sceneId, int malcolmShapes, int facing);
 
 	static const uint8 _chapterLowestScene[];
 
@@ -760,6 +762,7 @@
 	int o3_setDlgIndex(ScriptState *script);
 	int o3_getDlgIndex(ScriptState *script);
 	int o3_defineScene(ScriptState *script);
+	int o3_changeChapter(ScriptState *script);
 	int o3_countItemInstances(ScriptState *script);
 	int o3_dialogStartScript(ScriptState *script);
 	int o3_dialogEndScript(ScriptState *script);

Modified: scummvm/trunk/engines/kyra/script_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v3.cpp	2008-04-26 22:13:19 UTC (rev 31737)
+++ scummvm/trunk/engines/kyra/script_v3.cpp	2008-04-26 22:22:21 UTC (rev 31738)
@@ -1041,6 +1041,12 @@
 	return 0;
 }
 
+int KyraEngine_v3::o3_changeChapter(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_changeChapter(%p) (%d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3));
+	changeChapter(stackPos(0), stackPos(1), stackPos(2), stackPos(3));
+	return 0;
+}
+
 int KyraEngine_v3::o3_countItemInstances(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_countItemInstances(%p) (%d)", (const void *)script, stackPos(0));
 	int count = 0;
@@ -1406,7 +1412,7 @@
 	Opcode(o3_dummy);
 	// 0x80
 	Opcode(o3_dummy);
-	OpcodeUnImpl();
+	Opcode(o3_changeChapter);
 	Opcode(o3_dummy);
 	Opcode(o3_dummy);
 	// 0x84


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