#include "global.h" #include "Command.h" #include "RageUtil.h" #include "RageLog.h" #include "arch/Dialog/Dialog.h" #include "LuaManager.h" void IncorrectNumberArgsWarning( const Command &command, int iMaxIndexAccessed ) { const CString sError = ssprintf( "Actor::HandleCommand: Wrong number of arguments in command '%s'. Expected %d but there are %u.", command.GetOriginalCommandString().c_str(), iMaxIndexAccessed+1, unsigned(command.m_vsArgs.size()) ); LOG->Warn( sError ); Dialog::OK( sError ); } CString Command::GetName() const { if( m_vsArgs.empty() ) return CString(); CString s = m_vsArgs[0]; s.MakeLower(); return s; } Command::Arg Command::GetArg( unsigned index ) const { Arg a; if( index < m_vsArgs.size() ) a.s = m_vsArgs[index]; return a; } Command::Arg::operator CString () const { CString sValue = s; LuaHelpers::RunAtExpressionS( sValue ); return sValue; } Command::Arg::operator float () const { CString sValue = s; LuaHelpers::PrepareExpression( sValue ); // strip invalid chars return LuaHelpers::RunExpressionF( sValue ); } Command::Arg::operator int () const { CString sValue = s; LuaHelpers::PrepareExpression( sValue ); // strip invalid chars return (int) LuaHelpers::RunExpressionF( sValue ); } Command::Arg::operator bool () const { CString sValue = s; LuaHelpers::PrepareExpression( sValue ); // strip invalid chars return LuaHelpers::RunExpressionF( sValue ) != 0.0f; } void Command::Load( const CString &sCommand ) { m_vsArgs.clear(); split( sCommand, ",", m_vsArgs, false ); // don't ignore empty } CString Command::GetOriginalCommandString() const { return join( ",", m_vsArgs ); } void ParseCommands( const CString &sCommands, Commands &vCommandsOut ) { CStringArray vsCommands; split( sCommands, ";", vsCommands, true ); // do ignore empty vCommandsOut.v.resize( vsCommands.size() ); for( unsigned i=0; i