OpenMW
apps/openmw/mwscript/ref.hpp
Go to the documentation of this file.
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