[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