diff options
author | Paul Gilbert | 2016-03-19 07:48:23 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-03-19 07:48:23 -0400 |
commit | 3a42c8ca449248dfc67a98f3bedd65c237d06fa0 (patch) | |
tree | 0d0975ff322a16d9c2e22e9274dd2f7408df986b /engines/titanic | |
parent | abb9a549c86b9c83925cd41f02b27e3e88162b9b (diff) | |
download | scummvm-rg350-3a42c8ca449248dfc67a98f3bedd65c237d06fa0.tar.gz scummvm-rg350-3a42c8ca449248dfc67a98f3bedd65c237d06fa0.tar.bz2 scummvm-rg350-3a42c8ca449248dfc67a98f3bedd65c237d06fa0.zip |
TITANIC: Added various preLoad methods
Diffstat (limited to 'engines/titanic')
-rw-r--r-- | engines/titanic/core/project_item.cpp | 8 | ||||
-rw-r--r-- | engines/titanic/core/project_item.h | 16 | ||||
-rw-r--r-- | engines/titanic/game_manager.cpp | 19 | ||||
-rw-r--r-- | engines/titanic/game_manager.h | 14 | ||||
-rw-r--r-- | engines/titanic/sound/music_room.cpp | 5 | ||||
-rw-r--r-- | engines/titanic/sound/music_room.h | 5 | ||||
-rw-r--r-- | engines/titanic/sound/sound.cpp | 8 | ||||
-rw-r--r-- | engines/titanic/sound/sound.h | 5 | ||||
-rw-r--r-- | engines/titanic/sound/sound_manager.h | 6 | ||||
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.cpp | 4 | ||||
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.h | 5 |
11 files changed, 82 insertions, 13 deletions
diff --git a/engines/titanic/core/project_item.cpp b/engines/titanic/core/project_item.cpp index bf31388963..90e6d06ed1 100644 --- a/engines/titanic/core/project_item.cpp +++ b/engines/titanic/core/project_item.cpp @@ -142,8 +142,9 @@ void CProjectItem::resetGameManager() { void CProjectItem::loadGame(int slotId) { CompressedFile file; - // Clear any existing project contents + // Clear any existing project contents and call preload code clear(); + preLoad(); // Open either an existing savegame slot or the new game template if (slotId >= 0) { @@ -272,6 +273,11 @@ void CProjectItem::saveData(SimpleFile *file, CTreeItem *item) const { } } +void CProjectItem::preLoad() { + if (_gameManager) + _gameManager->preLoad(); +} + void CProjectItem::postLoad() { CGameManager *gameManager = getGameManager(); if (gameManager) diff --git a/engines/titanic/core/project_item.h b/engines/titanic/core/project_item.h index bb96f81245..87dfc3f0dd 100644 --- a/engines/titanic/core/project_item.h +++ b/engines/titanic/core/project_item.h @@ -54,7 +54,6 @@ public: * Load the data for the class from file */ virtual void load(SimpleFile *file); - }; /** @@ -78,6 +77,16 @@ private: * Called during save, iterates through the children to do some stuff */ void buildFilesList(); + + /** + * Called at the beginning of loading a game + */ + void preLoad(); + + /** + * Does post-loading processing + */ + void postLoad(); /** * Finds the first child instance of a given class type @@ -98,11 +107,6 @@ private: * Save project data to the passed file */ void saveData(SimpleFile *file, CTreeItem *item) const; - - /** - * Does post-loading processing - */ - void postLoad(); public: CLASSDEF CProjectItem(); diff --git a/engines/titanic/game_manager.cpp b/engines/titanic/game_manager.cpp index a2732d8b1c..b181edcaeb 100644 --- a/engines/titanic/game_manager.cpp +++ b/engines/titanic/game_manager.cpp @@ -48,7 +48,7 @@ CGameManager::CGameManager(CProjectItem *project, CGameView *gameView): _inputHandler(this), _inputTranslator(&_inputHandler), _gameState(this), _sound(this), _musicRoom(this), _field30(0), _field34(0), _field4C(0), - _dragItem(nullptr), _field54(0), _tickCount1(0), _tickCount2(0) { + _dragItem(nullptr), _field54(0), _lastDiskTicksCount(0), _tickCount2(0) { _videoSurface1 = nullptr; _videoSurface2 = CScreenManager::_screenManagerPtr->createSurface(600, 340); @@ -65,6 +65,15 @@ void CGameManager::load(SimpleFile *file) { _sound.load(file); } +void CGameManager::preLoad() { + updateDiskTicksCount(); + _list.destroyContents(); + _field34 = 0; + + _trueTalkManager.preLoad(); + _sound.preLoad(); +} + void CGameManager::postLoad(CProjectItem *project) { if (_gameView) { _gameView->postLoad(); @@ -77,11 +86,11 @@ void CGameManager::postLoad(CProjectItem *project) { } // Signal to anything interested that the game has been loaded - CLoadSuccessMsg msg(_tickCount1 - _tickCount2); + CLoadSuccessMsg msg(_lastDiskTicksCount - _tickCount2); msg.execute(project, nullptr, MSGFLAG_SCAN); // Signal to any registered list items - _list.postLoad(_tickCount1, _project); + _list.postLoad(_lastDiskTicksCount, _project); // Signal the true talk manager and sound _trueTalkManager.postLoad(); @@ -100,4 +109,8 @@ void CGameManager::update() { warning("TODO: CGameManager::update"); } +void CGameManager::updateDiskTicksCount() { + _lastDiskTicksCount = g_vm->_events->getTicksCount(); +} + } // End of namespace Titanic diff --git a/engines/titanic/game_manager.h b/engines/titanic/game_manager.h index a331f3a0b4..4380e4f8ec 100644 --- a/engines/titanic/game_manager.h +++ b/engines/titanic/game_manager.h @@ -54,7 +54,6 @@ class CGameManager { private: CGameView *_gameView; CSound _sound; - CMusicRoom _musicRoom; CTrueTalkManager _trueTalkManager; CGameManagerList _list; int _field30; @@ -63,7 +62,7 @@ private: int _field4C; int _field54; CVideoSurface *_videoSurface2; - uint _tickCount1; + uint _lastDiskTicksCount; uint _tickCount2; public: CProjectItem *_project; @@ -72,6 +71,7 @@ public: CInputHandler _inputHandler; CInputTranslator _inputTranslator; CTreeItem *_dragItem; + CMusicRoom _musicRoom; public: CGameManager(CProjectItem *project, CGameView *gameView); ~CGameManager(); @@ -82,10 +82,20 @@ public: void load(SimpleFile *file); /** + * Called when a game is about to be loaded + */ + void preLoad(); + + /** * Called after loading a game has finished */ void postLoad(CProjectItem *project); + /** + * Updates the game time when the last disk access started + */ + void updateDiskTicksCount(); + CViewItem *getView() { return _gameState._gameLocation.getView(); } /** diff --git a/engines/titanic/sound/music_room.cpp b/engines/titanic/sound/music_room.cpp index 2b959a0847..593c572277 100644 --- a/engines/titanic/sound/music_room.cpp +++ b/engines/titanic/sound/music_room.cpp @@ -21,6 +21,7 @@ */ #include "titanic/sound/music_room.h" +#include "common/textconsole.h" namespace Titanic { @@ -28,4 +29,8 @@ CMusicRoom::CMusicRoom(CGameManager *gameManager) : _gameManager(gameManager) { } +void CMusicRoom::preLoad() { + warning("TODO: CMusicRoom::preLoad"); +} + } // End of namespace Titanic diff --git a/engines/titanic/sound/music_room.h b/engines/titanic/sound/music_room.h index 7fcd99db1e..ce262a2b99 100644 --- a/engines/titanic/sound/music_room.h +++ b/engines/titanic/sound/music_room.h @@ -32,6 +32,11 @@ public: CGameManager *_gameManager; public: CMusicRoom(CGameManager *owner); + + /** + * Called when a game is about to be loaded + */ + void preLoad(); }; } // End of namespace Titanic diff --git a/engines/titanic/sound/sound.cpp b/engines/titanic/sound/sound.cpp index 35c1c708a6..062e43debc 100644 --- a/engines/titanic/sound/sound.cpp +++ b/engines/titanic/sound/sound.cpp @@ -21,6 +21,7 @@ */ #include "titanic/sound/sound.h" +#include "titanic/game_manager.h" namespace Titanic { @@ -35,4 +36,11 @@ void CSound::load(SimpleFile *file) { _soundManager.load(file); } +void CSound::preLoad() { + _soundManager.preLoad(); + + if (_gameManager) + _gameManager->_musicRoom.preLoad(); +} + } // End of namespace Titanic z diff --git a/engines/titanic/sound/sound.h b/engines/titanic/sound/sound.h index a78bc79741..1b98507a93 100644 --- a/engines/titanic/sound/sound.h +++ b/engines/titanic/sound/sound.h @@ -48,6 +48,11 @@ public: void load(SimpleFile *file); /** + * Called when a game is about to be loaded + */ + void preLoad(); + + /** * Called when loading a game is complete */ void postLoad() { _soundManager.postLoad(); } diff --git a/engines/titanic/sound/sound_manager.h b/engines/titanic/sound/sound_manager.h index cb88b6684c..6a2e5a79d3 100644 --- a/engines/titanic/sound/sound_manager.h +++ b/engines/titanic/sound/sound_manager.h @@ -57,7 +57,11 @@ public: virtual void proc20(int v) { _field8 = v; } virtual void proc21(int v) { _fieldC = v; } virtual void proc22(int v) { _field10 = v; } - virtual void proc23() { proc10(); } + + /** + * Called when a game is about to be loaded + */ + virtual void preLoad() { proc10(); } /** * Load the data for the class from file diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp index f176b2f3cf..5afaeb3873 100644 --- a/engines/titanic/true_talk/true_talk_manager.cpp +++ b/engines/titanic/true_talk/true_talk_manager.cpp @@ -175,4 +175,8 @@ void CTrueTalkManager::saveNPC(SimpleFile *file, int charId) const { } } +void CTrueTalkManager::preLoad() { + warning("TODO: CTrueTalkManager::preLoad"); +} + } // End of namespace Titanic diff --git a/engines/titanic/true_talk/true_talk_manager.h b/engines/titanic/true_talk/true_talk_manager.h index 904f3c479b..ac36102cf0 100644 --- a/engines/titanic/true_talk/true_talk_manager.h +++ b/engines/titanic/true_talk/true_talk_manager.h @@ -78,6 +78,11 @@ public: void load(SimpleFile *file); /** + * Called when a game is about to be loaded + */ + void preLoad(); + + /** * Called when loading a game is complete */ void postLoad() {} |