1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-25 15:35:23 +00:00

added GetInterior script function

This commit is contained in:
Marc Zinnschlag 2011-01-17 10:18:12 +01:00
parent a724de2429
commit 18b8cdce29
2 changed files with 23 additions and 1 deletions

View File

@ -8,6 +8,7 @@
#include <components/interpreter/opcodes.hpp>
#include "../mwworld/world.hpp"
#include "../mwworld/player.hpp"
#include "interpretercontext.hpp"
@ -84,9 +85,27 @@ namespace MWScript
}
};
class OpGetInterior : public Interpreter::Opcode0
{
public:
virtual void execute (Interpreter::Runtime& runtime)
{
InterpreterContext& context
= static_cast<InterpreterContext&> (runtime.getContext());
bool interior =
context.getWorld().getPlayer().getPlayer().getCell()->cell->data.flags &
ESM::Cell::Interior;
runtime.push (interior ? 1 : 0);
}
};
const int opcodeCellChanged = 0x2000000;
const int opcodeCOC = 0x2000026;
const int opcodeCOE = 0x200008e;
const int opcodeGetInterior = 0x2000131;
void registerExtensions (Compiler::Extensions& extensions)
{
@ -95,6 +114,7 @@ namespace MWScript
extensions.registerInstruction ("centeroncell", "S", opcodeCOC);
extensions.registerInstruction ("coe", "ll", opcodeCOE);
extensions.registerInstruction ("centeronexterior", "ll", opcodeCOE);
extensions.registerFunction ("getinterior", 'l', "", opcodeGetInterior);
}
void installOpcodes (Interpreter::Interpreter& interpreter)
@ -102,6 +122,7 @@ namespace MWScript
interpreter.installSegment5 (opcodeCellChanged, new OpCellChanged);
interpreter.installSegment5 (opcodeCOC, new OpCOC);
interpreter.installSegment5 (opcodeCOE, new OpCOE);
interpreter.installSegment5 (opcodeGetInterior, new OpGetInterior);
}
}
}

View File

@ -102,4 +102,5 @@ op 0x20000df-0x20000f9: SetSkill, explicit reference
op 0x20000fa-0x2000114: ModSkill
op 0x2000115-0x200012f: ModSKill, explicit reference
op 0x2000130: ToggleCollision
opcodes 0x2000131-0x3ffffff unused
op 0x2000131: GetInterior
opcodes 0x2000132-0x3ffffff unused