[Scummvm-git-logs] scummvm master -> 619463e7335c26fee3776b42faf59b971af1c1ad

sev- noreply at scummvm.org
Sun Sep 8 15:09:39 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:
619463e733 QDENGINE: DT: Cache and sort file list


Commit: 619463e7335c26fee3776b42faf59b971af1c1ad
    https://github.com/scummvm/scummvm/commit/619463e7335c26fee3776b42faf59b971af1c1ad
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-08T17:01:41+02:00

Commit Message:
QDENGINE: DT: Cache and sort 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 3357afa3777..84281f300f8 100644
--- a/engines/qdengine/debugger/debugtools.cpp
+++ b/engines/qdengine/debugger/debugtools.cpp
@@ -143,6 +143,22 @@ void showImage(const ImGuiImage &image, const char *name, float scale) {
 	//setToolTipImage(image, name);
 }
 
+void populateFileList() {
+	// 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);
+		Common::ArchiveMemberList members;
+
+		if (archive)
+			archive->listMembers(members);
+
+		for (auto &it : members)
+			_state->_files.push_back(it->getPathInArchive());
+	}
+
+	Common::sort(_state->_files.begin(), _state->_files.end());
+}
+
 void showArchives() {
 	if (!_state->_showArchives)
 		return;
@@ -175,29 +191,19 @@ void showArchives() {
 		_state->_nameFilter.Draw();
 		ImGui::Separator();
 
-		// 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);
-			Common::ArchiveMemberList members;
-
-			if (archive)
-				archive->listMembers(members);
-
-			if (archive && ImGui::TreeNode(Common::String::format("Resource/resource%d.pak", i).c_str())) {
-
-				for (auto &it : members) {
-					const char *fileName = (char *)transCyrillic(it->getFileName());
-					if (_state->_nameFilter.PassFilter(fileName)) {
-						if (ImGui::Selectable(fileName, _state->_qdaToDisplay == it->getPathInArchive()))
-							if (it->getFileName().hasSuffixIgnoreCase(".qda")) {
-								_state->_qdaToDisplay = it->getPathInArchive();
-								_state->_qdaToDisplayFrame = 0;
-								_state->_qdaIsPlaying = false;
-							}
+		if (_state->_files.empty())
+			populateFileList();
+
+		for (auto &it : _state->_files) {
+			const char *fileName = (char *)transCyrillic(it.baseName());
+			if (_state->_nameFilter.PassFilter(fileName)) {
+				if (ImGui::Selectable(fileName, _state->_qdaToDisplay == it)) {
+					if (it.baseName().hasSuffixIgnoreCase(".qda")) {
+						_state->_qdaToDisplay = it;
+						_state->_qdaToDisplayFrame = 0;
+						_state->_qdaIsPlaying = false;
 					}
 				}
-
-				ImGui::TreePop();
 			}
 		}
 
diff --git a/engines/qdengine/debugger/dt-internal.h b/engines/qdengine/debugger/dt-internal.h
index 502742f87ed..3ebee5e4eda 100644
--- a/engines/qdengine/debugger/dt-internal.h
+++ b/engines/qdengine/debugger/dt-internal.h
@@ -42,6 +42,8 @@ typedef struct ImGuiState {
 	int _qdaNextFrameTimestamp = 0;
 
 	ImGuiTextFilter _nameFilter;
+
+	Common::List<Common::Path> _files;
 } ImGuiState;
 
 extern ImGuiState *_state;




More information about the Scummvm-git-logs mailing list