//===== Copyright © Valve Corporation, All rights reserved. ======// // // Purpose: Defines scripting system. // //===========================================================================// #ifndef GAMEUISCRIPTINTERFACE_H #define GAMEUISCRIPTINTERFACE_H #ifdef _WIN32 #pragma once #endif #include "game_controls/igameuisystemmgr.h" #include "gameuiscriptsystem.h" #include "tier1/utlntree.h" #include "utlmap.h" class CGameUIDefinition; class CGameGraphic; //----------------------------------------------------------------------------- // These are functions that can be called from lua that do things in the gameui. //----------------------------------------------------------------------------- class CGameUIScriptInterface { public: explicit CGameUIScriptInterface( IScriptVM *pScriptVM, CGameUIDefinition *pDef ); ~CGameUIScriptInterface(); int GetGraphicID( CGameGraphic *pGraphic ); public: void Shutdown(); // Load a new menu to show now. HSCRIPT LoadMenu( const char *szMenuName, HSCRIPT hParams ); // Create a graphic by classname HSCRIPT CreateGraphic( const char *szGraphicClassName, HSCRIPT hParams ); // Execute a script command from menus HSCRIPT CallScript( int32 iScriptHandle, const char *szCommandName, HSCRIPT hParams ); // Call a function inside a graphic HSCRIPT CallGraphic( int32 iGraphicHandle, const char *szCommandName, HSCRIPT hParams ); // Interface with nuggets HSCRIPT Nugget( const char *szCommandName, HSCRIPT hParams ); public: enum { KV_VARIANT_SCRATCH_BUF_SIZE = 128 }; static bool ScriptVmKeyValueToVariant( IScriptVM *pVM, KeyValues *val, ScriptVariant_t &varValue, char chScratchBuffer[KV_VARIANT_SCRATCH_BUF_SIZE] ); static bool ScriptVmStringFromVariant( ScriptVariant_t &varValue, char chScratchBuffer[KV_VARIANT_SCRATCH_BUF_SIZE] ); static KeyValues * ScriptVmKeyValueFromVariant( IScriptVM *pVM, ScriptVariant_t &varValue ); static KeyValues * ScriptTableToKeyValues( IScriptVM *pVM, char const *szName, HSCRIPT hTable ); static HSCRIPT ScriptTableFromKeyValues( IScriptVM *pVM, KeyValues *kv ); private: HSCRIPT m_Scope; IScriptVM *m_pScriptVM; CGameUIDefinition *m_pMenu; CUtlMap< CUtlString, IGameUIScreenController * > m_Nuggets; CUtlMap< CUtlString, CGameGraphic * > m_GraphicScriptInstances; // graphics created from scripting. }; #endif // GAMEUISCRIPTINTERFACE_H