From 2d6d081c30eeea1e99d1c32692ec222ccd633e2d Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 21 Dec 2010 21:37:26 -0600 Subject: [PATCH] Add SetNextScreenName(string) and SetPrevScreenName(string) Lua bindings to Screen --- Docs/Changelog_sm-ssc.txt | 2 ++ src/Screen.cpp | 7 +++++++ src/Screen.h | 3 +++ 3 files changed, 12 insertions(+) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 271b07ddfd..0149ecc52b 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -17,6 +17,8 @@ sm-ssc v1.2 | 201012xx -------- * SM5SVN r28586: Only unload fonts if not used by the next screen. [shakesoda] * [ScreenSelectMaster] Fix DoSwitchAnyways to actually work again. +* [Screen] Added SetNextScreenName(string) and SetPrevScreenName(string) + Lua bindings. [freem] 20101220 -------- diff --git a/src/Screen.cpp b/src/Screen.cpp index 7b997ece81..7ecd5b8133 100644 --- a/src/Screen.cpp +++ b/src/Screen.cpp @@ -84,6 +84,7 @@ void Screen::BeginScreen() /* Screens set these when they determine their next screen dynamically. Reset them * here, so a reused screen doesn't inherit these from the last time it was used. */ m_sNextScreen = RString(); + m_sPrevScreen = RString(); m_fLockInputSecs = 0; @@ -250,6 +251,8 @@ RString Screen::GetNextScreenName() const RString Screen::GetPrevScreen() const { + if( !m_sPrevScreen.empty() ) + return m_sPrevScreen; return PREV_SCREEN; } @@ -283,6 +286,8 @@ class LunaScreen: public Luna 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 SetNextScreenName( T* p, lua_State *L ) { p->SetNextScreen(SArg(1)); return 0; } + static int SetPrevScreenName( T* p, lua_State *L ) { p->SetPrevScreen(SArg(1)); return 0; } static int lockinput( T* p, lua_State *L ) { p->SetLockInputSecs(FArg(1)); return 0; } DEFINE_METHOD( GetScreenType, GetScreenType() ) @@ -298,6 +303,8 @@ public: { ADD_METHOD( GetNextScreenName ); ADD_METHOD( GetPrevScreenName ); + ADD_METHOD( SetNextScreenName ); + ADD_METHOD( SetPrevScreenName ); ADD_METHOD( PostScreenMessage ); ADD_METHOD( lockinput ); ADD_METHOD( GetScreenType ); diff --git a/src/Screen.h b/src/Screen.h index d8441adae4..b2ef16783b 100644 --- a/src/Screen.h +++ b/src/Screen.h @@ -86,6 +86,7 @@ protected: // If left blank, the NextScreen metric will be used. RString m_sNextScreen; + RString m_sPrevScreen; ScreenMessage m_smSendOnPop; float m_fLockInputSecs; @@ -96,6 +97,8 @@ protected: public: RString GetNextScreenName() const; RString GetPrevScreen() const; + void SetNextScreen(RString sNextScreen){ m_sNextScreen = sNextScreen; }; + void SetPrevScreen(RString sPrevScreen){ m_sPrevScreen = sPrevScreen; }; // let subclass override if they want virtual void MenuUp( const InputEventPlus &input ) { }