AnnouncerManager gets Lua bindings, and now exists at ANNOUNCER.
New bindings: ANNOUNCER:DoesAnnouncerExist(sAnnouncer) - returns a bool ANNOUNCER:GetAnnouncerNames() - returns a table of strings ANNOUNCER:GetCurrentAnnouncer() - returns a string ANNOUNCER:SetCurrentAnnouncer(sAnnouncer) - sets the new announcer
This commit is contained in:
@@ -10,10 +10,28 @@ AnnouncerManager* ANNOUNCER = NULL; // global object accessable from anywhere in
|
||||
const RString EMPTY_ANNOUNCER_NAME = "Empty";
|
||||
const RString ANNOUNCERS_DIR = "Announcers/";
|
||||
|
||||
AnnouncerManager::AnnouncerManager()
|
||||
{
|
||||
// Register with Lua.
|
||||
{
|
||||
Lua *L = LUA->Get();
|
||||
lua_pushstring( L, "ANNOUNCER" );
|
||||
this->PushSelf( L );
|
||||
lua_settable( L, LUA_GLOBALSINDEX );
|
||||
LUA->Release( L );
|
||||
}
|
||||
}
|
||||
|
||||
AnnouncerManager::~AnnouncerManager()
|
||||
{
|
||||
// Unregister with Lua.
|
||||
LUA->UnsetGlobal( "ANNOUNCER" );
|
||||
}
|
||||
|
||||
void AnnouncerManager::GetAnnouncerNames( vector<RString>& AddTo )
|
||||
{
|
||||
GetDirListing( ANNOUNCERS_DIR+"*", AddTo, true );
|
||||
|
||||
|
||||
StripCvsAndSvn( AddTo );
|
||||
|
||||
// strip out the empty announcer folder
|
||||
@@ -144,6 +162,48 @@ void AnnouncerManager::NextAnnouncer()
|
||||
}
|
||||
}
|
||||
}
|
||||
// lua start
|
||||
#include "LuaBinding.h"
|
||||
|
||||
class LunaAnnouncerManager: public Luna<AnnouncerManager>
|
||||
{
|
||||
public:
|
||||
static int DoesAnnouncerExist( T* p, lua_State *L ) { lua_pushboolean(L, p->DoesAnnouncerExist( SArg(1) )); return 1; }
|
||||
static int GetAnnouncerNames( T* p, lua_State *L )
|
||||
{
|
||||
vector<RString> vAnnouncers;
|
||||
p->GetAnnouncerNames( vAnnouncers );
|
||||
LuaHelpers::CreateTableFromArray(vAnnouncers, L);
|
||||
return 1;
|
||||
}
|
||||
static int GetCurrentAnnouncer( T* p, lua_State *L )
|
||||
{
|
||||
RString s = p->GetCurAnnouncerName();
|
||||
if( s.empty() )
|
||||
return 0;
|
||||
lua_pushstring(L, s );
|
||||
return 1;
|
||||
}
|
||||
static int SetCurrentAnnouncer( T* p, lua_State *L )
|
||||
{
|
||||
RString s = SArg(1);
|
||||
// only bother switching if the announcer exists. -aj
|
||||
if(p->DoesAnnouncerExist(s))
|
||||
p->SwitchAnnouncer(s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LunaAnnouncerManager()
|
||||
{
|
||||
ADD_METHOD( DoesAnnouncerExist );
|
||||
ADD_METHOD( GetAnnouncerNames );
|
||||
ADD_METHOD( GetCurrentAnnouncer );
|
||||
ADD_METHOD( SetCurrentAnnouncer );
|
||||
}
|
||||
};
|
||||
|
||||
LUA_REGISTER_CLASS( AnnouncerManager )
|
||||
// lua end
|
||||
|
||||
/*
|
||||
* (c) 2001-2004 Chris Danford
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
#ifndef ANNOUNCER_MANAGER_H
|
||||
#define ANNOUNCER_MANAGER_H
|
||||
|
||||
#include "RageTypes.h"
|
||||
|
||||
class AnnouncerManager
|
||||
{
|
||||
public:
|
||||
AnnouncerManager();
|
||||
~AnnouncerManager();
|
||||
|
||||
void GetAnnouncerNames( vector<RString>& AddTo );
|
||||
bool DoesAnnouncerExist( RString sAnnouncerName );
|
||||
void SwitchAnnouncer( RString sNewAnnouncerName );
|
||||
@@ -13,6 +18,9 @@ public:
|
||||
RString GetPathTo( RString sFolderName );
|
||||
bool HasSoundsFor( RString sFolderName );
|
||||
|
||||
// Lua
|
||||
void PushSelf( lua_State *L );
|
||||
|
||||
protected:
|
||||
static RString GetAnnouncerDirFromName( RString sAnnouncerName );
|
||||
RString GetPathTo( RString AnnouncerPath, RString sFolderName );
|
||||
|
||||
Reference in New Issue
Block a user