aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/kyra_v2.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2008-04-19 13:52:09 +0000
committerJohannes Schickel2008-04-19 13:52:09 +0000
commitbf46b5f17868cee22aea71b274a3515593206fbd (patch)
tree2b991a7c516d8a5c04266ba011caa8ab8c650b67 /engines/kyra/kyra_v2.cpp
parent76b1f4bcea6a89e37087f61d672cd55b47e6f719 (diff)
downloadscummvm-rg350-bf46b5f17868cee22aea71b274a3515593206fbd.tar.gz
scummvm-rg350-bf46b5f17868cee22aea71b274a3515593206fbd.tar.bz2
scummvm-rg350-bf46b5f17868cee22aea71b274a3515593206fbd.zip
- reworked tim handling
- moved tim interpreter to new class TIMInterpreter svn-id: r31569
Diffstat (limited to 'engines/kyra/kyra_v2.cpp')
-rw-r--r--engines/kyra/kyra_v2.cpp35
1 files changed, 27 insertions, 8 deletions
diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp
index 78c9573d5a..8f48e2896e 100644
--- a/engines/kyra/kyra_v2.cpp
+++ b/engines/kyra/kyra_v2.cpp
@@ -30,6 +30,7 @@
#include "kyra/wsamovie.h"
#include "kyra/sound.h"
#include "kyra/script.h"
+#include "kyra/script_tim.h"
#include "kyra/text_v2.h"
#include "kyra/timer.h"
#include "kyra/debugger.h"
@@ -87,12 +88,9 @@ KyraEngine_v2::KyraEngine_v2(OSystem *system, const GameFlags &flags) : KyraEngi
_chatObject = -1;
_lastIdleScript = -1;
- _timChatText = 0;
- _timChatObject = -1;
-
- _currentTalkSections.STATim = NULL;
- _currentTalkSections.TLKTim = NULL;
- _currentTalkSections.ENDTim = NULL;
+ _currentTalkSections.STATim = 0;
+ _currentTalkSections.TLKTim = 0;
+ _currentTalkSections.ENDTim = 0;
memset(&_invWsa, 0, sizeof(_invWsa));
_itemAnimData = 0;
@@ -159,6 +157,7 @@ KyraEngine_v2::~KyraEngine_v2() {
delete _screen;
delete _text;
delete _gui;
+ delete _tim;
_text = 0;
delete _debugger;
delete _invWsa.wsa;
@@ -196,6 +195,8 @@ int KyraEngine_v2::init() {
assert(_text);
_gui = new GUI_v2(this);
assert(_gui);
+ _tim = new TIMInterpreter(this, _system);
+ assert(_tim);
if (_flags.isDemo && !_flags.isTalkie) {
_screen->loadFont(_screen->FID_8_FNT, "FONT9P.FNT");
@@ -223,8 +224,6 @@ int KyraEngine_v2::init() {
if (_flags.isDemo && !_flags.isTalkie)
return 0;
- tim_setupOpcodes();
-
_mouseSHPBuf = _res->fileData("PWGMOUSE.SHP", 0);
assert(_mouseSHPBuf);
@@ -2252,6 +2251,26 @@ void KyraEngine_v2::dinoRide() {
#pragma mark -
+void KyraEngine_v2::playTim(const char *filename) {
+ TIM *tim = _tim->load(filename, &_timOpcodes);
+ if (!tim)
+ return;
+
+ _tim->resetFinishedFlag();
+ while (!_quitFlag && !_tim->finished()) {
+ _tim->exec(tim, 0);
+ if (_chatText)
+ updateWithText();
+ else
+ update();
+ delay(10);
+ }
+
+ _tim->unload(tim);
+}
+
+#pragma mark -
+
void KyraEngine_v2::registerDefaultSettings() {
KyraEngine::registerDefaultSettings();