aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/fullpipe/fullpipe.h3
-rw-r--r--engines/fullpipe/gameloader.cpp7
-rw-r--r--engines/fullpipe/gfx.h1
-rw-r--r--engines/fullpipe/init.cpp43
-rw-r--r--engines/fullpipe/input.cpp47
-rw-r--r--engines/fullpipe/input.h23
6 files changed, 119 insertions, 5 deletions
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index c058022312..a0dba6a431 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -48,6 +48,7 @@ class CGameLoader;
class CGameVar;
class CInputController;
class CInventory2;
+struct CursorInfo;
class EntranceInfo;
class GameProject;
class GlobalMessageQueueList;
@@ -92,6 +93,7 @@ public:
bool loadGam(const char *fname);
CGameVar *getGameLoaderGameVar();
+ CInputController *getGameLoaderInputController();
int _gameProjectVersion;
int _pictureScale;
@@ -135,6 +137,7 @@ public:
void setSwallowedEggsState();
void initCursors();
+ void addCursor(CursorInfo *cursorInfo, Scene *inv, int pictureId, int hotspotX, int hotspotY, int itemPictureOffsX, int itemPictureOffsY);
CGameVar *_swallowedEgg1;
CGameVar *_swallowedEgg2;
diff --git a/engines/fullpipe/gameloader.cpp b/engines/fullpipe/gameloader.cpp
index 1049e1cc3d..72b2827568 100644
--- a/engines/fullpipe/gameloader.cpp
+++ b/engines/fullpipe/gameloader.cpp
@@ -191,4 +191,11 @@ CGameVar *FullpipeEngine::getGameLoaderGameVar() {
return 0;
}
+CInputController *FullpipeEngine::getGameLoaderInputController() {
+ if (_gameLoader)
+ return _gameLoader->_inputController;
+ else
+ return 0;
+}
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/gfx.h b/engines/fullpipe/gfx.h
index 27be7c474f..81de8ec1c0 100644
--- a/engines/fullpipe/gfx.h
+++ b/engines/fullpipe/gfx.h
@@ -61,6 +61,7 @@ class Picture : public MemoryObject {
friend class Movement;
friend class DynamicPhase;
friend class PictureObject;
+ friend class CInputController;
Common::Rect _rect;
Bitmap *_convertedBitmap;
diff --git a/engines/fullpipe/init.cpp b/engines/fullpipe/init.cpp
index 07a7c9c7f5..9892f55574 100644
--- a/engines/fullpipe/init.cpp
+++ b/engines/fullpipe/init.cpp
@@ -25,6 +25,8 @@
#include "fullpipe/objects.h"
#include "fullpipe/gameloader.h"
#include "fullpipe/objectnames.h"
+#include "fullpipe/input.h"
+
#include "fullpipe/gameobj.h"
namespace Fullpipe {
@@ -149,8 +151,47 @@ void FullpipeEngine::setSwallowedEggsState() {
_swallowedEgg3->_value.intValue = 0;
}
+void FullpipeEngine::addCursor(CursorInfo *cursorInfo, Scene *inv, int pictureId, int hotspotX, int hotspotY, int itemPictureOffsX, int itemPictureOffsY) {
+ cursorInfo->pictureId = pictureId;
+ cursorInfo->picture = inv->getPictureObjectById(pictureId, 0)->_picture;
+ cursorInfo->hotspotX = hotspotX;
+ cursorInfo->hotspotY = hotspotY;
+ cursorInfo->itemPictureOffsX = itemPictureOffsX;
+ cursorInfo->itemPictureOffsY = itemPictureOffsY;
+
+ getGameLoaderInputController()->addCursor(cursorInfo);
+}
+
void FullpipeEngine::initCursors() {
- warning("STUB: FullpipeEngine::initCursors()");
+ CursorInfo crs;
+ Scene *inv = accessScene(SC_INV);
+
+ addCursor(&crs, inv, PIC_CSR_DEFAULT, 15, 1, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_DEFAULT_INV, 18, 18, 23, 23);
+ addCursor(&crs, inv, PIC_CSR_ITN, 11, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ITN_RED, 11, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ITN_GREEN, 11, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ITN_INV, 23, 17, 23, 17);
+ addCursor(&crs, inv, PIC_CSR_GOU, 15, 17, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_GOD, 15, 1, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_GOL, 26, 1, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_GOR, 15, 1, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_GOFAR_L, 1, 1, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_GOFAR_R, 39, 1, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE1, 12, 24, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE2, 11, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE2_D, 22, 15, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE3, 11, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE4, 18, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE5, 23, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE6, 11, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE6_D, 0, 0, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE7, 21, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE7_D, 7, 20, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_ARCADE8, 23, 11, 10, 10);
+ addCursor(&crs, inv, PIC_CSR_LIFT, 6, 13, 10, 10);
+
+ getGameLoaderInputController()->setCursorMode(0);
}
void FullpipeEngine::initMap() {
diff --git a/engines/fullpipe/input.cpp b/engines/fullpipe/input.cpp
index 68efacf74b..bb6d8baae5 100644
--- a/engines/fullpipe/input.cpp
+++ b/engines/fullpipe/input.cpp
@@ -24,6 +24,7 @@
#include "fullpipe/objects.h"
#include "fullpipe/input.h"
+#include "fullpipe/gfx.h"
namespace Fullpipe {
@@ -36,7 +37,7 @@ CInputController::CInputController() {
_field_14 = 0;
_cursorId = 0;
_cursorIndex = -1;
- _flags = 1;
+ _inputFlags = 1;
_cursorBounds.left = 0;
_cursorBounds.top = 0;
@@ -55,4 +56,48 @@ void setInputDisabled(bool state) {
g_fullpipe->_inputController->setInputDisabled(state);
}
+void CInputController::addCursor(CursorInfo *cursor) {
+ CursorInfo *newc = new CursorInfo(cursor);
+ Common::Point p;
+
+ cursor->picture->getDimensions(&p);
+
+ newc->width = p.x;
+ newc->height = p.y;
+
+ newc->picture->_x = -1;
+ newc->picture->_y = -1;
+
+ _cursorsArray.push_back(newc);
+}
+
+void CInputController::setCursorMode(bool enabled) {
+ if (enabled)
+ _inputFlags |= 1;
+ else
+ _inputFlags &= ~1;
+}
+
+CursorInfo::CursorInfo() {
+ pictureId = 0;
+ picture = 0;
+ hotspotX = 0;
+ hotspotY = 0;
+ itemPictureOffsX = 0;
+ itemPictureOffsY = 0;
+ width = 0;
+ height = 0;
+}
+
+CursorInfo::CursorInfo(CursorInfo *src) {
+ pictureId = src->pictureId;
+ picture = src->picture;
+ hotspotX = src->hotspotX;
+ hotspotY = src->hotspotY;
+ itemPictureOffsX = src->itemPictureOffsX;
+ itemPictureOffsY = src->itemPictureOffsY;
+ width = src->width;
+ height = src->height;
+}
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/input.h b/engines/fullpipe/input.h
index a9106b7b01..72742b04b6 100644
--- a/engines/fullpipe/input.h
+++ b/engines/fullpipe/input.h
@@ -25,27 +25,44 @@
namespace Fullpipe {
+class Picture;
+
void setInputDisabled(bool state);
-class CInputControllerItemArray : public CObArray {
+struct CursorInfo {
+ int pictureId;
+ Picture *picture;
+ int hotspotX;
+ int hotspotY;
+ int itemPictureOffsX;
+ int itemPictureOffsY;
+ int width;
+ int height;
+
+ CursorInfo();
+ CursorInfo(CursorInfo *src);
};
+typedef Common::Array<CursorInfo *> CursorsArray;
+
class CInputController {
//CObject obj;
int _flag;
- int _flags;
+ int _inputFlags;
int _cursorHandle;
int _hCursor;
int _field_14;
int _cursorId;
int _cursorIndex;
- CInputControllerItemArray _cursorsArray;
+ CursorsArray _cursorsArray;
Common::Rect _cursorBounds;
int _cursorItemPicture;
public:
CInputController();
void setInputDisabled(bool state);
+ void addCursor(CursorInfo *cursor);
+ void setCursorMode(bool mode);
};
} // End of namespace Fullpipe