aboutsummaryrefslogtreecommitdiff
path: root/engines/hugo/display.cpp
diff options
context:
space:
mode:
authorArnaud Boutonné2011-01-08 16:56:52 +0000
committerArnaud Boutonné2011-01-08 16:56:52 +0000
commit2665194e6feb99af15937003d2e89e9e0f87b446 (patch)
treeb8aa548ffa7e87356b47be87e8b26b39826c2538 /engines/hugo/display.cpp
parentb24aab30527feb67f32e0f7a43dc8be4eb0fc0da (diff)
downloadscummvm-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.cpp48
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