Skip to content

Commit

Permalink
FULLPIPE: Implement FullpipeEngine::initCursors()
Browse files Browse the repository at this point in the history
  • Loading branch information
sev- committed Sep 6, 2013
1 parent 74b6625 commit 3c77ad1
Show file tree
Hide file tree
Showing 6 changed files with 119 additions and 5 deletions.
3 changes: 3 additions & 0 deletions engines/fullpipe/fullpipe.h
Expand Up @@ -48,6 +48,7 @@ class CGameLoader;
class CGameVar;
class CInputController;
class CInventory2;
struct CursorInfo;
class EntranceInfo;
class GameProject;
class GlobalMessageQueueList;
Expand Down Expand Up @@ -92,6 +93,7 @@ class FullpipeEngine : public ::Engine {
bool loadGam(const char *fname);

CGameVar *getGameLoaderGameVar();
CInputController *getGameLoaderInputController();

int _gameProjectVersion;
int _pictureScale;
Expand Down Expand Up @@ -135,6 +137,7 @@ class FullpipeEngine : public ::Engine {
void setSwallowedEggsState();

void initCursors();
void addCursor(CursorInfo *cursorInfo, Scene *inv, int pictureId, int hotspotX, int hotspotY, int itemPictureOffsX, int itemPictureOffsY);

CGameVar *_swallowedEgg1;
CGameVar *_swallowedEgg2;
Expand Down
7 changes: 7 additions & 0 deletions engines/fullpipe/gameloader.cpp
Expand Up @@ -191,4 +191,11 @@ CGameVar *FullpipeEngine::getGameLoaderGameVar() {
return 0;
}

CInputController *FullpipeEngine::getGameLoaderInputController() {
if (_gameLoader)
return _gameLoader->_inputController;
else
return 0;
}

} // End of namespace Fullpipe
1 change: 1 addition & 0 deletions engines/fullpipe/gfx.h
Expand Up @@ -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;
Expand Down
43 changes: 42 additions & 1 deletion engines/fullpipe/init.cpp
Expand Up @@ -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 {
Expand Down Expand Up @@ -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() {
Expand Down
47 changes: 46 additions & 1 deletion engines/fullpipe/input.cpp
Expand Up @@ -24,6 +24,7 @@

#include "fullpipe/objects.h"
#include "fullpipe/input.h"
#include "fullpipe/gfx.h"

namespace Fullpipe {

Expand All @@ -36,7 +37,7 @@ CInputController::CInputController() {
_field_14 = 0;
_cursorId = 0;
_cursorIndex = -1;
_flags = 1;
_inputFlags = 1;

_cursorBounds.left = 0;
_cursorBounds.top = 0;
Expand All @@ -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
23 changes: 20 additions & 3 deletions engines/fullpipe/input.h
Expand Up @@ -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
Expand Down

0 comments on commit 3c77ad1

Please sign in to comment.