[Scummvm-git-logs] scummvm master -> fffab1d77c9e21e63390a07f1bc99609eb569502

sev- noreply at scummvm.org
Thu May 29 09:34:12 UTC 2025


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
7b2c16ebbd QDENGINE: TRIANGLES: Added more debug output on loading
1e5c838f93 QDENGINE: Reduce red herring warnings
fffab1d77c QDENGINE: TRIANGLES: Fixed invalid memory access on element state change


Commit: 7b2c16ebbd617fbd00ca59b05c44d5378ae96148
    https://github.com/scummvm/scummvm/commit/7b2c16ebbd617fbd00ca59b05c44d5378ae96148
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-05-29T11:34:00+02:00

Commit Message:
QDENGINE: TRIANGLES: Added more debug output on loading

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 087a92a295d..3f339d65e1c 100644
--- a/engines/qdengine/minigames/adv/m_triangles.cpp
+++ b/engines/qdengine/minigames/adv/m_triangles.cpp
@@ -121,6 +121,7 @@ MinigameTriangle::MinigameTriangle(MinigameManager *runtime) {
 		Node &node = _nodes.back();
 		for (int angle = 1; angle <= 3; ++angle) {
 			snprintf(name, 63, "%s%02d_%1d", faceNameBegin, num + 1, angle);
+			debugC(5, kDebugMinigames, "Loading face object: %s", name);
 			QDObject obj = _runtime->getObject(name);
 			node._face.push_back(obj);
 			_positions.push_back(obj->R());
@@ -148,10 +149,12 @@ MinigameTriangle::MinigameTriangle(MinigameManager *runtime) {
 	for (int num = 1; num <= 2; ++num) {
 		for (int angle = 1; angle <= 3; ++angle) {
 			snprintf(name, 63, "%s%1d_%1d", backNameBegin, num, angle);
+			debugC(5, kDebugMinigames, "Loading back object: %s", name);
 			if (!_backSides[(num - 1) * 3 + angle - 1].load(name, _runtime))
 				return;
 		}
 		snprintf(name, 63, "%s%1d", selectNameBegin, num);
+		debugC(5, kDebugMinigames, "Loading select object: %s", name);
 		if (!_selectBorders[num - 1].load(name, _runtime))
 			return;
 	}


Commit: 1e5c838f9362e87f8adc51715365142b6f3321af
    https://github.com/scummvm/scummvm/commit/1e5c838f9362e87f8adc51715365142b6f3321af
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-05-29T11:34:00+02:00

Commit Message:
QDENGINE: Reduce red herring warnings

Changed paths:
    engines/qdengine/minigames/adv/RunTime.cpp
    engines/qdengine/qdcore/qd_minigame_interface.cpp
    engines/qdengine/qdcore/qd_minigame_interface.h


diff --git a/engines/qdengine/minigames/adv/RunTime.cpp b/engines/qdengine/minigames/adv/RunTime.cpp
index b7f7aa0dbb3..b2e3128c5e2 100644
--- a/engines/qdengine/minigames/adv/RunTime.cpp
+++ b/engines/qdengine/minigames/adv/RunTime.cpp
@@ -809,7 +809,7 @@ QDObject MinigameManager::getObject(const char *name) const {
 }
 
 bool MinigameManager::testObject(const char *name) const {
-	if (qdMinigameObjectInterface *obj = _scene->object_interface(name)) {
+	if (qdMinigameObjectInterface *obj = _scene->object_interface(name, true)) {
 		_scene->release_object_interface(obj);
 		return true;
 	}
diff --git a/engines/qdengine/qdcore/qd_minigame_interface.cpp b/engines/qdengine/qdcore/qd_minigame_interface.cpp
index 3123174693f..d5b9c3c86e9 100644
--- a/engines/qdengine/qdcore/qd_minigame_interface.cpp
+++ b/engines/qdengine/qdcore/qd_minigame_interface.cpp
@@ -183,7 +183,7 @@ public:
 	const char *name() const;
 
 	//! Создаёт интерфейс к объекту с именем object_name.
-	qdMinigameObjectInterface *object_interface(const char *object_name);
+	qdMinigameObjectInterface *object_interface(const char *object_name, bool test = false);
 	//! Создаёт интерфейс к персонажу с именем personage_name.
 	qdMinigameObjectInterface *personage_interface(const char *personage_name);
 	//! Активация персонажа с именем personage_name.
@@ -322,11 +322,12 @@ const char *qdMinigameSceneInterfaceImpl::name() const {
 	return _scene->name();
 }
 
-qdMinigameObjectInterface *qdMinigameSceneInterfaceImpl::object_interface(const char *object_name) {
+qdMinigameObjectInterface *qdMinigameSceneInterfaceImpl::object_interface(const char *object_name, bool test) {
 	if (qdGameObjectAnimated * p = dynamic_cast<qdGameObjectAnimated * >(_scene->get_object(object_name)))
 		return new qdMinigameObjectInterfaceImpl(p);
 
-	warning("object_interface(): Unknown object '%s'", transCyrillic(object_name));
+	if (!test)
+		warning("object_interface(): Unknown object '%s'", transCyrillic(object_name));
 
 	return NULL;
 }
diff --git a/engines/qdengine/qdcore/qd_minigame_interface.h b/engines/qdengine/qdcore/qd_minigame_interface.h
index 7a1ad8f43d2..c66b35e48c8 100644
--- a/engines/qdengine/qdcore/qd_minigame_interface.h
+++ b/engines/qdengine/qdcore/qd_minigame_interface.h
@@ -320,7 +320,7 @@ public:
 	virtual const char *name() const = 0;
 
 	//! Создаёт интерфейс к объекту с именем object_name.
-	virtual qdMinigameObjectInterface *object_interface(const char *object_name) = 0;
+	virtual qdMinigameObjectInterface *object_interface(const char *object_name, bool test = false) = 0;
 	//! Создаёт интерфейс к персонажу с именем personage_name.
 	virtual qdMinigameObjectInterface *personage_interface(const char *personage_name) = 0;
 	//! Активация персонажа с именем personage_name.


Commit: fffab1d77c9e21e63390a07f1bc99609eb569502
    https://github.com/scummvm/scummvm/commit/fffab1d77c9e21e63390a07f1bc99609eb569502
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-05-29T11:34:00+02:00

Commit Message:
QDENGINE: TRIANGLES: Fixed invalid memory access on element state change

Changed paths:
    engines/qdengine/minigames/adv/m_triangles.cpp
    engines/qdengine/minigames/adv/m_triangles.h


diff --git a/engines/qdengine/minigames/adv/m_triangles.cpp b/engines/qdengine/minigames/adv/m_triangles.cpp
index 3f339d65e1c..9d10e24d4f4 100644
--- a/engines/qdengine/minigames/adv/m_triangles.cpp
+++ b/engines/qdengine/minigames/adv/m_triangles.cpp
@@ -201,7 +201,7 @@ void MinigameTriangle::Node::debugInfo() const {
 	debugC(5, kDebugMinigames, "name:\"%s\" state:\"%s\" number:%d rotation:%d flip:%d isBack:%d highlight:%d animated:%d", obj().getName(), obj()->current_state_name(), _number, _rotation, _flip, _isBack, _highlight, _animated);
 }
 
-const char *MinigameTriangle::Node::getFaceStateName(int angle, bool selected, bool animated, bool instantaneous) {
+const Common::String MinigameTriangle::Node::getFaceStateName(int angle, bool selected, bool animated, bool instantaneous) {
 	assert(!selected || !animated); // анимированные выделенными быть не могут
 
 	static const char *angleNames[3] = {"0", "120", "240"};
@@ -210,7 +210,7 @@ const char *MinigameTriangle::Node::getFaceStateName(int angle, bool selected, b
 	Common::String out;
 
 	out = Common::String::format("%s%s%s", (animated ? "02_" : "01_"), angleNames[angle], (selected || instantaneous ? "_sel" : ""));
-	return out.c_str();
+	return out;
 }
 
 const char *MinigameTriangle::Node::getBackStateName(bool selected, bool animated, bool instantaneous) {
@@ -252,7 +252,7 @@ void MinigameTriangle::updateNode(Node &node, int position, int flip, bool quick
 		QDObject &face = node._face[flip];
 		face->set_R(slotCoord(position, flip));
 		face->update_screen_R();
-		face.setState(Node::getFaceStateName(node._rotation, node._highlight, node._animated, quick));
+		face.setState(Node::getFaceStateName(node._rotation, node._highlight, node._animated, quick).c_str());
 	}
 }
 
@@ -370,10 +370,10 @@ bool MinigameTriangle::animate(float dt) {
 		releaseNodeBack(node2);
 
 		for (auto &it : node1._face)
-			it.setState(Node::getFaceStateName(0, false, false, false));
+			it.setState(Node::getFaceStateName(0, false, false, false).c_str());
 
 		for (auto &it : node2._face)
-			it.setState(Node::getFaceStateName(0, false, false, false));
+			it.setState(Node::getFaceStateName(0, false, false, false).c_str());
 
 		updateNode(node1, _animatedNodes[1], destination(_animatedNodes[0], _animatedNodes[1]), true);
 		updateNode(node2, _animatedNodes[0], destination(_animatedNodes[1], _animatedNodes[0]), true);
diff --git a/engines/qdengine/minigames/adv/m_triangles.h b/engines/qdengine/minigames/adv/m_triangles.h
index 6453e61923c..ba1b5e0d668 100644
--- a/engines/qdengine/minigames/adv/m_triangles.h
+++ b/engines/qdengine/minigames/adv/m_triangles.h
@@ -66,7 +66,7 @@ class MinigameTriangle : public MinigameInterface {
 		bool _highlight;
 		bool _animated;
 
-		static const char *getFaceStateName(int angle, bool selected, bool animated, bool instantaneous);
+		static const Common::String getFaceStateName(int angle, bool selected, bool animated, bool instantaneous);
 		static const char *getBackStateName(bool selected, bool animated, bool instantaneous);
 		static const char *getBorderStateName(bool selected);
 	};




More information about the Scummvm-git-logs mailing list