diff options
author | Arnaud Boutonné | 2011-01-08 16:56:52 +0000 |
---|---|---|
committer | Arnaud Boutonné | 2011-01-08 16:56:52 +0000 |
commit | 2665194e6feb99af15937003d2e89e9e0f87b446 (patch) | |
tree | b8aa548ffa7e87356b47be87e8b26b39826c2538 /engines/hugo/display.cpp | |
parent | b24aab30527feb67f32e0f7a43dc8be4eb0fc0da (diff) | |
download | scummvm-rg350-2665194e6feb99af15937003d2e89e9e0f87b446.tar.gz scummvm-rg350-2665194e6feb99af15937003d2e89e9e0f87b446.tar.bz2 scummvm-rg350-2665194e6feb99af15937003d2e89e9e0f87b446.zip |
HUGO: Merge inventory object and mouse cursor when selected
- Merge inventory object and mouse cursor into a new mouse cursor (looks better)
- Use 16 color mouse pointer
- Clean-up
svn-id: r55167
Diffstat (limited to 'engines/hugo/display.cpp')
-rw-r--r-- | engines/hugo/display.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/engines/hugo/display.cpp b/engines/hugo/display.cpp index ad0e1f2d4c..c3223c70c5 100644 --- a/engines/hugo/display.cpp +++ b/engines/hugo/display.cpp @@ -33,9 +33,11 @@ // Display.c - DIB related code for HUGOWIN #include "common/system.h" +#include "graphics/cursorman.h" #include "hugo/hugo.h" #include "hugo/display.h" +#include "hugo/inventory.h" #include "hugo/util.h" namespace Hugo { @@ -66,6 +68,10 @@ void Screen::createPal() { g_system->setPalette(_mainPalette, 0, NUM_COLORS); } +void Screen::setCursorPal() { + CursorMan.replaceCursorPalette(_curPalette, 0, _paletteSize / 4); +} + /** * Create logical palette */ @@ -543,5 +549,47 @@ void Screen::freeFonts() { free(_arrayFont[i]); } } + +void Screen::selectInventoryObjId(int16 objId) { + + status_t &gameStatus = _vm->getGameStatus(); + + gameStatus.inventoryObjId = objId; // Select new object + + // Find index of icon + int16 iconId; // Find index of dragged icon + for (iconId = 0; iconId < _vm->_maxInvent; iconId++) { + if (gameStatus.inventoryObjId == _vm->_invent[iconId]) + break; + } + + // Compute source coordinates in dib_u + int16 ux = (iconId + NUM_ARROWS) * INV_DX % XPIX; + int16 uy = (iconId + NUM_ARROWS) * INV_DX / XPIX * INV_DY; + + // Copy the icon and add to display list + moveImage(getGUIBuffer(), ux, uy, INV_DX, INV_DY, XPIX, _iconImage, 0, 0, 32); + + for (int i = 0; i < stdMouseCursorHeight; i++) { + for (int j = 0; j < stdMouseCursorWidth; j++) { + _iconImage[(i * INV_DX) + j] = (stdMouseCursor[(i * stdMouseCursorWidth) + j] == 1) ? _iconImage[(i * INV_DX) + j] : stdMouseCursor[(i * stdMouseCursorWidth) + j]; + } + } + + CursorMan.replaceCursor(_iconImage, INV_DX, INV_DY, 1, 1, 1); +} + +void Screen::resetInventoryObjId() { + _vm->getGameStatus().inventoryObjId = -1; // Unselect object + CursorMan.replaceCursor(stdMouseCursor, stdMouseCursorWidth, stdMouseCursorHeight, 1, 1, 1); +} + +void Screen::showCursor() { + CursorMan.showMouse(true); +} + +void Screen::hideCursor() { + CursorMan.showMouse(false); +} } // End of namespace Hugo |