mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-25 17:56:37 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef OPENMW_ESM_SCPT_H
 | |
| #define OPENMW_ESM_SCPT_H
 | |
| 
 | |
| #include <string>
 | |
| #include <vector>
 | |
| 
 | |
| #include "esmcommon.hpp"
 | |
| 
 | |
| namespace ESM
 | |
| {
 | |
| 
 | |
| class ESMReader;
 | |
| class ESMWriter;
 | |
| 
 | |
| /*
 | |
|  * Script definitions
 | |
|  */
 | |
| 
 | |
| class Script
 | |
| {
 | |
| public:
 | |
|     static unsigned int sRecordId;
 | |
| 
 | |
|     struct SCHDstruct
 | |
|     {
 | |
|         /* Script name.
 | |
| 
 | |
|          NOTE: You should handle the name "Main" (case insensitive) with
 | |
|          care. With tribunal, modders got the ability to add 'start
 | |
|          scripts' to their mods, which is a script that is run at
 | |
|          startup and which runs throughout the game (I think.)
 | |
| 
 | |
|          However, before Tribunal, there was only one startup script,
 | |
|          called "Main". If mods wanted to make their own start scripts,
 | |
|          they had to overwrite Main. This is obviously problem if
 | |
|          multiple mods to this at the same time.
 | |
| 
 | |
|          Although most mods have switched to using Trib-style startup
 | |
|          scripts, some legacy mods might still overwrite Main, and this
 | |
|          can cause problems if several mods do it. I think the best
 | |
|          course of action is to NEVER overwrite main, but instead add
 | |
|          each with a separate unique name and add them to the start
 | |
|          script list. But there might be other problems with this
 | |
|          approach though.
 | |
|          */
 | |
| 
 | |
|         // These describe the sizes we need to allocate for the script
 | |
|         // data.
 | |
|         int mNumShorts, mNumLongs, mNumFloats, mScriptDataSize, mStringTableSize;
 | |
|     }; // 52 bytes
 | |
| 
 | |
|     std::string mId;
 | |
| 
 | |
|     SCHDstruct mData;
 | |
| 
 | |
|     std::vector<std::string> mVarNames; // Variable names
 | |
|     std::vector<unsigned char> mScriptData; // Compiled bytecode
 | |
|     std::string mScriptText; // Uncompiled script
 | |
| 
 | |
|     void load(ESMReader &esm);
 | |
|     void save(ESMWriter &esm) const;
 | |
| 
 | |
|     void blank();
 | |
|     ///< Set record to default state (does not touch the ID/index).
 | |
| };
 | |
| }
 | |
| #endif
 |