mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 00:26:39 +00:00 
			
		
		
		
	added GetInterior script function
This commit is contained in:
		
							parent
							
								
									a724de2429
								
							
						
					
					
						commit
						18b8cdce29
					
				
					 2 changed files with 23 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue