[Scummvm-git-logs] scummvm master -> 24c83a628e7d6e1fe6736dab56c43be8abefe4f3
sev-
noreply at scummvm.org
Thu May 29 19:24:02 UTC 2025
This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
dd5ec40893 QDENGINE: Remove obsolete stubs
7051946817 QDENGINE: TRIANGLES: Add quick reselect feature
9de0602807 QDENGINE: Fix condition of statement in qdAnimation::redraw_rot()
68f82519d5 QDENGINE: Add karaoke.dll minigame
fc772bcac6 QDENGINE: Fix signed/unsigned mismatch warnings
0fdfeb74a2 QDENGINE: Simulate RBUTTON as ALT+LBUTTON
24c83a628e QDENGINE: Fix text input handling
Commit: dd5ec408935895743526510cd1d930fe9adf9e0a
https://github.com/scummvm/scummvm/commit/dd5ec408935895743526510cd1d930fe9adf9e0a
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-29T21:23:55+02:00
Commit Message:
QDENGINE: Remove obsolete stubs
Changed paths:
engines/qdengine/minigames/adv/m_triangles.cpp
diff --git a/engines/qdengine/minigames/adv/m_triangles.cpp b/engines/qdengine/minigames/adv/m_triangles.cpp
index 9d10e24d4f4..af03eeaf861 100644
--- a/engines/qdengine/minigames/adv/m_triangles.cpp
+++ b/engines/qdengine/minigames/adv/m_triangles.cpp
@@ -346,7 +346,6 @@ void MinigameTriangle::endSwapNodes(int pos1, int pos2) {
}
bool MinigameTriangle::animate(float dt) {
- warning("STUB: MinigameTriangle::animate()");
if (_animationState == NO_ANIMATION)
return false;
@@ -502,8 +501,6 @@ void MinigameTriangle::quant(float dt) {
}
}
- warning("STUB: MinigameTriangle::quant()");
-
if (_hovered != mousePos || _selected != lastSelected) {
highlight(_hovered, false);
highlight(_selected >= 0 ? _selected : lastSelected, false);
Commit: 70519468178286e70eb36cf5874c098b593805ce
https://github.com/scummvm/scummvm/commit/70519468178286e70eb36cf5874c098b593805ce
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-29T21:23:55+02:00
Commit Message:
QDENGINE: TRIANGLES: Add quick reselect feature
Changed paths:
engines/qdengine/minigames/adv/m_triangles.cpp
diff --git a/engines/qdengine/minigames/adv/m_triangles.cpp b/engines/qdengine/minigames/adv/m_triangles.cpp
index af03eeaf861..98e563f158f 100644
--- a/engines/qdengine/minigames/adv/m_triangles.cpp
+++ b/engines/qdengine/minigames/adv/m_triangles.cpp
@@ -480,8 +480,11 @@ void MinigameTriangle::quant(float dt) {
else if (compatible(_selected, mousePos)) { // поменÑÑÑ ÑиÑки меÑÑами
startAnimation = _selected;
_selected = -1;
- } else
+ } else {
_selected = -1;
+ if (_quickReselect)
+ _selected = mousePos;
+ }
}
if (_selected != lastSelected) {
Commit: 9de0602807f3bf288cac4206fcd9c328e564fce5
https://github.com/scummvm/scummvm/commit/9de0602807f3bf288cac4206fcd9c328e564fce5
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-29T21:23:55+02:00
Commit Message:
QDENGINE: Fix condition of statement in qdAnimation::redraw_rot()
Changed paths:
engines/qdengine/qdcore/qd_animation.cpp
diff --git a/engines/qdengine/qdcore/qd_animation.cpp b/engines/qdengine/qdcore/qd_animation.cpp
index 789bd1b4183..3e9b59eeb92 100644
--- a/engines/qdengine/qdcore/qd_animation.cpp
+++ b/engines/qdengine/qdcore/qd_animation.cpp
@@ -221,7 +221,7 @@ void qdAnimation::redraw_rot(int x, int y, int z, float angle, const Vect2f &sca
if (tileAnimation()) {
tileAnimation()->drawFrame(Vect2i(x, y), get_cur_frame_number(), angle, scale, mode);
- } else if (fabs(scale.x - scale.y) < 0.01f) {
+ } else if (fabs(scale.x - scale.y) >= 0.01f) {
if (const qdAnimationFrame *p = get_cur_frame())
p->redraw_rot(x, y, z, angle, scale, mode);
} else {
Commit: 68f82519d535a43dba7b35691ef2f139473fb2a4
https://github.com/scummvm/scummvm/commit/68f82519d535a43dba7b35691ef2f139473fb2a4
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-29T21:23:55+02:00
Commit Message:
QDENGINE: Add karaoke.dll minigame
Changed paths:
engines/qdengine/minigames/adv/m_karaoke.cpp
engines/qdengine/minigames/adv/m_karaoke.h
engines/qdengine/module.mk
engines/qdengine/qdcore/qd_minigame.cpp
diff --git a/engines/qdengine/minigames/adv/m_karaoke.cpp b/engines/qdengine/minigames/adv/m_karaoke.cpp
index cb690ef7e91..ede6fcfc7f3 100644
--- a/engines/qdengine/minigames/adv/m_karaoke.cpp
+++ b/engines/qdengine/minigames/adv/m_karaoke.cpp
@@ -19,6 +19,11 @@
*
*/
+#include "common/debug.h"
+#include "common/file.h"
+#include "common/system.h"
+
+#include "qdengine/qdengine.h"
#include "qdengine/minigames/adv/common.h"
#include "qdengine/minigames/adv/m_karaoke.h"
#include "qdengine/minigames/adv/RunTime.h"
@@ -48,7 +53,7 @@ Karaoke::Karaoke(MinigameManager *runtime) {
return;
struct Parse {
- XStream &file;
+ Common::File &file;
Nodes &nodes;
float currentTime;
@@ -62,7 +67,7 @@ Karaoke::Karaoke(MinigameManager *runtime) {
Node node;
node.type = STRING;
node.time = currentTime;
- node.text = string(begin, cur);
+ node.text = Common::String(begin, cur);
nodes.push_back(node);
} else if (putEmpty) {
Node node;
@@ -81,11 +86,11 @@ Karaoke::Karaoke(MinigameManager *runtime) {
return *cur++;
}
- Parse(XStream& _file, Nodes& _nodes) : file(_file), nodes(_nodes) {
+ Parse(Common::File& _file, Nodes& _nodes) : file(_file), nodes(_nodes) {
currentTime = 0.f;
begin = cur = buf;
bool prevNumber = false;
- while (!file.eof()) {
+ while (!file.eos()) {
switch (read()) {
case 0:
return;
@@ -98,16 +103,23 @@ Karaoke::Karaoke(MinigameManager *runtime) {
putLine(prevNumber);
prevNumber = true;
- file.seek(-1, XS_CUR);
+ file.seek(-1, SEEK_CUR);
float tm = 0;
- file >= tm;
+
+ char c;
+ do {
+ c = read();
+ } while ((c >= '0' && c <= '9') || c == '.');
+
+ cur = buf;
+ tm = strtod(cur, nullptr);
if (tm <= 0.f) {
currentTime = 0.f;
nodes.push_back(Node());
} else
currentTime = tm;
- file.seek(-1, XS_CUR);
+ file.seek(-1, SEEK_CUR);
continue;
}
case '>':
@@ -125,9 +137,9 @@ Karaoke::Karaoke(MinigameManager *runtime) {
if (!fileName)
return;
- XStream file(false);
- if (!file.open(fileName, XS_IN)) {
- xxassert(false, (XBuffer() < "Ðе ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ñайл \"" < fileName < "\"").c_str());
+ Common::File file;
+ if (!file.open(Common::Path((const char *)transCyrillic(fileName), '\\'))) {
+ assert(!(Common::String() + "Ðе ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ñайл \"" + fileName + "\"").c_str());
return;
}
@@ -137,7 +149,7 @@ Karaoke::Karaoke(MinigameManager *runtime) {
startScreenTag_ = 0;
currentTag_ = 0;
- startTime_ = 0.001f * GetTickCount();
+ startTime_ = 0.001f * g_system->getMillis();
startTagTime_ = 0.f;
setState(MinigameInterface::RUNNING);
@@ -145,7 +157,7 @@ Karaoke::Karaoke(MinigameManager *runtime) {
}
void Karaoke::quant(float dt) {
- float curTime = 0.001f * GetTickCount() - startTime_;
+ float curTime = 0.001f * g_system->getMillis() - startTime_;
if (curTime < 0.f)
curTime = 0.f;
@@ -158,35 +170,35 @@ void Karaoke::quant(float dt) {
return;
}
- XBuffer outText;
- outText < colorReaded_;
+ Common::String outText;
+ outText += colorReaded_;
int idx = startScreenTag_;
while (idx < currentTag_) {
- xassert(idx < nodes_.size());
- xassert(nodes_[idx].type == STRING);
- outText < nodes_[idx].text.c_str();
+ assert(idx < nodes_.size());
+ assert(nodes_[idx].type == STRING);
+ outText += nodes_[idx].text.c_str();
++idx;
}
float phase = (curTime - startTagTime_) / node.time;
- xassert(phase >= 0.f);
+ assert(phase >= 0.f);
if (phase >= 1.f) {
- outText < node.text.c_str() < "&>";
+ outText += node.text + "&>";
++currentTag_;
startTagTime_ += node.time;
if (currentTag_ == nodes_.size())
setState(MinigameInterface::GAME_WIN);
} else {
int part = phase * node.text.size();
- outText < string(node.text.begin(), node.text.begin() + part).c_str() < "&>";
- outText < string(node.text.begin() + part, node.text.end()).c_str();
+ outText += Common::String(node.text.begin(), node.text.begin() + part) + "&>";
+ outText += Common::String(node.text.begin() + part, node.text.end()).c_str();
}
++idx;
while (idx < nodes_.size()) {
if (nodes_[idx].type == CLEAR)
break;
- outText < nodes_[idx].text.c_str();
+ outText += nodes_[idx].text.c_str();
++idx;
}
diff --git a/engines/qdengine/minigames/adv/m_karaoke.h b/engines/qdengine/minigames/adv/m_karaoke.h
index 27e19a95e3b..a98b11e8c3e 100644
--- a/engines/qdengine/minigames/adv/m_karaoke.h
+++ b/engines/qdengine/minigames/adv/m_karaoke.h
@@ -22,10 +22,13 @@
#ifndef QDENGINE_MINIGAMES_ADV_M_KARAOKE_H
#define QDENGINE_MINIGAMES_ADV_M_KARAOKE_H
+#include "qdengine/minigames/adv/common.h"
#include "qdengine/minigames/adv/MinigameInterface.h"
namespace QDEngine {
+MinigameInterface *createMinigameKaraoke(MinigameManager *runtime);
+
class Karaoke : public MinigameInterface {
public:
Karaoke(MinigameManager *runtime);
@@ -44,10 +47,10 @@ private:
Node();
TagType type;
float time;
- string text;
+ Common::String text;
};
- typedef vector<Node> Nodes;
+ typedef Std::vector<Node> Nodes;
Nodes nodes_;
float startTime_;
diff --git a/engines/qdengine/module.mk b/engines/qdengine/module.mk
index ce254f4a28f..9f44a9c8686 100644
--- a/engines/qdengine/module.mk
+++ b/engines/qdengine/module.mk
@@ -14,6 +14,7 @@ MODULE_OBJS = \
minigames/adv/Range.o \
minigames/adv/RunTime.o \
minigames/adv/TextManager.o \
+ minigames/adv/m_karaoke.o \
minigames/adv/m_puzzle.o \
minigames/adv/m_scores.o \
minigames/adv/m_swap.o \
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index b8c3d5edecd..04c544970ca 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -72,6 +72,7 @@
// klepa
#include "qdengine/minigames/adv/m_puzzle.h"
+#include "qdengine/minigames/adv/m_karaoke.h"
namespace QDEngine {
@@ -345,11 +346,12 @@ bool qdMiniGame::load_interface() {
return true;
// klepa
- // Karaoke.dll
- // puzzle.dll
} else if (_dll_name == "DLL\\puzzle.dll") {
_interface = create_adv_minigame(_dll_name.c_str(), createMinigamePuzzle);
return true;
+ } else if (_dll_name == "DLL\\Karaoke.dll") {
+ _interface = create_adv_minigame(_dll_name.c_str(), createMinigameKaraoke);
+ return true;
// 3mice2
} else if (_dll_name == "DLL\\3Mice2_sbor_karty.dll") {
Commit: fc772bcac626da07653e45552c26620f2524d0d1
https://github.com/scummvm/scummvm/commit/fc772bcac626da07653e45552c26620f2524d0d1
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-29T21:23:55+02:00
Commit Message:
QDENGINE: Fix signed/unsigned mismatch warnings
Changed paths:
engines/qdengine/minigames/adv/m_karaoke.cpp
diff --git a/engines/qdengine/minigames/adv/m_karaoke.cpp b/engines/qdengine/minigames/adv/m_karaoke.cpp
index ede6fcfc7f3..b084bba49aa 100644
--- a/engines/qdengine/minigames/adv/m_karaoke.cpp
+++ b/engines/qdengine/minigames/adv/m_karaoke.cpp
@@ -164,7 +164,7 @@ void Karaoke::quant(float dt) {
Node& node = nodes_[currentTag_];
if (node.type == CLEAR) {
++currentTag_;
- if (currentTag_ == nodes_.size())
+ if ((uint)currentTag_ == nodes_.size())
setState(MinigameInterface::GAME_WIN);
startScreenTag_ = currentTag_;
return;
@@ -174,7 +174,7 @@ void Karaoke::quant(float dt) {
outText += colorReaded_;
int idx = startScreenTag_;
while (idx < currentTag_) {
- assert(idx < nodes_.size());
+ assert((uint)idx < nodes_.size());
assert(nodes_[idx].type == STRING);
outText += nodes_[idx].text.c_str();
++idx;
@@ -186,7 +186,7 @@ void Karaoke::quant(float dt) {
outText += node.text + "&>";
++currentTag_;
startTagTime_ += node.time;
- if (currentTag_ == nodes_.size())
+ if ((uint)currentTag_ == nodes_.size())
setState(MinigameInterface::GAME_WIN);
} else {
int part = phase * node.text.size();
@@ -195,7 +195,7 @@ void Karaoke::quant(float dt) {
}
++idx;
- while (idx < nodes_.size()) {
+ while ((uint)idx < nodes_.size()) {
if (nodes_[idx].type == CLEAR)
break;
outText += nodes_[idx].text.c_str();
Commit: 0fdfeb74a2853234657f4626e5474599e5a256e7
https://github.com/scummvm/scummvm/commit/0fdfeb74a2853234657f4626e5474599e5a256e7
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-29T21:23:55+02:00
Commit Message:
QDENGINE: Simulate RBUTTON as ALT+LBUTTON
Changed paths:
engines/qdengine/minigames/adv/RunTime.cpp
diff --git a/engines/qdengine/minigames/adv/RunTime.cpp b/engines/qdengine/minigames/adv/RunTime.cpp
index 479aa01ae3d..8dc23dfaa1b 100644
--- a/engines/qdengine/minigames/adv/RunTime.cpp
+++ b/engines/qdengine/minigames/adv/RunTime.cpp
@@ -721,8 +721,16 @@ const char *MinigameManager::parameter(const char *name, const char *def) const
}
bool MinigameManager::mouseLeftPressed() const {
- if (_invertMouseButtons)
+ if (_invertMouseButtons) {
+ if (keyPressed(VK_LMENU)) {
+ return _engine->is_mouse_event_active(qdEngineInterface::MOUSE_EV_LEFT_DOWN);
+ }
return _engine->is_mouse_event_active(qdEngineInterface::MOUSE_EV_RIGHT_DOWN);
+ }
+
+ if (keyPressed(VK_LMENU))
+ return false;
+
return _engine->is_mouse_event_active(qdEngineInterface::MOUSE_EV_LEFT_DOWN);
}
@@ -730,6 +738,10 @@ bool MinigameManager::mouseLeftPressed() const {
bool MinigameManager::mouseRightPressed() const {
if (_invertMouseButtons)
return _engine->is_mouse_event_active(qdEngineInterface::MOUSE_EV_LEFT_DOWN);
+
+ if (keyPressed(VK_LMENU)) {
+ return _engine->is_mouse_event_active(qdEngineInterface::MOUSE_EV_LEFT_DOWN);
+ }
return _engine->is_mouse_event_active(qdEngineInterface::MOUSE_EV_RIGHT_DOWN);
}
Commit: 24c83a628e7d6e1fe6736dab56c43be8abefe4f3
https://github.com/scummvm/scummvm/commit/24c83a628e7d6e1fe6736dab56c43be8abefe4f3
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-29T21:23:55+02:00
Commit Message:
QDENGINE: Fix text input handling
Changed paths:
engines/qdengine/qdcore/qd_interface_text_window.cpp
engines/qdengine/qdengine.cpp
diff --git a/engines/qdengine/qdcore/qd_interface_text_window.cpp b/engines/qdengine/qdcore/qd_interface_text_window.cpp
index 33d5950c482..b9559ef34d6 100644
--- a/engines/qdengine/qdcore/qd_interface_text_window.cpp
+++ b/engines/qdengine/qdcore/qd_interface_text_window.cpp
@@ -166,11 +166,8 @@ bool qdInterfaceTextWindow::keyboard_handler(Common::KeyCode vkey) {
}
bool qdInterfaceTextWindow::char_input_handler(int input) {
- warning("STUB: qdInterfaceTextWindow::char_input_handler");
- bool ret = false;
-#if 0
- bool ret = __super::char_input_handler(input);
-#endif
+ bool ret = qdInterfaceElement::char_input_handler(input);
+
if (_windowType == WINDOW_EDIT && _isEditing) {
if (!_inputStringLimit || (int)_inputString.size() < _inputStringLimit) {
if (Common::isPrint(input) || input == '_' || input == '-' || input == ' ') {
diff --git a/engines/qdengine/qdengine.cpp b/engines/qdengine/qdengine.cpp
index e9263436adb..f0e6041585f 100644
--- a/engines/qdengine/qdengine.cpp
+++ b/engines/qdengine/qdengine.cpp
@@ -288,6 +288,7 @@ Common::Error QDEngineEngine::run() {
} else if (event.kbd.ascii == 'g')
qdGameConfig::get_config().toggle_show_grid();
#endif
+ grDispatcher::instance()->handle_char_input(event.kbd.keycode);
break;
default:
break;
More information about the Scummvm-git-logs
mailing list