OpenMW
|
00001 #ifndef GAME_MWSCRIPT_REF_H 00002 #define GAME_MWSCRIPT_REF_H 00003 00004 #include <string> 00005 00006 #include <components/interpreter/runtime.hpp> 00007 00008 #include "../mwbase/environment.hpp" 00009 #include "../mwbase/world.hpp" 00010 00011 #include "../mwworld/ptr.hpp" 00012 00013 #include "interpretercontext.hpp" 00014 00015 namespace MWScript 00016 { 00017 struct ExplicitRef 00018 { 00019 MWWorld::Ptr operator() (Interpreter::Runtime& runtime) const 00020 { 00021 std::string id = runtime.getStringLiteral (runtime[0].mInteger); 00022 runtime.pop(); 00023 00024 return MWBase::Environment::get().getWorld()->getPtr (id, false); 00025 } 00026 }; 00027 00028 struct ImplicitRef 00029 { 00030 MWWorld::Ptr operator() (Interpreter::Runtime& runtime) const 00031 { 00032 MWScript::InterpreterContext& context 00033 = static_cast<MWScript::InterpreterContext&> (runtime.getContext()); 00034 00035 return context.getReference(); 00036 } 00037 }; 00038 } 00039 00040 #endif