update, fix, simplify ...
This commit is contained in:
@@ -136,6 +136,13 @@ void MusicWheel::BeginScreen()
|
|||||||
{
|
{
|
||||||
WheelBase::BeginScreen();
|
WheelBase::BeginScreen();
|
||||||
|
|
||||||
|
if( (GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage) || GAMESTATE->IsExtraStage2() )
|
||||||
|
{
|
||||||
|
m_WheelState = STATE_LOCKED;
|
||||||
|
SCREENMAN->PlayStartSound();
|
||||||
|
m_fLockedWheelVelocity = 0;
|
||||||
|
}
|
||||||
|
|
||||||
GAMESTATE->m_SortOrder.Set( GAMESTATE->m_PreferredSortOrder );
|
GAMESTATE->m_SortOrder.Set( GAMESTATE->m_PreferredSortOrder );
|
||||||
|
|
||||||
/* Never start in the mode menu; some elements may not initialize correctly. */
|
/* Never start in the mode menu; some elements may not initialize correctly. */
|
||||||
@@ -748,7 +755,6 @@ void MusicWheel::UpdateSwitch()
|
|||||||
SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 );
|
SCREENMAN->PostMessageToTopScreen( SM_SongChanged, 0 );
|
||||||
RebuildWheelItems();
|
RebuildWheelItems();
|
||||||
TweenOnScreenForSort();
|
TweenOnScreenForSort();
|
||||||
m_WheelState = STATE_FLYING_ON_AFTER_NEXT_SORT;
|
|
||||||
|
|
||||||
SCREENMAN->ZeroNextUpdate();
|
SCREENMAN->ZeroNextUpdate();
|
||||||
}
|
}
|
||||||
@@ -758,31 +764,12 @@ void MusicWheel::UpdateSwitch()
|
|||||||
m_WheelState = STATE_SELECTING; // now, wait for input
|
m_WheelState = STATE_SELECTING; // now, wait for input
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_TWEENING_ON_SCREEN:
|
|
||||||
m_fTimeLeftInState = 0;
|
|
||||||
if( (GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage) || GAMESTATE->IsExtraStage2() )
|
|
||||||
{
|
|
||||||
m_WheelState = STATE_LOCKED;
|
|
||||||
SCREENMAN->PlayStartSound();
|
|
||||||
m_fLockedWheelVelocity = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_WheelState = STATE_SELECTING;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case STATE_TWEENING_OFF_SCREEN:
|
|
||||||
m_WheelState = STATE_WAITING_OFF_SCREEN;
|
|
||||||
m_fTimeLeftInState = 0;
|
|
||||||
break;
|
|
||||||
case STATE_SELECTING:
|
case STATE_SELECTING:
|
||||||
m_fTimeLeftInState = 0;
|
m_fTimeLeftInState = 0;
|
||||||
break;
|
break;
|
||||||
case STATE_ROULETTE_SPINNING:
|
case STATE_ROULETTE_SPINNING:
|
||||||
case STATE_RANDOM_SPINNING:
|
case STATE_RANDOM_SPINNING:
|
||||||
break;
|
break;
|
||||||
case STATE_WAITING_OFF_SCREEN:
|
|
||||||
break;
|
|
||||||
case STATE_LOCKED:
|
case STATE_LOCKED:
|
||||||
break;
|
break;
|
||||||
case STATE_ROULETTE_SLOWING_DOWN:
|
case STATE_ROULETTE_SLOWING_DOWN:
|
||||||
@@ -864,7 +851,6 @@ bool MusicWheel::ChangeSort( SortOrder new_so ) // return true if change success
|
|||||||
GAMESTATE->m_PreferredSortOrder = new_so;
|
GAMESTATE->m_PreferredSortOrder = new_so;
|
||||||
GAMESTATE->m_SortOrder.Set( new_so );
|
GAMESTATE->m_SortOrder.Set( new_so );
|
||||||
|
|
||||||
m_WheelState = STATE_FLYING_OFF_BEFORE_NEXT_SORT;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+37
-61
@@ -73,31 +73,12 @@ void WheelBase::Load( RString sType )
|
|||||||
this->AddChild( m_sprHighlight );
|
this->AddChild( m_sprHighlight );
|
||||||
ActorUtil::LoadAllCommands( *m_sprHighlight, m_sName );
|
ActorUtil::LoadAllCommands( *m_sprHighlight, m_sName );
|
||||||
|
|
||||||
|
m_ScrollBar.SetName( "ScrollBar" );
|
||||||
m_ScrollBar.SetBarHeight( SCROLL_BAR_HEIGHT );
|
m_ScrollBar.SetBarHeight( SCROLL_BAR_HEIGHT );
|
||||||
this->AddChild( &m_ScrollBar );
|
this->AddChild( &m_ScrollBar );
|
||||||
ActorUtil::LoadAllCommands( m_ScrollBar, m_sName );
|
ActorUtil::LoadAllCommands( m_ScrollBar, m_sName );
|
||||||
|
|
||||||
{
|
SetPositions();
|
||||||
Lua *L = LUA->Get();
|
|
||||||
m_sprHighlight->PushContext(L);
|
|
||||||
lua_pushstring( L, "WheelIndex" );
|
|
||||||
lua_pushnumber( L, NUM_WHEEL_ITEMS/2.0f );
|
|
||||||
lua_settable( L, -3 );
|
|
||||||
lua_pop( L, 1 );
|
|
||||||
LUA->Release( L );
|
|
||||||
}
|
|
||||||
|
|
||||||
Lua *L = LUA->Get();
|
|
||||||
for( int i=0; i < (int) m_WheelBaseItems.size(); i++ )
|
|
||||||
{
|
|
||||||
m_WheelBaseItems[i]->PushContext(L);
|
|
||||||
lua_pushstring( L, "WheelIndex" );
|
|
||||||
lua_pushnumber( L, i );
|
|
||||||
lua_settable( L, -3 );
|
|
||||||
lua_pop( L, 1 );
|
|
||||||
}
|
|
||||||
LUA->Release( L );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WheelBase::BeginScreen()
|
void WheelBase::BeginScreen()
|
||||||
@@ -182,33 +163,32 @@ bool WheelBase::IsSettled() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WheelBase::SetPositions()
|
||||||
void WheelBase::Update( float fDeltaTime )
|
|
||||||
{
|
{
|
||||||
ActorFrame::Update( fDeltaTime );
|
|
||||||
|
|
||||||
for( int i=0; i<NUM_WHEEL_ITEMS; i++ )
|
for( int i=0; i<NUM_WHEEL_ITEMS; i++ )
|
||||||
{
|
{
|
||||||
WheelItemBase *pDisplay = m_WheelBaseItems[i];
|
WheelItemBase *pDisplay = m_WheelBaseItems[i];
|
||||||
const float fOffsetFromSelection = i - NUM_WHEEL_ITEMS/2 + m_fPositionOffsetFromSelection;
|
const float fOffsetFromSelection = i - NUM_WHEEL_ITEMS/2 + m_fPositionOffsetFromSelection;
|
||||||
if( fabsf(fOffsetFromSelection) > NUM_WHEEL_ITEMS_TO_DRAW/2 )
|
if( fabsf(fOffsetFromSelection) > NUM_WHEEL_ITEMS_TO_DRAW/2 )
|
||||||
{
|
|
||||||
pDisplay->SetHidden( true );
|
pDisplay->SetHidden( true );
|
||||||
continue;
|
else
|
||||||
}
|
|
||||||
pDisplay->SetHidden( false );
|
pDisplay->SetHidden( false );
|
||||||
|
|
||||||
switch( m_WheelState )
|
|
||||||
{
|
|
||||||
case STATE_SELECTING:
|
|
||||||
case STATE_LOCKED:
|
|
||||||
case STATE_ROULETTE_SPINNING:
|
|
||||||
case STATE_ROULETTE_SLOWING_DOWN:
|
|
||||||
case STATE_RANDOM_SPINNING:
|
|
||||||
SetItemPosition( *pDisplay, fOffsetFromSelection );
|
SetItemPosition( *pDisplay, fOffsetFromSelection );
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WheelBase::Update( float fDeltaTime )
|
||||||
|
{
|
||||||
|
ActorFrame::Update( fDeltaTime );
|
||||||
|
|
||||||
|
/* If tweens aren't controlling the position of the wheel, set positions. */
|
||||||
|
if( !GetTweenTimeLeft() )
|
||||||
|
SetPositions();
|
||||||
|
|
||||||
|
for( int i=0; i<NUM_WHEEL_ITEMS; i++ )
|
||||||
|
{
|
||||||
|
WheelItemBase *pDisplay = m_WheelBaseItems[i];
|
||||||
if( m_WheelState == STATE_LOCKED && i != NUM_WHEEL_ITEMS/2 )
|
if( m_WheelState == STATE_LOCKED && i != NUM_WHEEL_ITEMS/2 )
|
||||||
pDisplay->m_colorLocked = WHEEL_ITEM_LOCKED_COLOR.GetValue();
|
pDisplay->m_colorLocked = WHEEL_ITEM_LOCKED_COLOR.GetValue();
|
||||||
else
|
else
|
||||||
@@ -228,9 +208,7 @@ void WheelBase::Update( float fDeltaTime )
|
|||||||
// update wheel state
|
// update wheel state
|
||||||
m_fTimeLeftInState -= fDeltaTime;
|
m_fTimeLeftInState -= fDeltaTime;
|
||||||
if( m_fTimeLeftInState <= 0 ) // time to go to a new state
|
if( m_fTimeLeftInState <= 0 ) // time to go to a new state
|
||||||
{
|
|
||||||
UpdateSwitch();
|
UpdateSwitch();
|
||||||
}
|
|
||||||
|
|
||||||
if( m_WheelState == STATE_LOCKED )
|
if( m_WheelState == STATE_LOCKED )
|
||||||
{
|
{
|
||||||
@@ -313,28 +291,9 @@ void WheelBase::UpdateSwitch()
|
|||||||
{
|
{
|
||||||
switch( m_WheelState )
|
switch( m_WheelState )
|
||||||
{
|
{
|
||||||
case STATE_TWEENING_ON_SCREEN:
|
|
||||||
m_fTimeLeftInState = 0;
|
|
||||||
if( (GAMESTATE->IsExtraStage() && !PREFSMAN->m_bPickExtraStage) || GAMESTATE->IsExtraStage2() )
|
|
||||||
{
|
|
||||||
m_WheelState = STATE_LOCKED;
|
|
||||||
SCREENMAN->PlayStartSound();
|
|
||||||
m_fLockedWheelVelocity = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_WheelState = STATE_SELECTING;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case STATE_TWEENING_OFF_SCREEN:
|
|
||||||
m_WheelState = STATE_WAITING_OFF_SCREEN;
|
|
||||||
m_fTimeLeftInState = 0;
|
|
||||||
break;
|
|
||||||
case STATE_SELECTING:
|
case STATE_SELECTING:
|
||||||
m_fTimeLeftInState = 0;
|
m_fTimeLeftInState = 0;
|
||||||
break;
|
break;
|
||||||
case STATE_WAITING_OFF_SCREEN:
|
|
||||||
break;
|
|
||||||
case STATE_LOCKED:
|
case STATE_LOCKED:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -391,20 +350,26 @@ int WheelBase::IsMoving() const
|
|||||||
|
|
||||||
void WheelBase::TweenOnScreenForSort()
|
void WheelBase::TweenOnScreenForSort()
|
||||||
{
|
{
|
||||||
m_WheelState = STATE_TWEENING_ON_SCREEN;
|
m_fPositionOffsetFromSelection = 0;
|
||||||
|
|
||||||
|
/* Before we send SortOn, position items back to their destinations, so commands
|
||||||
|
* can use this as a reference point. */
|
||||||
|
SetPositions();
|
||||||
|
|
||||||
|
m_WheelState = STATE_FLYING_ON_AFTER_NEXT_SORT;
|
||||||
|
|
||||||
COMMAND( this, "SortOn" );
|
COMMAND( this, "SortOn" );
|
||||||
|
|
||||||
m_fTimeLeftInState = GetTweenTimeLeft() + 0.100f;
|
m_fTimeLeftInState = GetTweenTimeLeft();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WheelBase::TweenOffScreenForSort()
|
void WheelBase::TweenOffScreenForSort()
|
||||||
{
|
{
|
||||||
m_WheelState = STATE_TWEENING_OFF_SCREEN;
|
m_WheelState = STATE_FLYING_OFF_BEFORE_NEXT_SORT;
|
||||||
|
|
||||||
COMMAND( this, "SortOff" );
|
COMMAND( this, "SortOff" );
|
||||||
|
|
||||||
m_fTimeLeftInState = GetTweenTimeLeft() + 0.100f;
|
m_fTimeLeftInState = GetTweenTimeLeft();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WheelBase::ChangeMusicUnlessLocked( int n )
|
void WheelBase::ChangeMusicUnlessLocked( int n )
|
||||||
@@ -533,6 +498,17 @@ void WheelBase::RebuildWheelItems( int iDist )
|
|||||||
iLast = -iDist-1;
|
iLast = -iDist-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Lua *L = LUA->Get();
|
||||||
|
for( int i=0; i < (int) m_WheelBaseItems.size(); i++ )
|
||||||
|
{
|
||||||
|
m_WheelBaseItems[i]->PushContext(L);
|
||||||
|
lua_pushstring( L, "WheelIndex" );
|
||||||
|
lua_pushnumber( L, i );
|
||||||
|
lua_settable( L, -3 );
|
||||||
|
lua_pop( L, 1 );
|
||||||
|
}
|
||||||
|
LUA->Release( L );
|
||||||
|
|
||||||
for( int i=iFirst; i <= iLast; i++ )
|
for( int i=iFirst; i <= iLast; i++ )
|
||||||
{
|
{
|
||||||
int iIndex = iFirstVisibleIndex + i;
|
int iIndex = iFirstVisibleIndex + i;
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ protected:
|
|||||||
virtual WheelItemBase *MakeItem() = 0;
|
virtual WheelItemBase *MakeItem() = 0;
|
||||||
virtual void UpdateSwitch();
|
virtual void UpdateSwitch();
|
||||||
virtual bool MoveSpecific(int n);
|
virtual bool MoveSpecific(int n);
|
||||||
|
void SetPositions();
|
||||||
|
|
||||||
int FirstVisibleIndex();
|
int FirstVisibleIndex();
|
||||||
|
|
||||||
@@ -79,9 +80,6 @@ protected:
|
|||||||
STATE_SELECTING,
|
STATE_SELECTING,
|
||||||
STATE_FLYING_OFF_BEFORE_NEXT_SORT,
|
STATE_FLYING_OFF_BEFORE_NEXT_SORT,
|
||||||
STATE_FLYING_ON_AFTER_NEXT_SORT,
|
STATE_FLYING_ON_AFTER_NEXT_SORT,
|
||||||
STATE_TWEENING_ON_SCREEN,
|
|
||||||
STATE_TWEENING_OFF_SCREEN,
|
|
||||||
STATE_WAITING_OFF_SCREEN,
|
|
||||||
STATE_ROULETTE_SPINNING,
|
STATE_ROULETTE_SPINNING,
|
||||||
STATE_ROULETTE_SLOWING_DOWN,
|
STATE_ROULETTE_SLOWING_DOWN,
|
||||||
STATE_RANDOM_SPINNING,
|
STATE_RANDOM_SPINNING,
|
||||||
|
|||||||
Reference in New Issue
Block a user