[Scummvm-git-logs] scummvm master -> fd2090b627b0d0b2afcbe63ab9a125cfb8c57e66
sev-
noreply at scummvm.org
Wed Sep 11 23:50:44 UTC 2024
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
92d05baeb4 QDENGINE: DT: Display tree in file list
73c9fda3f5 QDENGINE: Got rid of gotos in inv_popup.dll implementation
52e5e02b4a JANITORIAL: Fix indentation
06391ab725 QDENGINE: Initial code for ShveikShkatulka.dll minigame
b4bc45077b QDENGINE: Fix string literals in ShveikShkatulka.dll
fd2090b627 QDENGINE: Fix crash on startup in inv_popup.dll
Commit: 92d05baeb44b54ab3a5b57f9b97bf9bc5eed744f
https://github.com/scummvm/scummvm/commit/92d05baeb44b54ab3a5b57f9b97bf9bc5eed744f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-12T01:50:32+02:00
Commit Message:
QDENGINE: DT: Display tree in file list
Changed paths:
engines/qdengine/debugger/debugtools.cpp
engines/qdengine/debugger/dt-internal.h
diff --git a/engines/qdengine/debugger/debugtools.cpp b/engines/qdengine/debugger/debugtools.cpp
index 473615e5645..f2523d39d31 100644
--- a/engines/qdengine/debugger/debugtools.cpp
+++ b/engines/qdengine/debugger/debugtools.cpp
@@ -28,6 +28,7 @@
#include "common/compression/unzip.h"
#include "common/debug.h"
#include "common/path.h"
+#include "common/stack.h"
#include "common/system.h"
#include "graphics/opengl/shader.h"
@@ -159,7 +160,20 @@ void showImage(const ImGuiImage &image, const char *name, float scale) {
//setToolTipImage(image, name);
}
+FileTree::FileTree(Common::Path *p, Common::String n, bool node, int i) {
+ id = i;
+
+ if (!node) {
+ name = (char *)transCyrillic(n);
+ } else {
+ path = *p;
+ name = (char *)transCyrillic(p->baseName());
+ }
+}
+
void populateFileList() {
+ Common::Array<Common::Path> files;
+
// Iterate through the 3 resource pak files
for (int i = 0; i < qdFileManager::instance().get_num_packages(); i++) {
Common::Archive *archive = qdFileManager::instance().get_package(i);
@@ -169,10 +183,61 @@ void populateFileList() {
archive->listMembers(members);
for (auto &it : members)
- _state->_files.push_back(it->getPathInArchive());
+ files.push_back(it->getPathInArchive());
}
- Common::sort(_state->_files.begin(), _state->_files.end());
+ Common::sort(files.begin(), files.end());
+
+ // Now build a tree
+ Common::Path curr;
+ Common::Stack<FileTree *> treeStack;
+
+ _state->_files.name = "Resource";
+ treeStack.push(&_state->_files);
+
+ int id = 0;
+ for (int f = 0; f < files.size(); f++) {
+ // Skip duplicates between the archives
+ if (f && files[f] == files[f - 1])
+ continue;
+
+ Common::Path parent = files[f].getParent();
+
+ if (parent != curr) {
+ Common::StringArray curArr = curr.splitComponents();
+ Common::StringArray newArr = parent.splitComponents();
+
+ if (curArr.back().empty())
+ curArr.pop_back();
+
+ if (newArr.back().empty())
+ newArr.pop_back();
+
+ int pos = 0;
+ while (pos < curArr.size() && pos < newArr.size() && curArr[pos] == newArr[pos])
+ pos++;
+
+ // if we need to close directories
+ if (pos < curArr.size()) {
+ for (int i = pos; i < curArr.size(); i++)
+ (void)treeStack.pop();
+ }
+
+ for (; pos < newArr.size(); pos++) {
+ if (id == 0 && newArr[pos] == "Resource") // Skip the root node
+ continue;
+
+ treeStack.top()->children.push_back(new FileTree(nullptr, newArr[pos], false, ++id));
+ treeStack.push(treeStack.top()->children.back());
+ }
+
+ curr = parent;
+ }
+
+ treeStack.top()->children.push_back(new FileTree(&files[f], "", true, ++id));
+
+ id++;
+ }
}
static void displayQDA() {
@@ -232,7 +297,7 @@ static void displayQDA() {
ImGui::Separator();
if (!_state->_fileToDisplay.empty()) {
- showImage(imgID, (char *)transCyrillic(_state->_fileToDisplay.toString()), 2.0);
+ showImage(imgID, (char *)transCyrillic(_state->_fileToDisplay.toString()), 1.0);
} else {
ImGui::InvisibleButton("##canvas", ImVec2(32.f, 32.f));
}
@@ -241,7 +306,7 @@ static void displayQDA() {
imgID = getImageID(_state->_fileToDisplay, -_state->_qdaToDisplayFrame - 1);
- showImage(imgID, (char *)transCyrillic(_state->_fileToDisplay.toString()), 2.0);
+ showImage(imgID, (char *)transCyrillic(_state->_fileToDisplay.toString()), 1.0);
ImGui::EndTabItem();
}
@@ -274,6 +339,34 @@ static void displayTGA() {
showImage(imgID, (char *)transCyrillic(_state->_fileToDisplay.toString()), 1.0);
}
+void displayTree(FileTree *tree) {
+ if (tree->children.empty()) { // It is a file
+ if (ImGui::Selectable(tree->name.c_str(), _state->_fileToDisplay == tree->path)) {
+ _state->_fileToDisplay = tree->path;
+
+ if (tree->name.hasSuffixIgnoreCase(".qda")) {
+ _state->_qdaToDisplayFrame = 0;
+ _state->_qdaIsPlaying = false;
+
+ _state->_displayMode = kDisplayQDA;
+ } else if (tree->name.hasSuffixIgnoreCase(".tga")) {
+ _state->_displayMode = kDisplayTGA;
+ } else {
+ _state->_displayMode = -1;
+ }
+ }
+
+ return;
+ }
+
+ if (ImGui::TreeNode((void*)(intptr_t)(tree->id), tree->name.c_str())) {
+ for (auto &it : tree->children)
+ displayTree(it);
+
+ ImGui::TreePop();
+ }
+}
+
void showArchives() {
if (!_state->_showArchives)
return;
@@ -283,8 +376,8 @@ void showArchives() {
// Calculate the window size
ImVec2 windowSize = ImVec2(
- viewportSize.x * 0.7f,
- viewportSize.y * 0.7f
+ viewportSize.x * 0.9f,
+ viewportSize.y * 0.9f
);
// Calculate the centered position
@@ -298,7 +391,7 @@ void showArchives() {
ImGui::SetNextWindowSize(windowSize, ImGuiCond_FirstUseEver);
if (ImGui::Begin("Archives", &_state->_showArchives)) {
- ImGui::BeginChild("ChildL", ImVec2(ImGui::GetContentRegionAvail().x * 0.3f, ImGui::GetContentRegionAvail().y), ImGuiChildFlags_None);
+ ImGui::BeginChild("ChildL", ImVec2(ImGui::GetContentRegionAvail().x * 0.4f, ImGui::GetContentRegionAvail().y), ImGuiChildFlags_None);
ImGui::Button("\uef4f"); // Filter // filter_alt
ImGui::SameLine();
@@ -306,28 +399,10 @@ void showArchives() {
_state->_nameFilter.Draw();
ImGui::Separator();
- if (_state->_files.empty())
+ if (_state->_files.children.empty())
populateFileList();
- for (auto &it : _state->_files) {
- const char *fileName = (char *)transCyrillic(it.baseName());
- if (_state->_nameFilter.PassFilter(fileName)) {
- if (ImGui::Selectable(fileName, _state->_fileToDisplay == it)) {
- _state->_fileToDisplay = it;
-
- if (it.baseName().hasSuffixIgnoreCase(".qda")) {
- _state->_qdaToDisplayFrame = 0;
- _state->_qdaIsPlaying = false;
-
- _state->_displayMode = kDisplayQDA;
- } else if (it.baseName().hasSuffixIgnoreCase(".tga")) {
- _state->_displayMode = kDisplayTGA;
- } else {
- _state->_displayMode = -1;
- }
- }
- }
- }
+ displayTree(&_state->_files);
ImGui::EndChild();
diff --git a/engines/qdengine/debugger/dt-internal.h b/engines/qdengine/debugger/dt-internal.h
index 34be48fb577..ff0fd254c4e 100644
--- a/engines/qdengine/debugger/dt-internal.h
+++ b/engines/qdengine/debugger/dt-internal.h
@@ -35,6 +35,16 @@ enum {
kDisplayTGA,
};
+struct FileTree {
+ Common::Path path;
+ Common::String name;
+ Common::Array<FileTree *> children;
+ int id;
+
+ FileTree(Common::Path *p, Common::String n, bool node, int i);
+ FileTree() { id = 0; }
+};
+
typedef struct ImGuiState {
bool _showArchives = false;
@@ -49,7 +59,7 @@ typedef struct ImGuiState {
ImGuiTextFilter _nameFilter;
- Common::List<Common::Path> _files;
+ FileTree _files;
int _displayMode = -1;
} ImGuiState;
Commit: 73c9fda3f5716f6ed07b73fc28b775301fd83d7d
https://github.com/scummvm/scummvm/commit/73c9fda3f5716f6ed07b73fc28b775301fd83d7d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-12T01:50:33+02:00
Commit Message:
QDENGINE: Got rid of gotos in inv_popup.dll implementation
Changed paths:
engines/qdengine/minigames/inv_popup.h
diff --git a/engines/qdengine/minigames/inv_popup.h b/engines/qdengine/minigames/inv_popup.h
index 2970bd3324a..32ac4998d86 100644
--- a/engines/qdengine/minigames/inv_popup.h
+++ b/engines/qdengine/minigames/inv_popup.h
@@ -76,57 +76,48 @@ public:
}
qdMinigameObjectInterface *obj;
+ char buf[5];
+ const char *state = _scene->mouse_hover_object_interface()->current_state_name();
- if (!_scene->mouse_hover_object_interface()
- || _scene->mouse_object_interface()) {
+ if (!_scene->mouse_hover_object_interface() || _scene->mouse_object_interface()) {
_invDescObj->set_state("00");
obj = _invDescCloseupObj;
- goto LABEL_20;
- }
-
- char buf[5];
- const char *state;
- const char *pos;
-
- state = _scene->mouse_hover_object_interface()->current_state_name();
- if (!strstr(state, "#inv#")) {
+ obj->set_state("00");
+ } else if (!strstr(state, "#inv#")) {
obj = _invDescObj;
-LABEL_20:
obj->set_state("00");
- goto LABEL_21;
- }
-
- pos = strstr(state, "#inv#");
- char buf2[5];
- Common::strlcpy(buf2, pos + 5, 3);
- Common::strlcpy(buf, _invDescCloseupObj->current_state_name(), 3);
-
- if (buf2[0] != buf[0] || buf2[1] != buf[1]) {
- _invDescObj->set_state(buf2);
- _hoverObjectPos = _scene->mouse_hover_object_interface()->screen_R();
- if (_hoverObjectPos.x + _invDescObj->screen_size().x / 2 >= 800
- || (_hoverObjectPos.x - _invDescObj->screen_size().x / 2 <= 0)) {
- if (_hoverObjectPos.x + _invDescObj->screen_size().x / 2 < 800) {
- if (_hoverObjectPos.x - _invDescObj->screen_size().x / 2 <= 0)
- _invDescPos.x = _invDescObj->screen_size().x / 2 + 10;
+ } else {
+ const char *pos = strstr(state, "#inv#");
+ char buf2[5];
+ Common::strlcpy(buf2, pos + 5, 3);
+ Common::strlcpy(buf, _invDescCloseupObj->current_state_name(), 3);
+
+ if (buf2[0] != buf[0] || buf2[1] != buf[1]) {
+ _invDescObj->set_state(buf2);
+ _hoverObjectPos = _scene->mouse_hover_object_interface()->screen_R();
+ if (_hoverObjectPos.x + _invDescObj->screen_size().x / 2 >= 800
+ || (_hoverObjectPos.x - _invDescObj->screen_size().x / 2 <= 0)) {
+ if (_hoverObjectPos.x + _invDescObj->screen_size().x / 2 < 800) {
+ if (_hoverObjectPos.x - _invDescObj->screen_size().x / 2 <= 0)
+ _invDescPos.x = _invDescObj->screen_size().x / 2 + 10;
+ } else {
+ _invDescPos.x = 790 - _invDescObj->screen_size().x / 2;
+ }
} else {
- _invDescPos.x = 790 - _invDescObj->screen_size().x / 2;
- }
- } else {
- _invDescPos.x = _hoverObjectPos.x;
+ _invDescPos.x = _hoverObjectPos.x;
+ }
+ _invDescPos.y = _invDescObj->screen_size().y / 2 + 73;
+ _invDescObj->set_R(_scene->screen2world_coords(_invDescPos, -1000.0));
+ _invDescCloseupObj->set_state("00");
}
- _invDescPos.y = _invDescObj->screen_size().y / 2 + 73;
- _invDescObj->set_R(_scene->screen2world_coords(_invDescPos, -1000.0));
- _invDescCloseupObj->set_state("00");
}
-LABEL_21:
if (_scene->mouse_right_click_object_interface()) {
if (!_scene->mouse_object_interface()) {
state = _scene->mouse_hover_object_interface()->current_state_name();
if (strstr(state, "#closeup#")) {
- pos = strstr(state, "#inv#");
+ const char *pos = strstr(state, "#inv#");
Common::strlcpy(buf, pos + 5, 3);
buf[2] = 0;
Commit: 52e5e02b4afaa473b96284bb2602f21cb452f174
https://github.com/scummvm/scummvm/commit/52e5e02b4afaa473b96284bb2602f21cb452f174
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-12T01:50:33+02:00
Commit Message:
JANITORIAL: Fix indentation
Changed paths:
engines/qdengine/minigames/inv_popup.h
diff --git a/engines/qdengine/minigames/inv_popup.h b/engines/qdengine/minigames/inv_popup.h
index 32ac4998d86..63d34e85d7b 100644
--- a/engines/qdengine/minigames/inv_popup.h
+++ b/engines/qdengine/minigames/inv_popup.h
@@ -42,26 +42,27 @@ public:
if (!_scene)
return false;
- //_invClickObj = _scene->object_interface("$inv_click_flag");
- _invDescObj = _scene->object_interface("%inv_desc");
- _invDescCloseupObj = _scene->object_interface("%inv_desc_closeup");
- //_invActiveFlagObj = _scene->object_interface("$inv_active_flag");
- _blockPersObj = _scene->object_interface("\x24\xe1\xeb\xee\xea\xe8\xf0\xee\xe2\xea\xe0\x5f\xef\xe5\xf0\xf1\xee\xed\xe0\xe6\xe0"); // "$блокиÑовка_пеÑÑонажа"
- _blockPersFlagObj = _scene->object_interface("\x24\xe1\xeb\xee\xea\xe8\xf0\xee\xe2\xea\xe0\x5f\xef\xe5\xf0\xf1\xee\xed\xe0\xe6\xe0\x5f\xf4\xeb\xe0\xe3"); // "$блокиÑовка_пеÑÑонажа_Ñлаг"
+ //_invClickObj = _scene->object_interface("$inv_click_flag");
+ _invDescObj = _scene->object_interface("%inv_desc");
+ _invDescCloseupObj = _scene->object_interface("%inv_desc_closeup");
+ //_invActiveFlagObj = _scene->object_interface("$inv_active_flag");
+ _blockPersObj = _scene->object_interface("\x24\xe1\xeb\xee\xea\xe8\xf0\xee\xe2\xea\xe0\x5f\xef\xe5\xf0\xf1\xee\xed\xe0\xe6\xe0"); // "$блокиÑовка_пеÑÑонажа"
+ _blockPersFlagObj = _scene->object_interface("\x24\xe1\xeb\xee\xea\xe8\xf0\xee\xe2\xea\xe0\x5f\xef\xe5\xf0\xf1\xee\xed\xe0\xe6\xe0\x5f\xf4\xeb\xe0\xe3"); // "$блокиÑовка_пеÑÑонажа_Ñлаг"
- _shveikObj = _scene->personage_interface("\xd8\xe2\xe5\xe9\xea"); // "Швейк"
+ _shveikObj = _scene->personage_interface("\xd8\xe2\xe5\xe9\xea"); // "Швейк"
- _shveikLookObj = _scene->object_interface("\x24\xf8\xe2\xe5\xe9\xea\x20\xf1\xec\xee\xf2\xf0\xe8\xf2"); // "$Ñвейк ÑмоÑÑиÑ"
- _shveikMoveObj = _scene->object_interface("\x25\xF3\xEF\xF0\xE0\xE2\xEB\xE5\xED\xE8\xE5\x20\xEE\xE6\xE8\xE2\xEB\xFF\xE6\xE5\xEC\x20\xD8\xE2\xE5\xE9\xEA\xE0"); // "%ÑпÑавление оживлÑжем Швейка"
- _shveikMoveEnabledObj = _scene->object_interface("\x25\xEE\xE6\xE8\xE2\xEB\xFF\xE6\x20\xD8\xE2\xE5\xE9\xEA\xE0\x20\xF0\xE0\xE7\xF0\xE5\xF8\xE5\xED"); // "%оживлÑж Швейка ÑазÑеÑен"
+ _shveikLookObj = _scene->object_interface("\x24\xf8\xe2\xe5\xe9\xea\x20\xf1\xec\xee\xf2\xf0\xe8\xf2"); // "$Ñвейк ÑмоÑÑиÑ"
+ _shveikMoveObj = _scene->object_interface("\x25\xF3\xEF\xF0\xE0\xE2\xEB\xE5\xED\xE8\xE5\x20\xEE\xE6\xE8\xE2\xEB\xFF\xE6\xE5\xEC\x20\xD8\xE2\xE5\xE9\xEA\xE0"); // "%ÑпÑавление оживлÑжем Швейка"
+ _shveikMoveEnabledObj = _scene->object_interface("\x25\xEE\xE6\xE8\xE2\xEB\xFF\xE6\x20\xD8\xE2\xE5\xE9\xEA\xE0\x20\xF0\xE0\xE7\xF0\xE5\xF8\xE5\xED"); // "%оживлÑж Швейка ÑазÑеÑен"
- _someFlag = false;
- _scene->activate_personage("\xd8\xe2\xe5\xe9\xea"); // "Швейк"
+ _someFlag = false;
+ _scene->activate_personage("\xd8\xe2\xe5\xe9\xea"); // "Швейк"
+
+ // srand(time(0));
+ _shveikIsMoving = 0;
+ _time = -1.0;
+ _timeout = -1;
- // srand(time(0));
- _shveikIsMoving = 0;
- _time = -1.0;
- _timeout = -1;
return true;
}
Commit: 06391ab725041a100aa57d35f62469b50cc4a9ee
https://github.com/scummvm/scummvm/commit/06391ab725041a100aa57d35f62469b50cc4a9ee
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-12T01:50:33+02:00
Commit Message:
QDENGINE: Initial code for ShveikShkatulka.dll minigame
Changed paths:
A engines/qdengine/minigames/shveik_shkatulka.h
engines/qdengine/qdcore/qd_minigame.cpp
diff --git a/engines/qdengine/minigames/shveik_shkatulka.h b/engines/qdengine/minigames/shveik_shkatulka.h
new file mode 100644
index 00000000000..b101c7bc563
--- /dev/null
+++ b/engines/qdengine/minigames/shveik_shkatulka.h
@@ -0,0 +1,148 @@
+/* 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 QDENGINE_MINIGAMES_SHVEIK_SHKATULKA_H
+#define QDENGINE_MINIGAMES_SHVEIK_SHKATULKA_H
+
+#include "common/debug.h"
+
+#include "qdengine/qd_fwd.h"
+#include "qdengine/qdcore/qd_minigame_interface.h"
+
+namespace QDEngine {
+
+class qdShveikShkatulkaMiniGame : public qdMiniGameInterface {
+public:
+ qdShveikShkatulkaMiniGame() {}
+ ~qdShveikShkatulkaMiniGame() {}
+
+ bool init(const qdEngineInterface *engine_interface) {
+ debugC(1, kDebugMinigames, "ShveikShkatulka::init()");
+
+ _engine = engine_interface;
+ _scene = engine_interface->current_scene_interface();
+ if (!_scene)
+ return false;
+
+ _stones[0] = _scene->object_interface("каменÑ1");
+ _stones[1] = _scene->object_interface("каменÑ2");
+ _stones[2] = _scene->object_interface("каменÑ3");
+ _stones[3] = _scene->object_interface("каменÑ4");
+ _stones[4] = _scene->object_interface("каменÑ5");
+ _stones[5] = _scene->object_interface("каменÑ6");
+ _stones[6] = _scene->object_interface("каменÑ7");
+ _stones[7] = _scene->object_interface("каменÑ8");
+ _stones[8] = _scene->object_interface("каменÑ9");
+ _stones[9] = _scene->object_interface("каменÑ10");
+ _stones[10] = _scene->object_interface("каменÑ11");
+ _stones[11] = _scene->object_interface("каменÑ12");
+ _stones[12] = _scene->object_interface("каменÑ13");
+ _stones[13] = _scene->object_interface("каменÑ14");
+
+ _cursorObj = _scene->object_interface("кÑÑÑоÑ");
+ _doneObj = _scene->object_interface("$done");
+ _startObj = _scene->object_interface("$запÑÑк");
+ _jumpSoundObj = _scene->object_interface("звÑк пеÑеÑкока");
+
+ _someVar1 = 0;
+ _cursorTakenFlag = 0;
+ _someVar3 = 0;
+ _someVar4 = 0;
+
+ if (_startObj->is_state_active("не бÑл")) {
+ resetStones();
+ _startObj->set_state("бÑл");
+ }
+
+ return true;
+ }
+
+ bool quant(float dt) {
+ debugC(3, kDebugMinigames, "ShveikShkatulka::quant(%f)", dt);
+
+ return true;
+ }
+
+ bool finit() {
+ debugC(1, kDebugMinigames, "ShveikShkatulka::finit()");
+
+ if (_scene) {
+ _engine->release_scene_interface(_scene);
+ _scene = 0;
+ }
+
+ return true;
+ }
+
+ bool new_game(const qdEngineInterface *engine_interface) {
+ return true;
+ }
+
+ int save_game(const qdEngineInterface *engine_interface, const qdMinigameSceneInterface *scene_interface, char *buffer, int buffer_size) {
+ return 0;
+ }
+
+ int load_game(const qdEngineInterface *engine_interface, const qdMinigameSceneInterface *scene_interface, const char *buffer, int buffer_size) {
+ return 0;
+ }
+
+ enum { INTERFACE_VERSION = 112 };
+ int version() const {
+ return INTERFACE_VERSION;
+ }
+
+private:
+ void resetStones() {
+ _stones[0]->set_state("15");
+ _stones[1]->set_state("16");
+ _stones[2]->set_state("17");
+ _stones[3]->set_state("110");
+ _stones[4]->set_state("11");
+ _stones[5]->set_state("12");
+ _stones[6]->set_state("14");
+ _stones[7]->set_state("26");
+ _stones[8]->set_state("27");
+ _stones[9]->set_state("210");
+ _stones[10]->set_state("211");
+ _stones[11]->set_state("21");
+ _stones[12]->set_state("22");
+ _stones[13]->set_state("24");
+ }
+
+private:
+ const qdEngineInterface *_engine = nullptr;
+ qdMinigameSceneInterface *_scene = nullptr;
+
+ int _someVar1 = 0;
+ bool _cursorTakenFlag = false;
+ int _someVar3 = 0;
+ int _someVar4 = 0;
+
+ qdMinigameObjectInterface *_stones[14];
+ qdMinigameObjectInterface *_cursorObj = nullptr;
+ qdMinigameObjectInterface *_doneObj = nullptr;
+ qdMinigameObjectInterface *_startObj = nullptr;
+ qdMinigameObjectInterface *_jumpSoundObj = nullptr;
+};
+
+} // namespace QDEngine
+
+#endif // QDENGINE_MINIGAMES_SHVEIK_SHKATULKA_H
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index 7cfa1163ca3..22ec3c84b5d 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -48,6 +48,7 @@
// shveik
#include "qdengine/minigames/inv_popup.h"
+#include "qdengine/minigames/shveik_shkatulka.h"
namespace QDEngine {
Commit: b4bc45077b4b33f1b2cc8ffbb895a9603785ed6d
https://github.com/scummvm/scummvm/commit/b4bc45077b4b33f1b2cc8ffbb895a9603785ed6d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-12T01:50:33+02:00
Commit Message:
QDENGINE: Fix string literals in ShveikShkatulka.dll
Changed paths:
engines/qdengine/minigames/shveik_shkatulka.h
diff --git a/engines/qdengine/minigames/shveik_shkatulka.h b/engines/qdengine/minigames/shveik_shkatulka.h
index b101c7bc563..59765569771 100644
--- a/engines/qdengine/minigames/shveik_shkatulka.h
+++ b/engines/qdengine/minigames/shveik_shkatulka.h
@@ -42,34 +42,34 @@ public:
if (!_scene)
return false;
- _stones[0] = _scene->object_interface("каменÑ1");
- _stones[1] = _scene->object_interface("каменÑ2");
- _stones[2] = _scene->object_interface("каменÑ3");
- _stones[3] = _scene->object_interface("каменÑ4");
- _stones[4] = _scene->object_interface("каменÑ5");
- _stones[5] = _scene->object_interface("каменÑ6");
- _stones[6] = _scene->object_interface("каменÑ7");
- _stones[7] = _scene->object_interface("каменÑ8");
- _stones[8] = _scene->object_interface("каменÑ9");
- _stones[9] = _scene->object_interface("каменÑ10");
- _stones[10] = _scene->object_interface("каменÑ11");
- _stones[11] = _scene->object_interface("каменÑ12");
- _stones[12] = _scene->object_interface("каменÑ13");
- _stones[13] = _scene->object_interface("каменÑ14");
-
- _cursorObj = _scene->object_interface("кÑÑÑоÑ");
+ _stones[0] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x31"); // "каменÑ1"
+ _stones[1] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x32"); // "каменÑ2"
+ _stones[2] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x33"); // "каменÑ3"
+ _stones[3] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x34"); // "каменÑ4"
+ _stones[4] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x35"); // "каменÑ5"
+ _stones[5] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x36"); // "каменÑ6"
+ _stones[6] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x37"); // "каменÑ7"
+ _stones[7] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x38"); // "каменÑ8"
+ _stones[8] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x39"); // "каменÑ9"
+ _stones[9] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x31\x30"); // "каменÑ10"
+ _stones[10] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x31\x31"); // "каменÑ11"
+ _stones[11] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x31\x32"); // "каменÑ12"
+ _stones[12] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x31\x33"); // "каменÑ13"
+ _stones[13] = _scene->object_interface("\xea\xe0\xec\xe5\xed\xfc\x31\x34"); // "каменÑ14"
+
+ _cursorObj = _scene->object_interface("\xea\xf3\xf0\xf1\xee\xf0"); // "кÑÑÑоÑ"
_doneObj = _scene->object_interface("$done");
- _startObj = _scene->object_interface("$запÑÑк");
- _jumpSoundObj = _scene->object_interface("звÑк пеÑеÑкока");
+ _startObj = _scene->object_interface("\x24\xe7\xe0\xef\xf3\xf1\xea"); // "$запÑÑк"
+ _jumpSoundObj = _scene->object_interface("\xe7\xe2\xf3\xea\x20\xef\xe5\xf0\xe5\xf1\xea\xee\xea\xe0"); // "звÑк пеÑеÑкока"
_someVar1 = 0;
_cursorTakenFlag = 0;
_someVar3 = 0;
_someVar4 = 0;
- if (_startObj->is_state_active("не бÑл")) {
+ if (_startObj->is_state_active("\xed\xe5\x20\xe1\xfb\xeb")) { // "не бÑл"
resetStones();
- _startObj->set_state("бÑл");
+ _startObj->set_state("\xe1\xfb\xeb"); // "бÑл"
}
return true;
Commit: fd2090b627b0d0b2afcbe63ab9a125cfb8c57e66
https://github.com/scummvm/scummvm/commit/fd2090b627b0d0b2afcbe63ab9a125cfb8c57e66
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-12T01:50:33+02:00
Commit Message:
QDENGINE: Fix crash on startup in inv_popup.dll
Changed paths:
engines/qdengine/minigames/inv_popup.h
diff --git a/engines/qdengine/minigames/inv_popup.h b/engines/qdengine/minigames/inv_popup.h
index 63d34e85d7b..7b07f7c394d 100644
--- a/engines/qdengine/minigames/inv_popup.h
+++ b/engines/qdengine/minigames/inv_popup.h
@@ -78,7 +78,10 @@ public:
qdMinigameObjectInterface *obj;
char buf[5];
- const char *state = _scene->mouse_hover_object_interface()->current_state_name();
+ const char *state = nullptr;
+
+ if (_scene->mouse_hover_object_interface())
+ state = _scene->mouse_hover_object_interface()->current_state_name();
if (!_scene->mouse_hover_object_interface() || _scene->mouse_object_interface()) {
_invDescObj->set_state("00");
More information about the Scummvm-git-logs
mailing list