diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/teenagent/inventory.cpp | 27 | ||||
-rw-r--r-- | engines/teenagent/inventory.h | 9 |
2 files changed, 21 insertions, 15 deletions
diff --git a/engines/teenagent/inventory.cpp b/engines/teenagent/inventory.cpp index 476e6cdb16..391bcd4ddd 100644 --- a/engines/teenagent/inventory.cpp +++ b/engines/teenagent/inventory.cpp @@ -52,13 +52,13 @@ Inventory::Inventory(TeenAgentEngine *vm) : _vm(vm) { varia.read(4, _items, items_size); byte offsets = _items[0]; - assert(offsets == 92); + assert(offsets == numInventoryItems); for (byte i = 0; i < offsets; ++i) { _offset[i] = READ_LE_UINT16(_items + i * 2 + 1); } - _offset[92] = items_size; + _offset[numInventoryItems] = items_size; - for (byte i = 0; i < 92; ++i) { + for (byte i = 0; i < numInventoryItems; ++i) { InventoryObject io; uint16 obj_addr = vm->res->dseg.get_word(dsAddr_inventoryItemDataPtrTable + i * 2); io.load(vm->res->dseg.ptr(obj_addr)); @@ -67,7 +67,7 @@ Inventory::Inventory(TeenAgentEngine *vm) : _vm(vm) { _inventory = vm->res->dseg.ptr(dsAddr_inventory); - for (int y = 0; y < 4; ++y) + for (int y = 0; y < 4; ++y) { for (int x = 0; x < 6; ++x) { int i = y * 6 + x; _graphics[i]._rect.left = 28 + 45 * x - 1; @@ -75,6 +75,7 @@ Inventory::Inventory(TeenAgentEngine *vm) : _vm(vm) { _graphics[i]._rect.right = _graphics[i]._rect.left + 40; _graphics[i]._rect.bottom = _graphics[i]._rect.top + 26; } + } varia.close(); _hoveredObj = _selectedObj = NULL; @@ -85,7 +86,7 @@ Inventory::~Inventory() { } bool Inventory::has(byte item) const { - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < inventorySize; ++i) { if (_inventory[i] == item) return true; } @@ -95,29 +96,29 @@ bool Inventory::has(byte item) const { void Inventory::remove(byte item) { debugC(0, kDebugInventory, "removing %u from inventory", item); int i; - for (i = 0; i < 24; ++i) { + for (i = 0; i < inventorySize; ++i) { if (_inventory[i] == item) { break; } } - for (; i < 23; ++i) { + for (; i < (inventorySize - 1); ++i) { _inventory[i] = _inventory[i + 1]; _graphics[i].free(); } - _inventory[23] = 0; - _graphics[23].free(); + _inventory[inventorySize - 1] = 0; + _graphics[inventorySize - 1].free(); } void Inventory::clear() { debugC(0, kDebugInventory, "clearing inventory"); - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < inventorySize; ++i) { _inventory[i] = 0; _graphics[i].free(); } } void Inventory::reload() { - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < inventorySize; ++i) { _graphics[i].free(); uint item = _inventory[i]; if (item != 0) @@ -129,7 +130,7 @@ void Inventory::add(byte item) { if (has(item)) return; debugC(0, kDebugInventory, "adding %u to inventory", item); - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < inventorySize; ++i) { if (_inventory[i] == 0) { _inventory[i] = item; return; @@ -172,7 +173,7 @@ bool Inventory::processEvent(const Common::Event &event) { _mouse = event.mouse; _hoveredObj = NULL; - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < inventorySize; ++i) { byte item = _inventory[i]; if (item == 0) continue; diff --git a/engines/teenagent/inventory.h b/engines/teenagent/inventory.h index c5ec52dbd9..538896eef1 100644 --- a/engines/teenagent/inventory.h +++ b/engines/teenagent/inventory.h @@ -33,6 +33,11 @@ namespace TeenAgent { struct InventoryObject; class TeenAgentEngine; +// Maximum number of items found within game +const uint8 numInventoryItems = 92; +// Maximum number of inventory items held by Ego (Mark) +const uint8 inventorySize = 24; + class Inventory { public: Inventory(TeenAgentEngine *vm); @@ -58,7 +63,7 @@ private: TeenAgentEngine *_vm; Surface _background; byte *_items; - uint _offset[93]; + uint _offset[numInventoryItems+1]; Common::Array<InventoryObject> _objects; byte *_inventory; @@ -76,7 +81,7 @@ private: void render(Inventory *inventory, uint item_id, Graphics::Surface *surface, int delta); }; - Item _graphics[24]; + Item _graphics[inventorySize]; bool _active; Common::Point _mouse; |