diff --git a/devtools/create_mm/files/mm1/strings_en.yml b/devtools/create_mm/files/mm1/strings_en.yml index cf5766747ca..202ed3eb190 100644 --- a/devtools/create_mm/files/mm1/strings_en.yml +++ b/devtools/create_mm/files/mm1/strings_en.yml @@ -1310,6 +1310,8 @@ maps: correct: "Correct! +50 gems" incorrect: "Wrong!" answer: "Answer:> .............." + emap21: + title: "Trivia Island" map22: ambush: "Ambush!" diff --git a/engines/mm/mm1/views_enh/dialogs.h b/engines/mm/mm1/views_enh/dialogs.h index eacd4e5254b..341d5f5271c 100644 --- a/engines/mm/mm1/views_enh/dialogs.h +++ b/engines/mm/mm1/views_enh/dialogs.h @@ -59,6 +59,7 @@ #include "mm/mm1/views_enh/interactions/prisoners.h" #include "mm/mm1/views_enh/interactions/resistances.h" #include "mm/mm1/views_enh/interactions/statue.h" +#include "mm/mm1/views_enh/interactions/trivia.h" #include "mm/mm1/views_enh/interactions/volcano_god.h" #include "mm/mm1/views_enh/locations/blacksmith_items.h" #include "mm/mm1/views_enh/locations/blacksmith.h" @@ -81,6 +82,7 @@ private: ViewsEnh::Interactions::IcePrincess _icePrincess; ViewsEnh::Interactions::Resistances _resistances; ViewsEnh::Interactions::Statue _statue; + ViewsEnh::Interactions::Trivia _trivia; ViewsEnh::Interactions::VolcanoGod _volcanoGod; ViewsEnh::Interactions::ChildPrisoner _childPrisoner; diff --git a/engines/mm/mm1/views_enh/interactions/ice_princess.h b/engines/mm/mm1/views_enh/interactions/ice_princess.h index 623f90a616a..c6fe2ab628c 100644 --- a/engines/mm/mm1/views_enh/interactions/ice_princess.h +++ b/engines/mm/mm1/views_enh/interactions/ice_princess.h @@ -31,7 +31,6 @@ namespace ViewsEnh { namespace Interactions { class IcePrincess : public InteractionQuery { -private: protected: /** * Answer entered diff --git a/engines/mm/mm1/views_enh/interactions/trivia.cpp b/engines/mm/mm1/views_enh/interactions/trivia.cpp new file mode 100644 index 00000000000..43bb642ef7d --- /dev/null +++ b/engines/mm/mm1/views_enh/interactions/trivia.cpp @@ -0,0 +1,67 @@ +/* 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 3 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, see . + * + */ + +#include "mm/mm1/views_enh/interactions/trivia.h" +#include "mm/mm1/maps/map21.h" +#include "mm/mm1/globals.h" +#include "mm/mm1/sound.h" + +namespace MM { +namespace MM1 { +namespace ViewsEnh { +namespace Interactions { + +Trivia::Trivia() : InteractionQuery("Trivia", 14) { + _title = STRING["maps.emap21.title"]; +} + +bool Trivia::msgGame(const GameMessage &msg) { + if (msg._name == "TRIVIA") { + _question = STRING[Common::String::format( + "maps.map21.questions.%d", msg._value)]; + _correctAnswer = STRING[Common::String::format( + "maps.map21.answers.%d", msg._value)]; + + addText(_question); + open(); + return true; + } + + return false; +} + +void Trivia::answerEntered() { + if (_answer.equalsIgnoreCase(_correctAnswer)) { + send(InfoMessage(STRING["maps.map21.correct"])); + g_globals->_party[0]._gems += 50; + Sound::sound(SOUND_3); + + } else { + g_maps->_mapPos.x = 15; + g_maps->_currentMap->updateGame(); + send(InfoMessage(STRING["maps.map21.incorrect"])); + } +} + +} // namespace Interactions +} // namespace ViewsEnh +} // namespace MM1 +} // namespace MM diff --git a/engines/mm/mm1/views_enh/interactions/trivia.h b/engines/mm/mm1/views_enh/interactions/trivia.h new file mode 100644 index 00000000000..7ab7b8bb8b7 --- /dev/null +++ b/engines/mm/mm1/views_enh/interactions/trivia.h @@ -0,0 +1,54 @@ +/* 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 3 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, see . + * + */ + +#ifndef MM1_VIEWS_ENH_INTERACTIONS_TRIVIA_H +#define MM1_VIEWS_ENH_INTERACTIONS_TRIVIA_H + +#include "mm/mm1/views_enh/interactions/interaction_query.h" +#include "mm/mm1/data/character.h" + +namespace MM { +namespace MM1 { +namespace ViewsEnh { +namespace Interactions { + +class Trivia : public InteractionQuery { +private: + Common::String _question, _correctAnswer; +protected: + /** + * Answer entered + */ + void answerEntered() override; + +public: + Trivia(); + virtual ~Trivia() {} + + bool msgGame(const GameMessage &msg) override; +}; + +} // namespace Interactions +} // namespace ViewsEnh +} // namespace MM1 +} // namespace MM + +#endif diff --git a/engines/mm/module.mk b/engines/mm/module.mk index d6b1e02869d..a289047fcbe 100644 --- a/engines/mm/module.mk +++ b/engines/mm/module.mk @@ -184,6 +184,7 @@ MODULE_OBJS += \ mm1/views_enh/interactions/prisoners.o \ mm1/views_enh/interactions/resistances.o \ mm1/views_enh/interactions/statue.o \ + mm1/views_enh/interactions/trivia.o \ mm1/views_enh/interactions/volcano_god.o \ mm1/views_enh/locations/blacksmith.o \ mm1/views_enh/locations/blacksmith_items.o \