aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/kyra/animator_v2.cpp2
-rw-r--r--engines/kyra/gui_hof.cpp56
-rw-r--r--engines/kyra/gui_mr.cpp22
-rw-r--r--engines/kyra/items_hof.cpp30
-rw-r--r--engines/kyra/items_mr.cpp42
-rw-r--r--engines/kyra/items_v2.cpp18
-rw-r--r--engines/kyra/kyra_hof.cpp4
-rw-r--r--engines/kyra/kyra_hof.h22
-rw-r--r--engines/kyra/kyra_mr.cpp6
-rw-r--r--engines/kyra/kyra_mr.h16
-rw-r--r--engines/kyra/kyra_v2.h19
-rw-r--r--engines/kyra/saveload_hof.cpp8
-rw-r--r--engines/kyra/saveload_mr.cpp8
-rw-r--r--engines/kyra/scene_mr.cpp8
-rw-r--r--engines/kyra/script_hof.cpp8
-rw-r--r--engines/kyra/script_mr.cpp8
-rw-r--r--engines/kyra/staticres.cpp8
17 files changed, 144 insertions, 141 deletions
diff --git a/engines/kyra/animator_v2.cpp b/engines/kyra/animator_v2.cpp
index 6c4fafa674..b06dffd36f 100644
--- a/engines/kyra/animator_v2.cpp
+++ b/engines/kyra/animator_v2.cpp
@@ -141,7 +141,7 @@ void KyraEngine_v2::flagAnimObjsSpecialRefresh() {
}
void KyraEngine_v2::addItemToAnimList(int item) {
- assert(item < _itemListSize);
+ assert(item >= 0 && item < _itemListSize);
restorePage3();
diff --git a/engines/kyra/gui_hof.cpp b/engines/kyra/gui_hof.cpp
index 621b3199c5..92b5281fcd 100644
--- a/engines/kyra/gui_hof.cpp
+++ b/engines/kyra/gui_hof.cpp
@@ -122,9 +122,9 @@ int KyraEngine_HoF::buttonInventory(Button *button) {
int inventorySlot = button->index - 6;
- uint16 item = _mainCharacter.inventory[inventorySlot];
- if (_itemInHand == -1) {
- if (item == 0xFFFF)
+ Item item = _mainCharacter.inventory[inventorySlot];
+ if (_itemInHand == kItemNone) {
+ if (item == kItemNone)
return 0;
_screen->hideMouse();
clearInventorySlot(inventorySlot, 0);
@@ -134,9 +134,9 @@ int KyraEngine_HoF::buttonInventory(Button *button) {
updateCommandLineEx(item+54, string, 0xD6);
_itemInHand = (int16)item;
_screen->showMouse();
- _mainCharacter.inventory[inventorySlot] = 0xFFFF;
+ _mainCharacter.inventory[inventorySlot] = kItemNone;
} else {
- if (_mainCharacter.inventory[inventorySlot] != 0xFFFF) {
+ if (_mainCharacter.inventory[inventorySlot] != kItemNone) {
if (checkInventoryItemExchange(_itemInHand, inventorySlot))
return 0;
@@ -160,7 +160,7 @@ int KyraEngine_HoF::buttonInventory(Button *button) {
updateCommandLineEx(_itemInHand+54, string, 0xD6);
_screen->showMouse();
_mainCharacter.inventory[inventorySlot] = _itemInHand;
- _itemInHand = -1;
+ _itemInHand = kItemNone;
}
}
@@ -168,15 +168,15 @@ int KyraEngine_HoF::buttonInventory(Button *button) {
}
int KyraEngine_HoF::scrollInventory(Button *button) {
- uint16 *src = _mainCharacter.inventory;
- uint16 *dst = &_mainCharacter.inventory[10];
- uint16 temp[5];
-
- memcpy(temp, src, sizeof(uint16)*5);
- memcpy(src, src+5, sizeof(uint16)*5);
- memcpy(src+5, dst, sizeof(uint16)*5);
- memcpy(dst, dst+5, sizeof(uint16)*5);
- memcpy(dst+5, temp, sizeof(uint16)*5);
+ Item *src = _mainCharacter.inventory;
+ Item *dst = &_mainCharacter.inventory[10];
+ Item temp[5];
+
+ memcpy(temp, src, sizeof(Item)*5);
+ memcpy(src, src+5, sizeof(Item)*5);
+ memcpy(src+5, dst, sizeof(Item)*5);
+ memcpy(dst, dst+5, sizeof(Item)*5);
+ memcpy(dst+5, temp, sizeof(Item)*5);
_screen->hideMouse();
_screen->copyRegion(0x46, 0x90, 0x46, 0x90, 0x71, 0x2E, 0, 2);
_screen->showMouse();
@@ -185,7 +185,7 @@ int KyraEngine_HoF::scrollInventory(Button *button) {
return 0;
}
-int KyraEngine_HoF::getInventoryItemSlot(uint16 item) {
+int KyraEngine_HoF::getInventoryItemSlot(Item item) {
for (int i = 0; i < 20; ++i) {
if (_mainCharacter.inventory[i] == item)
return i;
@@ -195,14 +195,14 @@ int KyraEngine_HoF::getInventoryItemSlot(uint16 item) {
int KyraEngine_HoF::findFreeVisibleInventorySlot() {
for (int i = 0; i < 10; ++i) {
- if (_mainCharacter.inventory[i] == 0xFFFF)
+ if (_mainCharacter.inventory[i] == kItemNone)
return i;
}
return -1;
}
void KyraEngine_HoF::removeSlotFromInventory(int slot) {
- _mainCharacter.inventory[slot] = 0xFFFF;
+ _mainCharacter.inventory[slot] = kItemNone;
if (slot < 10) {
_screen->hideMouse();
clearInventorySlot(slot, 0);
@@ -210,21 +210,21 @@ void KyraEngine_HoF::removeSlotFromInventory(int slot) {
}
}
-bool KyraEngine_HoF::checkInventoryItemExchange(uint16 handItem, int slot) {
+bool KyraEngine_HoF::checkInventoryItemExchange(Item handItem, int slot) {
bool removeItem = false;
- uint16 newItem = 0xFFFF;
+ Item newItem = kItemNone;
- uint16 invItem = _mainCharacter.inventory[slot];
+ Item invItem = _mainCharacter.inventory[slot];
for (const uint16 *table = _itemMagicTable; *table != 0xFFFF; table += 4) {
- if (table[0] != handItem || table[1] != invItem)
+ if (table[0] != handItem || table[1] != (uint16)invItem)
continue;
if (table[3] == 0xFFFF)
continue;
removeItem = (table[3] == 1);
- newItem = table[2];
+ newItem = (Item)table[2];
snd_playSoundEffect(0x68);
_mainCharacter.inventory[slot] = newItem;
@@ -246,7 +246,7 @@ bool KyraEngine_HoF::checkInventoryItemExchange(uint16 handItem, int slot) {
return false;
}
-void KyraEngine_HoF::drawInventoryShape(int page, uint16 item, int slot) {
+void KyraEngine_HoF::drawInventoryShape(int page, Item item, int slot) {
_screen->drawShape(page, getShapePtr(item+64), _inventoryX[slot], _inventoryY[slot], 0, 0);
_screen->updateScreen();
}
@@ -260,11 +260,11 @@ void KyraEngine_HoF::redrawInventory(int page) {
int pageBackUp = _screen->_curPage;
_screen->_curPage = page;
- const uint16 *inventory = _mainCharacter.inventory;
+ const Item *inventory = _mainCharacter.inventory;
_screen->hideMouse();
for (int i = 0; i < 10; ++i) {
clearInventorySlot(i, page);
- if (inventory[i] != 0xFFFF) {
+ if (inventory[i] != kItemNone) {
_screen->drawShape(page, getShapePtr(inventory[i]+64), _inventoryX[i], _inventoryY[i], 0, 0);
drawInventoryShape(page, inventory[i], i);
}
@@ -734,7 +734,7 @@ int GUI_HoF::optionsButton(Button *button) {
if (_loadedSave) {
if (_restartGame)
- _vm->_itemInHand = -1;
+ _vm->_itemInHand = kItemNone;
} else {
restorePage1(_vm->_screenBuffer);
restorePalette();
@@ -820,7 +820,7 @@ void GUI_HoF::resetState(int item) {
_vm->setNextIdleAnimTimer();
_isDeathMenu = false;
if (!_loadedSave) {
- _vm->_itemInHand = -1;
+ _vm->_itemInHand = kItemNone;
_vm->setHandItem(item);
} else {
_vm->setHandItem(_vm->_itemInHand);
diff --git a/engines/kyra/gui_mr.cpp b/engines/kyra/gui_mr.cpp
index bcc74f5a07..03102ddfd3 100644
--- a/engines/kyra/gui_mr.cpp
+++ b/engines/kyra/gui_mr.cpp
@@ -130,7 +130,7 @@ void KyraEngine_MR::showMessageFromCCode(int string, uint8 c0, int) {
showMessage((const char *)getTableEntry(_cCodeFile, string), c0, 0xF0);
}
-void KyraEngine_MR::updateItemCommand(int item, int str, uint8 c0) {
+void KyraEngine_MR::updateItemCommand(Item item, int str, uint8 c0) {
char buffer[100];
char *src = (char *)getTableEntry(_itemFile, item);
@@ -449,7 +449,7 @@ void KyraEngine_MR::redrawInventory(int page) {
for (int i = 0; i < 10; ++i) {
clearInventorySlot(i, page);
- if (_mainCharacter.inventory[i] != 0xFFFF) {
+ if (_mainCharacter.inventory[i] != kItemNone) {
_screen->drawShape(page, getShapePtr(_mainCharacter.inventory[i]+248), _inventoryX[i], _inventoryY[i] + yOffset, 0, 0);
drawInventorySlot(page, _mainCharacter.inventory[i], i);
}
@@ -472,7 +472,7 @@ void KyraEngine_MR::clearInventorySlot(int slot, int page) {
_screen->drawShape(page, getShapePtr(slot+422), _inventoryX[slot], _inventoryY[slot] + yOffset, 0, 0);
}
-void KyraEngine_MR::drawInventorySlot(int page, int item, int slot) {
+void KyraEngine_MR::drawInventorySlot(int page, Item item, int slot) {
int yOffset = 0;
if (page == 30) {
page = 2;
@@ -488,9 +488,9 @@ int KyraEngine_MR::buttonInventory(Button *button) {
return 0;
const int slot = button->index - 5;
- const int16 slotItem = (int16)_mainCharacter.inventory[slot];
- if (_itemInHand == -1) {
- if (slotItem == -1)
+ const Item slotItem = _mainCharacter.inventory[slot];
+ if (_itemInHand == kItemNone) {
+ if (slotItem == kItemNone)
return 0;
_screen->hideMouse();
@@ -499,7 +499,7 @@ int KyraEngine_MR::buttonInventory(Button *button) {
setMouseCursor(slotItem);
updateItemCommand(slotItem, (_lang == 1) ? getItemCommandStringPickUp(slotItem) : 0, 0xFF);
_itemInHand = slotItem;
- _mainCharacter.inventory[slot] = 0xFFFF;
+ _mainCharacter.inventory[slot] = kItemNone;
_screen->showMouse();
} else if (_itemInHand == 27) {
if (_chatText)
@@ -528,7 +528,7 @@ int KyraEngine_MR::buttonInventory(Button *button) {
updateItemCommand(_itemInHand, (_lang == 1) ? getItemCommandStringInv(_itemInHand) : 2, 0xFF);
_screen->showMouse();
_mainCharacter.inventory[slot] = _itemInHand;
- _itemInHand = -1;
+ _itemInHand = kItemNone;
}
}
@@ -635,7 +635,7 @@ int KyraEngine_MR::buttonJesterStaff(Button *button) {
updateItemCommand(27, 2, 0xFF);
setGameFlag(0x97);
_screen->showMouse();
- } else if (_itemInHand == -1) {
+ } else if (_itemInHand == kItemNone) {
if (queryGameFlag(0x97)) {
_screen->hideMouse();
snd_playSoundEffect(0x0B, 0xC8);
@@ -1141,7 +1141,7 @@ void GUI_MR::resetState(int item) {
_vm->setNextIdleAnimTimer();
_isDeathMenu = false;
if (!_loadedSave) {
- _vm->_itemInHand = -1;
+ _vm->_itemInHand = kItemNone;
_vm->setHandItem(item);
} else {
_vm->setHandItem(_vm->_itemInHand);
@@ -1239,7 +1239,7 @@ int GUI_MR::optionsButton(Button *button) {
if (_loadedSave) {
if (_restartGame)
- _vm->_itemInHand = -1;
+ _vm->_itemInHand = kItemNone;
} else {
restorePage1(_vm->_screenBuffer);
}
diff --git a/engines/kyra/items_hof.cpp b/engines/kyra/items_hof.cpp
index 876db58716..2ae784b0e1 100644
--- a/engines/kyra/items_hof.cpp
+++ b/engines/kyra/items_hof.cpp
@@ -31,9 +31,9 @@ int KyraEngine_HoF::checkItemCollision(int x, int y) {
int itemPos = -1, yPos = -1;
for (int i = 0; i < 30; ++i) {
- const Item &curItem = _itemList[i];
+ const ItemDefinition &curItem = _itemList[i];
- if (curItem.id == 0xFFFF || curItem.sceneId != _mainCharacter.sceneId)
+ if (curItem.id == kItemNone || curItem.sceneId != _mainCharacter.sceneId)
continue;
int itemX1 = curItem.x - 8 - 3;
@@ -79,7 +79,7 @@ void KyraEngine_HoF::updateWaterFlasks() {
}
}
-bool KyraEngine_HoF::dropItem(int unk1, uint16 item, int x, int y, int unk2) {
+bool KyraEngine_HoF::dropItem(int unk1, Item item, int x, int y, int unk2) {
if (_mouseState <= -1)
return false;
@@ -93,7 +93,7 @@ bool KyraEngine_HoF::dropItem(int unk1, uint16 item, int x, int y, int unk2) {
return success;
}
-bool KyraEngine_HoF::processItemDrop(uint16 sceneId, uint16 item, int x, int y, int unk1, int unk2) {
+bool KyraEngine_HoF::processItemDrop(uint16 sceneId, Item item, int x, int y, int unk1, int unk2) {
int itemPos = checkItemCollision(x, y);
if (unk1)
@@ -108,7 +108,7 @@ bool KyraEngine_HoF::processItemDrop(uint16 sceneId, uint16 item, int x, int y,
if (unk1 != 3) {
for (int i = 0; i < 30; ++i) {
- if (_itemList[i].id == 0xFFFF) {
+ if (_itemList[i].id == kItemNone) {
freeItemSlot = i;
break;
}
@@ -200,7 +200,7 @@ bool KyraEngine_HoF::processItemDrop(uint16 sceneId, uint16 item, int x, int y,
return true;
}
-void KyraEngine_HoF::itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, uint16 item) {
+void KyraEngine_HoF::itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, Item item) {
uint8 *itemShape = getShapePtr(item + 64);
if (startX == dstX && startY == dstY) {
@@ -335,7 +335,7 @@ bool KyraEngine_HoF::pickUpItem(int x, int y) {
_screen->hideMouse();
deleteItemAnimEntry(itemPos);
int itemId = _itemList[itemPos].id;
- _itemList[itemPos].id = 0xFFFF;
+ _itemList[itemPos].id = kItemNone;
snd_playSoundEffect(0x0b);
setMouseCursor(itemId);
int str2 = 7;
@@ -368,8 +368,8 @@ bool KyraEngine_HoF::isDropable(int x, int y) {
return true;
}
-int KyraEngine_HoF::getItemCommandStringDrop(uint16 item) {
- assert(item < _itemStringMapSize);
+int KyraEngine_HoF::getItemCommandStringDrop(Item item) {
+ assert(item >= 0 && item < _itemStringMapSize);
int stringId = _itemStringMap[item];
static const int dropStringIds[] = {
@@ -380,8 +380,8 @@ int KyraEngine_HoF::getItemCommandStringDrop(uint16 item) {
return dropStringIds[stringId];
}
-int KyraEngine_HoF::getItemCommandStringPickUp(uint16 item) {
- assert(item < _itemStringMapSize);
+int KyraEngine_HoF::getItemCommandStringPickUp(Item item) {
+ assert(item >= 0 && item < _itemStringMapSize);
int stringId = _itemStringMap[item];
static const int pickUpStringIds[] = {
@@ -392,8 +392,8 @@ int KyraEngine_HoF::getItemCommandStringPickUp(uint16 item) {
return pickUpStringIds[stringId];
}
-int KyraEngine_HoF::getItemCommandStringInv(uint16 item) {
- assert(item < _itemStringMapSize);
+int KyraEngine_HoF::getItemCommandStringInv(Item item) {
+ assert(item >= 0 && item < _itemStringMapSize);
int stringId = _itemStringMap[item];
static const int pickUpStringIds[] = {
@@ -404,8 +404,8 @@ int KyraEngine_HoF::getItemCommandStringInv(uint16 item) {
return pickUpStringIds[stringId];
}
-bool KyraEngine_HoF::itemIsFlask(int item) {
- for (int i = 0; _flaskTable[i] != -1; ++i) {
+bool KyraEngine_HoF::itemIsFlask(Item item) {
+ for (int i = 0; _flaskTable[i] != kItemNone; ++i) {
if (_flaskTable[i] == item)
return true;
}
diff --git a/engines/kyra/items_mr.cpp b/engines/kyra/items_mr.cpp
index 256753cc69..144982335d 100644
--- a/engines/kyra/items_mr.cpp
+++ b/engines/kyra/items_mr.cpp
@@ -29,7 +29,7 @@
namespace Kyra {
void KyraEngine_MR::removeTrashItems() {
- for (int i = 0; _trashItemList[i] != 0xFF; ++i) {
+ for (int i = 0; _trashItemList[i] != kItemNone; ++i) {
for (int item = findItem(_trashItemList[i]); item != -1; item = findItem(_trashItemList[i])) {
if (_itemList[item].sceneId != _mainCharacter.sceneId)
resetItem(item);
@@ -41,7 +41,7 @@ void KyraEngine_MR::removeTrashItems() {
int KyraEngine_MR::findFreeInventorySlot() {
for (int i = 0; i < 10; ++i) {
- if (_mainCharacter.inventory[i] == 0xFFFF)
+ if (_mainCharacter.inventory[i] == kItemNone)
return i;
}
return -1;
@@ -52,7 +52,7 @@ int KyraEngine_MR::checkItemCollision(int x, int y) {
int maxItemY = -1;
for (int i = 0; i < 50; ++i) {
- if (_itemList[i].id == 0xFFFF || _itemList[i].sceneId != _mainCharacter.sceneId)
+ if (_itemList[i].id == kItemNone || _itemList[i].sceneId != _mainCharacter.sceneId)
continue;
const int x1 = _itemList[i].x - 11;
@@ -94,13 +94,13 @@ void KyraEngine_MR::setMouseCursor(uint16 item) {
void KyraEngine_MR::setItemMouseCursor() {
_mouseState = _itemInHand;
- if (_itemInHand == -1)
+ if (_itemInHand == kItemNone)
_screen->setMouseCursor(0, 0, _gameShapes[0]);
else
_screen->setMouseCursor(12, 19, _gameShapes[_itemInHand+248]);
}
-bool KyraEngine_MR::dropItem(int unk1, uint16 item, int x, int y, int unk2) {
+bool KyraEngine_MR::dropItem(int unk1, Item item, int x, int y, int unk2) {
if (_mouseState <= -1)
return false;
@@ -123,7 +123,7 @@ bool KyraEngine_MR::dropItem(int unk1, uint16 item, int x, int y, int unk2) {
return false;
}
-bool KyraEngine_MR::processItemDrop(uint16 sceneId, uint16 item, int x, int y, int unk1, int unk2) {
+bool KyraEngine_MR::processItemDrop(uint16 sceneId, Item item, int x, int y, int unk1, int unk2) {
int itemPos = checkItemCollision(x, y);
if (unk1)
@@ -138,7 +138,7 @@ bool KyraEngine_MR::processItemDrop(uint16 sceneId, uint16 item, int x, int y, i
if (unk2 != 3) {
for (int i = 0; i < 50; ++i) {
- if (_itemList[i].id == 0xFFFF) {
+ if (_itemList[i].id == kItemNone) {
freeItemSlot = i;
break;
}
@@ -227,7 +227,7 @@ bool KyraEngine_MR::processItemDrop(uint16 sceneId, uint16 item, int x, int y, i
return true;
}
-void KyraEngine_MR::itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, uint16 item, int remove) {
+void KyraEngine_MR::itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, Item item, int remove) {
if (startX == dstX && startY == dstY) {
_itemList[itemSlot].x = dstX;
_itemList[itemSlot].y = dstY;
@@ -323,7 +323,7 @@ void KyraEngine_MR::exchangeMouseItem(int itemPos, int runScript) {
_screen->hideMouse();
deleteItemAnimEntry(itemPos);
- int itemId = _itemList[itemPos].id;
+ Item itemId = _itemList[itemPos].id;
_itemList[itemPos].id = _itemInHand;
_itemInHand = itemId;
@@ -353,8 +353,8 @@ bool KyraEngine_MR::pickUpItem(int x, int y, int runScript) {
} else {
_screen->hideMouse();
deleteItemAnimEntry(itemPos);
- int itemId = _itemList[itemPos].id;
- _itemList[itemPos].id = 0xFFFF;
+ Item itemId = _itemList[itemPos].id;
+ _itemList[itemPos].id = kItemNone;
snd_playSoundEffect(0x0B, 0xC8);
setMouseCursor(itemId);
int itemString = 0;
@@ -387,8 +387,9 @@ bool KyraEngine_MR::isDropable(int x, int y) {
return true;
}
-bool KyraEngine_MR::itemListMagic(int handItem, int itemSlot) {
- uint16 item = _itemList[itemSlot].id;
+bool KyraEngine_MR::itemListMagic(Item handItem, int itemSlot) {
+ Item item = _itemList[itemSlot].id;
+
if (_currentChapter == 1 && handItem == 3 && item == 3 && queryGameFlag(0x76)) {
eelScript();
return true;
@@ -410,7 +411,7 @@ bool KyraEngine_MR::itemListMagic(int handItem, int itemSlot) {
}
deleteItemAnimEntry(itemSlot);
- _itemList[itemSlot].id = 0xFFFF;
+ _itemList[itemSlot].id = kItemNone;
_screen->showMouse();
return true;
}
@@ -430,7 +431,7 @@ bool KyraEngine_MR::itemListMagic(int handItem, int itemSlot) {
}
for (int i = 0; _itemMagicTable[i] != 0xFF; i += 4) {
- if (_itemMagicTable[i+0] != handItem || _itemMagicTable[i+1] != item)
+ if (_itemMagicTable[i+0] != handItem || (int8)_itemMagicTable[i+1] != item)
continue;
uint8 resItem = _itemMagicTable[i+2];
@@ -438,7 +439,7 @@ bool KyraEngine_MR::itemListMagic(int handItem, int itemSlot) {
snd_playSoundEffect(0x0F, 0xC8);
- _itemList[itemSlot].id = (resItem == 0xFF) ? 0xFFFF : resItem;
+ _itemList[itemSlot].id = (int8)resItem;
_screen->hideMouse();
deleteItemAnimEntry(itemSlot);
@@ -465,8 +466,9 @@ bool KyraEngine_MR::itemListMagic(int handItem, int itemSlot) {
return false;
}
-bool KyraEngine_MR::itemInventoryMagic(int handItem, int invSlot) {
- uint16 item = _mainCharacter.inventory[invSlot];
+bool KyraEngine_MR::itemInventoryMagic(Item handItem, int invSlot) {
+ Item item = _mainCharacter.inventory[invSlot];
+
if (_currentChapter == 1 && handItem == 3 && item == 3 && queryGameFlag(0x76)) {
eelScript();
return true;
@@ -482,7 +484,7 @@ bool KyraEngine_MR::itemInventoryMagic(int handItem, int invSlot) {
delay(1*_tickLength, true);
}
- _mainCharacter.inventory[invSlot] = 0xFFFF;
+ _mainCharacter.inventory[invSlot] = kItemNone;
clearInventorySlot(invSlot, 0);
_screen->showMouse();
return true;
@@ -497,7 +499,7 @@ bool KyraEngine_MR::itemInventoryMagic(int handItem, int invSlot) {
snd_playSoundEffect(0x0F, 0xC8);
- _mainCharacter.inventory[invSlot] = (resItem == 0xFF) ? 0xFFFF : resItem;
+ _mainCharacter.inventory[invSlot] = (int8)resItem;
_screen->hideMouse();
clearInventorySlot(invSlot, 0);
diff --git a/engines/kyra/items_v2.cpp b/engines/kyra/items_v2.cpp
index 29901b2ddb..92308d1f07 100644
--- a/engines/kyra/items_v2.cpp
+++ b/engines/kyra/items_v2.cpp
@@ -31,9 +31,9 @@ namespace Kyra {
void KyraEngine_v2::initItemList(int size) {
delete[] _itemList;
- _itemList = new Item[size];
+ _itemList = new ItemDefinition[size];
assert(_itemList);
- memset(_itemList, 0, sizeof(Item)*size);
+ memset(_itemList, 0, sizeof(ItemDefinition)*size);
_itemListSize = size;
resetItemList();
@@ -41,7 +41,7 @@ void KyraEngine_v2::initItemList(int size) {
int KyraEngine_v2::findFreeItem() {
for (int i = 0; i < _itemListSize; ++i) {
- if (_itemList[i].id == 0xFFFF)
+ if (_itemList[i].id == kItemNone)
return i;
}
return -1;
@@ -50,13 +50,13 @@ int KyraEngine_v2::findFreeItem() {
int KyraEngine_v2::countAllItems() {
int num = 0;
for (int i = 0; i < _itemListSize; ++i) {
- if (_itemList[i].id != 0xFFFF)
+ if (_itemList[i].id != kItemNone)
++num;
}
return num;
}
-int KyraEngine_v2::findItem(uint16 sceneId, uint16 id) {
+int KyraEngine_v2::findItem(uint16 sceneId, Item id) {
for (int i = 0; i < _itemListSize; ++i) {
if (_itemList[i].id == id && _itemList[i].sceneId == sceneId)
return i;
@@ -64,7 +64,7 @@ int KyraEngine_v2::findItem(uint16 sceneId, uint16 id) {
return -1;
}
-int KyraEngine_v2::findItem(uint16 item) {
+int KyraEngine_v2::findItem(Item item) {
for (int i = 0; i < _itemListSize; ++i) {
if (_itemList[i].id == item)
return i;
@@ -78,7 +78,7 @@ void KyraEngine_v2::resetItemList() {
}
void KyraEngine_v2::resetItem(int index) {
- _itemList[index].id = 0xFFFF;
+ _itemList[index].id = kItemNone;
_itemList[index].sceneId = 0xFFFF;
_itemList[index].x = 0;
_itemList[index].y = 0;
@@ -102,8 +102,8 @@ void KyraEngine_v2::removeHandItem() {
Screen *scr = screen();
scr->hideMouse();
scr->setMouseCursor(0, 0, getShapePtr(0));
- _itemInHand = -1;
- _mouseState = -1;
+ _itemInHand = kItemNone;
+ _mouseState = kItemNone;
scr->showMouse();
}
diff --git a/engines/kyra/kyra_hof.cpp b/engines/kyra/kyra_hof.cpp
index 8159fc0347..8b09e9bcdd 100644
--- a/engines/kyra/kyra_hof.cpp
+++ b/engines/kyra/kyra_hof.cpp
@@ -74,7 +74,7 @@ KyraEngine_HoF::KyraEngine_HoF(OSystem *system, const GameFlags &flags) : KyraEn
_mainCharX = _mainCharY = -1;
_drawNoShapeFlag = false;
_charPalEntry = 0;
- _itemInHand = -1;
+ _itemInHand = kItemNone;
_unkSceneScreenFlag1 = false;
_noScriptEnter = true;
_currentChapter = 0;
@@ -790,7 +790,7 @@ void KyraEngine_HoF::updateMouse() {
if ((mouse.y > 145) || (mouse.x > 6 && mouse.x < 312 && mouse.y > 6 && mouse.y < 135)) {
_mouseState = _itemInHand;
_screen->hideMouse();
- if (_itemInHand == -1)
+ if (_itemInHand == kItemNone)
_screen->setMouseCursor(0, 0, getShapePtr(0));
else
_screen->setMouseCursor(8, 15, getShapePtr(_itemInHand+64));
diff --git a/engines/kyra/kyra_hof.h b/engines/kyra/kyra_hof.h
index 05d04fe993..02ac0a0fff 100644
--- a/engines/kyra/kyra_hof.h
+++ b/engines/kyra/kyra_hof.h
@@ -450,9 +450,9 @@ protected:
int checkItemCollision(int x, int y);
void updateWaterFlasks();
- bool dropItem(int unk1, uint16 item, int x, int y, int unk2);
- bool processItemDrop(uint16 sceneId, uint16 item, int x, int y, int unk1, int unk2);
- void itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, uint16 item);
+ bool dropItem(int unk1, Item item, int x, int y, int unk2);
+ bool processItemDrop(uint16 sceneId, Item item, int x, int y, int unk1, int unk2);
+ void itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, Item item);
void exchangeMouseItem(int itemPos);
bool pickUpItem(int x, int y);
@@ -461,18 +461,18 @@ protected:
static const byte _itemStringMap[];
static const int _itemStringMapSize;
- static const int16 _flaskTable[];
- bool itemIsFlask(int item);
+ static const Item _flaskTable[];
+ bool itemIsFlask(Item item);
// inventory
static const int _inventoryX[];
static const int _inventoryY[];
static const uint16 _itemMagicTable[];
- int getInventoryItemSlot(uint16 item);
+ int getInventoryItemSlot(Item item);
void removeSlotFromInventory(int slot);
- bool checkInventoryItemExchange(uint16 item, int slot);
- void drawInventoryShape(int page, uint16 item, int slot);
+ bool checkInventoryItemExchange(Item item, int slot);
+ void drawInventoryShape(int page, Item item, int slot);
void clearInventorySlot(int slot, int page);
void redrawInventory(int page);
void scrollInventoryWheel();
@@ -561,9 +561,9 @@ protected:
void changeFileExtension(char *buffer);
// - Just used in French version
- int getItemCommandStringDrop(uint16 item);
- int getItemCommandStringPickUp(uint16 item);
- int getItemCommandStringInv(uint16 item);
+ int getItemCommandStringDrop(Item item);
+ int getItemCommandStringPickUp(Item item);
+ int getItemCommandStringInv(Item item);
// -
char _internStringBuf[200];
diff --git a/engines/kyra/kyra_mr.cpp b/engines/kyra/kyra_mr.cpp
index d24ecff83d..99240167e7 100644
--- a/engines/kyra/kyra_mr.cpp
+++ b/engines/kyra/kyra_mr.cpp
@@ -99,7 +99,7 @@ KyraEngine_MR::KyraEngine_MR(OSystem *system, const GameFlags &flags) : KyraEngi
_unk5 = 0;
_unkSceneScreenFlag1 = false;
_noScriptEnter = true;
- _itemInHand = _mouseState = -1;
+ _itemInHand = _mouseState = kItemNone;
_savedMouseState = -1;
_unk4 = 0;
_loadingState = false;
@@ -1167,8 +1167,8 @@ void KyraEngine_MR::updateMouse() {
}
if (hasItemCollision && _mouseState < -1 && _itemInHand < 0) {
- _mouseState = -1;
- _itemInHand = -1;
+ _mouseState = kItemNone;
+ _itemInHand = kItemNone;
_screen->setMouseCursor(0, 0, _gameShapes[0]);
}
diff --git a/engines/kyra/kyra_mr.h b/engines/kyra/kyra_mr.h
index 36b937f2a8..0bf4bcc253 100644
--- a/engines/kyra/kyra_mr.h
+++ b/engines/kyra/kyra_mr.h
@@ -235,7 +235,7 @@ private:
void showMessage(const char *string, uint8 c0, uint8 c1);
void showMessageFromCCode(int string, uint8 c0, int);
- void updateItemCommand(int item, int str, uint8 c0);
+ void updateItemCommand(Item item, int str, uint8 c0);
void updateCommandLine();
void restoreCommandLine();
@@ -262,7 +262,7 @@ private:
static const uint8 _inventoryY[];
void redrawInventory(int page);
void clearInventorySlot(int slot, int page);
- void drawInventorySlot(int page, int item, int slot);
+ void drawInventorySlot(int page, Item item, int slot);
WSAMovie_v2 *_invWsa;
int _invWsaFrame;
@@ -284,24 +284,24 @@ private:
int8 *_itemBuffer1;
int8 *_itemBuffer2;
- static const uint8 _trashItemList[];
+ static const Item _trashItemList[];
void removeTrashItems();
void initItems();
int checkItemCollision(int x, int y);
- bool dropItem(int unk1, uint16 item, int x, int y, int unk2);
- bool processItemDrop(uint16 sceneId, uint16 item, int x, int y, int unk1, int unk2);
- void itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, uint16 item, int remove);
+ bool dropItem(int unk1, Item item, int x, int y, int unk2);
+ bool processItemDrop(uint16 sceneId, Item item, int x, int y, int unk1, int unk2);
+ void itemDropDown(int startX, int startY, int dstX, int dstY, int itemSlot, Item item, int remove);
void exchangeMouseItem(int itemPos, int runScript);
bool pickUpItem(int x, int y, int runScript);
bool isDropable(int x, int y);
const uint8 *_itemMagicTable;
- bool itemListMagic(int handItem, int itemSlot);
- bool itemInventoryMagic(int handItem, int invSlot);
+ bool itemListMagic(Item handItem, int itemSlot);
+ bool itemInventoryMagic(Item handItem, int invSlot);
const uint8 *_itemStringMap;
int _itemStringMapSize;
diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h
index 697a4aa88c..d1a81fd64c 100644
--- a/engines/kyra/kyra_v2.h
+++ b/engines/kyra/kyra_v2.h
@@ -29,6 +29,7 @@
#include "kyra/kyra_v1.h"
#include "kyra/gui.h"
#include "kyra/wsamovie.h"
+#include "kyra/item.h"
#include "common/list.h"
#include "common/hashmap.h"
@@ -41,7 +42,7 @@ struct FrameControl {
};
struct ItemAnimData_v2 {
- int16 itemIndex;
+ Item itemIndex;
uint8 numFrames;
const FrameControl *frames;
};
@@ -69,7 +70,7 @@ public:
int animScriptFrameAdd;
// Item specific
- int maxItemId;
+ Item maxItemId;
};
KyraEngine_v2(OSystem *system, const GameFlags &flags, const EngineDesc &desc);
@@ -286,8 +287,8 @@ protected:
int _pathfinderPositionIndexTable[200];
// items
- struct Item {
- uint16 id;
+ struct ItemDefinition {
+ Item id;
uint16 sceneId;
int16 x;
uint8 y;
@@ -295,9 +296,9 @@ protected:
void initItemList(int size);
- uint16 _hiddenItems[100];
+ Item _hiddenItems[100];
- Item *_itemList;
+ ItemDefinition *_itemList;
int _itemListSize;
int _itemInHand;
@@ -306,8 +307,8 @@ protected:
int findFreeItem();
int countAllItems();
- int findItem(uint16 sceneId, uint16 id);
- int findItem(uint16 item);
+ int findItem(uint16 sceneId, Item id);
+ int findItem(Item item);
void resetItemList();
void resetItem(int index);
@@ -325,7 +326,7 @@ protected:
uint8 facing;
uint16 animFrame;
byte walkspeed;
- uint16 inventory[20];
+ Item inventory[20];
int16 x1, y1;
int16 x2, y2;
int16 x3, y3;
diff --git a/engines/kyra/saveload_hof.cpp b/engines/kyra/saveload_hof.cpp
index 2d276cc6a4..37678540b6 100644
--- a/engines/kyra/saveload_hof.cpp
+++ b/engines/kyra/saveload_hof.cpp
@@ -64,7 +64,7 @@ Common::Error KyraEngine_HoF::saveGameState(int slot, const char *saveName, cons
for (int i = 0; i < 25; ++i)
out->writeSint16BE(_cauldronTable[i]);
for (int i = 0; i < 20; ++i)
- out->writeUint16BE(_hiddenItems[i]);
+ out->writeSint16BE(_hiddenItems[i]);
for (int i = 0; i < 19; ++i)
out->write(_conversationState[i], 14);
out->write(_newSceneDlgState, 32);
@@ -83,7 +83,7 @@ Common::Error KyraEngine_HoF::saveGameState(int slot, const char *saveName, cons
out->writeSint16BE(_mainCharacter.y2);
for (int i = 0; i < 30; ++i) {
- out->writeUint16BE(_itemList[i].id);
+ out->writeSint16BE(_itemList[i].id);
out->writeUint16BE(_itemList[i].sceneId);
out->writeSint16BE(_itemList[i].x);
out->writeByte(_itemList[i].y);
@@ -183,7 +183,7 @@ Common::Error KyraEngine_HoF::loadGameState(int slot) {
for (int i = 0; i < 25; ++i)
_cauldronTable[i] = in.readSint16();
for (int i = 0; i < 20; ++i)
- _hiddenItems[i] = in.readUint16();
+ _hiddenItems[i] = in.readSint16();
if (header.originalSave) {
assert(sizeof(_flagsTable) >= 0x41);
@@ -222,7 +222,7 @@ Common::Error KyraEngine_HoF::loadGameState(int slot) {
_mainCharacter.y2 = in.readSint16();
for (int i = 0; i < 30; ++i) {
- _itemList[i].id = in.readUint16();
+ _itemList[i].id = in.readSint16();
_itemList[i].sceneId = in.readUint16();
_itemList[i].x = in.readSint16();
_itemList[i].y = in.readByte();
diff --git a/engines/kyra/saveload_mr.cpp b/engines/kyra/saveload_mr.cpp
index 737c83c33d..26453bb274 100644
--- a/engines/kyra/saveload_mr.cpp
+++ b/engines/kyra/saveload_mr.cpp
@@ -55,7 +55,7 @@ Common::Error KyraEngine_MR::saveGameState(int slot, const char *saveName, const
out->write(_conversationState[i], 30);
out->write(_newSceneDlgState, 40);
for (int i = 0; i < 100; ++i)
- out->writeUint16BE(_hiddenItems[i]);
+ out->writeSint16BE(_hiddenItems[i]);
out->write(_scoreFlagTable, 26);
out->writeUint16BE(_mainCharacter.sceneId);
@@ -74,7 +74,7 @@ Common::Error KyraEngine_MR::saveGameState(int slot, const char *saveName, const
out->writeSint16BE(_mainCharacter.y3);
for (int i = 0; i < 50; ++i) {
- out->writeUint16BE(_itemList[i].id);
+ out->writeSint16BE(_itemList[i].id);
out->writeUint16BE(_itemList[i].sceneId);
out->writeSint16BE(_itemList[i].x);
out->writeSint16BE(_itemList[i].y);
@@ -189,7 +189,7 @@ Common::Error KyraEngine_MR::loadGameState(int slot) {
}
for (int i = 0; i < 100; ++i)
- _hiddenItems[i] = in.readUint16();
+ _hiddenItems[i] = in.readSint16();
if (header.originalSave)
in.read(_flagsTable, 69);
@@ -216,7 +216,7 @@ Common::Error KyraEngine_MR::loadGameState(int slot) {
_mainCharacter.y3 = in.readSint16();
for (int i = 0; i < 50; ++i) {
- _itemList[i].id = in.readUint16();
+ _itemList[i].id = in.readSint16();
_itemList[i].sceneId = in.readUint16();
_itemList[i].x = in.readSint16();
_itemList[i].y = in.readSint16();
diff --git a/engines/kyra/scene_mr.cpp b/engines/kyra/scene_mr.cpp
index 95243e9d5c..f1ea79f49b 100644
--- a/engines/kyra/scene_mr.cpp
+++ b/engines/kyra/scene_mr.cpp
@@ -176,8 +176,8 @@ void KyraEngine_MR::enterNewScene(uint16 sceneId, int facing, int unk1, int unk2
setNextIdleAnimTimer();
if (_itemInHand < 0) {
- _itemInHand = -1;
- _mouseState = -1;
+ _itemInHand = kItemNone;
+ _mouseState = kItemNone;
_screen->setMouseCursor(0, 0, _gameShapes[0]);
}
@@ -556,8 +556,8 @@ void KyraEngine_MR::initSceneAnims(int unk1) {
for (int i = 0; i < 50; ++i) {
obj = &_animObjects[i+17];
- const Item &item = _itemList[i];
- if (item.id != 0xFFFF && item.sceneId == _mainCharacter.sceneId) {
+ const ItemDefinition &item = _itemList[i];
+ if (item.id != kItemNone && item.sceneId == _mainCharacter.sceneId) {
obj->xPos1 = item.x;
obj->yPos1 = item.y;
animSetupPaletteEntry(obj);
diff --git a/engines/kyra/script_hof.cpp b/engines/kyra/script_hof.cpp
index f30f5787e7..d57bb7efc5 100644
--- a/engines/kyra/script_hof.cpp
+++ b/engines/kyra/script_hof.cpp
@@ -410,7 +410,7 @@ int KyraEngine_HoF::o2_countItemsInScene(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_countItemsInScene(%p) (%d)", (const void *)script, stackPos(0));
int count = 0;
for (int i = 0; i < 30; ++i) {
- if (_itemList[i].sceneId == stackPos(0) && _itemList[i].id != 0xFFFF)
+ if (_itemList[i].sceneId == stackPos(0) && _itemList[i].id != kItemNone)
++count;
}
return count;
@@ -1039,7 +1039,7 @@ int KyraEngine_HoF::o2_setColorCodeValue(EMCState *script) {
int KyraEngine_HoF::o2_countItemInstances(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_countItemInstances(%p) (%d)", (const void *)script, stackPos(0));
- uint16 item = stackPos(0);
+ Item item = stackPos(0);
int count = 0;
for (int i = 0; i < 20; ++i) {
@@ -1047,7 +1047,7 @@ int KyraEngine_HoF::o2_countItemInstances(EMCState *script) {
++count;
}
- if (_itemInHand == int16(item))
+ if (_itemInHand == item)
++count;
for (int i = 0; i < 30; ++i) {
@@ -1075,7 +1075,7 @@ int KyraEngine_HoF::o2_removeItemFromScene(EMCState *script) {
const uint16 item = stackPos(1);
for (int i = 0; i < 30; ++i) {
if (_itemList[i].sceneId == scene && _itemList[i].id == item)
- _itemList[i].id = 0xFFFF;
+ _itemList[i].id = kItemNone;
}
return 0;
}
diff --git a/engines/kyra/script_mr.cpp b/engines/kyra/script_mr.cpp
index ae125b5b99..fb6bd4ebe7 100644
--- a/engines/kyra/script_mr.cpp
+++ b/engines/kyra/script_mr.cpp
@@ -216,7 +216,7 @@ int KyraEngine_MR::o3_removeInventoryItemInstances(EMCState *script) {
const int item = stackPos(0);
for (int i = 0; i < 10; ++i) {
if (_mainCharacter.inventory[i] == item)
- _mainCharacter.inventory[i] = 0xFFFF;
+ _mainCharacter.inventory[i] = kItemNone;
}
return 0;
}
@@ -594,7 +594,7 @@ int KyraEngine_MR::o3_updateConversations(EMCState *script) {
int KyraEngine_MR::o3_removeItemSlot(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_removeItemSlot(%p) (%d)", (const void *)script, stackPos(0));
deleteItemAnimEntry(stackPos(0));
- _itemList[stackPos(0)].id = 0xFFFF;
+ _itemList[stackPos(0)].id = kItemNone;
return 1;
}
@@ -642,7 +642,7 @@ int KyraEngine_MR::o3_removeItemInstances(EMCState *script) {
for (int i = 0; i < 10; ++i) {
if (_mainCharacter.inventory[i] == item) {
- _mainCharacter.inventory[i] = 0xFFFF;
+ _mainCharacter.inventory[i] = kItemNone;
++deleted;
}
}
@@ -654,7 +654,7 @@ int KyraEngine_MR::o3_removeItemInstances(EMCState *script) {
for (int i = 0; i < 50; ++i) {
if (_itemList[i].id == item) {
- _itemList[i].id = 0xFFFF;
+ _itemList[i].id = kItemNone;
++deleted;
}
}
diff --git a/engines/kyra/staticres.cpp b/engines/kyra/staticres.cpp
index a06b488c86..7906dc07dc 100644
--- a/engines/kyra/staticres.cpp
+++ b/engines/kyra/staticres.cpp
@@ -1866,9 +1866,9 @@ const uint8 KyraEngine_HoF::_cauldronStateTable[] = {
3, 3, 3, 3, 3, 3, 3
};
-const int16 KyraEngine_HoF::_flaskTable[] = {
+const Item KyraEngine_HoF::_flaskTable[] = {
0x19, 0x14, 0x15, 0x16, 0x17, 0x18, 0x34,
- 0x1B, 0x39, 0x1A, 0x3A, 0x4D, 0x72, -1
+ 0x1B, 0x39, 0x1A, 0x3A, 0x4D, 0x72, kItemNone
};
const uint8 KyraEngine_HoF::_rainbowRoomData[] = {
@@ -1964,10 +1964,10 @@ const uint8 KyraEngine_MR::_inventoryY[] = {
0xB2, 0xB2, 0xB2, 0xB2, 0xB2
};
-const uint8 KyraEngine_MR::_trashItemList[] = {
+const Item KyraEngine_MR::_trashItemList[] = {
0x1E, 0x1D, 0x1C, 0x1F, 0x0F, 0x05, 0x04, 0x00,
0x03, 0x22, 0x0B, 0x20, 0x21, 0x10, 0x11, 0x3A,
- 0x39, 0x40, 0x3E, 0x3D, 0x3C, 0x3F, 0xFF
+ 0x39, 0x40, 0x3E, 0x3D, 0x3C, 0x3F, kItemNone
};
const uint8 KyraEngine_MR::_itemStringPickUp[] = {