#ifndef CMASTERTEMPLATE_H #define CMASTERTEMPLATE_H #include "CScriptTemplate.h" #include "CTemplateCategory.h" #include "../EFormatVersion.h" #include #include #include class CMasterTemplate { friend class CTemplateLoader; EGame mGame; std::string mGameName; u32 mVersion; bool mFullyLoaded; std::unordered_map mTemplates; std::unordered_map mStates; std::unordered_map mMessages; std::vector mCategories; bool mHasPropList; std::unordered_map mPropertyList; static std::unordered_map smMasterMap; static u32 smGameListVersion; public: CMasterTemplate(); ~CMasterTemplate(); EGame GetGame(); u32 NumScriptTemplates(); u32 NumStates(); u32 NumMessages(); CScriptTemplate* TemplateByID(u32 ObjectID); CScriptTemplate* TemplateByID(const CFourCC& ObjectID); CScriptTemplate* TemplateByIndex(u32 Index); std::string StateByID(u32 StateID); std::string StateByID(const CFourCC& StateID); std::string StateByIndex(u32 Index); std::string MessageByID(u32 MessageID); std::string MessageByID(const CFourCC& MessageID); std::string MessageByIndex(u32 Index); CPropertyTemplate* GetProperty(u32 PropertyID); bool IsLoadedSuccessfully(); static CMasterTemplate* GetMasterForGame(EGame Game); }; // ************ INLINE ************ inline u32 CMasterTemplate::NumScriptTemplates() { return mTemplates.size(); } inline u32 CMasterTemplate::NumStates() { return mStates.size(); } inline u32 CMasterTemplate::NumMessages() { return mMessages.size(); } #endif // CMASTERTEMPLATE_H