diff options
Diffstat (limited to 'engines/mads/scene.cpp')
-rw-r--r-- | engines/mads/scene.cpp | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/engines/mads/scene.cpp b/engines/mads/scene.cpp index a0888f7d68..4d62e64f31 100644 --- a/engines/mads/scene.cpp +++ b/engines/mads/scene.cpp @@ -29,7 +29,7 @@ namespace MADS { Scene::Scene(MADSEngine *vm): _vm(vm), _spriteSlots(vm), _action(_vm), - _dirtyAreas(_vm), _dynamicHotspots(vm), _interface(vm), _messages(vm), + _dirtyAreas(_vm), _dynamicHotspots(vm), _interface(vm), _kernelMessages(vm), _screenObjects(vm), _sequences(vm), _textDisplay(vm) { _priorSceneId = 0; _nextSceneId = 0; @@ -97,7 +97,7 @@ void Scene::clearSequenceList() { } void Scene::clearMessageList() { - _messages.clear(); + _kernelMessages.clear(); _talkFont = "*FONTCONV.FF"; _textSpacing = -1; } @@ -125,7 +125,7 @@ void Scene::loadScene(int sceneId, const Common::String &prefix, bool palFlag) { _spriteSlots.clear(false); _sequences.clear(); - _messages.clear(); + _kernelMessages.clear(); // TODO: palletteUsage reset? setPalette(_nullPalette); _sceneInfo = SceneInfo::init(_vm); @@ -371,14 +371,45 @@ void Scene::doFrame() { if (_vm->_debugger->_showMousePos) { Common::Point pt = _vm->_events->mousePos(); Common::String msg = Common::String::format("(%d,%d)", pt.x, pt.y); - _messages.add(Common::Point(5, 5), 0x203, 0, 0, 1, msg); + _kernelMessages.add(Common::Point(5, 5), 0x203, 0, 0, 1, msg); } + if (!_vm->_game->_abortTimers) { + if (_reloadSceneFlag || _currentSceneId != _nextSceneId) + _kernelMessages.reset(); + _kernelMessages.update(); + } + + _vm->_game->_abortTimers2 = !_vm->_game->_abortTimers2; + + warning("TODO: image_inter_list_call"); + + // Write any text needed by the interface + if (_vm->_game->_abortTimers2) + _interface.writeText(); + + // Draw any elements + drawElements(_vm->_game->_abortTimers2, _vm->_game->_abortTimers2); + + // Handle message updates + if (_vm->_game->_abortTimers2) { + uint32 priorTime = _vm->_game->_priorFrameTimer; + uint32 newTime = _vm->_events->getFrameCounter(); + _sequences.delay(newTime, priorTime); + _kernelMessages.delay(newTime, priorTime); + } + + warning("TODO: sub_1DA5A"); + // TODO: Rest of Scene::doFrame } } } +void Scene::drawElements(bool transitionFlag, bool surfaceFlag) { + +} + void Scene::leftClick() { warning("TODO: Scene::leftClick"); } |