mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 05:26:39 +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
 |