generalized BGA command names
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
#include "song.h"
|
#include "song.h"
|
||||||
#include "ThemeManager.h"
|
#include "ThemeManager.h"
|
||||||
#include "RageFile.h"
|
#include "RageFile.h"
|
||||||
|
#include "ActorUtil.h"
|
||||||
|
|
||||||
const int MAX_LAYERS = 1000;
|
const int MAX_LAYERS = 1000;
|
||||||
|
|
||||||
@@ -208,8 +209,35 @@ void BGAnimation::SetDiffuse( const RageColor &c )
|
|||||||
m_Layers[i]->SetDiffuse(c);
|
m_Layers[i]->SetDiffuse(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BGAnimation::PlayOffCommand()
|
float BGAnimation::GetTweenTimeLeft() const
|
||||||
|
{
|
||||||
|
float tot = 0;
|
||||||
|
|
||||||
|
for( unsigned i=0; i<m_TweenInfo.size(); ++i )
|
||||||
|
tot += m_Layers[i]->GetMaxTweenTimeLeft();
|
||||||
|
|
||||||
|
return tot;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BGAnimation::PlayCommand( const CString &cmd )
|
||||||
{
|
{
|
||||||
for( unsigned i=0; i<m_Layers.size(); i++ )
|
for( unsigned i=0; i<m_Layers.size(); i++ )
|
||||||
m_Layers[i]->PlayOffCommand();
|
m_Layers[i]->PlayCommand( cmd );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BGAnimation::HandleCommand( const CStringArray &asTokens )
|
||||||
|
{
|
||||||
|
HandleParams;
|
||||||
|
|
||||||
|
const CString& sName = asTokens[0];
|
||||||
|
|
||||||
|
if( sName=="playcommand" ) PlayCommand( sParam(1) );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Actor::HandleCommand( asTokens );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CheckHandledParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,11 @@ public:
|
|||||||
|
|
||||||
float GetLengthSeconds() { return m_fLengthSeconds; }
|
float GetLengthSeconds() { return m_fLengthSeconds; }
|
||||||
|
|
||||||
void PlayOffCommand();
|
virtual void HandleCommand( const CStringArray &asTokens );
|
||||||
|
void PlayOffCommand() { PlayCommand("Off"); }
|
||||||
|
void PlayCommand( const CString &cmd );
|
||||||
|
|
||||||
|
float GetTweenTimeLeft() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
vector<BGAnimationLayer*> m_Layers;
|
vector<BGAnimationLayer*> m_Layers;
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ const float SPIRAL_MIN_ZOOM = 0.3f;
|
|||||||
#define MAX_SPRITES (MAX_TILES_WIDE*MAX_TILES_HIGH)
|
#define MAX_SPRITES (MAX_TILES_WIDE*MAX_TILES_HIGH)
|
||||||
|
|
||||||
static const RectI FullScreenRectI(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM);
|
static const RectI FullScreenRectI(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM);
|
||||||
// static const RectI FullScreenRectI(-SCREEN_WIDTH/2,-SCREEN_HEIGHT/2,+SCREEN_WIDTH/2,+SCREEN_HEIGHT/2);
|
|
||||||
|
|
||||||
|
|
||||||
BGAnimationLayer::BGAnimationLayer()
|
BGAnimationLayer::BGAnimationLayer()
|
||||||
@@ -496,10 +495,31 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
|||||||
sLayer.c_str(), sAniDir.c_str(), type.c_str() );
|
sLayer.c_str(), sAniDir.c_str(), type.c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
ini.GetValue( sLayer, "Command", m_sOnCommand );
|
{
|
||||||
|
const IniFile::key *key = ini.GetKey( sLayer );
|
||||||
|
for( IniFile::key::const_iterator i = key->begin();
|
||||||
|
i != key->end(); ++i)
|
||||||
|
{
|
||||||
|
CString KeyName = i->first; /* "OnCommand" */
|
||||||
|
KeyName.MakeLower();
|
||||||
|
|
||||||
|
if( KeyName.Right(7) != "command" )
|
||||||
|
continue; /* not a command */
|
||||||
|
|
||||||
|
const CString &Data = i->second;
|
||||||
|
CString CmdName;
|
||||||
|
/* Special case: "Command=foo" -> "OnCommand=foo" */
|
||||||
|
if( KeyName.size() == 7 )
|
||||||
|
CmdName="on";
|
||||||
|
else
|
||||||
|
CmdName = KeyName.Left( KeyName.size()-7 );
|
||||||
|
m_asCommands[CmdName] = Data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ini.GetValue( sLayer, "CommandRepeatSeconds", m_fRepeatCommandEverySeconds );
|
ini.GetValue( sLayer, "CommandRepeatSeconds", m_fRepeatCommandEverySeconds );
|
||||||
m_fSecondsUntilNextCommand = m_fRepeatCommandEverySeconds;
|
m_fSecondsUntilNextCommand = m_fRepeatCommandEverySeconds;
|
||||||
ini.GetValue( sLayer, "OffCommand", m_sOffCommand );
|
|
||||||
ini.GetValue( sLayer, "FOV", m_fFOV );
|
ini.GetValue( sLayer, "FOV", m_fFOV );
|
||||||
ini.GetValue( sLayer, "Lighting", m_bLighting );
|
ini.GetValue( sLayer, "Lighting", m_bLighting );
|
||||||
ini.GetValue( sLayer, "TexCoordVelocityX", m_fTexCoordVelocityX );
|
ini.GetValue( sLayer, "TexCoordVelocityX", m_fTexCoordVelocityX );
|
||||||
@@ -607,11 +627,7 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
|
|||||||
m_pActors[i]->SetState( rand()%m_pActors[i]->GetNumStates() );
|
m_pActors[i]->SetState( rand()%m_pActors[i]->GetNumStates() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_sOnCommand != "" )
|
PlayCommand( "On" );
|
||||||
{
|
|
||||||
for( unsigned i=0; i<m_pActors.size(); i++ )
|
|
||||||
m_pActors[i]->Command( m_sOnCommand );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float BGAnimationLayer::GetMaxTweenTimeLeft() const
|
float BGAnimationLayer::GetMaxTweenTimeLeft() const
|
||||||
@@ -891,10 +907,7 @@ void BGAnimationLayer::Update( float fDeltaTime )
|
|||||||
m_fSecondsUntilNextCommand -= fDeltaTime;
|
m_fSecondsUntilNextCommand -= fDeltaTime;
|
||||||
if( m_fSecondsUntilNextCommand <= 0 )
|
if( m_fSecondsUntilNextCommand <= 0 )
|
||||||
{
|
{
|
||||||
for( unsigned i=0; i<m_pActors.size(); i++ )
|
PlayCommand( "On" );
|
||||||
{
|
|
||||||
m_pActors[i]->Command( m_sOnCommand );
|
|
||||||
}
|
|
||||||
m_fSecondsUntilNextCommand += m_fRepeatCommandEverySeconds;
|
m_fSecondsUntilNextCommand += m_fRepeatCommandEverySeconds;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -959,10 +972,7 @@ void BGAnimationLayer::GainingFocus( float fRate, bool bRewindMovie, bool bLoop
|
|||||||
m_pActors[0]->Command( ssprintf("rate,%f",fRate) );
|
m_pActors[0]->Command( ssprintf("rate,%f",fRate) );
|
||||||
|
|
||||||
if( m_fRepeatCommandEverySeconds == -1 ) // if not repeating
|
if( m_fRepeatCommandEverySeconds == -1 ) // if not repeating
|
||||||
{
|
PlayCommand( "On" );
|
||||||
for( unsigned i=0; i<m_pActors.size(); i++ )
|
|
||||||
m_pActors[i]->Command( m_sOnCommand );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BGAnimationLayer::LosingFocus()
|
void BGAnimationLayer::LosingFocus()
|
||||||
@@ -970,12 +980,14 @@ void BGAnimationLayer::LosingFocus()
|
|||||||
m_pActors[0]->Command( "pause" );
|
m_pActors[0]->Command( "pause" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BGAnimationLayer::PlayCommand( CString cmd )
|
||||||
void BGAnimationLayer::PlayOffCommand()
|
|
||||||
{
|
{
|
||||||
if( m_sOffCommand != "" )
|
cmd.MakeLower();
|
||||||
{
|
map<CString, CString>::const_iterator it = m_asCommands.find( cmd );
|
||||||
|
|
||||||
|
if( it == m_asCommands.end() )
|
||||||
|
return;
|
||||||
|
|
||||||
for( unsigned i=0; i<m_pActors.size(); i++ )
|
for( unsigned i=0; i<m_pActors.size(); i++ )
|
||||||
m_pActors[i]->Command( m_sOffCommand );
|
m_pActors[i]->Command( it->second );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ public:
|
|||||||
void GainingFocus( float fRate, bool bRewindMovie, bool bLoop );
|
void GainingFocus( float fRate, bool bRewindMovie, bool bLoop );
|
||||||
void LosingFocus();
|
void LosingFocus();
|
||||||
|
|
||||||
void PlayOffCommand();
|
void PlayCommand( CString cmd );
|
||||||
|
void PlayOffCommand() { PlayCommand( "Off" ); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
vector<Actor*> m_pActors;
|
vector<Actor*> m_pActors;
|
||||||
@@ -90,8 +91,7 @@ protected:
|
|||||||
//
|
//
|
||||||
|
|
||||||
// common stuff
|
// common stuff
|
||||||
CString m_sOnCommand;
|
map<CString, CString> m_asCommands;
|
||||||
CString m_sOffCommand;
|
|
||||||
float m_fRepeatCommandEverySeconds; // -1 = no repeat
|
float m_fRepeatCommandEverySeconds; // -1 = no repeat
|
||||||
float m_fSecondsUntilNextCommand;
|
float m_fSecondsUntilNextCommand;
|
||||||
float m_fUpdateRate; // set by GainingFocus
|
float m_fUpdateRate; // set by GainingFocus
|
||||||
|
|||||||
Reference in New Issue
Block a user