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,6 +10,24 @@ AnnouncerManager* ANNOUNCER = NULL; // global object accessable from anywhere in
|
|||||||
const RString EMPTY_ANNOUNCER_NAME = "Empty";
|
const RString EMPTY_ANNOUNCER_NAME = "Empty";
|
||||||
const RString ANNOUNCERS_DIR = "Announcers/";
|
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 )
|
void AnnouncerManager::GetAnnouncerNames( vector<RString>& AddTo )
|
||||||
{
|
{
|
||||||
GetDirListing( ANNOUNCERS_DIR+"*", AddTo, true );
|
GetDirListing( ANNOUNCERS_DIR+"*", AddTo, true );
|
||||||
@@ -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
|
* (c) 2001-2004 Chris Danford
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
#ifndef ANNOUNCER_MANAGER_H
|
#ifndef ANNOUNCER_MANAGER_H
|
||||||
#define ANNOUNCER_MANAGER_H
|
#define ANNOUNCER_MANAGER_H
|
||||||
|
|
||||||
|
#include "RageTypes.h"
|
||||||
|
|
||||||
class AnnouncerManager
|
class AnnouncerManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
AnnouncerManager();
|
||||||
|
~AnnouncerManager();
|
||||||
|
|
||||||
void GetAnnouncerNames( vector<RString>& AddTo );
|
void GetAnnouncerNames( vector<RString>& AddTo );
|
||||||
bool DoesAnnouncerExist( RString sAnnouncerName );
|
bool DoesAnnouncerExist( RString sAnnouncerName );
|
||||||
void SwitchAnnouncer( RString sNewAnnouncerName );
|
void SwitchAnnouncer( RString sNewAnnouncerName );
|
||||||
@@ -13,6 +18,9 @@ public:
|
|||||||
RString GetPathTo( RString sFolderName );
|
RString GetPathTo( RString sFolderName );
|
||||||
bool HasSoundsFor( RString sFolderName );
|
bool HasSoundsFor( RString sFolderName );
|
||||||
|
|
||||||
|
// Lua
|
||||||
|
void PushSelf( lua_State *L );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static RString GetAnnouncerDirFromName( RString sAnnouncerName );
|
static RString GetAnnouncerDirFromName( RString sAnnouncerName );
|
||||||
RString GetPathTo( RString AnnouncerPath, RString sFolderName );
|
RString GetPathTo( RString AnnouncerPath, RString sFolderName );
|
||||||
|
|||||||
Reference in New Issue
Block a user