diff options
author | Matthew Stewart | 2018-05-17 19:35:31 -0400 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-09 08:37:30 +0200 |
commit | 6117a8919432e7223f3e263f7d9c2f84840f76b9 (patch) | |
tree | 5a605ac102264ce9ea41bc11ba14299a10d0460f /engines/startrek/startrek.h | |
parent | 02485484c31bee3101ecd3ac7ccb86e2db7b029b (diff) | |
download | scummvm-rg350-6117a8919432e7223f3e263f7d9c2f84840f76b9.tar.gz scummvm-rg350-6117a8919432e7223f3e263f7d9c2f84840f76b9.tar.bz2 scummvm-rg350-6117a8919432e7223f3e263f7d9c2f84840f76b9.zip |
STARTREK: Inventory menu and hotspots
Action buttons now react when hovering over hotspots.
Diffstat (limited to 'engines/startrek/startrek.h')
-rw-r--r-- | engines/startrek/startrek.h | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/engines/startrek/startrek.h b/engines/startrek/startrek.h index b146df8c8f..1e1dbc7598 100644 --- a/engines/startrek/startrek.h +++ b/engines/startrek/startrek.h @@ -39,6 +39,7 @@ #include "startrek/awaymission.h" #include "startrek/filestream.h" #include "startrek/graphics.h" +#include "startrek/items.h" #include "startrek/object.h" #include "startrek/room.h" #include "startrek/sound.h" @@ -58,6 +59,8 @@ class StarTrekEngine; typedef String (StarTrekEngine::*TextGetterFunc)(int, uintptr, String *); const int MAX_OBJECTS = 32; +const int MAX_OBJECTS_2 = 64; // TODO: better name; indices 32 and above used for something + const int MAX_MENUBUTTONS = 32; const int TEXTBOX_WIDTH = 26; const int MAX_TEXTBOX_LINES = 12; @@ -185,6 +188,15 @@ enum Acton { ACTION_OPTIONS = 13 // Not really an action, but selectable from action menu }; +// First 4 objects are reserved for crewmen +enum Objects { + OBJECT_KIRK = 0, + OBJECT_SPOCK = 1, + OBJECT_MCCOY = 2, + OBJECT_REDSHIRT = 3, + OBJECT_INVENTORY_ICON = 31 +}; + struct StarTrekGameDescription; class Graphics; @@ -246,8 +258,14 @@ public: void chooseObjectDirectionForWalking(Object *object, int16 srcX, int16 srcY, int16 destX, int16 destY); bool directPathExists(int16 srcX, int16 srcY, int16 destX, int16 destY); + int findObjectAt(int x, int y); + int findObjectAt(Common::Point p) { return findObjectAt(p.x, p.y); } SharedPtr<Bitmap> loadAnimationFrame(const Common::String &filename, uint16 arg2); Common::String getCrewmanAnimFilename(int objectIndex, const Common::String &basename); + void updateMouseBitmap(); + void showInventoryIcons(bool showItem); + void hideInventoryIcons(); + int showInventoryMenu(int x, int y, bool restoreMouse); SharedPtr<Bitmap> scaleBitmap(SharedPtr<Bitmap> bitmap, uint16 scale); void scaleBitmapRow(byte *src, byte *dest, uint16 origWidth, uint16 scaledWidth); @@ -301,7 +319,7 @@ public: // menu.cpp public: - int getMenuButtonAt(const Menu &menu, int x, int y); + int getMenuButtonAt(Sprite *sprites, int numSprites, int x, int y); void chooseMousePositionFromSprites(Sprite *sprites, int numSprites, int spriteIndex, int mode); void drawMenuButtonOutline(SharedPtr<Bitmap> bitmap, byte color); void showOptionsMenu(int x, int y); @@ -375,6 +393,8 @@ public: int16 _activeDoorWarpHotspot; int16 _lookActionBitmapIndex; + Item _itemList[NUM_ITEMS]; + Object _objectList[MAX_OBJECTS]; Object * const _kirkObject; Object * const _spockObject; @@ -384,6 +404,8 @@ public: SharedPtr<FileStream> _objectBanFiles[MAX_OBJECTS / 2]; uint16 _objectBanVar2[MAX_OBJECTS / 2]; // TODO: initialize? + Sprite _inventoryIconSprite; + Sprite _itemIconSprite; // _clockTicks is based on DOS interrupt 1A, AH=0; read system clock counter. // Updates 18.206 times every second. |