Lua bindings.

This commit is contained in:
Steve Checkoway
2006-08-18 00:11:30 +00:00
parent 8c6575ecbb
commit 0ab5be64af
5 changed files with 80 additions and 2 deletions
+37 -2
View File
@@ -1909,6 +1909,11 @@ public:
else { lua_pushnil(L); }
return 1;
}
static int SetPreferredDifficulty( T* p, lua_State *L )
{
p->m_PreferredDifficulty[IArg(1)].Set( Difficulty(IArg(2)) );
return 0;
}
DEFINE_METHOD( GetPreferredDifficulty, m_PreferredDifficulty[IArg(1)] )
DEFINE_METHOD( AnyPlayerHasRankingFeats, AnyPlayerHasRankingFeats() )
DEFINE_METHOD( IsCourseMode, IsCourseMode() )
@@ -2002,8 +2007,32 @@ public:
lua_pushstring( L, StyleTypeToString(p->GetCurrentStyle()->m_StyleType) );
return 1;
}
static int SetPreferredSongGroup( T* p, lua_State *L ) { p->m_sPreferredSongGroup.Set( SArg(1) ); return 0; }
DEFINE_METHOD( GetPreferredSongGroup, m_sPreferredSongGroup.Get() );
static int GetHumanPlayers( T* p, lua_State *L )
{
vector<int> vHP;
FOREACH_HumanPlayer( pn )
vHP.push_back( pn );
LuaHelpers::CreateTableFromArray( vHP, L );
return 1;
}
static int SetSongOptions( T* p, lua_State *L )
{
SongOptions so;
so.FromString( SArg(2) );
p->m_SongOptions.Assign( ModsLevel(IArg(1)), so );
return 0;
}
static int GetCurrentStyle( T* p, lua_State *L )
{
// XXX: Ugly cast.
LuaHelpers::Push( const_cast<Style *>(p->GetCurrentStyle()), L );
return 1;
}
static void Register(lua_State *L)
{
ADD_METHOD( IsPlayerEnabled );
@@ -2029,6 +2058,7 @@ public:
ADD_METHOD( SetEnv );
ADD_METHOD( GetEnv );
ADD_METHOD( GetEditSourceSteps );
ADD_METHOD( SetPreferredDifficulty );
ADD_METHOD( GetPreferredDifficulty );
ADD_METHOD( AnyPlayerHasRankingFeats );
ADD_METHOD( IsCourseMode );
@@ -2070,6 +2100,11 @@ public:
ADD_METHOD( GetEditLocalProfile );
ADD_METHOD( GetCurrentStepsCredits );
ADD_METHOD( GetCurrentStyleType );
ADD_METHOD( SetPreferredSongGroup );
ADD_METHOD( GetPreferredSongGroup );
ADD_METHOD( GetHumanPlayers );
ADD_METHOD( SetSongOptions );
ADD_METHOD( GetCurrentStyle );
Luna<T>::Register( L );
+9
View File
@@ -171,11 +171,20 @@ int PlayerState::GetSumOfActiveAttackLevels() const
class LunaPlayerState: public Luna<PlayerState>
{
static int SetPlayerOptions( T* p, lua_State *L )
{
PlayerOptions po;
po.FromString( SArg(2) );
p->m_PlayerOptions.Assign( ModsLevel(IArg(1)), po );
return 0;
}
public:
LunaPlayerState() { LUA->Register( Register ); }
static void Register(lua_State *L)
{
ADD_METHOD( SetPlayerOptions );
Luna<T>::Register( L );
}
};
+19
View File
@@ -1841,6 +1841,24 @@ public:
lua_pushnumber( L, iIndex );
return 1;
}
static int GetExtraStageInfo( T* p, lua_State *L )
{
bool bExtra2 = BArg( 1 );
const Style *pStyle = Luna<Style>::check( L, 2 );
Song *pSong;
Steps *pSteps;
PlayerOptions po;
SongOptions so;
p->GetExtraStageInfo( bExtra2, pStyle, pSong, pSteps, &po, &so );
pSong->PushSelf( L );
pSteps->PushSelf( L );
LuaHelpers::Push( po.GetString(), L );
LuaHelpers::Push( so.GetString(), L );
return 4;
}
static void Register(lua_State *L)
{
@@ -1861,6 +1879,7 @@ public:
ADD_METHOD( GetSongFromSteps );
ADD_METHOD( GetSongRank );
ADD_METHOD( GetCourseRank );
ADD_METHOD( GetExtraStageInfo );
Luna<T>::Register( L );
+11
View File
@@ -110,6 +110,17 @@ void Style::GetMinAndMaxColX( PlayerNumber pn, float& fMixXOut, float& fMaxXOut
}
}
// Lua bindings
#include "LuaBinding.h"
class LunaStyle : public Luna<Style>
{
public:
LunaStyle() { LUA->Register( Luna<Style>::Register ); }
};
LUA_REGISTER_CLASS( Style )
/*
* (c) 2001-2002 Chris Danford
* All rights reserved.
+4
View File
@@ -14,6 +14,7 @@ const int MAX_COLS_PER_PLAYER = MAX_NOTE_TRACKS;
class NoteData;
class Game;
struct lua_State;
class Style
{
@@ -62,6 +63,9 @@ public:
bool MatchesStepsType( StepsType type ) const;
void GetMinAndMaxColX( PlayerNumber pn, float& fMixXOut, float& fMaxXOut ) const;
// Lua
void PushSelf( lua_State *L );
};