1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef LUA_MENU_H
#define LUA_MENU_H
#include "LuaHandle.h"
class CLuaMenu : public CLuaHandle
{
public:
static bool CanLoadHandler() { return true; }
static bool ReloadHandler() { return (FreeHandler(), LoadFreeHandler()); } // NOTE the ','
static bool LoadFreeHandler() { return (LoadHandler() || FreeHandler()); }
static bool LoadHandler();
static bool FreeHandler();
// callin called when LuaMenu is active with no game
void ActivateMenu(const std::string& msg);
// callin called when LuaMenu is active with a game
void ActivateGame();
// callin called before each render, can block rendering
bool AllowDraw();
bool PersistOnReload() const override { return true; }
// Don't call GamePreload since it may be called concurrent
// with other callins during loading.
void GamePreload() override {}
static int SendLuaUIMsg(lua_State* L);
protected:
CLuaMenu();
virtual ~CLuaMenu();
string LoadFile(const string& name) const;
static bool LoadUnsyncedCtrlFunctions(lua_State* L);
static bool LoadLuaMenuFunctions(lua_State* L);
static bool LoadUnsyncedReadFunctions(lua_State* L);
static bool RemoveSomeOpenGLFunctions(lua_State* L);
static bool PushGameVersion(lua_State* L);
void InitLuaSocket(lua_State* L);
};
extern CLuaMenu* luaMenu;
#endif /* LUA_MENU_H */
|