diff options
author | Matthew Stewart | 2018-02-25 20:26:52 -0500 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 |
commit | e4c5a34568e38a15dbcd75fcc00f3c34adf4bfaf (patch) | |
tree | bb148164d0d60542ebff61364b5c42e43101a14b | |
parent | 060d10c463f10077d733a41ad0a827b678e8b15d (diff) | |
download | scummvm-rg350-e4c5a34568e38a15dbcd75fcc00f3c34adf4bfaf.tar.gz scummvm-rg350-e4c5a34568e38a15dbcd75fcc00f3c34adf4bfaf.tar.bz2 scummvm-rg350-e4c5a34568e38a15dbcd75fcc00f3c34adf4bfaf.zip |
STARTREK: Add mouse cursor
-rwxr-xr-x | engines/startrek/graphics.cpp | 13 | ||||
-rwxr-xr-x | engines/startrek/graphics.h | 7 | ||||
-rw-r--r-- | engines/startrek/text.cpp | 25 |
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 -} - } |