change sprBullet to an AutoActor
This commit is contained in:
+31
-11
@@ -63,7 +63,6 @@ OptionRow::OptionRow( const OptionRowType *pSource )
|
|||||||
m_pParentType = pSource;
|
m_pParentType = pSource;
|
||||||
m_pHand = NULL;
|
m_pHand = NULL;
|
||||||
|
|
||||||
m_sprBullet = NULL;
|
|
||||||
m_textTitle = NULL;
|
m_textTitle = NULL;
|
||||||
ZERO( m_OptionIcons );
|
ZERO( m_OptionIcons );
|
||||||
|
|
||||||
@@ -108,13 +107,15 @@ void OptionRow::DetachHandler()
|
|||||||
|
|
||||||
void OptionRowType::Load( const CString &sType )
|
void OptionRowType::Load( const CString &sType )
|
||||||
{
|
{
|
||||||
|
m_sType = sType;
|
||||||
|
|
||||||
m_textItemParent.LoadFromFont( THEME->GetPathF(sType,"item") );
|
m_textItemParent.LoadFromFont( THEME->GetPathF(sType,"item") );
|
||||||
m_UnderlineParent.Load( sType, OptionsCursor::underline );
|
m_UnderlineParent.Load( sType, OptionsCursor::underline );
|
||||||
m_textTitle.LoadFromFont( THEME->GetPathF(sType,"title") );
|
m_textTitle.LoadFromFont( THEME->GetPathF(sType,"title") );
|
||||||
m_sprBullet.Load( THEME->GetPathG(sType,"bullet") );
|
//m_sprBullet.Load( THEME->GetPathG(sType,"bullet") );
|
||||||
m_OptionIcon.Load( sType );
|
m_OptionIcon.Load( sType );
|
||||||
|
|
||||||
ARROWS_X .Load(sType,"ArrowsX");
|
BULLET_X .Load(sType,"BulletX");
|
||||||
LABELS_X .Load(sType,"LabelsX");
|
LABELS_X .Load(sType,"LabelsX");
|
||||||
LABELS_ON_COMMAND .Load(sType,"LabelsOnCommand");
|
LABELS_ON_COMMAND .Load(sType,"LabelsOnCommand");
|
||||||
LABEL_GAIN_FOCUS_COMMAND .Load(sType,"LabelGainFocusCommand");
|
LABEL_GAIN_FOCUS_COMMAND .Load(sType,"LabelGainFocusCommand");
|
||||||
@@ -234,7 +235,7 @@ void OptionRow::InitText()
|
|||||||
m_textTitle = new BitmapText( m_pParentType->m_textTitle );
|
m_textTitle = new BitmapText( m_pParentType->m_textTitle );
|
||||||
m_Frame.AddChild( m_textTitle );
|
m_Frame.AddChild( m_textTitle );
|
||||||
|
|
||||||
m_sprBullet = new Sprite( m_pParentType->m_sprBullet );
|
m_sprBullet.Load( THEME->GetPathG(m_pParentType->m_sType,"bullet") );
|
||||||
m_sprBullet->SetDrawOrder(-1); // under title
|
m_sprBullet->SetDrawOrder(-1); // under title
|
||||||
m_Frame.AddChild( m_sprBullet );
|
m_Frame.AddChild( m_sprBullet );
|
||||||
|
|
||||||
@@ -248,7 +249,9 @@ void OptionRow::InitText()
|
|||||||
m_OptionIcons[p]->RunCommands( m_pParentType->ICONS_ON_COMMAND );
|
m_OptionIcons[p]->RunCommands( m_pParentType->ICONS_ON_COMMAND );
|
||||||
|
|
||||||
m_Frame.AddChild( m_OptionIcons[p] );
|
m_Frame.AddChild( m_OptionIcons[p] );
|
||||||
SetOptionIcon( p, "" );
|
|
||||||
|
GameCommand gc;
|
||||||
|
SetOptionIcon( p, "", gc );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ROW_EXIT:
|
case ROW_EXIT:
|
||||||
@@ -375,7 +378,7 @@ void OptionRow::InitText()
|
|||||||
m_textTitle->SetX( m_pParentType->LABELS_X );
|
m_textTitle->SetX( m_pParentType->LABELS_X );
|
||||||
m_textTitle->RunCommands( m_pParentType->LABELS_ON_COMMAND );
|
m_textTitle->RunCommands( m_pParentType->LABELS_ON_COMMAND );
|
||||||
|
|
||||||
m_sprBullet->SetX( m_pParentType->ARROWS_X );
|
m_sprBullet->SetX( m_pParentType->BULLET_X );
|
||||||
break;
|
break;
|
||||||
case OptionRow::ROW_EXIT:
|
case OptionRow::ROW_EXIT:
|
||||||
m_textTitle->SetHidden( true );
|
m_textTitle->SetHidden( true );
|
||||||
@@ -428,6 +431,7 @@ void OptionRow::AfterImportOptions()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// HACK: Set focus to one item in the row, which is "go down"
|
// HACK: Set focus to one item in the row, which is "go down"
|
||||||
//
|
//
|
||||||
@@ -569,7 +573,8 @@ void OptionRow::UpdateEnabledDisabled()
|
|||||||
if( m_bHidden )
|
if( m_bHidden )
|
||||||
color.a = 0;
|
color.a = 0;
|
||||||
|
|
||||||
m_sprBullet->SetGlobalDiffuseColor( color );
|
if( m_sprBullet.IsLoaded() )
|
||||||
|
m_sprBullet->SetGlobalDiffuseColor( color );
|
||||||
m_textTitle->SetGlobalDiffuseColor( color );
|
m_textTitle->SetGlobalDiffuseColor( color );
|
||||||
|
|
||||||
|
|
||||||
@@ -653,18 +658,33 @@ void OptionRow::UpdateEnabledDisabled()
|
|||||||
|
|
||||||
if( m_sprBullet->DestTweenState().diffuse[0] != color )
|
if( m_sprBullet->DestTweenState().diffuse[0] != color )
|
||||||
{
|
{
|
||||||
m_sprBullet->StopTweening();
|
|
||||||
m_textTitle->StopTweening();
|
m_textTitle->StopTweening();
|
||||||
m_sprBullet->BeginTweening( m_pParentType->TWEEN_SECONDS );
|
|
||||||
m_textTitle->BeginTweening( m_pParentType->TWEEN_SECONDS );
|
m_textTitle->BeginTweening( m_pParentType->TWEEN_SECONDS );
|
||||||
m_sprBullet->SetDiffuseAlpha( color.a );
|
|
||||||
m_textTitle->SetDiffuseAlpha( color.a );
|
m_textTitle->SetDiffuseAlpha( color.a );
|
||||||
|
|
||||||
|
if( m_sprBullet.IsLoaded() )
|
||||||
|
{
|
||||||
|
m_sprBullet->StopTweening();
|
||||||
|
m_sprBullet->BeginTweening( m_pParentType->TWEEN_SECONDS );
|
||||||
|
m_sprBullet->SetDiffuseAlpha( color.a );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionRow::SetOptionIcon( PlayerNumber pn, const CString &sText )
|
void OptionRow::SetOptionIcon( PlayerNumber pn, const CString &sText, GameCommand &gc )
|
||||||
{
|
{
|
||||||
|
// update bullet
|
||||||
|
Lua *L = LUA->Get();
|
||||||
|
gc.PushSelf( L );
|
||||||
|
GAMESTATE->m_Environment->Set( L, "ThisGameCommand" );
|
||||||
|
LUA->Release( L );
|
||||||
|
|
||||||
|
m_sprBullet->PlayCommand( "Refresh" );
|
||||||
m_OptionIcons[pn]->Set( pn, sText, false );
|
m_OptionIcons[pn]->Set( pn, sText, false );
|
||||||
|
|
||||||
|
L = LUA->Get();
|
||||||
|
GAMESTATE->m_Environment->Unset( L, "ThisGameCommand" );
|
||||||
|
LUA->Release( L );
|
||||||
}
|
}
|
||||||
|
|
||||||
BitmapText &OptionRow::GetTextItemForRow( PlayerNumber pn, int iChoiceOnRow )
|
BitmapText &OptionRow::GetTextItemForRow( PlayerNumber pn, int iChoiceOnRow )
|
||||||
|
|||||||
@@ -8,8 +8,10 @@
|
|||||||
#include "OptionsCursor.h"
|
#include "OptionsCursor.h"
|
||||||
#include "OptionIcon.h"
|
#include "OptionIcon.h"
|
||||||
#include "ThemeMetric.h"
|
#include "ThemeMetric.h"
|
||||||
|
#include "AutoActor.h"
|
||||||
|
|
||||||
class OptionRowHandler;
|
class OptionRowHandler;
|
||||||
|
class GameCommand;
|
||||||
|
|
||||||
enum SelectType
|
enum SelectType
|
||||||
{
|
{
|
||||||
@@ -88,14 +90,16 @@ public:
|
|||||||
void Load( const CString &sType );
|
void Load( const CString &sType );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
CString m_sType;
|
||||||
|
|
||||||
BitmapText m_textItemParent;
|
BitmapText m_textItemParent;
|
||||||
OptionsCursor m_UnderlineParent;
|
OptionsCursor m_UnderlineParent;
|
||||||
Sprite m_sprBullet;
|
//Sprite m_sprBullet;
|
||||||
BitmapText m_textTitle;
|
BitmapText m_textTitle;
|
||||||
OptionIcon m_OptionIcon;
|
OptionIcon m_OptionIcon;
|
||||||
|
|
||||||
// metrics
|
// metrics
|
||||||
ThemeMetric<float> ARROWS_X;
|
ThemeMetric<float> BULLET_X;
|
||||||
ThemeMetric<float> LABELS_X;
|
ThemeMetric<float> LABELS_X;
|
||||||
ThemeMetric<apActorCommands> LABELS_ON_COMMAND;
|
ThemeMetric<apActorCommands> LABELS_ON_COMMAND;
|
||||||
ThemeMetric<apActorCommands> LABEL_GAIN_FOCUS_COMMAND;
|
ThemeMetric<apActorCommands> LABEL_GAIN_FOCUS_COMMAND;
|
||||||
@@ -131,7 +135,8 @@ public:
|
|||||||
void Clear();
|
void Clear();
|
||||||
void LoadNormal( const OptionRowDefinition &def, OptionRowHandler *pHand, bool bFirstItemGoesDown );
|
void LoadNormal( const OptionRowDefinition &def, OptionRowHandler *pHand, bool bFirstItemGoesDown );
|
||||||
void LoadExit();
|
void LoadExit();
|
||||||
void SetOptionIcon( PlayerNumber pn, const CString &sText );
|
|
||||||
|
void SetOptionIcon( PlayerNumber pn, const CString &sText, GameCommand &gc );
|
||||||
|
|
||||||
void ImportOptions( const vector<PlayerNumber> &vpns );
|
void ImportOptions( const vector<PlayerNumber> &vpns );
|
||||||
int ExportOptions( const vector<PlayerNumber> &vpns, bool bRowHasFocus[NUM_PLAYERS] );
|
int ExportOptions( const vector<PlayerNumber> &vpns, bool bRowHasFocus[NUM_PLAYERS] );
|
||||||
@@ -215,7 +220,8 @@ protected:
|
|||||||
|
|
||||||
vector<BitmapText *> m_textItems; // size depends on m_bRowIsLong and which players are joined
|
vector<BitmapText *> m_textItems; // size depends on m_bRowIsLong and which players are joined
|
||||||
vector<OptionsCursor *> m_Underline[NUM_PLAYERS]; // size depends on m_bRowIsLong and which players are joined
|
vector<OptionsCursor *> m_Underline[NUM_PLAYERS]; // size depends on m_bRowIsLong and which players are joined
|
||||||
Sprite *m_sprBullet;
|
|
||||||
|
AutoActor m_sprBullet;
|
||||||
BitmapText *m_textTitle;
|
BitmapText *m_textTitle;
|
||||||
OptionIcon *m_OptionIcons[NUM_PLAYERS];
|
OptionIcon *m_OptionIcons[NUM_PLAYERS];
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,12 @@
|
|||||||
#define ENTRY_MODE(s,i) THEME->GetMetric ("ScreenOptionsMaster",ssprintf("%s,%i",(s).c_str(),(i+1)))
|
#define ENTRY_MODE(s,i) THEME->GetMetric ("ScreenOptionsMaster",ssprintf("%s,%i",(s).c_str(),(i+1)))
|
||||||
#define ENTRY_DEFAULT(s) THEME->GetMetric ("ScreenOptionsMaster",(s) + "Default")
|
#define ENTRY_DEFAULT(s) THEME->GetMetric ("ScreenOptionsMaster",(s) + "Default")
|
||||||
|
|
||||||
|
void OptionRowHandler::GetIconTextAndGameCommand( const OptionRowDefinition &def, int iFirstSelection, CString &sIconTextOut, GameCommand &gcOut ) const
|
||||||
|
{
|
||||||
|
sIconTextOut = "";
|
||||||
|
gcOut.Init();
|
||||||
|
}
|
||||||
|
|
||||||
static void SelectExactlyOne( int iSelection, vector<bool> &vbSelectedOut )
|
static void SelectExactlyOne( int iSelection, vector<bool> &vbSelectedOut )
|
||||||
{
|
{
|
||||||
ASSERT_M( iSelection >= 0 && iSelection < (int) vbSelectedOut.size(),
|
ASSERT_M( iSelection >= 0 && iSelection < (int) vbSelectedOut.size(),
|
||||||
@@ -239,16 +245,18 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual CString GetIconText( const OptionRowDefinition &def, int iFirstSelection ) const
|
virtual void GetIconTextAndGameCommand( const OptionRowDefinition &def, int iFirstSelection, CString &sIconTextOut, GameCommand &gcOut ) const
|
||||||
{
|
{
|
||||||
return m_bUseModNameForIcon ?
|
sIconTextOut = m_bUseModNameForIcon ?
|
||||||
ListEntries[iFirstSelection].m_sModifiers :
|
ListEntries[iFirstSelection].m_sModifiers :
|
||||||
def.m_vsChoices[iFirstSelection];
|
def.m_vsChoices[iFirstSelection];
|
||||||
|
|
||||||
|
gcOut = ListEntries[iFirstSelection];
|
||||||
}
|
}
|
||||||
virtual bool HasScreen( int iChoice ) const
|
virtual bool HasScreen( int iChoice ) const
|
||||||
{
|
{
|
||||||
const GameCommand &mc = ListEntries[iChoice];
|
const GameCommand &gc = ListEntries[iChoice];
|
||||||
return !mc.m_sScreen.empty();
|
return !gc.m_sScreen.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FillNoteSkins( OptionRowDefinition &defOut, CString sParam )
|
void FillNoteSkins( OptionRowDefinition &defOut, CString sParam )
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public:
|
|||||||
virtual void ImportOption( const OptionRowDefinition &row, const vector<PlayerNumber> &vpns, vector<bool> vbSelectedOut[NUM_PLAYERS] ) const = 0;
|
virtual void ImportOption( const OptionRowDefinition &row, const vector<PlayerNumber> &vpns, vector<bool> vbSelectedOut[NUM_PLAYERS] ) const = 0;
|
||||||
/* Returns an OPT mask. */
|
/* Returns an OPT mask. */
|
||||||
virtual int ExportOption( const OptionRowDefinition &def, const vector<PlayerNumber> &vpns, const vector<bool> vbSelected[NUM_PLAYERS] ) const = 0;
|
virtual int ExportOption( const OptionRowDefinition &def, const vector<PlayerNumber> &vpns, const vector<bool> vbSelected[NUM_PLAYERS] ) const = 0;
|
||||||
virtual CString GetIconText( const OptionRowDefinition &def, int iFirstSelection ) const { return ""; }
|
virtual void GetIconTextAndGameCommand( const OptionRowDefinition &def, int iFirstSelection, CString &sIconTextOut, GameCommand &gcOut ) const;
|
||||||
virtual bool HasScreen( int iChoice ) const { return false; }
|
virtual bool HasScreen( int iChoice ) const { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -195,9 +195,9 @@ void ScreenOptions::Init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenOptions::SetOptionIcon( PlayerNumber pn, int iRow, CString sText )
|
void ScreenOptions::SetOptionIcon( PlayerNumber pn, int iRow, CString sText, GameCommand &gc )
|
||||||
{
|
{
|
||||||
m_pRows[iRow]->SetOptionIcon( pn, sText );
|
m_pRows[iRow]->SetOptionIcon( pn, sText, gc );
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenOptions::InitMenu( const vector<OptionRowDefinition> &vDefs, const vector<OptionRowHandler*> &vHands )
|
void ScreenOptions::InitMenu( const vector<OptionRowDefinition> &vDefs, const vector<OptionRowHandler*> &vHands )
|
||||||
@@ -342,11 +342,15 @@ CString ScreenOptions::GetExplanationText( int iRow ) const
|
|||||||
{
|
{
|
||||||
OptionRow &row = *m_pRows[iRow];
|
OptionRow &row = *m_pRows[iRow];
|
||||||
|
|
||||||
|
bool bAllowExplanation = row.GetRowDef().m_bAllowExplanation;
|
||||||
|
bool bShowExplanations = bAllowExplanation && SHOW_EXPLANATIONS.GetValue();
|
||||||
|
if( !bShowExplanations )
|
||||||
|
return "";
|
||||||
|
|
||||||
CString sLineName = row.GetRowDef().m_sName;
|
CString sLineName = row.GetRowDef().m_sName;
|
||||||
ASSERT( !sLineName.empty() );
|
ASSERT( !sLineName.empty() );
|
||||||
|
|
||||||
bool bAllowExplanation = row.GetRowDef().m_bAllowExplanation;
|
return OPTION_EXPLANATION(sLineName);
|
||||||
return (bAllowExplanation && SHOW_EXPLANATIONS.GetValue()) ? OPTION_EXPLANATION(sLineName) : "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BitmapText &ScreenOptions::GetTextItemForRow( PlayerNumber pn, int iRow, int iChoiceOnRow )
|
BitmapText &ScreenOptions::GetTextItemForRow( PlayerNumber pn, int iRow, int iChoiceOnRow )
|
||||||
|
|||||||
@@ -83,7 +83,8 @@ protected:
|
|||||||
bool AllAreOnLastRow() const;
|
bool AllAreOnLastRow() const;
|
||||||
|
|
||||||
protected: // derived classes need access to these
|
protected: // derived classes need access to these
|
||||||
void SetOptionIcon( PlayerNumber pn, int iRow, CString sText );
|
void SetOptionIcon( PlayerNumber pn, int iRow, CString sText, GameCommand &gc );
|
||||||
|
|
||||||
enum Navigation { NAV_THREE_KEY, NAV_THREE_KEY_MENU, NAV_FIVE_KEY, NAV_TOGGLE_THREE_KEY, NAV_TOGGLE_FIVE_KEY };
|
enum Navigation { NAV_THREE_KEY, NAV_THREE_KEY_MENU, NAV_FIVE_KEY, NAV_TOGGLE_THREE_KEY, NAV_TOGGLE_FIVE_KEY };
|
||||||
void SetNavigation( Navigation nav ) { m_OptionsNavigation = nav; }
|
void SetNavigation( Navigation nav ) { m_OptionsNavigation = nav; }
|
||||||
void SetInputMode( InputMode im ) { m_InputMode = im; }
|
void SetInputMode( InputMode im ) { m_InputMode = im; }
|
||||||
|
|||||||
Reference in New Issue
Block a user