aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/hdb/ai.cpp52
-rw-r--r--engines/hdb/ai.h1
2 files changed, 53 insertions, 0 deletions
diff --git a/engines/hdb/ai.cpp b/engines/hdb/ai.cpp
index 2246a51a1b..3b79150333 100644
--- a/engines/hdb/ai.cpp
+++ b/engines/hdb/ai.cpp
@@ -32,6 +32,58 @@ AI::~AI() {
delete _cine;
}
+void AI::processCines() {
+
+ bool complete, bailOut;
+
+ if (!_cineActive) {
+ return;
+ }
+
+ bailOut = complete = false;
+
+ // TODO: Make sure Dialogs are timing out
+
+ // TODO: Make sure Cine Pics are drawing
+
+ // TODO: Check for Game Pause
+
+ for (Common::Array<CineCommand *>::iterator it = _cine->begin(); it != _cine->end(); it++) {
+ switch ((*it)->cmdType) {
+ case C_SETCAMERA:
+ _cameraX = (*it)->x;
+ _cameraY = (*it)->y;
+ warning("STUB: Map::CenterMAPXY required");
+ _cameraLock = true;
+ complete = true;
+ break;
+ case C_RESETCAMERA:
+ int px, py;
+ _cameraLock = false;
+ warning("STUB: AI::GetPlayerXY required");
+ warning("STUB: MAP::CenterMapXY required");
+ complete = true;
+ break;
+ case C_MOVECAMERA:
+ _cameraLock = true;
+ if (!((*it)->start)) {
+ (*it)->xv = (((double) (*it)->x) - _cameraX) / (double) (*it)->speed;
+ (*it)->yv = (((double) (*it)->y) - _cameraY) / (double) (*it)->speed;
+ (*it)->start = 1;
+ }
+ _cameraX += (*it)->xv;
+ _cameraY += (*it)->yv;
+ if (abs(_cameraX - (*it)->x) <= 1 && abs(_cameraY - (*it)->y) <= 1) {
+ _cameraX = (*it)->x;
+ _cameraY = (*it)->y;
+ complete = true;
+ }
+ warning("STUB: MAP::CenterMapXY required");
+ break;
+ }
+ }
+}
+
void AI::cineStart(bool abortable, char *abortFunc) {
_cineAbortable = abortable;
_cineAborted = false;
diff --git a/engines/hdb/ai.h b/engines/hdb/ai.h
index 0c4b80f670..570a4044e5 100644
--- a/engines/hdb/ai.h
+++ b/engines/hdb/ai.h
@@ -86,6 +86,7 @@ public:
~AI();
// Cinematic Functions
+ void processCines();
void cineStart(bool abortable, char *abortFunc);
void cineSetCamera(int x, int y);
void cineResetCamera();