diff options
Diffstat (limited to 'engines/fullpipe/input.cpp')
-rw-r--r-- | engines/fullpipe/input.cpp | 80 |
1 files changed, 73 insertions, 7 deletions
diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp index ee826fd359..5294c4b4ea 100644 --- a/engines/fullpipe/input.cpp +++ b/engines/fullpipe/input.cpp @@ -34,7 +34,7 @@ namespace Fullpipe { InputController::InputController() { - g_fullpipe->_inputController = this; + g_fp->_inputController = this; _flag = 0; _cursorHandle = 0; @@ -55,16 +55,16 @@ InputController::InputController() { InputController::~InputController() { removeMessageHandler(126, -1); - g_fullpipe->_inputController = 0; + g_fp->_inputController = 0; } void InputController::setInputDisabled(bool state) { _flag = state; - g_fullpipe->_inputDisabled = state; + g_fp->_inputDisabled = state; } void setInputDisabled(bool state) { - g_fullpipe->_inputController->setInputDisabled(state); + g_fp->_inputController->setInputDisabled(state); } void InputController::addCursor(CursorInfo *cursor) { @@ -93,8 +93,8 @@ void InputController::drawCursor(int x, int y) { if (_cursorIndex == -1) return; - _cursorBounds.left = g_fullpipe->_sceneRect.left + x - _cursorsArray[_cursorIndex]->hotspotX; - _cursorBounds.top = g_fullpipe->_sceneRect.top + y - _cursorsArray[_cursorIndex]->hotspotY; + _cursorBounds.left = g_fp->_sceneRect.left + x - _cursorsArray[_cursorIndex]->hotspotX; + _cursorBounds.top = g_fp->_sceneRect.top + y - _cursorsArray[_cursorIndex]->hotspotY; _cursorBounds.right = _cursorBounds.left + _cursorsArray[_cursorIndex]->width; _cursorBounds.bottom = _cursorBounds.top + _cursorsArray[_cursorIndex]->height; @@ -211,7 +211,7 @@ void FullpipeEngine::winArcade() { } -void FullpipeEngine::updateCursorsCommon() { +void FullpipeEngine::updateCursorCommon() { GameObject *ani = _currentScene->getStaticANIObjectAtPos(_mouseVirtX, _mouseVirtY); GameObject *pic = _currentScene->getPictureObjectAtPos(_mouseVirtX, _mouseVirtY); @@ -274,4 +274,70 @@ void FullpipeEngine::updateCursorsCommon() { _cursorId = PIC_CSR_DEFAULT; } +void FullpipeEngine::initArcadeKeys(const char *varname) { + GameVar *var = getGameLoaderGameVar()->getSubVarByName(varname)->getSubVarByName("KEYPOS"); + + if (!var) + return; + + int cnt = var->getSubVarsCount(); + + for (int i = 0; i < cnt; i++) { + Common::Point *point = new Common::Point; + + GameVar *sub = var->getSubVarByIndex(i); + + point->x = sub->getSubVarAsInt("X"); + point->y = sub->getSubVarAsInt("Y"); + + _arcadeKeys.push_back(point); + } +} + +void FullpipeEngine::setArcadeOverlay(int picId) { + Common::Point point; + Common::Point point2; + + _arcadeOverlayX = 800; + _arcadeOverlayY = 545; + + _arcadeOverlayHelper = accessScene(SC_INV)->getPictureObjectById(PIC_CSR_HELPERBGR, 0); + _arcadeOverlay = accessScene(SC_INV)->getPictureObjectById(picId, 0); + + _arcadeOverlay->getDimensions(&point); + _arcadeOverlayHelper->getDimensions(&point2); + + _arcadeOverlayMidX = (point2.x - point.x) / 2; + _arcadeOverlayMidY = abs(point2.y - point.y) / 2; +} + +int FullpipeEngine::drawArcadeOverlay(int adjust) { + _arcadeOverlayHelper->drawAt(_sceneRect.left + _arcadeOverlayX, _sceneRect.top + _arcadeOverlayY); + _arcadeOverlay->drawAt(_sceneRect.left + _arcadeOverlayX + _arcadeOverlayMidX, _sceneRect.top + _arcadeOverlayY + _arcadeOverlayMidY); + + if (adjust) { + if (_arcadeOverlayX > 745) { + _arcadeOverlayX -= 15; + + if (_arcadeOverlayX < 745) + _arcadeOverlayX = 745; + } + + return 1; + } + + if (_arcadeOverlayX >= 800) { + return 0; + } else { + _arcadeOverlayX += 15; + + if (_arcadeOverlayX <= 800) + return 1; + + _arcadeOverlayX = 800; + } + + return 1; +} + } // End of namespace Fullpipe |