diff --git a/src/Screen.cpp b/src/Screen.cpp index 9ec1982a60..45f1841d69 100644 --- a/src/Screen.cpp +++ b/src/Screen.cpp @@ -14,6 +14,15 @@ #define PERSIST_SCREENS THEME->GetMetric (m_sName,"PersistScreens") #define GROUPED_SCREENS THEME->GetMetric (m_sName,"GroupedScreens") +static const char *ScreenTypeNames[] = { + "Attract", + "GameMenu", + "Gameplay", + "SystemMenu", +}; +XToString( ScreenType ); +LuaXType( ScreenType ); + void Screen::InitScreen( Screen *pScreen ) { pScreen->Init(); @@ -272,6 +281,7 @@ public: static int GetNextScreenName( T* p, lua_State *L ) { lua_pushstring(L, p->GetNextScreenName() ); return 1; } static int GetPrevScreenName( T* p, lua_State *L ) { lua_pushstring(L, p->GetPrevScreen() ); return 1; } static int lockinput( T* p, lua_State *L ) { p->SetLockInputSecs(FArg(1)); return 0; } + DEFINE_METHOD( GetScreenType, GetScreenType() ) static int PostScreenMessage( T* p, lua_State *L ) { @@ -287,6 +297,7 @@ public: ADD_METHOD( GetPrevScreenName ); ADD_METHOD( PostScreenMessage ); ADD_METHOD( lockinput ); + ADD_METHOD( GetScreenType ); } }; diff --git a/src/Screen.h b/src/Screen.h index e3a6a0b4f0..d8441adae4 100644 --- a/src/Screen.h +++ b/src/Screen.h @@ -11,6 +11,7 @@ #include "InputQueue.h" #include "CodeSet.h" #include "LightsManager.h" +#include "EnumHelper.h" class InputEventPlus; class Screen; @@ -26,8 +27,12 @@ enum ScreenType attract, game_menu, gameplay, - system_menu + system_menu, + NUM_ScreenType, + ScreenType_Invalid }; +const RString& ScreenTypeToString( ScreenType st ); +LuaDeclareType( ScreenType ); class Screen : public ActorFrame {