aboutsummaryrefslogtreecommitdiff
path: root/engines/cryomni3d/versailles/dialogs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cryomni3d/versailles/dialogs.cpp')
-rw-r--r--engines/cryomni3d/versailles/dialogs.cpp318
1 files changed, 318 insertions, 0 deletions
diff --git a/engines/cryomni3d/versailles/dialogs.cpp b/engines/cryomni3d/versailles/dialogs.cpp
new file mode 100644
index 0000000000..ff5a9ff38b
--- /dev/null
+++ b/engines/cryomni3d/versailles/dialogs.cpp
@@ -0,0 +1,318 @@
+/* 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.
+ *
+ */
+
+#include "cryomni3d/versailles/engine.h"
+
+namespace CryOmni3D {
+namespace Versailles {
+
+bool CryOmni3DEngine_Versailles::preprocessDialog(const Common::String &sequence) {
+ if (_inventory.inInventoryByNameId(96) && _inventory.inInventoryByNameId(98)) {
+ _dialogsMan["{JOUEUR-TROUVE-TITRE-ET-PAMPHLET}"] = 'Y';
+ }
+ if (_inventory.inInventoryByNameId(126)) {
+ _dialogsMan["{JOUEUR_POSSEDE_EPIGRAPHE}"] = 'Y';
+ }
+
+ if (_currentLevel == 1 && _currentPlaceId == 3) {
+ playInGameVideo("11D_LEB1");
+ }
+
+ _dialogsMan["{JOUEUR-VU-MEMORANDUM-DANS-LUSTRE-DU-SALON-DE-LA-GUERRE}"] = 'N';
+ if (_currentLevel == 5 && _gameVariables[GameVariables::kSeenMemorandum] &&
+ !_inventory.inInventoryByNameId(140)) {
+ _dialogsMan["{JOUEUR-VU-MEMORANDUM-DANS-LUSTRE-DU-SALON-DE-LA-GUERRE}"] = 'Y';
+ }
+
+ if (_currentLevel == 1 && _currentPlaceId == 1 && currentGameTime() == 3 &&
+ sequence.hasPrefix("13F_HUI") && _gameVariables[GameVariables::kWarnedIncomplete] == 0 &&
+ _dialogsMan["{JOUEUR-TROUVE-TITRE-ET-PAMPHLET}"] == 'Y' &&
+ (!_inventory.inInventoryByNameId(96) || !_inventory.inInventoryByNameId(98))) {
+ displayMessageBoxWarp(18);
+ _gameVariables[GameVariables::kWarnedIncomplete] = 1;
+ return 0;
+ }
+ if (_currentLevel == 2 && _currentPlaceId == 11 && currentGameTime() == 4 &&
+ sequence.hasPrefix("24Z_BON") && _gameVariables[GameVariables::kWarnedIncomplete] == 0 &&
+ _dialogsMan["{JOUEUR-MONTRE-TITRE-FABLE-APPARU-SUR-ESQUISSE}"] == 'Y' &&
+ (!_inventory.inInventoryByNameId(101) || !_inventory.inInventoryByNameId(103))) {
+ displayMessageBoxWarp(18);
+ _gameVariables[GameVariables::kWarnedIncomplete] = 1;
+ return 0;
+ }
+ if (_currentLevel == 3 && _currentPlaceId == 10 && currentGameTime() == 3 &&
+ sequence.hasPrefix("31O_SUIA") && _gameVariables[GameVariables::kWarnedIncomplete] == 0 &&
+ _dialogsMan["CROISSY-ACCEPTE-TEXTE"] == 'Y' &&
+ (!_inventory.inInventoryByNameId(121) || !_inventory.inInventoryByNameId(119) ||
+ !_inventory.inInventoryByNameId(115) || _gameVariables[GameVariables::kGotMedaillesSolution] == 0)) {
+ displayMessageBoxWarp(18);
+ _gameVariables[GameVariables::kWarnedIncomplete] = 1;
+ return 0;
+ }
+ if (_currentLevel == 4 && _currentPlaceId == 10 && currentGameTime() == 3 &&
+ sequence.hasPrefix("42C_BON") && _gameVariables[GameVariables::kWarnedIncomplete] == 0 &&
+ _dialogsMan["{JOUEUR-MONTRE-PAMPHLET-RELIGION}"] == 'Y' &&
+ (!_inventory.inInventoryByNameId(127) || _gameVariables[GameVariables::kUsedPlanVauban1] == 0 ||
+ _gameVariables[GameVariables::kUsedPlanVauban2] == 0)) {
+ displayMessageBoxWarp(18);
+ _gameVariables[GameVariables::kWarnedIncomplete] = 1;
+ return 0;
+ }
+ if (_currentLevel == 5 && _currentPlaceId == 10 && currentGameTime() == 3 &&
+ sequence.hasPrefix("42C_BON") && _gameVariables[GameVariables::kWarnedIncomplete] == 0 &&
+ _dialogsMan["{JOUEUR-MONTRE-PAMPHLET-RELIGION}"] == 'Y' &&
+ (!_inventory.inInventoryByNameId(127) || _gameVariables[GameVariables::kUsedPlanVauban1] == 0 ||
+ _gameVariables[GameVariables::kUsedPlanVauban2] == 0)) {
+ displayMessageBoxWarp(18);
+ _gameVariables[GameVariables::kWarnedIncomplete] = 1;
+ return 0;
+ }
+ if (_currentLevel == 6 && _currentPlaceId == 14 && currentGameTime() == 2 &&
+ sequence.hasPrefix("61_BON") && _gameVariables[GameVariables::kWarnedIncomplete] == 0) {
+ displayMessageBoxWarp(19);
+ _gameVariables[GameVariables::kWarnedIncomplete] = 1;
+ return 0;
+ }
+ return 1;
+}
+
+void CryOmni3DEngine_Versailles::postprocessDialog(const Common::String &sequence) {
+ if (_currentLevel == 1) {
+ if (_dialogsMan["{LEVEL1_FINI}"] == 'Y') {
+ playTransitionEndLevel(1);
+ }
+ } else if (_currentLevel == 2) {
+ _dialogsMan["{JOUEUR-PRESENTE-FAUX-CROQUIS}"] = 'N';
+ _dialogsMan["{JOUEUR-PRESENTE-FAUX-CROQUIS2}"] = 'N';
+ _dialogsMan["{JOUEUR-PRESENTE-FAUX-CROQUIS3}"] = 'N';
+ _dialogsMan["{LE JOUEUR-PRESENTE-AUTRES-ESQUISSES-OU-ESQUISSE-NON-TRIEES}"] = 'N';
+ _dialogsMan["{LE JOUEUR-PRESENTE-ESQUISSES-TRIEES}"] = 'N';
+ _dialogsMan["{JOUEUR-MONTRE-TITRE-FABLE-APPARU-SUR-ESQUISSE}"] = 'N';
+ _dialogsMan["{JOUEUR-MONTRE-ESQUISSE-DETRUITE}"] = 'N';
+ if (_dialogsMan["{LEVEL2_FINI}"] == 'Y') {
+ playTransitionEndLevel(2);
+ }
+ } else if (_currentLevel == 3) {
+ if (currentGameTime() == 1 && _dialogsMan["LULLY-DONNE-MISSION1-JOUEUR"] == 'Y') {
+ setGameTime(2, 3);
+ }
+ if (!_gameVariables[GameVariables::kGotMedaillesSolution] &&
+ _dialogsMan["MONSIEUR-DONNE-SOLUTION-MEDAILLES"] == 'Y') {
+ playInGameVideo("32M_MR2");
+ _gameVariables[GameVariables::kGotMedaillesSolution] = 1;
+ }
+ if (!_gameVariables[GameVariables::kCollectePartition] &&
+ _dialogsMan["LULLY-DIT-CHAT-PENDU-JOUEUR"] == 'Y') {
+ _gameVariables[GameVariables::kCollectePartition] = 1;
+ collectObject(118);
+ setGameTime(3, 3);
+ }
+ if (currentGameTime() == 1 && _dialogsMan["CROISSY-ACCEPTE-TEXTE"] == 'Y') {
+ setGameTime(4, 3);
+ }
+ if (_dialogsMan["{LEVEL3_FINI}"] == 'Y') {
+ playTransitionEndLevel(3);
+ }
+ if (sequence == "32M_MR" && _dialogsMan["MONSIEUR-DONNE-SOLUTION-MEDAILLES"] == 'Y') {
+ _dialogsMan["{JOUEUR-MONTRE-MEDAILLES-MONSIEUR}"] = 'Y';
+ }
+ _dialogsMan["{JOUEUR-MONTRE-PAMPHLET-ARCHITECTURE}"] = 'N';
+ _dialogsMan["{JOUEUR-MONTRE-EPIGRAPHE-MEDAILLES}"] = 'N';
+ _dialogsMan["{JOUEUR-MONTRE-TOUT-AUTRE-CHOSE}"] = 'N';
+ } else if (_currentLevel == 4) {
+ if (_dialogsMan["{LEVEL4_FINI}"] == 'Y') {
+ playTransitionEndLevel(4);
+ }
+ } else if (_currentLevel == 5) {
+ if (sequence == "54I_BON" && _dialogsMan["BONTEMPS-DIT-PROMENADE"] == 'Y') {
+ collectObject(141);
+ playTransitionEndLevel(5);
+ }
+ if (sequence == "52A4_LAC" && _gameVariables[GameVariables::kStatePamphletReligion] != 3 &&
+ _dialogsMan["LACHAIZE-DIT-REFORME"] == 'Y' && _dialogsMan["LACHAIZE-DIT-DRAGONNADES"] == 'Y' &&
+ _dialogsMan["LACHAIZE-TROUVE-ECROUELLES"] == 'Y') {
+ _inventory.removeByNameId(125);
+ _gameVariables[GameVariables::kStatePamphletReligion] = 3;
+ collectObject(125);
+ _inventory.setSelectedObject(nullptr);
+ }
+ }
+}
+
+void CryOmni3DEngine_Versailles::updateGameTimeDialVariables() {
+ _dialogsMan["{CURRENT_GAME_TIME1}"] = 'N';
+ _dialogsMan["{CURRENT_GAME_TIME2}"] = 'N';
+ _dialogsMan["{CURRENT_GAME_TIME3}"] = 'N';
+ _dialogsMan["{CURRENT_GAME_TIME4}"] = 'N';
+ _dialogsMan["{CURRENT_GAME_TIME5}"] = 'N';
+ switch (currentGameTime()) {
+ case 1:
+ _dialogsMan["{CURRENT_GAME_TIME1}"] = 'Y';
+ break;
+ case 2:
+ _dialogsMan["{CURRENT_GAME_TIME2}"] = 'Y';
+ break;
+ case 3:
+ _dialogsMan["{CURRENT_GAME_TIME3}"] = 'Y';
+ break;
+ case 4:
+ _dialogsMan["{CURRENT_GAME_TIME4}"] = 'Y';
+ break;
+ case 5:
+ _dialogsMan["{CURRENT_GAME_TIME5}"] = 'Y';
+ break;
+ default:
+ error("Invalid current game time %d", currentGameTime());
+ }
+}
+
+void CryOmni3DEngine_Versailles::setupDialogShows() {
+ _dialogsMan.registerShowCallback("(BONTEMPS-MONTRE-TROISIEME-TITRE-DE-FABLE)",
+ &CryOmni3DEngine_Versailles::dialogShowBontempsShowThird);
+ _dialogsMan.registerShowCallback("(HUISSIER DONNE PAMPHLET SUR LA FAMILLE ROYALE)",
+ &CryOmni3DEngine_Versailles::dialogShowHuissierShowPamphlet);
+ _dialogsMan.registerShowCallback("(MONSEIGNEUR TRIE LES ESQUISSES)",
+ &CryOmni3DEngine_Versailles::dialogShowMonseigneurSorts);
+ _dialogsMan.registerShowCallback("(ANIMATION LE BRUN REGARDE LES ESQUISSES)",
+ &CryOmni3DEngine_Versailles::dialogShowLeBrunWatches);
+ _dialogsMan.registerShowCallback("(OUVERTURE DES PORTES)",
+ &CryOmni3DEngine_Versailles::dialogShowDoorsOpen);
+ _dialogsMan.registerShowCallback("(GARDE SUISSE DONNE CLEF PETITE PORTE)",
+ &CryOmni3DEngine_Versailles::dialogShowSwissGuardGives);
+ _dialogsMan.registerShowCallback("(LULLY CORRIGE LA PARTITION.)",
+ &CryOmni3DEngine_Versailles::dialogShowLullyCorrects);
+ _dialogsMan.registerShowCallback("(BONTEMPS DONNE AUTORISATION)",
+ &CryOmni3DEngine_Versailles::dialogShowBontempsGivesAuth);
+ _dialogsMan.registerShowCallback("(CROISSY PART)",
+ &CryOmni3DEngine_Versailles::dialogShowCroissyLeave);
+ _dialogsMan.registerShowCallback("(MAINTENON-DONNE-PAMPHLET-RELIGION)",
+ &CryOmni3DEngine_Versailles::dialogShowMaintenonGives);
+ _dialogsMan.registerShowCallback("(LA CHAIZE REND TEXTE)",
+ &CryOmni3DEngine_Versailles::dialogShowLaChaizeGivesBack);
+ _dialogsMan.registerShowCallback("(LA CHAIZE " "\x83" "CRIT DRAGONNADES)",
+ &CryOmni3DEngine_Versailles::dialogShowLaChaizeWrites);
+ _dialogsMan.registerShowCallback("(LACHAIZE-DONNE-PAMPHLET-JOUEUR)",
+ &CryOmni3DEngine_Versailles::dialogShowLaChaizeGivesPamphlet);
+ _dialogsMan.registerShowCallback("(BONTEMPS-DONNE-CLEF-DES-COMBLES)",
+ &CryOmni3DEngine_Versailles::dialogShowBontempsGivesKey);
+ _dialogsMan.registerShowCallback("(LE DUC DU MAINE S'EN VA)",
+ &CryOmni3DEngine_Versailles::dialogShowDuMaineLeaves);
+ _dialogsMan.registerShowCallback("(SC" "\xe9" "NE DE TRANSITION)",
+ &CryOmni3DEngine_Versailles::dialogShowTransitionScene);
+ _dialogsMan.registerShowCallback("(FIN DU JEU)", &CryOmni3DEngine_Versailles::dialogShowEndOfGame);
+ _dialogsMan.registerShowCallback("(LEBRUN-DONNE-FAUSSES-ESQUISSES)",
+ &CryOmni3DEngine_Versailles::dialogShowLeBrunGives);
+ _dialogsMan.registerShowCallback("(LEBRUN_S_EN_VA)",
+ &CryOmni3DEngine_Versailles::dialogShowLeBrunLeave);
+}
+
+void CryOmni3DEngine_Versailles::dialogShowBontempsShowThird() {
+ // Nothing to do
+}
+
+void CryOmni3DEngine_Versailles::dialogShowHuissierShowPamphlet() {
+ collectObject(101);
+ _inventory.setSelectedObject(nullptr);
+}
+
+void CryOmni3DEngine_Versailles::dialogShowMonseigneurSorts() {
+ _inventory.removeByNameId(105);
+ collectObject(106);
+ _gameVariables[GameVariables::kEsquissePainted] = 2;
+ _inventory.setSelectedObject(nullptr);
+ setGameTime(3, 2);
+ _dialogsMan["MONSEIGNEUR-ATTEND-ESQUISSES"] = 'N';
+}
+
+void CryOmni3DEngine_Versailles::dialogShowLeBrunWatches() {
+ // Nothing to do
+}
+
+void CryOmni3DEngine_Versailles::dialogShowDoorsOpen() {
+ // Nothing to do
+}
+
+void CryOmni3DEngine_Versailles::dialogShowSwissGuardGives() {
+ collectObject(123);
+ _dialogsMan["{JOUEUR-POSSEDE-CLE}"] = 'Y';
+}
+
+void CryOmni3DEngine_Versailles::dialogShowLullyCorrects() {
+ // Nothing to do
+}
+
+void CryOmni3DEngine_Versailles::dialogShowBontempsGivesAuth() {
+ collectObject(120);
+}
+
+void CryOmni3DEngine_Versailles::dialogShowCroissyLeave() {
+ // Nothing to do
+}
+
+void CryOmni3DEngine_Versailles::dialogShowMaintenonGives() {
+ collectObject(125);
+ _inventory.setSelectedObject(nullptr);
+}
+
+void CryOmni3DEngine_Versailles::dialogShowLaChaizeGivesBack() {
+ // Nothing to do
+}
+
+void CryOmni3DEngine_Versailles::dialogShowLaChaizeWrites() {
+ // Nothing to do
+}
+
+void CryOmni3DEngine_Versailles::dialogShowLaChaizeGivesPamphlet() {
+ // Nothing to do
+}
+
+void CryOmni3DEngine_Versailles::dialogShowBontempsGivesKey() {
+ collectObject(140);
+ _inventory.setSelectedObject(nullptr);
+}
+
+void CryOmni3DEngine_Versailles::dialogShowDuMaineLeaves() {
+ playInGameVideo("62S_DUC1");
+ _inventory.removeByNameId(144);
+ _inventory.setSelectedObject(nullptr);
+ setPlaceState(19, 1);
+}
+
+void CryOmni3DEngine_Versailles::dialogShowTransitionScene() {
+}
+
+void CryOmni3DEngine_Versailles::dialogShowEndOfGame() {
+ playTransitionEndLevel(6);
+}
+
+void CryOmni3DEngine_Versailles::dialogShowLeBrunGives() {
+ collectObject(107);
+ _inventory.setSelectedObject(nullptr);
+}
+
+void CryOmni3DEngine_Versailles::dialogShowLeBrunLeave() {
+ playInGameVideo("11D_LEB3");
+ setGameTime(2, 1);
+}
+
+} // End of namespace Versailles
+} // End of namespace CryOmni3D