aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/inventory.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sherlock/inventory.h')
-rw-r--r--engines/sherlock/inventory.h67
1 files changed, 65 insertions, 2 deletions
diff --git a/engines/sherlock/inventory.h b/engines/sherlock/inventory.h
index 5b9374d7a7..02f570f5da 100644
--- a/engines/sherlock/inventory.h
+++ b/engines/sherlock/inventory.h
@@ -47,6 +47,14 @@ enum InvMode {
INVMODE_USE55 = 255
};
+enum InvNewMode {
+ PLAIN_INVENTORY = 0, LOOK_INVENTORY_MODE = 1, USE_INVENTORY_MODE = 2,
+ GIVE_INVENTORY_MODE = 3, INVENTORY_DONT_DISPLAY = 128
+};
+
+enum InvSlamMode { SLAM_DONT_DISPLAY, SLAM_DISPLAY = 1, SLAM_SECONDARY_BUFFER };
+
+
struct InventoryItem {
int _requiredFlag;
Common::String _name;
@@ -58,6 +66,9 @@ struct InventoryItem {
InventoryItem(int requiredFlag, const Common::String &name,
const Common::String &description, const Common::String &examine);
+ /**
+ * Synchronize the data for an inventory item
+ */
void synchronize(Common::Serializer &s);
};
@@ -66,6 +77,9 @@ private:
SherlockEngine *_vm;
Common::StringArray _names;
+ /**
+ * Copy the passed object into the inventory
+ */
void copyToInventory(Object &obj);
public:
ImageFile *_invShapes[MAX_VISIBLE_INVENTORY];
@@ -74,32 +88,81 @@ public:
int _invIndex;
int _holdings; // Used to hold number of visible items in active inventory.
// Since Inventory array also contains some special hidden items
+ /**
+ * Free any loaded inventory graphics
+ */
void freeGraphics();
public:
Inventory(SherlockEngine *vm);
~Inventory();
+ /**
+ * Free inventory data
+ */
void freeInv();
+ /**
+ * Load the list of names the inventory items correspond to, if not already loaded,
+ * and then calls loadGraphics to load the associated graphics
+ */
void loadInv();
+ /**
+ * Load the list of names of graphics for the inventory
+ */
void loadGraphics();
+ /**
+ * Searches through the list of names that correspond to the inventory items
+ * and returns the number that matches the passed name
+ */
int findInv(const Common::String &name);
- void putInv(int slamIt);
+ /**
+ * Display the character's inventory. The slamIt parameter specifies:
+ */
+ void putInv(InvSlamMode slamIt);
- void drawInventory(int flag);
+ /**
+ * Put the game into inventory mode and open the interface window.
+ */
+ void drawInventory(InvNewMode flag);
+ /**
+ * Prints the line of inventory commands at the top of an inventory window with
+ * the correct highlighting
+ */
void invCommands(bool slamIt);
+ /**
+ * Set the highlighting color of a given inventory item
+ */
void highlight(int index, byte color);
+ /**
+ * Support method for refreshing the display of the inventory
+ */
+ void refreshInv();
+
+ /**
+ * Adds a shape from the scene to the player's inventory
+ */
int putNameInInventory(const Common::String &name);
+
+ /**
+ * Moves a specified item into the player's inventory If the item has a *PICKUP* use action,
+ * then the item in the use action are added to the inventory.
+ */
int putItemInInventory(Object &obj);
+ /**
+ * Deletes a specified item from the player's inventory
+ */
int deleteItemFromInventory(const Common::String &name);
+ /**
+ * Synchronize the data for a savegame
+ */
void synchronize(Common::Serializer &s);
};