diff options
author | Johannes Schickel | 2008-04-19 13:52:09 +0000 |
---|---|---|
committer | Johannes Schickel | 2008-04-19 13:52:09 +0000 |
commit | bf46b5f17868cee22aea71b274a3515593206fbd (patch) | |
tree | 2b991a7c516d8a5c04266ba011caa8ab8c650b67 /engines/kyra/kyra_v2.cpp | |
parent | 76b1f4bcea6a89e37087f61d672cd55b47e6f719 (diff) | |
download | scummvm-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.cpp | 35 |
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(); |