aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Stewart2018-02-25 20:26:52 -0500
committerEugene Sandulenko2018-08-09 08:37:30 +0200
commite4c5a34568e38a15dbcd75fcc00f3c34adf4bfaf (patch)
treebb148164d0d60542ebff61364b5c42e43101a14b
parent060d10c463f10077d733a41ad0a827b678e8b15d (diff)
downloadscummvm-rg350-e4c5a34568e38a15dbcd75fcc00f3c34adf4bfaf.tar.gz
scummvm-rg350-e4c5a34568e38a15dbcd75fcc00f3c34adf4bfaf.tar.bz2
scummvm-rg350-e4c5a34568e38a15dbcd75fcc00f3c34adf4bfaf.zip
STARTREK: Add mouse cursor
-rwxr-xr-xengines/startrek/graphics.cpp13
-rwxr-xr-xengines/startrek/graphics.h7
-rw-r--r--engines/startrek/text.cpp25
3 files changed, 24 insertions, 21 deletions
diff --git a/engines/startrek/graphics.cpp b/engines/startrek/graphics.cpp
index a717ec70a7..029928d021 100755
--- a/engines/startrek/graphics.cpp
+++ b/engines/startrek/graphics.cpp
@@ -23,7 +23,9 @@
#include "startrek/graphics.h"
#include "common/config-manager.h"
+#include "common/events.h"
#include "common/rendermode.h"
+#include "graphics/cursorman.h"
#include "graphics/palette.h"
#include "graphics/surface.h"
@@ -47,6 +49,8 @@ Graphics::Graphics(StarTrekEngine *vm) : _vm(vm), _egaMode(false) {
_backgroundImage = new Bitmap(_vm->openFile("DEMON0.BMP").get());
_numSprites = 0;
+
+ CursorMan.showMouse(true);
}
Graphics::~Graphics() {
@@ -136,6 +140,15 @@ SharedPtr<Bitmap> Graphics::loadBitmap(Common::String basename) {
return SharedPtr<Bitmap>(new Bitmap(_vm->openFile(basename+".BMP").get()));
}
+Common::Point Graphics::getMousePos() {
+ return _vm->_system->getEventManager()->getMousePos();
+}
+
+void Graphics::setMouseCursor(SharedPtr<Bitmap> bitmap) {
+ _mouseBitmap = bitmap;
+ _vm->_system->setMouseCursor(bitmap->pixels, bitmap->width, bitmap->height, bitmap->xoffset, bitmap->yoffset, 0);
+}
+
void Graphics::redrawScreen() {
_vm->_system->copyRectToScreen(_backgroundImage->pixels, SCREEN_WIDTH, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
drawAllSprites();
diff --git a/engines/startrek/graphics.h b/engines/startrek/graphics.h
index fa9f90b3fc..714d287794 100755
--- a/engines/startrek/graphics.h
+++ b/engines/startrek/graphics.h
@@ -82,6 +82,9 @@ public:
SharedPtr<Bitmap> loadBitmap(Common::String basename);
+ Common::Point getMousePos();
+ void setMouseCursor(SharedPtr<Bitmap> bitmap);
+
void redrawScreen();
void drawSprite(const Sprite &sprite);
void drawSprite(const Sprite &sprite, const Common::Rect &rect);
@@ -109,8 +112,7 @@ private:
Sprite *_sprites[MAX_SPRITES];
int _numSprites;
- Common::Point _mousePos;
- Sprite _mouseSprite;
+ SharedPtr<Bitmap> _mouseBitmap;
// text.cpp (TODO: separate class)
@@ -124,7 +126,6 @@ private:
int getNumLines(const Common::String &str);
Common::String readLineFormattedText(TextGetterFunc textGetter, int var, int choiceIndex, SharedPtr<TextBitmap> textBitmap, int numTextboxLines, int *numLines);
void loadMenuButtons(Common::String mnuFilename, int xpos, int ypos);
- void warpMousePosition(int x, int y);
uint16 _textboxVar1;
uint32 _textboxVar2;
diff --git a/engines/startrek/text.cpp b/engines/startrek/text.cpp
index 18a283bde3..08400dce22 100644
--- a/engines/startrek/text.cpp
+++ b/engines/startrek/text.cpp
@@ -20,6 +20,7 @@
*/
#include "common/stream.h"
+#include "graphics/cursorman.h"
#include "startrek/graphics.h"
@@ -86,16 +87,11 @@ int Graphics::showText(TextGetterFunc textGetter, int var, int xoffset, int yoff
else {
loadMenuButtons("textbtns", xoffset+0x96, yoffset-0x11);
- Common::Point oldMousePos = _mousePos;
- SharedPtr<Bitmap> oldMouseBitmap = _mouseSprite.bitmap;
+ Common::Point oldMousePos = getMousePos();
+ SharedPtr<Bitmap> oldMouseBitmap = _mouseBitmap;
- _mousePos.x = xoffset + 0xde;
- _mousePos.y = yoffset - 0x08;
- _mouseSprite.pos = _mousePos;
- _mouseSprite.drawPriority = 15;
-
- _mouseSprite.setBitmap(loadBitmap("pushbtn"));
- warpMousePosition(_mousePos.x, _mousePos.y);
+ _vm->_system->warpMouse(xoffset + 0xde, yoffset - 0x08);
+ setMouseCursor(loadBitmap("pushbtn"));
uint16 tmpTextboxVar7 = _textboxVar7;
_textboxVar7 = 0;
@@ -119,11 +115,8 @@ int Graphics::showText(TextGetterFunc textGetter, int var, int xoffset, int yoff
_vm->pollEvents();
}
- _mousePos = oldMousePos;
- _mouseSprite.pos = _mousePos;
- _mouseSprite.drawPriority = 15;
- _mouseSprite.setBitmap(oldMouseBitmap);
- warpMousePosition(_mousePos.x, _mousePos.y);
+ setMouseCursor(oldMouseBitmap);
+ _vm->_system->warpMouse(oldMousePos.x, oldMousePos.y);
_textboxVar7 = tmpTextboxVar7;
// sub_29326();
@@ -288,8 +281,4 @@ void Graphics::loadMenuButtons(Common::String mnuFilename, int xpos, int ypos) {
}
}
-void Graphics::warpMousePosition(int x, int y) {
- // TODO
-}
-
}