From 6910430770b967f10cb9fe5038bbca898e673b25 Mon Sep 17 00:00:00 2001 From: Nipun Garg Date: Tue, 18 Jun 2019 04:52:29 +0530 Subject: HDB: Add processCines to execute the CineCommands --- engines/hdb/ai.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ engines/hdb/ai.h | 1 + 2 files changed, 53 insertions(+) (limited to 'engines') 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::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(); -- cgit v1.2.3