diff options
Diffstat (limited to 'engines/titanic/true_talk/true_talk_manager.h')
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.h | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/engines/titanic/true_talk/true_talk_manager.h b/engines/titanic/true_talk/true_talk_manager.h new file mode 100644 index 0000000000..ad378af9fc --- /dev/null +++ b/engines/titanic/true_talk/true_talk_manager.h @@ -0,0 +1,242 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef TITANIC_TRUE_TALK_MANAGER_H +#define TITANIC_TRUE_TALK_MANAGER_H + +#include "titanic/messages/messages.h" +#include "titanic/support/simple_file.h" +#include "titanic/true_talk/dialogue_file.h" +#include "titanic/true_talk/title_engine.h" +#include "titanic/true_talk/tt_quotes.h" +#include "titanic/true_talk/tt_quotes_tree.h" +#include "titanic/true_talk/tt_scripts.h" +#include "titanic/true_talk/tt_talker.h" + +namespace Titanic { + +class CGameManager; +class CGameState; +class CTreeItem; +class CViewItem; +class CTrueTalkManager; +class CTrueTalkNPC; + +class CTrueTalkManager { +private: + CGameManager *_gameManager; + STtitleEngine _titleEngine; + TTscripts _scripts; + int _currentCharId; + CDialogueFile *_dialogueFile; + int _dialogueId; + int _field18; + TTtalkerList _talkers; +private: + /** + * Loads the statics for the class + */ + static void loadStatics(SimpleFile *file); + + /** + * Saves the statics associated with the class + */ + static void saveStatics(SimpleFile *file); + + /** + * Loads an NPC from file + */ + void loadNPC(SimpleFile *file, int charId); + + /** + * Saves the specified NPC to file + */ + void saveNPC(SimpleFile *file, int charId) const; + + /** + * Gets the script associated with an NPC game object + */ + TTnpcScript *getNpcScript(CTrueTalkNPC *npc) const; + + /** + * Gets the script associated with the current room + */ + TTroomScript *getRoomScript() const; + + /** + * Loads assets for the current character, if it's changed + */ + void loadAssets(CTrueTalkNPC *npc, int charId); + + void setDialogue(CTrueTalkNPC *npc, TTroomScript *roomScript, CViewItem *view); + + /** + * Read in text from the dialogue file + */ + CString readDialogueString(); + + /** + * Read in the sound from the dialogue file + */ + int readDialogSound(); + + /** + * Triggers animation for the NPC + */ + void triggerNPC(CTrueTalkNPC *npc); + + /** + * Plays speech specified by the manager's indexes array + */ + void playSpeech(TTtalker *talker, TTroomScript *roomScript, CViewItem *view, bool isParrot); + + static bool proximityMethod1(int val); + + /** + * Return the game state + */ + CGameState *getGameState() const; +public: + static int _v1; + static int _v2; + static int _v3; + static bool _v4; + static bool _v5; + static int _v6; + static int _v7; + static bool _v8; + static int _v9; + static bool _v10; + static int _v11[41]; + static CTrueTalkNPC *_currentNPC; + + static void setFlags(int index, int val); +public: + TTquotes _quotes; + TTquotesTree _quotesTree; +public: + /** + * Get a specified state value from the currently set NPC + */ + static int getStateValue(int stateNum); + + /** + * Trigger an NPC action + */ + static bool triggerAction(int action, int param); +public: + CTrueTalkManager(CGameManager *owner); + ~CTrueTalkManager(); + + /** + * Save the data for the class to file + */ + void save(SimpleFile *file) const; + + /** + * Load the data for the class from file + */ + void load(SimpleFile *file); + + /** + * Clear the manager + */ + void clear(); + + /** + * Called when a game is about to be loaded + */ + void preLoad(); + + /** + * Called when loading a game is complete + */ + void postLoad() {} + + /** + * Called when a game is about to be saved + */ + void preSave() {} + + /** + * Called when a game has finished being saved + */ + void postSave() {} + + /** + * Returns the scripts for the manager + */ + TTscripts &getScripts() { return _scripts; } + + /** + * Remove any completed talkers + */ + void removeCompleted(); + + /** + * Return the game manager + */ + CGameManager *getGameManager() const; + + void update2(); + + /** + * Start a TrueTalk conversation + */ + void start(CTrueTalkNPC *npc, uint id, CViewItem *view); + + /** + * Start a TrueTalk conversation + */ + void start3(CTrueTalkNPC *npc, CViewItem *view); + + /** + * Start a TrueTalk conversation + */ + void start4(CTrueTalkNPC *npc, CViewItem *view); + + /** + * Return a TrueTalk talker/script + */ + TTnpcScript *getTalker(const CString &name) const; + + /** + * Process player's input + */ + void processInput(CTrueTalkNPC *npc, CTextInputMsg *msg, CViewItem *view); + + /** + * Gets the script associated with a specific room + */ + TTroomScript *getRoomScript(int roomId) const; + + /** + * Get the player's passenger class + */ + int getPassengerClass() const; + + int getState14() const; +}; + +} // End of namespace Titanic + +#endif /* TITANIC_TRUE_TALK_MANAGER_H */ |