[Scummvm-git-logs] scummvm master -> 8763956bd50a72a539154fb5e3abdf8409418e66
sev-
noreply at scummvm.org
Tue Sep 10 21:52:59 UTC 2024
This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
db324acd33 QDENGINE: Initial code for inv_popup.dll for shveik
190bb5db26 QDENGINE: Furhter code for inv_popup.dll used in shveik
343cba819e QDENGINE: Added more characters to transCyrillic
c08bb029d8 QDENGINE: Added sanity check to minigame interface
9e02a2977f QDENGINE: Enabled and plugged in inv_popup.dll for shveik
ff9e303a08 QDENGINE: Revert to VKEYS, since we now have the proer support for it
1e34927ea5 QDENGINE: Fixes to inv_popup.dll used in shveik. Works now
8763956bd5 QDENGINE: Set video playback volume
Commit: db324acd33a4a877af8ab1fbe68fc01e6dfbb828
https://github.com/scummvm/scummvm/commit/db324acd33a4a877af8ab1fbe68fc01e6dfbb828
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-10T23:52:46+02:00
Commit Message:
QDENGINE: Initial code for inv_popup.dll for shveik
Changed paths:
A engines/qdengine/minigames/inv_popup.h
engines/qdengine/qdcore/qd_minigame.cpp
diff --git a/engines/qdengine/minigames/inv_popup.h b/engines/qdengine/minigames/inv_popup.h
new file mode 100644
index 00000000000..ff6879762ee
--- /dev/null
+++ b/engines/qdengine/minigames/inv_popup.h
@@ -0,0 +1,130 @@
+/* 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_INV_POPUP_H
+#define QDENGINE_MINIGAMES_INV_POPUP_H
+
+#include "common/debug.h"
+
+#include "qdengine/qd_fwd.h"
+#include "qdengine/qdcore/qd_minigame_interface.h"
+
+namespace QDEngine {
+
+class qdInvPopupMiniGame : public qdMiniGameInterface {
+public:
+ qdInvPopupMiniGame() {}
+ ~qdInvPopupMiniGame() {}
+
+ bool init(const qdEngineInterface *engine_interface) {
+ debugC(1, kDebugMinigames, "InvPopup::init()");
+
+ _engine = engine_interface;
+ _scene = engine_interface->current_scene_interface();
+ 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"); // "$блокиÑовка_пеÑÑонажа_Ñлаг"
+
+ _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"); // "%оживлÑж Швейка ÑазÑеÑен"
+
+ _someFlag = false;
+ _scene->activate_personage("\xd8\xe2\xe5\xe9\xea"); // "Швейк"
+
+ // srand(time(0));
+ _shveikIsMoving = 0;
+ _time = -1.0;
+ _timeout = -1;
+ return true;
+ }
+
+ bool quant(float dt) {
+ debugC(3, kDebugMinigames, "InvPopup::quant(%f)", dt);
+
+
+ return true;
+ }
+
+ bool finit() {
+ debugC(1, kDebugMinigames, "InvPopup::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:
+ const qdEngineInterface *_engine = nullptr;
+ qdMinigameSceneInterface *_scene = nullptr;
+
+ qdMinigameObjectInterface *_invClickObj = nullptr;
+ qdMinigameObjectInterface *_invDescObj = nullptr;
+ qdMinigameObjectInterface *_invDescCloseupObj = nullptr;
+ qdMinigameObjectInterface *_invActiveFlagObj = nullptr;
+ qdMinigameObjectInterface *_shveikObj = nullptr;
+ qdMinigameObjectInterface *_blockPersObj = nullptr;
+ qdMinigameObjectInterface *_blockPersFlagObj = nullptr;
+ qdMinigameObjectInterface *_shveikMoveObj = nullptr;
+ qdMinigameObjectInterface *_shveikMoveEnabledObj = nullptr;
+ qdMinigameObjectInterface *_shveikLookObj = nullptr;
+
+ mgVect2i _hoverObjectPos;
+ mgVect2i _invDescPos;
+ bool _someFlag = false;
+ int _direction = 0;
+ bool _shveikIsMoving = false;
+ float _time = 0;
+ int _timeout = 0;
+ mgVect2f _oldShveikPos;
+};
+
+} // namespace QDEngine
+
+#endif // QDENGINE_MINIGAMES_INV_POPUP_H
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index 3ed70f302a6..7020adb28a0 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -46,6 +46,9 @@
#include "qdengine/minigames/book_all.h"
#include "qdengine/minigames/puzzle_all.h"
+// shveik
+#include "qdengine/minigames/inv_popup.h"
+
namespace QDEngine {
Commit: 190bb5db26de824dd5e007b7e4286c953880d055
https://github.com/scummvm/scummvm/commit/190bb5db26de824dd5e007b7e4286c953880d055
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-10T23:52:46+02:00
Commit Message:
QDENGINE: Furhter code for inv_popup.dll used in shveik
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 ff6879762ee..5445cf5b484 100644
--- a/engines/qdengine/minigames/inv_popup.h
+++ b/engines/qdengine/minigames/inv_popup.h
@@ -68,7 +68,237 @@ public:
bool quant(float dt) {
debugC(3, kDebugMinigames, "InvPopup::quant(%f)", dt);
+#if 0
+ if (_blockPersObj->is_state_active("вклÑÑиÑÑ")) {
+ _scene->activate_personage("Lock");
+ } else if (_blockPersObj->is_state_active("вÑклÑÑиÑÑ")) {
+ _scene->activate_personage("Швейк");
+ _blockPersObj->set_state("вÑклÑÑена");
+ }
+
+ qdMinigameObjectInterface *obj;
+
+ 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;
+
+ state = _scene->mouse_hover_object_interface()->current_state_name();
+ if (!strstr(state, "#inv#")) {
+ obj = _invDescObj;
+LABEL_20:
+ obj->set_state("00");
+ goto LABEL_21;
+ }
+
+ const char *pos = strstr(state, "#inv#");
+ char buf2[5];
+ strncpy(buf2, pos + 5, 2);
+ strncpy(buf, _invDescCloseupObj->current_state_name(), 2u);
+
+ 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 = _hoverObjectPos.x;
+ }
+ _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#");
+ strncpy(buf, pos + 5, 2u);
+ buf[2] = 0;
+
+ _invDescCloseupObj->set_state(buf);
+ _invDescPos.y = 300;
+ _invDescPos.x = 400;
+ _invDescCloseupObj->set_R( _scene->screen2world_coords(_invDescPos, -1000.0));
+ _invDescObj->set_state("00");
+ }
+ }
+ }
+
+ if (Common::String(_blockPersFlagObj->current_state_name()) == "да") {
+ if (!_blockPersObj->is_state_active("вклÑÑиÑÑ"))
+ _blockPersObj->set_state("вклÑÑиÑÑ");
+ } else if (_blockPersObj->is_state_active("вклÑÑиÑÑ")) {
+ _blockPersObj->set_state("вÑклÑÑиÑÑ");
+ }
+
+ _direction = -10;
+ int angle = (int)(_shveikObj->direction_angle() * 180.0 * 0.3183098865475127);
+
+ if (angle > 220 && angle < 230)
+ _direction = 1;
+ else if (angle > 265 && angle < 275)
+ _direction = 2;
+ else if (angle > 310 && angle < 320)
+ _direction = 3;
+ else if (angle > 175 && angle < 185)
+ _direction = 4;
+ else if (angle >= 0 && angle < 5)
+ _direction = 6;
+ else if (angle > 40 && angle < 50)
+ _direction = 9;
+ else if (angle > 85 && angle < 95)
+ _direction = 8;
+ else if (angle > 130 && angle < 140)
+ _direction = 7;
+
+ Common::String curState = _shveikObj->current_state_name();
+ if (curState == "#1#") {
+ _direction = 1;
+ } else if (curState == "#2#") {
+ _direction = 2;
+ } else if (curState == "#3#") {
+ _direction = 3;
+ } else if (curState == "#4#") {
+ _direction = 4;
+ } else if (curState == "#6#") {
+ _direction = 6;
+ } else if (curState == "#7#") {
+ _direction = 7;
+ } else if (curState == "#8#") {
+ _direction = 8;
+ } else if (curState == "#9#") {
+ _direction = 9;
+ }
+
+ switch (_direction) {
+ case -10:
+ _shveikLookObj->set_state("0");
+ break;
+ case 1:
+ _shveikLookObj->set_state("1");
+ break;
+ case 2:
+ _shveikLookObj->set_state("2");
+ break;
+ case 3:
+ _shveikLookObj->set_state("3");
+ break;
+ case 4:
+ _shveikLookObj->set_state("4");
+ break;
+ case 6:
+ _shveikLookObj->set_state("6");
+ break;
+ case 7:
+ _shveikLookObj->set_state("7");
+ break;
+ case 8:
+ _shveikLookObj->set_state("8");
+ break;
+ case 9:
+ _shveikLookObj->set_state("9");
+ break;
+ default:
+ break;
+ }
+
+ if (curState == "?1?") {
+ _direction = 10;
+ } else if (curState == "?2?") {
+ _direction = 20;
+ } else if (curState == "?3?") {
+ _direction = 30;
+ } else if (curState == "?4?") {
+ _direction = 40;
+ } else if (curState == "?6?") {
+ _direction = 60;
+ } else if (curState == "?7?") {
+ _direction = 70;
+ } else if (curState == "?8?") {
+ _direction = 80;
+ } else if (curState == "?9?") {
+ _direction = 90;
+ }
+
+ switch (_direction) {
+ case 10:
+ _shveikObj->set_direction_angle(5 * M_PI / 4);
+ break;
+ case 20:
+ _shveikObj->set_direction_angle(6 * M_PI / 4);
+ break;
+ case 30:
+ _shveikObj->set_direction_angle(7 * M_PI / 4);
+ break;
+ case 40:
+ _shveikObj->set_direction_angle(M_PI);
+ break;
+ case 60:
+ _shveikObj->set_direction_angle(0.0);
+ break;
+ case 70:
+ _shveikObj->set_direction_angle(3 * M_PI / 4);
+ break;
+ case 80:
+ _shveikObj->set_direction_angle(2 * M_PI / 4);
+ break;
+ case 90:
+ _shveikObj->set_direction_angle(1 * M_PI / 4);
+ break;
+ default:
+ break;
+ }
+
+ if (strstr(_shveikMoveEnabledObj->current_state_name(), "да")) {
+ if (!_shveikIsMoving) {
+ _shveikIsMoving = 1;
+ _time = 0.0;
+ _timeout = qd_rnd(10) + 5;
+ }
+
+ if (_timeout >= _time || _time == -1.0) {
+ _time = dt + _time;
+ } else {
+ _shveikIsMoving = 2;
+ _time = -1.0;
+ _shveikMoveObj->set_state("вÑполниÑÑ");
+ }
+ }
+
+ if ((strstr(_shveikMoveEnabledObj->current_state_name(), "неÑ") || _shveikMoveObj->is_state_active("оÑÑабоÑан"))
+ && _shveikIsMoving > 0) {
+ _shveikIsMoving = 0;
+ _time = -1.0;
+ _timeout = -1;
+ _shveikMoveObj->set_state("ожидание");
+ }
+
+ if ((_shveikObj->R().x != _oldShveikPos.x
+ || _shveikObj->R().y != _oldShveikPos.y)
+ && _shveikIsMoving > 0) {
+ _shveikIsMoving = 0;
+ _time = -1.0;
+ _timeout = -1;
+ _shveikMoveObj->set_state("ожидание");
+ }
+ _oldShveikPos = _shveikObj->R();
+#endif
return true;
}
Commit: 343cba819e58e749e9600efd38d60a10fef79d8e
https://github.com/scummvm/scummvm/commit/343cba819e58e749e9600efd38d60a10fef79d8e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-10T23:52:46+02:00
Commit Message:
QDENGINE: Added more characters to transCyrillic
This covers shveik output
Changed paths:
engines/qdengine/qdengine.cpp
diff --git a/engines/qdengine/qdengine.cpp b/engines/qdengine/qdengine.cpp
index a41e42549d5..e9bf5183689 100644
--- a/engines/qdengine/qdengine.cpp
+++ b/engines/qdengine/qdengine.cpp
@@ -531,7 +531,8 @@ byte *transCyrillic(const Common::String &str) {
static byte tmp[1024];
#ifndef WIN32
- static int trans[] = { 0xa8, 0xd081, 0xb8, 0xd191, 0xc0, 0xd090,
+ static int trans[] = {
+ 0xa8, 0xd081, 0xab, 0xc2ab, 0xb8, 0xd191, 0xbb, 0xc2bb, 0xc0, 0xd090,
0xc1, 0xd091, 0xc2, 0xd092, 0xc3, 0xd093, 0xc4, 0xd094,
0xc5, 0xd095, 0xc6, 0xd096, 0xc7, 0xd097, 0xc8, 0xd098,
0xc9, 0xd099, 0xca, 0xd09a, 0xcb, 0xd09b, 0xcc, 0xd09c,
@@ -578,10 +579,18 @@ byte *transCyrillic(const Common::String &str) {
}
}
- if (*p == 0x96) { // "â" -- EN DASH
+ if (*p == 0x85) { // "â¦" -- Horizontal Ellipsis
+ tmp[i++] = 0xE2;
+ tmp[i++] = 0x80;
+ tmp[i++] = 0xA6;
+ } else if (*p == 0x96) { // "â" -- EN DASH
tmp[i++] = 0xE2;
tmp[i++] = 0x80;
tmp[i++] = 0x93;
+ } else if (*p == 0x97) { // "â" -- EM DASH
+ tmp[i++] = 0xE2;
+ tmp[i++] = 0x80;
+ tmp[i++] = 0x94;
} else {
if (!trans[j]) {
warning("transCyrillic: no mapping for %d (0x%x)", *p, *p);
Commit: c08bb029d805df9c424ee9b53d583d0f9430ff2c
https://github.com/scummvm/scummvm/commit/c08bb029d805df9c424ee9b53d583d0f9430ff2c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-10T23:52:47+02:00
Commit Message:
QDENGINE: Added sanity check to minigame interface
Changed paths:
engines/qdengine/qdcore/qd_minigame_interface.cpp
diff --git a/engines/qdengine/qdcore/qd_minigame_interface.cpp b/engines/qdengine/qdcore/qd_minigame_interface.cpp
index 481e56ebf59..e90d7fc6f64 100644
--- a/engines/qdengine/qdcore/qd_minigame_interface.cpp
+++ b/engines/qdengine/qdcore/qd_minigame_interface.cpp
@@ -312,6 +312,8 @@ qdMinigameObjectInterface *qdMinigameSceneInterfaceImpl::object_interface(const
if (qdGameObjectAnimated * p = dynamic_cast<qdGameObjectAnimated * >(_scene->get_object(object_name)))
return new qdMinigameObjectInterfaceImpl(p);
+ warning("object_interface(): Unknown object '%s'", transCyrillic(object_name));
+
return NULL;
}
@@ -319,6 +321,8 @@ qdMinigameObjectInterface *qdMinigameSceneInterfaceImpl::personage_interface(con
if (qdGameObjectMoving * p = dynamic_cast<qdGameObjectMoving * >(_scene->get_object(personage_name)))
return new qdMinigamePersonageInterfaceImpl(p);
+ warning("personage_interface(): Unknown personage '%s'", transCyrillic(personage_name));
+
return NULL;
}
@@ -391,6 +395,9 @@ const char *qdMinigameObjectInterfaceImplBase::current_state_name() const {
}
bool qdMinigameObjectInterfaceImplBase::is_state_active(const char *state_name) const {
+ if (!has_state(state_name))
+ warning("is_state_active(): Unknown state '%s'", transCyrillic(state_name));
+
return _object->is_state_active(state_name);
}
@@ -409,6 +416,8 @@ bool qdMinigameObjectInterfaceImplBase::set_state(const char *state_name) {
return true;
}
+ warning("set_state(): Unknown state '%s'", transCyrillic(state_name));
+
return false;
}
@@ -421,6 +430,8 @@ int qdMinigameObjectInterfaceImplBase::state_index(const char *state_name) const
if (const qdGameObjectState * p = _object->get_state(state_name))
return _object->get_state_index(p);
+ warning("state_index(): Unknown state '%s'", transCyrillic(state_name));
+
return -1;
}
Commit: 9e02a2977f7f2d229c27a583a41f9493931d3307
https://github.com/scummvm/scummvm/commit/9e02a2977f7f2d229c27a583a41f9493931d3307
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-10T23:52:47+02:00
Commit Message:
QDENGINE: Enabled and plugged in inv_popup.dll for shveik
Changed paths:
engines/qdengine/minigames/inv_popup.h
engines/qdengine/qdcore/qd_minigame.cpp
diff --git a/engines/qdengine/minigames/inv_popup.h b/engines/qdengine/minigames/inv_popup.h
index 5445cf5b484..832115e39f3 100644
--- a/engines/qdengine/minigames/inv_popup.h
+++ b/engines/qdengine/minigames/inv_popup.h
@@ -43,8 +43,8 @@ public:
return false;
_invClickObj = _scene->object_interface("$inv_click_flag");
- _invDescObj = _scene->object_interface("%%inv_desc");
- _invDescCloseupObj = _scene->object_interface("%%inv_desc_closeup");
+ _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"); // "$блокиÑовка_пеÑÑонажа_Ñлаг"
@@ -68,7 +68,6 @@ public:
bool quant(float dt) {
debugC(3, kDebugMinigames, "InvPopup::quant(%f)", dt);
-#if 0
if (_blockPersObj->is_state_active("вклÑÑиÑÑ")) {
_scene->activate_personage("Lock");
} else if (_blockPersObj->is_state_active("вÑклÑÑиÑÑ")) {
@@ -87,6 +86,7 @@ public:
char buf[5];
const char *state;
+ const char *pos;
state = _scene->mouse_hover_object_interface()->current_state_name();
if (!strstr(state, "#inv#")) {
@@ -96,10 +96,10 @@ LABEL_20:
goto LABEL_21;
}
- const char *pos = strstr(state, "#inv#");
+ pos = strstr(state, "#inv#");
char buf2[5];
strncpy(buf2, pos + 5, 2);
- strncpy(buf, _invDescCloseupObj->current_state_name(), 2u);
+ strncpy(buf, _invDescCloseupObj->current_state_name(), 2);
if (buf2[0] != buf[0] || buf2[1] != buf[1]) {
_invDescObj->set_state(buf2);
@@ -115,8 +115,8 @@ LABEL_20:
} else {
_invDescPos.x = _hoverObjectPos.x;
}
- _invDescPos.y = _invDescObj->screen_size()->y / 2 + 73;
- _invDescObj->set_R(_scene->screen2world_coords(&_invDescPos, -1000.0));
+ _invDescPos.y = _invDescObj->screen_size().y / 2 + 73;
+ _invDescObj->set_R(_scene->screen2world_coords(_invDescPos, -1000.0));
_invDescCloseupObj->set_state("00");
}
@@ -127,7 +127,7 @@ LABEL_21:
if (strstr(state, "#closeup#")) {
pos = strstr(state, "#inv#");
- strncpy(buf, pos + 5, 2u);
+ strncpy(buf, pos + 5, 2);
buf[2] = 0;
_invDescCloseupObj->set_state(buf);
@@ -298,7 +298,7 @@ LABEL_21:
}
_oldShveikPos = _shveikObj->R();
-#endif
+
return true;
}
@@ -352,7 +352,7 @@ private:
bool _shveikIsMoving = false;
float _time = 0;
int _timeout = 0;
- mgVect2f _oldShveikPos;
+ mgVect3f _oldShveikPos;
};
} // namespace QDEngine
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index 7020adb28a0..7cfa1163ca3 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -309,6 +309,9 @@ bool qdMiniGame::load_interface() {
return true;
// shveik
+ } else if (_dll_name == "DLL\\inv_popup.dll") {
+ _interface = new qdInvPopupMiniGame();
+ return true;
// ShveikPortret.dll
// ShveikShkatulka.dll
// inv_popup.dll
Commit: ff9e303a085b3be244cd2512cc92e795d916523a
https://github.com/scummvm/scummvm/commit/ff9e303a085b3be244cd2512cc92e795d916523a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-10T23:52:47+02:00
Commit Message:
QDENGINE: Revert to VKEYS, since we now have the proer support for it
Changed paths:
engines/qdengine/qdcore/qd_game_object_moving.cpp
diff --git a/engines/qdengine/qdcore/qd_game_object_moving.cpp b/engines/qdengine/qdcore/qd_game_object_moving.cpp
index 6428979d552..a5316e58b60 100644
--- a/engines/qdengine/qdcore/qd_game_object_moving.cpp
+++ b/engines/qdengine/qdcore/qd_game_object_moving.cpp
@@ -1913,14 +1913,7 @@ bool qdGameObjectMoving::keyboard_move() {
bool keypress = false;
warning("STUB: qdGameObjectMoving::keyboard_move()");
- static const Common::KeyCode vkeys[6] = {
- Common::KEYCODE_DOWN,
- Common::KEYCODE_RIGHT,
- Common::KEYCODE_UP,
- Common::KEYCODE_LEFT,
- Common::KEYCODE_DOWN,
- Common::KEYCODE_RIGHT
- };
+ static int vkeys[6] = { VK_DOWN, VK_RIGHT, VK_UP, VK_LEFT, VK_DOWN, VK_RIGHT };
bool key_state[6];
Commit: 1e34927ea59d0b37704dac97c6902b56af18e245
https://github.com/scummvm/scummvm/commit/1e34927ea59d0b37704dac97c6902b56af18e245
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-10T23:52:47+02:00
Commit Message:
QDENGINE: Fixes to inv_popup.dll used in shveik. Works now
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 832115e39f3..b69a83dbf35 100644
--- a/engines/qdengine/minigames/inv_popup.h
+++ b/engines/qdengine/minigames/inv_popup.h
@@ -42,10 +42,10 @@ public:
if (!_scene)
return false;
- _invClickObj = _scene->object_interface("$inv_click_flag");
+ //_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");
+ //_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"); // "$блокиÑовка_пеÑÑонажа_Ñлаг"
@@ -68,11 +68,11 @@ public:
bool quant(float dt) {
debugC(3, kDebugMinigames, "InvPopup::quant(%f)", dt);
- if (_blockPersObj->is_state_active("вклÑÑиÑÑ")) {
+ if (_blockPersObj->is_state_active("\xe2\xea\xeb\xfe\xf7\xe8\xf2\xfc")) { // "вклÑÑиÑÑ"
_scene->activate_personage("Lock");
- } else if (_blockPersObj->is_state_active("вÑклÑÑиÑÑ")) {
- _scene->activate_personage("Швейк");
- _blockPersObj->set_state("вÑклÑÑена");
+ } else if (_blockPersObj->is_state_active("\xe2\xfb\xea\xeb\xfe\xf7\xe8\xf2\xfc")) { // "вÑклÑÑиÑÑ"
+ _scene->activate_personage("\xd8\xe2\xe5\xe9\xea"); // "Швейк"
+ _blockPersObj->set_state("\xe2\xfb\xea\xeb\xfe\xf7\xe5\xed\xe0"); // "вÑклÑÑена"
}
qdMinigameObjectInterface *obj;
@@ -98,8 +98,8 @@ LABEL_20:
pos = strstr(state, "#inv#");
char buf2[5];
- strncpy(buf2, pos + 5, 2);
- strncpy(buf, _invDescCloseupObj->current_state_name(), 2);
+ 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);
@@ -127,7 +127,7 @@ LABEL_21:
if (strstr(state, "#closeup#")) {
pos = strstr(state, "#inv#");
- strncpy(buf, pos + 5, 2);
+ Common::strlcpy(buf, pos + 5, 3);
buf[2] = 0;
_invDescCloseupObj->set_state(buf);
@@ -139,11 +139,11 @@ LABEL_21:
}
}
- if (Common::String(_blockPersFlagObj->current_state_name()) == "да") {
- if (!_blockPersObj->is_state_active("вклÑÑиÑÑ"))
- _blockPersObj->set_state("вклÑÑиÑÑ");
- } else if (_blockPersObj->is_state_active("вклÑÑиÑÑ")) {
- _blockPersObj->set_state("вÑклÑÑиÑÑ");
+ if (Common::String(_blockPersFlagObj->current_state_name()) == "\xe4\xe0") { // "да"
+ if (!_blockPersObj->is_state_active("\xe2\xea\xeb\xfe\xf7\xe8\xf2\xfc")) // "вклÑÑиÑÑ"
+ _blockPersObj->set_state("\xe2\xea\xeb\xfe\xf7\xe8\xf2\xfc"); // "вклÑÑиÑÑ"
+ } else if (_blockPersObj->is_state_active("\xe2\xea\xeb\xfe\xf7\xe8\xf2\xfc")) { // "вклÑÑиÑÑ"
+ _blockPersObj->set_state("\xe2\xfb\xea\xeb\xfe\xf7\xe8\xf2\xfc"); // "вÑклÑÑиÑÑ"
}
_direction = -10;
@@ -264,7 +264,7 @@ LABEL_21:
break;
}
- if (strstr(_shveikMoveEnabledObj->current_state_name(), "да")) {
+ if (strstr(_shveikMoveEnabledObj->current_state_name(), "\xe4\xe0")) { // "да"
if (!_shveikIsMoving) {
_shveikIsMoving = 1;
_time = 0.0;
@@ -276,16 +276,17 @@ LABEL_21:
} else {
_shveikIsMoving = 2;
_time = -1.0;
- _shveikMoveObj->set_state("вÑполниÑÑ");
+ _shveikMoveObj->set_state("\xe2\xfb\xef\xee\xeb\xed\xe8\xf2\xfc"); // "вÑполниÑÑ"
}
}
- if ((strstr(_shveikMoveEnabledObj->current_state_name(), "неÑ") || _shveikMoveObj->is_state_active("оÑÑабоÑан"))
+ if ((strstr(_shveikMoveEnabledObj->current_state_name(), "\xed\xe5\xf2") // "неÑ"
+ || _shveikMoveObj->is_state_active("\xee\xf2\xf0\xe0\xe1\xee\xf2\xe0\xed")) // "оÑÑабоÑан"
&& _shveikIsMoving > 0) {
_shveikIsMoving = 0;
_time = -1.0;
_timeout = -1;
- _shveikMoveObj->set_state("ожидание");
+ _shveikMoveObj->set_state("\xee\xe6\xe8\xe4\xe0\xed\xe8\xe5"); // "ожидание"
}
if ((_shveikObj->R().x != _oldShveikPos.x
@@ -294,7 +295,7 @@ LABEL_21:
_shveikIsMoving = 0;
_time = -1.0;
_timeout = -1;
- _shveikMoveObj->set_state("ожидание");
+ _shveikMoveObj->set_state("\xee\xe6\xe8\xe4\xe0\xed\xe8\xe5"); // "ожидание"
}
_oldShveikPos = _shveikObj->R();
@@ -334,10 +335,10 @@ private:
const qdEngineInterface *_engine = nullptr;
qdMinigameSceneInterface *_scene = nullptr;
- qdMinigameObjectInterface *_invClickObj = nullptr;
+// qdMinigameObjectInterface *_invClickObj = nullptr;
qdMinigameObjectInterface *_invDescObj = nullptr;
qdMinigameObjectInterface *_invDescCloseupObj = nullptr;
- qdMinigameObjectInterface *_invActiveFlagObj = nullptr;
+// qdMinigameObjectInterface *_invActiveFlagObj = nullptr;
qdMinigameObjectInterface *_shveikObj = nullptr;
qdMinigameObjectInterface *_blockPersObj = nullptr;
qdMinigameObjectInterface *_blockPersFlagObj = nullptr;
Commit: 8763956bd50a72a539154fb5e3abdf8409418e66
https://github.com/scummvm/scummvm/commit/8763956bd50a72a539154fb5e3abdf8409418e66
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-10T23:52:47+02:00
Commit Message:
QDENGINE: Set video playback volume
Changed paths:
engines/qdengine/qdcore/util/WinVideo.cpp
diff --git a/engines/qdengine/qdcore/util/WinVideo.cpp b/engines/qdengine/qdcore/util/WinVideo.cpp
index 67f89ab279f..64b378cf5c6 100644
--- a/engines/qdengine/qdcore/util/WinVideo.cpp
+++ b/engines/qdengine/qdcore/util/WinVideo.cpp
@@ -18,7 +18,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+#include "common/config-manager.h"
#include "common/file.h"
+
#include "graphics/managed_surface.h"
#include "video/mpegps_decoder.h"
@@ -100,6 +102,7 @@ bool winVideo::play() {
return false;
}
+ _decoder->setVolume(ConfMan.getInt("music_volume"));
_decoder->start();
return true;
}
More information about the Scummvm-git-logs
mailing list