Use autoActor.

Do GainFocus and LoseFocus for previews.
Always run On and then either GainFocus or LoseFocus for all previews
and icons.
This commit is contained in:
Glenn Maynard
2003-11-05 04:09:10 +00:00
parent 0a8096b293
commit 2c6df65bd0
2 changed files with 52 additions and 25 deletions
+49 -23
View File
@@ -77,9 +77,9 @@ ScreenSelectMaster::ScreenSelectMaster( CString sClassName ) : ScreenSelect( sCl
for( i=0; i<NUM_ICON_PARTS; i++ )
{
CString sFName = ssprintf("%s Icon Part%d Choice%d", m_sName.c_str(),i+1,c+1);
m_sprIcon[i][c].SetName( ssprintf("IconPart%dChoice%d",i+1,c+1) );
m_sprIcon[i][c].Load( THEME->GetPathToG(sFName) );
this->AddChild( &m_sprIcon[i][c] );
m_sprIcon[i][c]->SetName( ssprintf("IconPart%dChoice%d",i+1,c+1) );
this->AddChild( m_sprIcon[i][c] );
}
if( SHARED_PREVIEW_AND_CURSOR )
@@ -87,9 +87,9 @@ ScreenSelectMaster::ScreenSelectMaster( CString sClassName ) : ScreenSelect( sCl
for( i=0; i<NUM_PREVIEW_PARTS; i++ )
{
CString sFName = ssprintf("%s Preview Part%d Choice%d", m_sName.c_str(),i+1,c+1);
m_sprPreview[i][c][0].SetName( ssprintf("PreviewPart%d",i+1) );
m_sprPreview[i][c][0].Load( THEME->GetPathToG(sFName) );
this->AddChild( &m_sprPreview[i][c][0] );
m_sprPreview[i][c][0]->SetName( ssprintf("PreviewPart%d",i+1) );
this->AddChild( m_sprPreview[i][c][0] );
}
}
else
@@ -101,9 +101,9 @@ ScreenSelectMaster::ScreenSelectMaster( CString sClassName ) : ScreenSelect( sCl
if( !GAMESTATE->IsPlayerEnabled(p) )
continue; // skip
CString sFName = ssprintf("%s Preview Part%d Choice%d P%d", m_sName.c_str(),i+1,c+1,p+1);
m_sprPreview[i][c][p].SetName( ssprintf("PreviewPart%dP%d",i+1,p+1) );
m_sprPreview[i][c][p].Load( THEME->GetPathToG(sFName) );
this->AddChild( &m_sprPreview[i][c][p] );
m_sprPreview[i][c][p]->SetName( ssprintf("PreviewPart%dP%d",i+1,p+1) );
this->AddChild( m_sprPreview[i][c][p] );
}
}
}
@@ -206,10 +206,10 @@ void ScreenSelectMaster::UpdateSelectableChoices()
{
if( m_aModeChoices[c].IsPlayable() )
for( int i=0; i<NUM_ICON_PARTS; i++ )
m_sprIcon[i][c].SetDiffuse( RageColor(1,1,1,1) );
m_sprIcon[i][c]->SetDiffuse( RageColor(1,1,1,1) );
else
for( int i=0; i<NUM_ICON_PARTS; i++ )
m_sprIcon[i][c].SetDiffuse( DISABLED_COLOR );
m_sprIcon[i][c]->SetDiffuse( DISABLED_COLOR );
}
for( int p=0; p<NUM_PLAYERS; p++ )
@@ -334,7 +334,6 @@ void ScreenSelectMaster::ChangeSelection( PlayerNumber pn, int iNewChoice )
continue; // skip
const int iOldChoice = m_iChoice[p];
if( SHARED_PREVIEW_AND_CURSOR )
{
for( int i=0; i<NUM_PREVIEW_PARTS; i++ )
@@ -352,6 +351,14 @@ void ScreenSelectMaster::ChangeSelection( PlayerNumber pn, int iNewChoice )
}
}
{
for( int i=0; i<NUM_PREVIEW_PARTS; i++ )
{
COMMAND( m_sprIcon[i][iOldChoice], "LoseFocus" );
COMMAND( m_sprIcon[i][iNewChoice], "GainFocus" );
}
}
m_iChoice[p] = iNewChoice;
if( SHARED_PREVIEW_AND_CURSOR )
@@ -445,18 +452,29 @@ float ScreenSelectMaster::TweenOnScreen()
for( unsigned c=0; c<m_aModeChoices.size(); c++ )
{
for( int i=0; i<NUM_ICON_PARTS; i++ )
{
fSecs = max( fSecs, SET_XY_AND_ON_COMMAND( m_sprIcon[i][c] ) );
for( int c=0; c<(int) m_aModeChoices.size(); c++ )
{
const bool GainingFocus = (c == m_iChoice[0]);
fSecs = max( fSecs, COMMAND( m_sprIcon[i][c], GainingFocus? "GainFocus":"LoseFocus" ) );
if( !GainingFocus )
m_sprIcon[i][c]->FinishTweening();
}
}
if( SHARED_PREVIEW_AND_CURSOR )
{
int p=0;
for( int i=0; i<NUM_PREVIEW_PARTS; i++ )
{
SET_XY( m_sprPreview[i][c][p] );
if( int(c)==m_iChoice[p] )
fSecs = max( fSecs, ON_COMMAND( m_sprPreview[i][c][p] ) );
else
m_sprPreview[i][c][p].SetDiffuseAlpha(0);
// SET_XY( m_sprPreview[i][c][p] );
fSecs = max( fSecs, SET_XY_AND_ON_COMMAND( m_sprPreview[i][c][p] ) );
const bool GainingFocus = (int(c) == m_iChoice[p]);
fSecs = max( fSecs, COMMAND( m_sprPreview[i][c][p], GainingFocus? "GainFocus":"LoseFocus" ) );
if( !GainingFocus )
m_sprPreview[i][c][p]->FinishTweening();
}
}
else
@@ -465,11 +483,12 @@ float ScreenSelectMaster::TweenOnScreen()
if( GAMESTATE->IsPlayerEnabled(p) )
for( int i=0; i<NUM_PREVIEW_PARTS; i++ )
{
SET_XY( m_sprPreview[i][c][p] );
if( int(c)==m_iChoice[p] )
fSecs = max( fSecs, ON_COMMAND( m_sprPreview[i][c][p] ) );
else
m_sprPreview[i][c][p].SetDiffuseAlpha(0);
// SET_XY( m_sprPreview[i][c][p] );
fSecs = max( fSecs, SET_XY_AND_ON_COMMAND( m_sprPreview[i][c][p] ) );
const bool GainingFocus = (int(c) == m_iChoice[p]);
fSecs = max( fSecs, COMMAND( m_sprPreview[i][c][p], GainingFocus? "GainFocus":"LoseFocus" ) );
if( !GainingFocus )
m_sprPreview[i][c][p]->FinishTweening();
}
}
}
@@ -482,9 +501,16 @@ float ScreenSelectMaster::TweenOnScreen()
else
{
for( int p=0; p<NUM_PLAYERS; p++ )
if( GAMESTATE->IsPlayerEnabled(p) )
{
if( !GAMESTATE->IsPlayerEnabled(p) )
continue;
for( int c=0; c<(int) m_aModeChoices.size(); c++ )
for( int i=0; i<NUM_PREVIEW_PARTS; i++ )
fSecs = max( fSecs, COMMAND( m_sprPreview[i][m_iChoice[p]][p], "GainFocus" ) );
{
const char *cmd = (c == m_iChoice[p])? "GainFocus":"LoseFocus";
fSecs = max( fSecs, COMMAND( m_sprPreview[i][c][p], cmd ) );
}
}
}
@@ -565,10 +591,10 @@ float ScreenSelectMaster::TweenOffScreen()
float ScreenSelectMaster::GetCursorX( PlayerNumber pn, int iPartIndex )
{
return m_sprIcon[0][m_iChoice[pn]].GetX() + CURSOR_OFFSET_X_FROM_ICON(pn, iPartIndex);
return m_sprIcon[0][m_iChoice[pn]]->GetX() + CURSOR_OFFSET_X_FROM_ICON(pn, iPartIndex);
}
float ScreenSelectMaster::GetCursorY( PlayerNumber pn, int iPartIndex )
{
return m_sprIcon[0][m_iChoice[pn]].GetY() + CURSOR_OFFSET_Y_FROM_ICON(pn, iPartIndex);
return m_sprIcon[0][m_iChoice[pn]]->GetY() + CURSOR_OFFSET_Y_FROM_ICON(pn, iPartIndex);
}
+3 -2
View File
@@ -17,6 +17,7 @@
#include "BitmapText.h"
#include "RageSound.h"
#include "RandomSample.h"
#include "ActorUtil.h"
class ScreenSelectMaster : public ScreenSelect
{
@@ -53,9 +54,9 @@ protected:
Sprite m_sprExplanation[NUM_PAGES];
Sprite m_sprMore[NUM_PAGES];
#define MAX_ICON_PARTS 3
Sprite m_sprIcon[MAX_ICON_PARTS][MAX_CHOICES];
AutoActor m_sprIcon[MAX_ICON_PARTS][MAX_CHOICES];
#define MAX_PREVIEW_PARTS 3
Sprite m_sprPreview[MAX_PREVIEW_PARTS][MAX_CHOICES][NUM_PLAYERS];
AutoActor m_sprPreview[MAX_PREVIEW_PARTS][MAX_CHOICES][NUM_PLAYERS];
#define MAX_CURSOR_PARTS 3
Sprite m_sprCursor[MAX_CURSOR_PARTS][NUM_PLAYERS];