fixed several bugs related to codes

This commit is contained in:
Chris Danford
2002-09-30 02:19:02 +00:00
parent 3bf1c81a48
commit ff93d0d0e3
9 changed files with 95 additions and 88 deletions
+7 -8
View File
@@ -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;
+2 -2
View File
@@ -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;
+1 -1
View File
@@ -47,7 +47,7 @@ const OptionColumnEntry g_OptionColumnEntries[] =
{"4X", 0},
{"5X", 0},
{"8X", 0},
{"Boost", 1},
{"Boost", 0},
{"Wave", 1},
{"Drunk", 1},
{"Dizzy", 1},
+5 -5
View File
@@ -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 );
+53 -16
View File
@@ -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;
+12 -22
View File
@@ -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 );
};
+8 -25
View File
@@ -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];
+1 -2
View File
@@ -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 )
+6 -7
View File
@@ -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);
}
}