[Scummvm-git-logs] scummvm master -> 7aa9c7a5d463caa4388e1c4411c358622c3a6c7c
dreammaster
noreply at scummvm.org
Sun Apr 9 05:49:51 UTC 2023
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
66ebb1844c MM: MM1: Fix pressing Enter for text entry
909d362f71 MM: MM1: Map 21 fixes
7aa9c7a5d4 MM: MM1: Fix entering spaces in text responses
Commit: 66ebb1844cfd1e82c344ed98f77e59ce0aa71a5f
https://github.com/scummvm/scummvm/commit/66ebb1844cfd1e82c344ed98f77e59ce0aa71a5f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-04-08T22:49:41-07:00
Commit Message:
MM: MM1: Fix pressing Enter for text entry
Changed paths:
engines/mm/mm1/maps/map21.cpp
engines/mm/mm1/views/maps/answer_entry.cpp
engines/mm/mm1/views/maps/answer_entry.h
diff --git a/engines/mm/mm1/maps/map21.cpp b/engines/mm/mm1/maps/map21.cpp
index ded82ab1419..6aed3edc9a2 100644
--- a/engines/mm/mm1/maps/map21.cpp
+++ b/engines/mm/mm1/maps/map21.cpp
@@ -132,9 +132,9 @@ void Map21::special02() {
}
}
- g_events->send(SoundMessage(STRING["maps.map21.not_enough_gold"]));
g_maps->_mapPos.y++;
g_maps->_currentMap->updateGame();
+ g_events->send(SoundMessage(STRING["maps.map21.not_enough_gold"]));
},
[]() {
g_maps->_mapPos.y++;
diff --git a/engines/mm/mm1/views/maps/answer_entry.cpp b/engines/mm/mm1/views/maps/answer_entry.cpp
index df6e3e827b2..2016230e4ac 100644
--- a/engines/mm/mm1/views/maps/answer_entry.cpp
+++ b/engines/mm/mm1/views/maps/answer_entry.cpp
@@ -48,9 +48,7 @@ void AnswerEntry::draw() {
bool AnswerEntry::msgKeypress(const KeypressMessage &msg) {
if (!isDelayActive()) {
- if (msg.keycode == Common::KEYCODE_RETURN) {
- answerEntered();
- } else if (msg.keycode == Common::KEYCODE_SPACE ||
+ if (msg.keycode == Common::KEYCODE_SPACE ||
(msg.keycode >= Common::KEYCODE_0 &&
msg.keycode <= Common::KEYCODE_z)) {
_answer += toupper(msg.ascii);
@@ -68,6 +66,15 @@ bool AnswerEntry::msgKeypress(const KeypressMessage &msg) {
return true;
}
+bool AnswerEntry::msgAction(const ActionMessage &msg) {
+ if (!isDelayActive() && msg._action == KEYBIND_SELECT) {
+ answerEntered();
+ return true;
+ }
+
+ return false;
+}
+
} // namespace Maps
} // namespace Views
} // namespace MM1
diff --git a/engines/mm/mm1/views/maps/answer_entry.h b/engines/mm/mm1/views/maps/answer_entry.h
index fc49354478f..65fce3968fe 100644
--- a/engines/mm/mm1/views/maps/answer_entry.h
+++ b/engines/mm/mm1/views/maps/answer_entry.h
@@ -50,6 +50,7 @@ public:
bool msgFocus(const FocusMessage &msg) override;
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
+ bool msgAction(const ActionMessage &msg) override;
};
} // namespace Maps
Commit: 909d362f715edb59cc46f1b55065c8f2f7282e13
https://github.com/scummvm/scummvm/commit/909d362f715edb59cc46f1b55065c8f2f7282e13
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-04-08T22:49:42-07:00
Commit Message:
MM: MM1: Map 21 fixes
Changed paths:
A engines/mm/mm1/views_enh/interactions/trivia.cpp
A engines/mm/mm1/views_enh/interactions/trivia.h
devtools/create_mm/files/mm1/strings_en.yml
engines/mm/mm1/views_enh/dialogs.h
engines/mm/mm1/views_enh/interactions/ice_princess.h
engines/mm/module.mk
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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#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 \
Commit: 7aa9c7a5d463caa4388e1c4411c358622c3a6c7c
https://github.com/scummvm/scummvm/commit/7aa9c7a5d463caa4388e1c4411c358622c3a6c7c
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-04-08T22:49:42-07:00
Commit Message:
MM: MM1: Fix entering spaces in text responses
Changed paths:
engines/mm/mm1/metaengine.cpp
engines/mm/mm1/metaengine.h
engines/mm/mm1/views/maps/answer_entry.cpp
engines/mm/mm1/views/maps/answer_entry.h
engines/mm/mm1/views/text_entry.cpp
engines/mm/mm1/views/text_entry.h
engines/mm/mm1/views_enh/text_entry.cpp
engines/mm/mm1/views_enh/text_entry.h
diff --git a/engines/mm/mm1/metaengine.cpp b/engines/mm/mm1/metaengine.cpp
index cde657821d5..054dc38a6f7 100644
--- a/engines/mm/mm1/metaengine.cpp
+++ b/engines/mm/mm1/metaengine.cpp
@@ -36,6 +36,12 @@ struct KeybindingRecord {
const char *_joy;
};
+static const KeybindingRecord MINIMAL_KEYS[] = {
+ // I18N: ESC key
+ { KEYBIND_ESCAPE, "ESCAPE", _s("Escape"), "ESCAPE", nullptr },
+ { KEYBIND_NONE, nullptr, nullptr, nullptr, nullptr }
+};
+
static const KeybindingRecord MENU_KEYS[] = {
// I18N: ESC key
{ KEYBIND_ESCAPE, "ESCAPE", _s("Escape"), "ESCAPE", nullptr },
@@ -128,6 +134,11 @@ static const KeysRecord MENU_RECORDS[] = {
{ nullptr, nullptr, nullptr }
};
+static const KeysRecord MINIMAL_RECORDS[] = {
+ { "mm1_minimal", _s("Might and Magic 1 - Minimal Keys"), MINIMAL_KEYS },
+ { nullptr, nullptr, nullptr }
+};
+
static const KeysRecord PARTY_MENU_RECORDS[] = {
{ "mm1", _s("Might and Magic 1 - Menus"), MENU_KEYS },
{ "mm1_party", _s("Might and Magic 1 - Party"), PARTY_KEYS },
@@ -147,8 +158,9 @@ static const KeysRecord NORMAL_RECORDS[] = {
{ nullptr, nullptr, nullptr }
};
-static const KeysRecord *MODE_RECORDS[5] = {
+static const KeysRecord *MODE_RECORDS[6] = {
MENU_RECORDS,
+ MINIMAL_RECORDS,
PARTY_MENU_RECORDS,
NORMAL_RECORDS,
COMBAT_MENU_RECORDS,
diff --git a/engines/mm/mm1/metaengine.h b/engines/mm/mm1/metaengine.h
index 32d602abe0a..82288c9bf64 100644
--- a/engines/mm/mm1/metaengine.h
+++ b/engines/mm/mm1/metaengine.h
@@ -88,6 +88,7 @@ enum KeybindingAction {
enum KeybindingMode {
KBMODE_MENUS, ///< Keys for when showing menus
+ KBMODE_MINIMAL, ///< Keys for when doing text entry
KBMODE_PARTY_MENUS, ///< Keys for menus that allow switching party members
KBMODE_NORMAL, ///< Keys available when normal in-game
KBMODE_COMBAT ///< Keys when in combat mode
diff --git a/engines/mm/mm1/views/maps/answer_entry.cpp b/engines/mm/mm1/views/maps/answer_entry.cpp
index 2016230e4ac..f2cb70148ee 100644
--- a/engines/mm/mm1/views/maps/answer_entry.cpp
+++ b/engines/mm/mm1/views/maps/answer_entry.cpp
@@ -35,9 +35,13 @@ AnswerEntry::AnswerEntry(const Common::String &name,
}
bool AnswerEntry::msgFocus(const FocusMessage &msg) {
- _answer = "";
+ TextView::msgFocus(msg);
+
+ MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_MINIMAL);
Sound::sound(SOUND_2);
- return TextView::msgFocus(msg);
+ _answer = "";
+
+ return true;
}
void AnswerEntry::draw() {
@@ -48,7 +52,11 @@ void AnswerEntry::draw() {
bool AnswerEntry::msgKeypress(const KeypressMessage &msg) {
if (!isDelayActive()) {
- if (msg.keycode == Common::KEYCODE_SPACE ||
+ if (msg.keycode == Common::KEYCODE_RETURN) {
+ answerEntered();
+ return true;
+
+ } else if (msg.keycode == Common::KEYCODE_SPACE ||
(msg.keycode >= Common::KEYCODE_0 &&
msg.keycode <= Common::KEYCODE_z)) {
_answer += toupper(msg.ascii);
@@ -66,15 +74,6 @@ bool AnswerEntry::msgKeypress(const KeypressMessage &msg) {
return true;
}
-bool AnswerEntry::msgAction(const ActionMessage &msg) {
- if (!isDelayActive() && msg._action == KEYBIND_SELECT) {
- answerEntered();
- return true;
- }
-
- return false;
-}
-
} // namespace Maps
} // namespace Views
} // namespace MM1
diff --git a/engines/mm/mm1/views/maps/answer_entry.h b/engines/mm/mm1/views/maps/answer_entry.h
index 65fce3968fe..fc49354478f 100644
--- a/engines/mm/mm1/views/maps/answer_entry.h
+++ b/engines/mm/mm1/views/maps/answer_entry.h
@@ -50,7 +50,6 @@ public:
bool msgFocus(const FocusMessage &msg) override;
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
- bool msgAction(const ActionMessage &msg) override;
};
} // namespace Maps
diff --git a/engines/mm/mm1/views/text_entry.cpp b/engines/mm/mm1/views/text_entry.cpp
index a04694d2ce5..1f5f586c8c3 100644
--- a/engines/mm/mm1/views/text_entry.cpp
+++ b/engines/mm/mm1/views/text_entry.cpp
@@ -38,6 +38,13 @@ void TextEntry::display(int x, int y, int maxLen,
addView(this);
}
+bool TextEntry::msgFocus(const FocusMessage &msg) {
+ TextView::msgFocus(msg);
+ MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_MINIMAL);
+
+ return true;
+}
+
void TextEntry::draw() {
drawText();
writeChar('_');
diff --git a/engines/mm/mm1/views/text_entry.h b/engines/mm/mm1/views/text_entry.h
index ed7f39fcf4b..c0f136f4589 100644
--- a/engines/mm/mm1/views/text_entry.h
+++ b/engines/mm/mm1/views/text_entry.h
@@ -50,6 +50,7 @@ public:
TextEntry() : TextView("TextEntry") {}
virtual ~TextEntry() {}
+ bool msgFocus(const FocusMessage &msg) override;
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
bool msgAction(const ActionMessage &msg) override;
diff --git a/engines/mm/mm1/views_enh/text_entry.cpp b/engines/mm/mm1/views_enh/text_entry.cpp
index 10229729c02..88b4d816b54 100644
--- a/engines/mm/mm1/views_enh/text_entry.cpp
+++ b/engines/mm/mm1/views_enh/text_entry.cpp
@@ -37,6 +37,13 @@ void TextEntry::display(int x, int y, int maxLen,
addView(this);
}
+bool TextEntry::msgFocus(const FocusMessage &msg) {
+ TextView::msgFocus(msg);
+ MetaEngine::setKeybindingMode(KeybindingMode::KBMODE_MINIMAL);
+
+ return true;
+}
+
void TextEntry::draw() {
drawText();
writeChar('_');
@@ -50,7 +57,12 @@ void TextEntry::drawText() {
}
bool TextEntry::msgKeypress(const KeypressMessage &msg) {
- if (msg.keycode == Common::KEYCODE_BACKSPACE &&
+ if (msg.keycode == Common::KEYCODE_RETURN && !_text.empty()) {
+ drawText();
+ close();
+ _enterFn(_text);
+
+ } else if (msg.keycode == Common::KEYCODE_BACKSPACE &&
!_text.empty()) {
_text.deleteLastChar();
redraw();
@@ -78,23 +90,10 @@ bool TextEntry::msgKeypress(const KeypressMessage &msg) {
}
bool TextEntry::msgAction(const ActionMessage &msg) {
- switch (msg._action) {
- case KEYBIND_ESCAPE:
+ if (msg._action == KEYBIND_ESCAPE) {
drawText();
close();
_abortFn();
- break;
-
- case KEYBIND_SELECT:
- if (!_text.empty()) {
- drawText();
- close();
- _enterFn(_text);
- }
- break;
-
- default:
- break;
}
return true;
diff --git a/engines/mm/mm1/views_enh/text_entry.h b/engines/mm/mm1/views_enh/text_entry.h
index 0c00c1a737d..df04086f037 100644
--- a/engines/mm/mm1/views_enh/text_entry.h
+++ b/engines/mm/mm1/views_enh/text_entry.h
@@ -50,6 +50,7 @@ public:
TextEntry() : TextView("TextEntry") {}
virtual ~TextEntry() {}
+ bool msgFocus(const FocusMessage &msg) override;
void draw() override;
bool msgKeypress(const KeypressMessage &msg) override;
bool msgAction(const ActionMessage &msg) override;
More information about the Scummvm-git-logs
mailing list