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

sev- noreply at scummvm.org
Fri Nov 1 20:53:27 UTC 2024


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

Summary:
d866e4df5c QDENGINE: DT: Print personage state in the object list


Commit: d866e4df5cdd5314ba7144c6d74830c0e391512d
    https://github.com/scummvm/scummvm/commit/d866e4df5cdd5314ba7144c6d74830c0e391512d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-11-01T21:53:11+01:00

Commit Message:
QDENGINE: DT: Print personage state in the object list

Changed paths:
    engines/qdengine/debugger/debugtools.cpp
    engines/qdengine/qdcore/qd_game_object_state.cpp
    engines/qdengine/qdcore/qd_game_object_state.h
    engines/qdengine/qdcore/qd_game_scene.h


diff --git a/engines/qdengine/debugger/debugtools.cpp b/engines/qdengine/debugger/debugtools.cpp
index fb02924212f..85ee29013e3 100644
--- a/engines/qdengine/debugger/debugtools.cpp
+++ b/engines/qdengine/debugger/debugtools.cpp
@@ -42,6 +42,7 @@
 #include "qdengine/qdcore/qd_file_manager.h"
 #include "qdengine/qdcore/qd_game_dispatcher.h"
 #include "qdengine/qdcore/qd_game_object.h"
+#include "qdengine/qdcore/qd_game_object_moving.h"
 #include "qdengine/qdcore/qd_game_scene.h"
 #include "qdengine/qdengine.h"
 #include "qdengine/system/graphics/gr_dispatcher.h"
@@ -416,7 +417,22 @@ void showSceneObjects() {
 
 	if (ImGui::Begin("Scene Objects", &_state->_showSceneObjects)) {
 		qdGameScene *scene;
-		if (qdGameDispatcher::get_dispatcher() && ((scene = qdGameDispatcher::get_dispatcher()->get_active_scene()))) {
+		qdGameDispatcher *dp = qdGameDispatcher::get_dispatcher();
+		if (dp && ((scene = dp->get_active_scene()))) {
+			if (!scene->getPersonages()->empty()) {
+				for (auto &it : *scene->getPersonages()) {
+					Common::String name = Common::String::format("p-%s", transCyrillic(it->name()));
+					if (ImGui::Selectable(name.c_str(), _state->_objectToDisplay == it->name())) {
+						_state->_objectToDisplay = it->name();
+					}
+
+					ImGui::SameLine();
+
+					qdGameObjectState *st = it->get_state(it->cur_state());
+					ImGui::Text("%s", st ? qdGameObjectState::flag2str(st->flags(), true).c_str() : "<none>");
+				}
+			}
+
 			if (!scene->object_list().empty()) {
 				for (auto &it : g_engine->_visible_objects) {
 					if (ImGui::Selectable((char *)transCyrillic(it->name()), _state->_objectToDisplay == it->name())) {
diff --git a/engines/qdengine/qdcore/qd_game_object_state.cpp b/engines/qdengine/qdcore/qd_game_object_state.cpp
index 1363aad4167..51c394f6ec6 100644
--- a/engines/qdengine/qdcore/qd_game_object_state.cpp
+++ b/engines/qdengine/qdcore/qd_game_object_state.cpp
@@ -262,7 +262,7 @@ struct FlagsList {
 	defFlag(QD_OBJ_STATE_FLAG_FADE_OUT),
 };
 
-Common::String qdGameObjectState::flag2str(int fl) const {
+Common::String qdGameObjectState::flag2str(int fl, bool truncate) {
 	Common::String res;
 
 	for (int i = 0; i < ARRAYSIZE(flagList); i++) {
@@ -270,7 +270,7 @@ Common::String qdGameObjectState::flag2str(int fl) const {
 			if (!res.empty())
 				res += " | ";
 
-			res += flagList[i].s;
+			res += &flagList[i].s[truncate ? 18 : 0];
 
 			fl &= ~flagList[i].f;
 		}
diff --git a/engines/qdengine/qdcore/qd_game_object_state.h b/engines/qdengine/qdcore/qd_game_object_state.h
index 333ffc7df0a..fe9904e7b02 100644
--- a/engines/qdengine/qdcore/qd_game_object_state.h
+++ b/engines/qdengine/qdcore/qd_game_object_state.h
@@ -567,6 +567,8 @@ public:
 		_transform_speed = tr_speed;
 	}
 
+	static Common::String flag2str(int fl, bool truncate = false);
+
 protected:
 
 	//! Загрузка данных из скрипта.
@@ -577,8 +579,6 @@ protected:
 	//! Возвращает true, если надо перезапустить звук.
 	virtual bool need_sound_restart() const;
 
-	Common::String flag2str(int fl) const;
-
 private:
 
 	//! Тип состояния.
diff --git a/engines/qdengine/qdcore/qd_game_scene.h b/engines/qdengine/qdcore/qd_game_scene.h
index 623decf8365..5e956f9c458 100644
--- a/engines/qdengine/qdcore/qd_game_scene.h
+++ b/engines/qdengine/qdcore/qd_game_scene.h
@@ -41,6 +41,8 @@ namespace QDEngine {
 
 class qdMiniGame;
 
+typedef Std::vector<qdGameObjectMoving *> personages_container_t;
+
 //! Сцена.
 class qdGameScene : public qdGameDispatcherBase, public qdFileOwner {
 public:
@@ -239,6 +241,8 @@ public:
 
 	bool set_camera_mode(const qdCameraMode &mode, qdGameObjectAnimated *object);
 
+	personages_container_t *getPersonages() { return &_personages; }
+
 #ifdef __QD_DEBUG_ENABLE__
 	bool get_resources_info(qdResourceInfoContainer &infos) const;
 #endif
@@ -262,7 +266,6 @@ private:
 	/// true если нужен перезапуск миниигры при загрузке из сэйва
 	bool _restart_minigame_on_load;
 
-	typedef Std::vector<qdGameObjectMoving *> personages_container_t;
 	//! список персонажей сцены
 	personages_container_t _personages;
 




More information about the Scummvm-git-logs mailing list