From cb3f10aabb20712c76ee1fbfdc4f4e91dabbdcd7 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 16 Jun 2005 06:30:33 +0000 Subject: [PATCH] LuaHelpers::RunExpressionF --- stepmania/src/ActorFrame.cpp | 4 ++-- stepmania/src/Command.cpp | 6 +++--- stepmania/src/LuaManager.cpp | 9 +++++++-- stepmania/src/LuaManager.h | 2 +- stepmania/src/RollingNumbers.cpp | 2 +- stepmania/src/ThemeManager.cpp | 2 +- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/stepmania/src/ActorFrame.cpp b/stepmania/src/ActorFrame.cpp index 0127b7e391..573e9d2073 100644 --- a/stepmania/src/ActorFrame.cpp +++ b/stepmania/src/ActorFrame.cpp @@ -53,12 +53,12 @@ void ActorFrame::LoadFromNode( const CString& sDir, const XNode* pNode ) if( pNode->GetAttrValue( "VanishX", s ) ) { LUA->PrepareExpression( s ); - m_fVanishX = LUA->RunExpressionF( s ); + m_fVanishX = LuaHelpers::RunExpressionF( s ); } if( pNode->GetAttrValue( "VanishY", s ) ) { LUA->PrepareExpression( s ); - m_fVanishY = LUA->RunExpressionF( s ); + m_fVanishY = LuaHelpers::RunExpressionF( s ); } m_bOverrideLighting = pNode->GetAttrValue( "Lighting", m_bLighting ); } diff --git a/stepmania/src/Command.cpp b/stepmania/src/Command.cpp index 6374053795..a3afd477ee 100644 --- a/stepmania/src/Command.cpp +++ b/stepmania/src/Command.cpp @@ -41,19 +41,19 @@ Command::Arg::operator CString () Command::Arg::operator float () { LUA->PrepareExpression( s ); // strip invalid chars - return LUA->RunExpressionF( s ); + return LuaHelpers::RunExpressionF( s ); } Command::Arg::operator int () { LUA->PrepareExpression( s ); // strip invalid chars - return (int)LUA->RunExpressionF( s ); + return (int) LuaHelpers::RunExpressionF( s ); } Command::Arg::operator bool () { LUA->PrepareExpression( s ); // strip invalid chars - return LUA->RunExpressionF( s ) != 0.0f; + return LuaHelpers::RunExpressionF( s ) != 0.0f; } void Command::Load( const CString &sCommand ) diff --git a/stepmania/src/LuaManager.cpp b/stepmania/src/LuaManager.cpp index bd6cb5a5bc..36b7cd2b8c 100644 --- a/stepmania/src/LuaManager.cpp +++ b/stepmania/src/LuaManager.cpp @@ -321,10 +321,14 @@ bool LuaHelpers::RunExpressionB( const CString &str ) return result; } -float LuaManager::RunExpressionF( const CString &str ) +float LuaHelpers::RunExpressionF( const CString &str ) { + Lua *L = LUA->Get(); if( !LuaHelpers::RunScript(L, "return " + str, "", 1) ) + { + LUA->Release(L); return 0; + } /* Don't accept a function as a return value. */ if( lua_isfunction( L, -1 ) ) @@ -333,12 +337,13 @@ float LuaManager::RunExpressionF( const CString &str ) float result = (float) lua_tonumber( L, -1 ); lua_pop( L, 1 ); + LUA->Release(L); return result; } int LuaManager::RunExpressionI( const CString &str ) { - return (int)RunExpressionF(str); + return (int) LuaHelpers::RunExpressionF(str); } bool LuaManager::RunExpressionS( const CString &str, CString &sOut ) diff --git a/stepmania/src/LuaManager.h b/stepmania/src/LuaManager.h index 531067adca..c3a8146767 100644 --- a/stepmania/src/LuaManager.h +++ b/stepmania/src/LuaManager.h @@ -60,7 +60,6 @@ public: void ResetState(); /* Run an expression in the global environment, returning the given type. */ - float RunExpressionF( const CString &str ); int RunExpressionI( const CString &str ); bool RunExpressionS( const CString &str, CString &sOut ); @@ -105,6 +104,7 @@ namespace LuaHelpers /* Run an expression in the global environment, returning the given type. */ bool RunExpressionB( const CString &str ); + float RunExpressionF( const CString &str ); template void ReadArrayFromTable( vector &aOut, lua_State *L ) diff --git a/stepmania/src/RollingNumbers.cpp b/stepmania/src/RollingNumbers.cpp index e4a04ce94f..e7560db689 100644 --- a/stepmania/src/RollingNumbers.cpp +++ b/stepmania/src/RollingNumbers.cpp @@ -29,7 +29,7 @@ void RollingNumbers::LoadFromNode( const CString& sDir, const XNode* pNode ) CString sTargetNumber; if( pNode->GetAttrValue( "TargetNumber", sTargetNumber ) ) { - float fTargetNumber = LUA->RunExpressionF(sTargetNumber); + float fTargetNumber = LuaHelpers::RunExpressionF(sTargetNumber); SetTargetNumber( fTargetNumber ); } diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index b075ea6ef9..a27724c663 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -719,7 +719,7 @@ float ThemeManager::GetMetricF( const CString &sClassName, const CString &sValue LUA->PrepareExpression( sValue ); - return LUA->RunExpressionF( sValue ); + return LuaHelpers::RunExpressionF( sValue ); } // #include "LuaManager.h"