fixed several bugs related to codes
This commit is contained in:
@@ -27,7 +27,7 @@ float ArrowGetYOffset( PlayerNumber pn, float fNoteBeat )
|
||||
float fYOffset = fBeatsUntilStep * ARROW_GAP;
|
||||
|
||||
/* With both boost and wave enabled, the effect is that the
|
||||
* notes "bufferr" at the bottom of the screen and shoot out
|
||||
* notes "buffer" at the bottom of the screen and shoot out
|
||||
* at high speed.
|
||||
*
|
||||
* With wave first, the boost appears halfway down the screen.
|
||||
@@ -35,10 +35,9 @@ float ArrowGetYOffset( PlayerNumber pn, float fNoteBeat )
|
||||
*
|
||||
* I'm not sure which is better. - glenn
|
||||
*/
|
||||
int EffectType = GAMESTATE->m_PlayerOptions[pn].m_EffectType;
|
||||
if ( EffectType & PlayerOptions::EFFECT_BOOST )
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bBoost )
|
||||
fYOffset *= 1.4f / ((fYOffset+SCREEN_HEIGHT/1.6f)/SCREEN_HEIGHT);
|
||||
if ( EffectType & PlayerOptions::EFFECT_WAVE )
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_WAVE] )
|
||||
fYOffset += 15.0f*sinf( fYOffset/38.0f );
|
||||
|
||||
return fYOffset;
|
||||
@@ -48,11 +47,11 @@ float ArrowGetXPos( PlayerNumber pn, int iColNum, float fYPos )
|
||||
{
|
||||
float fPixelOffsetFromCenter = GAMESTATE->GetCurrentStyleDef()->m_ColumnInfo[pn][iColNum].fXOffset;
|
||||
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_DRUNK )
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_DRUNK] )
|
||||
fPixelOffsetFromCenter += cosf( TIMER->GetTimeSinceStart() + iColNum*0.2f + fYPos*6/SCREEN_HEIGHT) * ARROW_SIZE*0.5f;
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_FLIP )
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_FLIP] )
|
||||
fPixelOffsetFromCenter = -fPixelOffsetFromCenter;
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_TORNADO )
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_TORNADO] )
|
||||
{
|
||||
const StyleDef* pStyleDef = GAMESTATE->GetCurrentStyleDef();
|
||||
float fMaxX = -100000, fMinX = +100000;
|
||||
@@ -76,7 +75,7 @@ float ArrowGetRotation( PlayerNumber pn, int iColNum, float fYOffset )
|
||||
{
|
||||
float fRotation = 0; //StyleDef.m_ColumnToRotation[iColNum];
|
||||
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_DIZZY)
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_DIZZY] )
|
||||
fRotation += fYOffset/SCREEN_HEIGHT*6;
|
||||
|
||||
return fRotation;
|
||||
|
||||
@@ -172,8 +172,8 @@ bool CodeDetector::DetectAndAdjustOptions( GameController controller )
|
||||
case CODE_SUPER_SHUFFLE: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_TurnType, PlayerOptions::TURN_SUPER_SHUFFLE, PlayerOptions::TURN_NONE ); break;
|
||||
case CODE_LITTLE: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bLittle, true, false ); break;
|
||||
case CODE_NEXT_SCROLL_SPEED:INCREMENT_SCROLL_SPEED( GAMESTATE->m_PlayerOptions[pn].m_fArrowScrollSpeed ); break;
|
||||
case CODE_BOOST: /* what goes here? */ break;
|
||||
case CODE_NEXT_EFFECT: GAMESTATE->m_PlayerOptions[pn].m_EffectType = PlayerOptions::EffectType( (GAMESTATE->m_PlayerOptions[pn].m_EffectType+1) %NUM_EFFECT_TYPES ); break;
|
||||
case CODE_BOOST: GAMESTATE->m_PlayerOptions[pn].m_bBoost ^= true; break;
|
||||
case CODE_NEXT_EFFECT: GAMESTATE->m_PlayerOptions[pn].NextEffect(); break;
|
||||
case CODE_NEXT_APPEARANCE: GAMESTATE->m_PlayerOptions[pn].m_AppearanceType = PlayerOptions::AppearanceType((GAMESTATE->m_PlayerOptions[pn].m_AppearanceType+1) %PlayerOptions::NUM_APPEARANCE_TYPES ); break;
|
||||
case CODE_NEXT_TURN: GAMESTATE->m_PlayerOptions[pn].m_TurnType = PlayerOptions::TurnType( (GAMESTATE->m_PlayerOptions[pn].m_TurnType+1) %PlayerOptions::NUM_TURN_TYPES ); break;
|
||||
case CODE_REVERSE: TOGGLE( GAMESTATE->m_PlayerOptions[pn].m_bReverseScroll, true, false ); break;
|
||||
|
||||
@@ -47,7 +47,7 @@ const OptionColumnEntry g_OptionColumnEntries[] =
|
||||
{"4X", 0},
|
||||
{"5X", 0},
|
||||
{"8X", 0},
|
||||
{"Boost", 1},
|
||||
{"Boost", 0},
|
||||
{"Wave", 1},
|
||||
{"Drunk", 1},
|
||||
{"Dizzy", 1},
|
||||
|
||||
@@ -142,12 +142,12 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi
|
||||
int iPixelsToDrawAfter = 384;
|
||||
|
||||
// If both options are on, we *do* need to multiply it twice.
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_MINI)
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_MINI] )
|
||||
{
|
||||
iPixelsToDrawBefore *= 2;
|
||||
iPixelsToDrawAfter *= 2;
|
||||
}
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_SPACE)
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_SPACE] )
|
||||
{
|
||||
iPixelsToDrawBefore *= 2;
|
||||
iPixelsToDrawAfter *= 2;
|
||||
@@ -172,7 +172,7 @@ void Player::Load( PlayerNumber pn, NoteData* pNoteData, LifeMeter* pLM, ScoreDi
|
||||
m_GrayArrowRow.SetY( GAMESTATE->m_PlayerOptions[pn].m_bReverseScroll ? SCREEN_HEIGHT - ARROWS_Y : ARROWS_Y );
|
||||
m_GhostArrowRow.SetY( GAMESTATE->m_PlayerOptions[pn].m_bReverseScroll ? SCREEN_HEIGHT - ARROWS_Y : ARROWS_Y );
|
||||
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_EffectType & PlayerOptions::EFFECT_MINI )
|
||||
if( GAMESTATE->m_PlayerOptions[pn].m_bEffects[PlayerOptions::EFFECT_MINI] )
|
||||
{
|
||||
m_NoteField.SetZoom( 0.5f );
|
||||
m_GrayArrowRow.SetZoom( 0.5f );
|
||||
@@ -279,7 +279,7 @@ void Player::DrawPrimitives()
|
||||
|
||||
D3DXMATRIX matOldView, matOldProj;
|
||||
|
||||
if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_EffectType & PlayerOptions::EFFECT_SPACE )
|
||||
if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_bEffects[PlayerOptions::EFFECT_SPACE] )
|
||||
{
|
||||
// save old view and projection
|
||||
DISPLAY->GetViewTransform( &matOldView );
|
||||
@@ -313,7 +313,7 @@ void Player::DrawPrimitives()
|
||||
m_NoteField.Draw();
|
||||
m_GhostArrowRow.Draw();
|
||||
|
||||
if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_EffectType & PlayerOptions::EFFECT_SPACE )
|
||||
if( GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_bEffects[PlayerOptions::EFFECT_SPACE] )
|
||||
{
|
||||
// restire old view and projection
|
||||
DISPLAY->SetViewTransform( &matOldView );
|
||||
|
||||
@@ -13,6 +13,42 @@
|
||||
#include "PlayerOptions.h"
|
||||
#include "RageUtil.h"
|
||||
|
||||
void PlayerOptions::NextEffect()
|
||||
{
|
||||
if( m_bEffects[NUM_EFFECT_TYPES-1] )
|
||||
{
|
||||
ZERO( m_bEffects );
|
||||
return;
|
||||
}
|
||||
|
||||
for( int i=0; i<NUM_EFFECT_TYPES-1; i++ )
|
||||
{
|
||||
if( m_bEffects[i] )
|
||||
{
|
||||
ZERO( m_bEffects );
|
||||
m_bEffects[i+1] = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ZERO( m_bEffects );
|
||||
m_bEffects[0] = true;
|
||||
}
|
||||
|
||||
void PlayerOptions::Init()
|
||||
{
|
||||
m_fArrowScrollSpeed = 1.0f;
|
||||
m_bBoost = false;
|
||||
ZERO( m_bEffects );
|
||||
m_AppearanceType = APPEARANCE_VISIBLE;
|
||||
m_TurnType = TURN_NONE;
|
||||
m_bLittle = false;
|
||||
m_bReverseScroll = false;
|
||||
m_ColorType = COLOR_VIVID;
|
||||
m_bHoldNotes = true;
|
||||
m_bDark = false;
|
||||
}
|
||||
|
||||
|
||||
CString PlayerOptions::GetString()
|
||||
{
|
||||
@@ -26,14 +62,15 @@ CString PlayerOptions::GetString()
|
||||
sReturn += s + "X, ";
|
||||
}
|
||||
|
||||
if( m_EffectType & EFFECT_BOOST ) sReturn += "Boost, ";
|
||||
if( m_EffectType & EFFECT_WAVE ) sReturn += "Wave, ";
|
||||
if( m_EffectType & EFFECT_DRUNK ) sReturn += "Drunk, ";
|
||||
if( m_EffectType & EFFECT_DIZZY ) sReturn += "Dizzy, ";
|
||||
if( m_EffectType & EFFECT_SPACE ) sReturn += "Space, ";
|
||||
if( m_EffectType & EFFECT_MINI ) sReturn += "Mini, ";
|
||||
if( m_EffectType & EFFECT_FLIP ) sReturn += "Flip, ";
|
||||
if( m_EffectType & EFFECT_TORNADO ) sReturn += "Tornado, ";
|
||||
if( m_bBoost ) sReturn += "Boost, ";
|
||||
|
||||
if( m_bEffects[EFFECT_WAVE] ) sReturn += "Wave, ";
|
||||
if( m_bEffects[EFFECT_DRUNK] ) sReturn += "Drunk, ";
|
||||
if( m_bEffects[EFFECT_DIZZY] ) sReturn += "Dizzy, ";
|
||||
if( m_bEffects[EFFECT_SPACE] ) sReturn += "Space, ";
|
||||
if( m_bEffects[EFFECT_MINI] ) sReturn += "Mini, ";
|
||||
if( m_bEffects[EFFECT_FLIP] ) sReturn += "Flip, ";
|
||||
if( m_bEffects[EFFECT_TORNADO] ) sReturn += "Tornado, ";
|
||||
|
||||
switch( m_AppearanceType )
|
||||
{
|
||||
@@ -103,14 +140,14 @@ void PlayerOptions::FromString( CString sOptions )
|
||||
else if( sBit == "4.0x" ) m_fArrowScrollSpeed = 4.0f;
|
||||
else if( sBit == "5.0x" ) m_fArrowScrollSpeed = 5.0f;
|
||||
else if( sBit == "8.0x" ) m_fArrowScrollSpeed = 8.0f;
|
||||
else if( sBit == "boost" ) m_EffectType |= EFFECT_BOOST;
|
||||
else if( sBit == "wave" ) m_EffectType |= EFFECT_WAVE;
|
||||
else if( sBit == "drunk" ) m_EffectType |= EFFECT_DRUNK;
|
||||
else if( sBit == "dizzy" ) m_EffectType |= EFFECT_DIZZY;
|
||||
else if( sBit == "space" ) m_EffectType |= EFFECT_SPACE;
|
||||
else if( sBit == "mini" ) m_EffectType |= EFFECT_MINI;
|
||||
else if( sBit == "flip" ) m_EffectType |= EFFECT_FLIP;
|
||||
else if( sBit == "tornado" ) m_EffectType |= EFFECT_TORNADO;
|
||||
else if( sBit == "boost" ) m_bBoost = true;
|
||||
else if( sBit == "wave" ) m_bEffects[EFFECT_WAVE] = true;
|
||||
else if( sBit == "drunk" ) m_bEffects[EFFECT_DRUNK] = true;
|
||||
else if( sBit == "dizzy" ) m_bEffects[EFFECT_DIZZY] = true;
|
||||
else if( sBit == "space" ) m_bEffects[EFFECT_SPACE] = true;
|
||||
else if( sBit == "mini" ) m_bEffects[EFFECT_MINI] = true;
|
||||
else if( sBit == "flip" ) m_bEffects[EFFECT_FLIP] = true;
|
||||
else if( sBit == "tornado" ) m_bEffects[EFFECT_TORNADO] = true;
|
||||
else if( sBit == "hidden" ) m_AppearanceType = APPEARANCE_HIDDEN;
|
||||
else if( sBit == "sudden" ) m_AppearanceType = APPEARANCE_SUDDEN;
|
||||
else if( sBit == "stealth" ) m_AppearanceType = APPEARANCE_STEALTH;
|
||||
|
||||
@@ -15,18 +15,19 @@ const int NUM_EFFECT_TYPES = 9;
|
||||
struct PlayerOptions
|
||||
{
|
||||
float m_fArrowScrollSpeed;
|
||||
bool m_bBoost;
|
||||
enum EffectType {
|
||||
EFFECT_NONE =0,
|
||||
EFFECT_BOOST =1<<0,
|
||||
EFFECT_WAVE =1<<1,
|
||||
EFFECT_DRUNK =1<<2,
|
||||
EFFECT_DIZZY =1<<3,
|
||||
EFFECT_SPACE =1<<4,
|
||||
EFFECT_MINI =1<<5,
|
||||
EFFECT_FLIP =1<<6,
|
||||
EFFECT_TORNADO =1<<7
|
||||
EFFECT_WAVE,
|
||||
EFFECT_DRUNK,
|
||||
EFFECT_DIZZY,
|
||||
EFFECT_SPACE,
|
||||
EFFECT_MINI,
|
||||
EFFECT_FLIP,
|
||||
EFFECT_TORNADO,
|
||||
NUM_EFFECT_TYPES
|
||||
};
|
||||
int m_EffectType;
|
||||
bool m_bEffects[NUM_EFFECT_TYPES];
|
||||
void NextEffect();
|
||||
enum AppearanceType { APPEARANCE_VISIBLE=0, APPEARANCE_HIDDEN, APPEARANCE_SUDDEN, APPEARANCE_STEALTH, APPEARANCE_BLINK, NUM_APPEARANCE_TYPES };
|
||||
AppearanceType m_AppearanceType;
|
||||
enum TurnType { TURN_NONE=0, TURN_MIRROR, TURN_LEFT, TURN_RIGHT, TURN_SHUFFLE, TURN_SUPER_SHUFFLE, NUM_TURN_TYPES };
|
||||
@@ -39,18 +40,7 @@ struct PlayerOptions
|
||||
bool m_bDark;
|
||||
|
||||
PlayerOptions() { Init(); };
|
||||
void Init()
|
||||
{
|
||||
m_fArrowScrollSpeed = 1.0f;
|
||||
m_EffectType = EFFECT_NONE;
|
||||
m_AppearanceType = APPEARANCE_VISIBLE;
|
||||
m_TurnType = TURN_NONE;
|
||||
m_bLittle = false;
|
||||
m_bReverseScroll = false;
|
||||
m_ColorType = COLOR_VIVID;
|
||||
m_bHoldNotes = true;
|
||||
m_bDark = false;
|
||||
};
|
||||
void Init();
|
||||
CString GetString();
|
||||
void FromString( CString sOptions );
|
||||
};
|
||||
|
||||
@@ -80,19 +80,12 @@ void ScreenPlayerOptions::ImportOptions()
|
||||
else if( po.m_fArrowScrollSpeed == 8.0f ) m_iSelectedOption[p][PO_SPEED] = 8;
|
||||
else m_iSelectedOption[p][PO_SPEED] = 2;
|
||||
|
||||
m_iSelectedOption[p][PO_BOOST] = po.m_EffectType & PlayerOptions::EFFECT_BOOST;
|
||||
m_iSelectedOption[p][PO_BOOST] = po.m_bBoost ? 1 : 0;
|
||||
|
||||
switch(po.m_EffectType & ~PlayerOptions::EFFECT_BOOST)
|
||||
for( int i=0; i<PlayerOptions::NUM_EFFECT_TYPES; i++ )
|
||||
{
|
||||
case PlayerOptions::EFFECT_NONE: m_iSelectedOption[p][PO_EFFECT]=0; break;
|
||||
case PlayerOptions::EFFECT_WAVE: m_iSelectedOption[p][PO_EFFECT]=1; break;
|
||||
case PlayerOptions::EFFECT_DRUNK: m_iSelectedOption[p][PO_EFFECT]=2; break;
|
||||
case PlayerOptions::EFFECT_DIZZY: m_iSelectedOption[p][PO_EFFECT]=3; break;
|
||||
case PlayerOptions::EFFECT_SPACE: m_iSelectedOption[p][PO_EFFECT]=4; break;
|
||||
case PlayerOptions::EFFECT_MINI: m_iSelectedOption[p][PO_EFFECT]=5; break;
|
||||
case PlayerOptions::EFFECT_FLIP: m_iSelectedOption[p][PO_EFFECT]=6; break;
|
||||
case PlayerOptions::EFFECT_TORNADO: m_iSelectedOption[p][PO_EFFECT]=7; break;
|
||||
default: ; break;
|
||||
if( po.m_bEffects[i] )
|
||||
m_iSelectedOption[p][PO_EFFECT] = i-1;
|
||||
}
|
||||
|
||||
m_iSelectedOption[p][PO_APPEAR] = po.m_AppearanceType;
|
||||
@@ -124,21 +117,11 @@ void ScreenPlayerOptions::ExportOptions()
|
||||
case 8: po.m_fArrowScrollSpeed = 8.0f; break;
|
||||
}
|
||||
|
||||
po.m_EffectType = (m_iSelectedOption[p][PO_BOOST] == 1)?
|
||||
PlayerOptions::EFFECT_BOOST:
|
||||
PlayerOptions::EFFECT_NONE;
|
||||
po.m_bBoost = (m_iSelectedOption[p][PO_BOOST] == 1);
|
||||
|
||||
switch(m_iSelectedOption[p][PO_EFFECT])
|
||||
{
|
||||
//case 0: po.m_EffectType |= PlayerOptions::EFFECT_NONE; break;
|
||||
case 1: po.m_EffectType |= PlayerOptions::EFFECT_WAVE; break;
|
||||
case 2: po.m_EffectType |= PlayerOptions::EFFECT_DRUNK; break;
|
||||
case 3: po.m_EffectType |= PlayerOptions::EFFECT_DIZZY; break;
|
||||
case 4: po.m_EffectType |= PlayerOptions::EFFECT_SPACE; break;
|
||||
case 5: po.m_EffectType |= PlayerOptions::EFFECT_MINI; break;
|
||||
case 6: po.m_EffectType |= PlayerOptions::EFFECT_FLIP; break;
|
||||
case 7: po.m_EffectType |= PlayerOptions::EFFECT_TORNADO; break;
|
||||
}
|
||||
ZERO( po.m_bEffects );
|
||||
if( m_iSelectedOption[p][PO_EFFECT] > 0 )
|
||||
po.m_bEffects[ m_iSelectedOption[p][PO_EFFECT]-1 ] = true;
|
||||
|
||||
po.m_AppearanceType = (PlayerOptions::AppearanceType)m_iSelectedOption[p][PO_APPEAR];
|
||||
po.m_TurnType = (PlayerOptions::TurnType)m_iSelectedOption[p][PO_TURN];
|
||||
|
||||
@@ -269,8 +269,7 @@ void ScreenTitleMenu::HandleScreenMessage( const ScreenMessage SM )
|
||||
*
|
||||
* It's simple, but it's a hack. FIXME -glenn */
|
||||
|
||||
GAMESTATE->m_PlayerOptions[p].m_EffectType =
|
||||
1 << (rand()%NUM_EFFECT_TYPES) ;
|
||||
GAMESTATE->m_PlayerOptions[p].m_bEffects[ rand()%NUM_EFFECT_TYPES ] = true;
|
||||
if( RandomFloat(0,1)>0.9f )
|
||||
GAMESTATE->m_PlayerOptions[p].m_AppearanceType = PlayerOptions::APPEARANCE_HIDDEN;
|
||||
if( RandomFloat(0,1)>0.9f )
|
||||
|
||||
@@ -414,7 +414,6 @@ void SongManager::GetSongsInGroup( const CString sGroupName, CArray<Song*, Song*
|
||||
if( sGroupName == m_pSongs[i]->m_sGroupName )
|
||||
AddTo.Add( pSong );
|
||||
}
|
||||
// SortSongPointerArrayByGroup( AddTo );
|
||||
}
|
||||
|
||||
CString SongManager::ShortenGroupName( const CString &sOrigGroupName )
|
||||
@@ -580,12 +579,12 @@ void SongManager::GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, cons
|
||||
int iSongHash = GetHashForString( pSongOut->m_sSongDir );
|
||||
switch( ((UINT)iSongHash) % 6 )
|
||||
{
|
||||
case 0: po_out.m_EffectType = PlayerOptions::EFFECT_DIZZY; break;
|
||||
case 1: po_out.m_bDark = true; break;
|
||||
case 2: po_out.m_EffectType = PlayerOptions::EFFECT_DRUNK; break;
|
||||
case 3: po_out.m_EffectType = PlayerOptions::EFFECT_MINI; break;
|
||||
case 4: po_out.m_EffectType = PlayerOptions::EFFECT_SPACE; break;
|
||||
case 5: po_out.m_EffectType = PlayerOptions::EFFECT_WAVE; break;
|
||||
case 0: po_out.m_bEffects[PlayerOptions::EFFECT_DIZZY] = true; break;
|
||||
case 1: po_out.m_bDark = true; break;
|
||||
case 2: po_out.m_bEffects[PlayerOptions::EFFECT_DRUNK] = true; break;
|
||||
case 3: po_out.m_bEffects[PlayerOptions::EFFECT_MINI] = true; break;
|
||||
case 4: po_out.m_bEffects[PlayerOptions::EFFECT_SPACE] = true; break;
|
||||
case 5: po_out.m_bEffects[PlayerOptions::EFFECT_WAVE] = true; break;
|
||||
default: ASSERT(0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user