Skip to content

Commit

Permalink
KYRA: (LOL) minor fix, cleanup and renaming
Browse files Browse the repository at this point in the history
  • Loading branch information
athrxx committed Nov 4, 2011
1 parent 99aaf24 commit 1527e7b
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 36 deletions.
40 changes: 15 additions & 25 deletions engines/kyra/items_lol.cpp
Expand Up @@ -127,14 +127,8 @@ Item LoLEngine::makeItem(int itemType, int curFrame, int flags) {
continue;

bool t = false;
Item ii = i;
while (ii && !t) {
t = testUnkItemFlags(ii);
if (t)
break;
else
ii = _itemsInPlay[ii - 1].nextAssignedObject;
}
for (Item ii = i; ii && !t; ii = _itemsInPlay[ii].nextAssignedObject)
t = isItemMoveable(ii);

if (t) {
cnt = diff;
Expand All @@ -144,24 +138,20 @@ Item LoLEngine::makeItem(int itemType, int curFrame, int flags) {

Item slot = i;
if (cnt) {
slot = r;
if (testUnkItemFlags(r)) {
slot = 0;
if (isItemMoveable(r)) {
if (_itemsInPlay[r].nextAssignedObject)
_itemsInPlay[_itemsInPlay[r].nextAssignedObject].level = _itemsInPlay[r].level;
deleteItem(r);
slot = r;
} else {
uint16 ii = _itemsInPlay[slot].nextAssignedObject;
while (ii) {
if (testUnkItemFlags(ii)) {
_itemsInPlay[slot].nextAssignedObject = _itemsInPlay[ii].nextAssignedObject;
deleteItem(ii);
slot = ii;
break;
} else {
slot = ii;
}
ii = _itemsInPlay[slot].nextAssignedObject;
for (uint16 ii = _itemsInPlay[r].nextAssignedObject; ii; ii = _itemsInPlay[ii].nextAssignedObject) {
if (!isItemMoveable(ii))
continue;
_itemsInPlay[r].nextAssignedObject = _itemsInPlay[ii].nextAssignedObject;
deleteItem(ii);
slot = ii;
break;
}
}
}
Expand Down Expand Up @@ -219,7 +209,7 @@ bool LoLEngine::addItemToInventory(Item itemIndex) {
return true;
}

bool LoLEngine::testUnkItemFlags(Item itemIndex) {
bool LoLEngine::isItemMoveable(Item itemIndex) {
if (!(_itemsInPlay[itemIndex].shpCurFrame_flg & 0x4000))
return false;

Expand Down Expand Up @@ -304,7 +294,7 @@ bool LoLEngine::itemEquipped(int charNum, uint16 itemType) {
return false;
}

void LoLEngine::setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight, int b) {
void LoLEngine::setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight, int moveable) {
if (!flyingHeight) {
x = (x & 0xffc0) | 0x40;
y = (y & 0xffc0) | 0x40;
Expand All @@ -316,7 +306,7 @@ void LoLEngine::setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight,
_itemsInPlay[item].block = block;
_itemsInPlay[item].flyingHeight = flyingHeight;

if (b)
if (moveable)
_itemsInPlay[item].shpCurFrame_flg |= 0x4000;
else
_itemsInPlay[item].shpCurFrame_flg &= 0xbfff;
Expand All @@ -325,7 +315,7 @@ void LoLEngine::setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight,
assignItemToBlock(&_levelBlockProperties[block].assignedObjects, item);
reassignDrawObjects(_currentDirection, item, &_levelBlockProperties[block], false);

if (b)
if (moveable)
runLevelScriptCustom(block, 0x80, -1, item, 0, 0);

checkSceneUpdateNeed(block);
Expand Down
4 changes: 2 additions & 2 deletions engines/kyra/lol.h
Expand Up @@ -1206,14 +1206,14 @@ friend class HistoryPlayer;
Item makeItem(int itemType, int curFrame, int flags);
void placeMoveLevelItem(Item itemIndex, int level, int block, int xOffs, int yOffs, int flyingHeight);
bool addItemToInventory(Item itemIndex);
bool testUnkItemFlags(Item itemIndex);
bool isItemMoveable(Item itemIndex);
void deleteItem(Item itemIndex);
ItemInPlay *findObject(uint16 index);
void runItemScript(int charNum, Item item, int flags, int next, int reg4);
void setHandItem(Item itemIndex);
bool itemEquipped(int charNum, uint16 itemType);

void setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight, int b);
void setItemPosition(Item item, uint16 x, uint16 y, int flyingHeight, int moveable);
void removeLevelItem(Item item, int block);
bool launchObject(int objectType, Item item, int startX, int startY, int flyingHeight, int direction, int, int attackerId, int c);
void endObjectFlight(FlyingObject *t, int x, int y, int collisionObject);
Expand Down
17 changes: 8 additions & 9 deletions engines/kyra/script_lol.cpp
Expand Up @@ -2054,17 +2054,16 @@ int LoLEngine::olol_changeItemTypeOrFlag(EMCState *script) {
return 0;

ItemInPlay *i = &_itemsInPlay[stackPos(0)];
int r = stackPos(2) & 0x1fff;
int16 val = stackPos(2);

if (stackPos(1) == 4) {
i->itemPropertyIndex = r;
return r;
} else if (stackPos(1) == 15) {
i->shpCurFrame_flg = (i->shpCurFrame_flg & 0xe000) | r;
return r;
}
if (stackPos(1) == 4)
i->itemPropertyIndex = val;
else if (stackPos(1) == 15)
i->shpCurFrame_flg = (i->shpCurFrame_flg & 0xe000) | (val & 0x1fff);
else
val = -1;

return -1;
return val;
}

int LoLEngine::olol_placeInventoryItemInHand(EMCState *script) {
Expand Down

0 comments on commit 1527e7b

Please sign in to comment.