[Scummvm-cvs-logs] SF.net SVN: scummvm: [31186] scummvm/trunk/engines/kyra
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Tue Mar 18 20:06:53 CET 2008
Revision: 31186
http://scummvm.svn.sourceforge.net/scummvm/?rev=31186&view=rev
Author: lordhoto
Date: 2008-03-18 12:06:53 -0700 (Tue, 18 Mar 2008)
Log Message:
-----------
Implemented showing of credits after completing game.
Modified Paths:
--------------
scummvm/trunk/engines/kyra/animator_v2.cpp
scummvm/trunk/engines/kyra/kyra_v2.cpp
scummvm/trunk/engines/kyra/kyra_v2.h
scummvm/trunk/engines/kyra/script_v2.cpp
Modified: scummvm/trunk/engines/kyra/animator_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/animator_v2.cpp 2008-03-18 18:20:13 UTC (rev 31185)
+++ scummvm/trunk/engines/kyra/animator_v2.cpp 2008-03-18 19:06:53 UTC (rev 31186)
@@ -62,6 +62,11 @@
}
KyraEngine_v2::AnimObj *KyraEngine_v2::addToAnimListSorted(AnimObj *list, AnimObj *add) {
+ if (!list) {
+ add->nextObject = 0;
+ return add;
+ }
+
if (add->yPos1 <= list->yPos1) {
add->nextObject = list;
return add;
Modified: scummvm/trunk/engines/kyra/kyra_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.cpp 2008-03-18 18:20:13 UTC (rev 31185)
+++ scummvm/trunk/engines/kyra/kyra_v2.cpp 2008-03-18 19:06:53 UTC (rev 31186)
@@ -55,6 +55,8 @@
_demoShapeDefs = 0;
_sequenceSoundList = 0;
+ _showCredits = false;
+
_gamePlayBuffer = 0;
_cCodeBuffer = _optionsBuffer = _chapterBuffer = 0;
@@ -240,7 +242,6 @@
_menuChoice = 4;
} else {
seq_playSequences(kSequenceVirgin, kSequenceZanfaun);
- //seq_playSequences(kSequenceFunters, kSequenceFrash);
}
_res->unloadAllPakFiles();
@@ -260,6 +261,9 @@
startup();
runLoop();
cleanup();
+
+ if (_showCredits)
+ seq_playSequences(kSequenceFunters, kSequenceFrash);
}
return 0;
@@ -387,7 +391,8 @@
_screen->updateScreen();
_quitFlag = false;
- while (!_quitFlag) {
+ _runFlag = true;
+ while (!_quitFlag && _runFlag) {
//if (_deathHandler >= 0) {
// removeHandItem();
// waitTicks(5);
@@ -571,7 +576,8 @@
if (queryGameFlag(0x1ED)) {
_sound->beginFadeOut();
_screen->fadeToBlack();
- _quitFlag = true;
+ _showCredits = true;
+ _runFlag = false;
}
return _sceneScriptState.regs[3] != 0;
Modified: scummvm/trunk/engines/kyra/kyra_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.h 2008-03-18 18:20:13 UTC (rev 31185)
+++ scummvm/trunk/engines/kyra/kyra_v2.h 2008-03-18 19:06:53 UTC (rev 31186)
@@ -300,6 +300,9 @@
void loadItemShapes();
// run
+ bool _runFlag;
+ bool _showCredits;
+
void update();
void updateWithText();
@@ -1035,6 +1038,7 @@
int o2_getRand(ScriptState *script);
int o2_setDeathHandlerFlag(ScriptState *script);
int o2_setDrawNoShapeFlag(ScriptState *script);
+ int o2_setRunFlag(ScriptState *script);
int o2_showLetter(ScriptState *script);
int o2_fillRect(ScriptState *script);
int o2_waitForConfirmationClick(ScriptState *script);
Modified: scummvm/trunk/engines/kyra/script_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v2.cpp 2008-03-18 18:20:13 UTC (rev 31185)
+++ scummvm/trunk/engines/kyra/script_v2.cpp 2008-03-18 19:06:53 UTC (rev 31186)
@@ -240,7 +240,7 @@
_wsaSlots[slot]->setX(x);
_wsaSlots[slot]->setY(y);
_wsaSlots[slot]->setDrawPage(dstPage);
- _wsaSlots[slot]->displayFrame(frame, copyParam | 0xC000);
+ _wsaSlots[slot]->displayFrame(frame, copyParam | 0xC000, 0, 0);
_screen->updateScreen();
if (backUp)
@@ -282,7 +282,7 @@
if (startFrame < endFrame) {
for (int i = startFrame; i <= endFrame && !skipFlag(); ++i) {
uint32 endTime = _system->getMillis() + waitTime * _tickLength;
- _wsaSlots[slot]->displayFrame(i, 0xC000 | copyFlags);
+ _wsaSlots[slot]->displayFrame(i, 0xC000 | copyFlags, 0, 0);
_screen->updateScreen();
do {
@@ -295,7 +295,7 @@
} else {
for (int i = startFrame; i >= endFrame && !skipFlag(); --i) {
uint32 endTime = _system->getMillis() + waitTime * _tickLength;
- _wsaSlots[slot]->displayFrame(i, 0xC000 | copyFlags);
+ _wsaSlots[slot]->displayFrame(i, 0xC000 | copyFlags, 0, 0);
_screen->updateScreen();
do {
@@ -338,7 +338,7 @@
while (currentFrame <= lastFrame && !skipFlag()) {
uint32 endTime = _system->getMillis() + frameDelay;
- _wsaSlots[index]->displayFrame(currentFrame++, copyParam);
+ _wsaSlots[index]->displayFrame(currentFrame++, copyParam, 0, 0);
_screen->updateScreen();
delayUntil(endTime);
}
@@ -368,7 +368,7 @@
while (currentFrame <= lastFrame && !skipFlag()) {
uint32 endTime = _system->getMillis() + frameDelay;
- _wsaSlots[index]->displayFrame(currentFrame++, copyParam);
+ _wsaSlots[index]->displayFrame(currentFrame++, copyParam, 0, 0);
if (doUpdate)
update();
_screen->updateScreen();
@@ -896,6 +896,15 @@
return 0;
}
+int KyraEngine_v2::o2_setRunFlag(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_setRunFlag(%p) (%d)", (const void *)script, stackPos(0));
+ // this is usually just _runFlag, but since this is just used when the game should play the credits
+ // we handle it a bit different :-)
+ _showCredits = true;
+ _runFlag = false;
+ return 0;
+}
+
int KyraEngine_v2::o2_showLetter(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_showLetter(%p) (%d)", (const void *)script, stackPos(0));
const int letter = stackPos(0);
@@ -1782,7 +1791,7 @@
Opcode(o2_setDeathHandlerFlag),
Opcode(o2_setDrawNoShapeFlag),
// 0x64
- OpcodeUnImpl(),
+ Opcode(o2_setRunFlag),
Opcode(o2_showLetter),
OpcodeUnImpl(),
Opcode(o2_fillRect),
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