aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
authorSven Hesse2010-10-31 20:51:35 +0000
committerSven Hesse2010-10-31 20:51:35 +0000
commit1421312cf831a9d2d051151a927e6efd32e8873c (patch)
tree91993497ac6e60790e23fae4db8519bc46c2d553 /engines/gob
parent16a3cc8a8440c4ca6b45b6408d7baf7e9c001553 (diff)
downloadscummvm-rg350-1421312cf831a9d2d051151a927e6efd32e8873c.tar.gz
scummvm-rg350-1421312cf831a9d2d051151a927e6efd32e8873c.tar.bz2
scummvm-rg350-1421312cf831a9d2d051151a927e6efd32e8873c.zip
GOB: Add listArchives debug console command
svn-id: r53985
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/console.cpp26
-rw-r--r--engines/gob/console.h2
-rw-r--r--engines/gob/dataio.cpp13
-rw-r--r--engines/gob/dataio.h8
4 files changed, 44 insertions, 5 deletions
diff --git a/engines/gob/console.cpp b/engines/gob/console.cpp
index 247911402f..b6b481f611 100644
--- a/engines/gob/console.cpp
+++ b/engines/gob/console.cpp
@@ -26,15 +26,17 @@
#include "gob/console.h"
#include "gob/gob.h"
#include "gob/inter.h"
+#include "gob/dataio.h"
namespace Gob {
GobConsole::GobConsole(GobEngine *vm) : GUI::Debugger(), _vm(vm) {
- DCmd_Register("varSize", WRAP_METHOD(GobConsole, cmd_varSize));
- DCmd_Register("var8", WRAP_METHOD(GobConsole, cmd_var8));
- DCmd_Register("var16", WRAP_METHOD(GobConsole, cmd_var16));
- DCmd_Register("var32", WRAP_METHOD(GobConsole, cmd_var32));
- DCmd_Register("varString", WRAP_METHOD(GobConsole, cmd_varString));
+ DCmd_Register("varSize", WRAP_METHOD(GobConsole, cmd_varSize));
+ DCmd_Register("var8", WRAP_METHOD(GobConsole, cmd_var8));
+ DCmd_Register("var16", WRAP_METHOD(GobConsole, cmd_var16));
+ DCmd_Register("var32", WRAP_METHOD(GobConsole, cmd_var32));
+ DCmd_Register("varString", WRAP_METHOD(GobConsole, cmd_varString));
+ DCmd_Register("listArchives", WRAP_METHOD(GobConsole, cmd_listArchives));
}
GobConsole::~GobConsole() {
@@ -144,4 +146,18 @@ bool GobConsole::cmd_varString(int argc, const char **argv) {
return true;
}
+bool GobConsole::cmd_listArchives(int argc, const char **argv) {
+ Common::Array<ArchiveInfo> info;
+
+ _vm->_dataIO->getArchiveInfo(info);
+
+ DebugPrintf(" Archive | Base | FileCount\n");
+ DebugPrintf("--------------------------------\n");
+ for (Common::Array<ArchiveInfo>::const_iterator it = info.begin(); it != info.end(); ++it)
+ if (!it->name.empty())
+ DebugPrintf("%13s | %d | %d\n", it->name.c_str(), it->base, it->fileCount);
+
+ return true;
+}
+
} // End of namespace Gob
diff --git a/engines/gob/console.h b/engines/gob/console.h
index 5dc6096062..f51d74be86 100644
--- a/engines/gob/console.h
+++ b/engines/gob/console.h
@@ -49,6 +49,8 @@ private:
bool cmd_var16(int argc, const char **argv);
bool cmd_var32(int argc, const char **argv);
bool cmd_varString(int argc, const char **argv);
+
+ bool cmd_listArchives(int argc, const char **argv);
};
} // End of namespace Mohawk
diff --git a/engines/gob/dataio.cpp b/engines/gob/dataio.cpp
index e53d40754f..e409025fc3 100644
--- a/engines/gob/dataio.cpp
+++ b/engines/gob/dataio.cpp
@@ -60,6 +60,19 @@ DataIO::~DataIO() {
}
}
+void DataIO::getArchiveInfo(Common::Array<ArchiveInfo> &info) const {
+ info.resize(_archives.size());
+
+ for (uint i = 0; i < _archives.size(); i++) {
+ if (!_archives[i])
+ continue;
+
+ info[i].name = _archives[i]->name;
+ info[i].base = _archives[i]->base;
+ info[i].fileCount = _archives[i]->files.size();
+ }
+}
+
byte *DataIO::unpack(const byte *src, uint32 srcSize, int32 &size) {
size = READ_LE_UINT32(src);
diff --git a/engines/gob/dataio.h b/engines/gob/dataio.h
index e18ab16803..6e12d15af8 100644
--- a/engines/gob/dataio.h
+++ b/engines/gob/dataio.h
@@ -38,11 +38,19 @@ namespace Common {
namespace Gob {
+struct ArchiveInfo {
+ Common::String name;
+ bool base;
+ uint32 fileCount;
+};
+
class DataIO {
public:
DataIO();
~DataIO();
+ void getArchiveInfo(Common::Array<ArchiveInfo> &info) const;
+
bool openArchive(Common::String name, bool base);
bool closeArchive(bool base);