aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/debugger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/debugger.cpp')
-rw-r--r--engines/titanic/debugger.cpp40
1 files changed, 37 insertions, 3 deletions
diff --git a/engines/titanic/debugger.cpp b/engines/titanic/debugger.cpp
index a9da83f724..5d95ef5186 100644
--- a/engines/titanic/debugger.cpp
+++ b/engines/titanic/debugger.cpp
@@ -23,7 +23,9 @@
#include "titanic/debugger.h"
#include "titanic/titanic.h"
#include "titanic/core/tree_item.h"
+#include "titanic/game/movie_tester.h"
#include "titanic/pet_control/pet_control.h"
+#include "titanic/support/movie.h"
namespace Titanic {
@@ -33,6 +35,7 @@ Debugger::Debugger(TitanicEngine *vm) : GUI::Debugger(), _vm(vm) {
registerCmd("room", WRAP_METHOD(Debugger, cmdRoom));
registerCmd("pet", WRAP_METHOD(Debugger, cmdPET));
registerCmd("item", WRAP_METHOD(Debugger, cmdItem));
+ registerCmd("movie", WRAP_METHOD(Debugger, cmdMovie));
}
int Debugger::strToInt(const char *s) {
@@ -109,7 +112,7 @@ void Debugger::listRooms() {
CRoomItem *room = gm._gameState._gameLocation.getRoom();
debugPrintf("Current location: %s, %s, %s\n", room->getName().c_str(),
node->getName().c_str(), view->getName().c_str());
-
+
debugPrintf("Available rooms:\n");
for (CTreeItem *treeItem = root; treeItem; treeItem = treeItem->scan(root)) {
CRoomItem *roomItem = dynamic_cast<CRoomItem *>(treeItem);
@@ -139,7 +142,7 @@ bool Debugger::cmdDump(int argc, const char **argv) {
CTreeItem *root = g_vm->_window->_gameManager->_project;
if (argc == 2)
root = root->findByName(argv[1]);
-
+
if (root == nullptr) {
debugPrintf("Could not find item\n");
} else {
@@ -204,7 +207,7 @@ bool Debugger::cmdPET(int argc, const char **argv) {
return true;
}
}
-
+
debugPrintf("%s [on | off]\n", argv[0]);
return true;
}
@@ -260,4 +263,35 @@ bool Debugger::cmdItem(int argc, const char **argv) {
return true;
}
+bool Debugger::cmdMovie(int argc, const char **argv) {
+ if (argc < 2) {
+ debugPrintf("movie filename.avi [startFrame endFrame]\n");
+ return true;
+ }
+
+ CViewItem *view = g_vm->_window->_gameManager->getView();
+ CMovieTester *tester = static_cast<CMovieTester *>(
+ view->findChildInstanceOf(CMovieTester::_type));
+ if (!tester) {
+ // No movie tester present, so create one
+ tester = new CMovieTester();
+ tester->addUnder(view);
+ }
+
+ CString filename(argv[1]);
+ if (!filename.hasSuffix(".avi"))
+ filename += ".avi";
+ tester->loadMovie(filename);
+
+ if (argc == 2) {
+ tester->playMovie(MOVIE_STOP_PREVIOUS);
+ } else {
+ uint startFrame = strToInt(argv[2]);
+ uint endFrame = strToInt(argv[2]);
+ tester->playMovie(startFrame, endFrame, MOVIE_STOP_PREVIOUS);
+ }
+
+ return false;
+}
+
} // End of namespace Titanic