Implemented opcode 30: o2_addItemToCurScene
svn-id: r31140
This commit is contained in:
parent
2a95c653eb
commit
3bfa70bc3e
3 changed files with 24 additions and 1 deletions
|
@ -2117,7 +2117,7 @@ void KyraEngine_v2::setupOpcodeTable() {
|
||||||
// 0x1c
|
// 0x1c
|
||||||
OpcodeUnImpl(),
|
OpcodeUnImpl(),
|
||||||
OpcodeUnImpl(),
|
OpcodeUnImpl(),
|
||||||
OpcodeUnImpl(),
|
Opcode(o2_addItemToCurScene),
|
||||||
OpcodeUnImpl(),
|
OpcodeUnImpl(),
|
||||||
// 0x20
|
// 0x20
|
||||||
Opcode(o2_checkForItem),
|
Opcode(o2_checkForItem),
|
||||||
|
|
|
@ -952,6 +952,7 @@ protected:
|
||||||
int o2_wsaOpen(ScriptState *script);
|
int o2_wsaOpen(ScriptState *script);
|
||||||
int o2_displayWsaSequentialFrames(ScriptState *script);
|
int o2_displayWsaSequentialFrames(ScriptState *script);
|
||||||
int o2_displayWsaSequence(ScriptState *script);
|
int o2_displayWsaSequence(ScriptState *script);
|
||||||
|
int o2_addItemToCurScene(ScriptState *script);
|
||||||
int o2_checkForItem(ScriptState *script);
|
int o2_checkForItem(ScriptState *script);
|
||||||
int o2_defineItem(ScriptState *script);
|
int o2_defineItem(ScriptState *script);
|
||||||
int o2_removeItemFromInventory(ScriptState *script);
|
int o2_removeItemFromInventory(ScriptState *script);
|
||||||
|
|
|
@ -311,6 +311,28 @@ int KyraEngine_v2::o2_displayWsaSequence(ScriptState *script) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int KyraEngine_v2::o2_addItemToCurScene(ScriptState *script) {
|
||||||
|
debugC(3, kDebugLevelScriptFuncs, "o2_addItemToCurScene(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
|
||||||
|
const int16 id = stackPos(0);
|
||||||
|
int x = stackPos(1);
|
||||||
|
int y = stackPos(2);
|
||||||
|
|
||||||
|
int freeItem = findFreeItem();
|
||||||
|
x = MAX(14, x);
|
||||||
|
x = MIN(304, x);
|
||||||
|
y = MAX(14, y);
|
||||||
|
y = MIN(136, y);
|
||||||
|
if (freeItem >= 0) {
|
||||||
|
_itemList[freeItem].id = id;
|
||||||
|
_itemList[freeItem].x = x;
|
||||||
|
_itemList[freeItem].y = y;
|
||||||
|
_itemList[freeItem].sceneId = _mainCharacter.sceneId;
|
||||||
|
addItemToAnimList(freeItem);
|
||||||
|
refreshAnimObjectsIfNeed();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int KyraEngine_v2::o2_checkForItem(ScriptState *script) {
|
int KyraEngine_v2::o2_checkForItem(ScriptState *script) {
|
||||||
debugC(3, kDebugLevelScriptFuncs, "o2_checkForItem(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
|
debugC(3, kDebugLevelScriptFuncs, "o2_checkForItem(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
|
||||||
return findItem(stackPos(0), stackPos(1)) == -1 ? 0 : 1;
|
return findItem(stackPos(0), stackPos(1)) == -1 ? 0 : 1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue