[Scummvm-cvs-logs] SF.net SVN: scummvm: [31585] scummvm/trunk/engines/kyra
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Sun Apr 20 02:30:40 CEST 2008
Revision: 31585
http://scummvm.svn.sourceforge.net/scummvm/?rev=31585&view=rev
Author: lordhoto
Date: 2008-04-19 17:30:39 -0700 (Sat, 19 Apr 2008)
Log Message:
-----------
Implemented opcode 49: o3_badConscienceChat.
Modified Paths:
--------------
scummvm/trunk/engines/kyra/animator_v3.cpp
scummvm/trunk/engines/kyra/kyra_v3.h
scummvm/trunk/engines/kyra/script_v3.cpp
scummvm/trunk/engines/kyra/text_v3.cpp
Modified: scummvm/trunk/engines/kyra/animator_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/animator_v3.cpp 2008-04-20 00:11:42 UTC (rev 31584)
+++ scummvm/trunk/engines/kyra/animator_v3.cpp 2008-04-20 00:30:39 UTC (rev 31585)
@@ -380,6 +380,8 @@
void KyraEngine_v3::setupSceneAnimObject(int animId, uint16 flags, int x, int y, int x2, int y2, int w,
int h, int unk10, int specialSize, int unk14, int shape, const char *filename) {
+ debugC(9, kDebugLevelAnimator, "KyraEngine_v3::setupSceneAnimObject(%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, '%s')",
+ animId, flags, x, y, x2, y2, w, h, unk10, specialSize, unk14, shape, filename);
restorePage3();
SceneAnim &anim = _sceneAnims[animId];
anim.flags = flags;
Modified: scummvm/trunk/engines/kyra/kyra_v3.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.h 2008-04-20 00:11:42 UTC (rev 31584)
+++ scummvm/trunk/engines/kyra/kyra_v3.h 2008-04-20 00:30:39 UTC (rev 31585)
@@ -460,6 +460,9 @@
void objectChatProcess(const char *script);
void objectChatWaitToFinish();
+ void badConscienceChat(const char *str, int vocHigh, int vocLow);
+ void badConscienceChatWaitToFinish();
+
// conscience
bool _badConscienceShown;
int _badConscienceAnim;
@@ -520,6 +523,7 @@
int o3_hideMouse(ScriptState *script);
int o3_setMousePos(ScriptState *script);
int o3_showMouse(ScriptState *script);
+ int o3_badConscienceChat(ScriptState *script);
int o3_delay(ScriptState *script);
int o3_setSceneFilename(ScriptState *script);
int o3_playSoundEffect(ScriptState *script);
Modified: scummvm/trunk/engines/kyra/script_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v3.cpp 2008-04-20 00:11:42 UTC (rev 31584)
+++ scummvm/trunk/engines/kyra/script_v3.cpp 2008-04-20 00:30:39 UTC (rev 31585)
@@ -159,6 +159,14 @@
return 0;
}
+int KyraEngine_v3::o3_badConscienceChat(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_badConscienceChat(%p) (%d)", (const void *)script, stackPos(0));
+ int id = stackPos(0);
+ const char *str = (const char*)getTableEntry(_useActorBuffer ? _actorFile : _sceneStrings, id);
+ badConscienceChat(str, _vocHigh, id);
+ return 0;
+}
+
int KyraEngine_v3::o3_delay(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_delay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
const uint32 delayTime = stackPos(0) * _tickLength;
@@ -472,8 +480,8 @@
Opcode(o3_setMousePos),
// 0x30
Opcode(o3_showMouse),
+ Opcode(o3_badConscienceChat),
OpcodeUnImpl(),
- OpcodeUnImpl(),
Opcode(o3_dummy),
// 0x34
OpcodeUnImpl(),
Modified: scummvm/trunk/engines/kyra/text_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/text_v3.cpp 2008-04-20 00:11:42 UTC (rev 31584)
+++ scummvm/trunk/engines/kyra/text_v3.cpp 2008-04-20 00:30:39 UTC (rev 31585)
@@ -364,6 +364,7 @@
const uint32 curTime = _system->getMillis();
if ((textEnabled() && !speechEnabled() && curTime > endTime) || (speechEnabled() && !snd_voiceIsPlaying()) || skipFlag()) {
+ snd_stopVoice();
resetSkipFlag();
nextFrame = curTime;
running = false;
@@ -378,4 +379,63 @@
resetCharacterAnimDim();
}
+void KyraEngine_v3::badConscienceChat(const char *str, int vocHigh, int vocLow) {
+ debugC(9, kDebugLevelMain, "KyraEngine_v3::badConscienceChat('%s', %d, %d)", str, vocHigh, vocLow);
+ if (!_badConscienceShown)
+ return;
+
+ //setNextIdleAnimTimer();
+ _chatVocHigh = _chatVocLow = -1;
+ objectChatInit(str, 1, vocHigh, vocLow);
+ _chatText = str;
+ _chatObject = 1;
+ badConscienceChatWaitToFinish();
+ updateSceneAnim(0x0E, _badConscienceFrameTable[_badConscienceAnim+16]);
+ _text->restoreScreen();
+ update();
+ _chatText = 0;
+ _chatObject = -1;
+}
+
+void KyraEngine_v3::badConscienceChatWaitToFinish() {
+ debugC(9, kDebugLevelMain, "KyraEngine_v3::badConscienceChatWaitToFinish()");
+ if (_chatVocHigh) {
+ playVoice(_chatVocHigh, _chatVocLow);
+ _chatVocHigh = _chatVocLow = -1;
+ }
+
+ bool running = true;
+ const uint32 endTime = _chatEndTime;
+ resetSkipFlag();
+
+ uint32 nextFrame = _system->getMillis() + _rnd.getRandomNumberRng(4, 8) * _tickLength;
+
+ int frame = _badConscienceFrameTable[_badConscienceAnim+24];
+ while (running && !_quitFlag) {
+ if (nextFrame < _system->getMillis()) {
+ ++frame;
+ if (_badConscienceFrameTable[_badConscienceAnim+32] < frame)
+ frame = _badConscienceFrameTable[_badConscienceAnim+24];
+
+ updateSceneAnim(0x0E, frame);
+ updateWithText();
+
+ nextFrame = _system->getMillis() + _rnd.getRandomNumberRng(4, 8) * _tickLength;
+ }
+
+ updateWithText();
+
+ const uint32 curTime = _system->getMillis();
+ if ((textEnabled() && !speechEnabled() && curTime > endTime) || (speechEnabled() && !snd_voiceIsPlaying()) || skipFlag()) {
+ snd_stopVoice();
+ resetSkipFlag();
+ nextFrame = curTime;
+ running = false;
+ }
+
+ delay(10);
+ }
+}
+
} // end of namespace Kyra
+
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