diff --git a/stepmania/Themes/default/BGAnimations/ScreenCredits overlay/credits.lua b/stepmania/Themes/default/BGAnimations/ScreenCredits overlay/credits.lua index 8ee9a5fc5c..b762acbb49 100644 --- a/stepmania/Themes/default/BGAnimations/ScreenCredits overlay/credits.lua +++ b/stepmania/Themes/default/BGAnimations/ScreenCredits overlay/credits.lua @@ -72,7 +72,7 @@ local programming = { "Josh “Axlecrusher” Allen", "Jason “Wolfman2000” Felds", "Eric “Subwire” Gustafson", - + "Mike “Archer” Hawkins", } local thanks = { diff --git a/stepmania/Themes/default/Languages/de.ini b/stepmania/Themes/default/Languages/de.ini index 00bb475f50..854ac3039a 100644 --- a/stepmania/Themes/default/Languages/de.ini +++ b/stepmania/Themes/default/Languages/de.ini @@ -440,6 +440,7 @@ AutoPlay=Diese Option ist für diejenigen gedacht, die nicht selber Spielen. We AutogenGroupCourses=Zeige Nonstop- und Endloskurse, die von Autogen erzeugt wurden. AutogenSteps=Automatisch Schritte aus anderen Spielvarianten generieren. BGBrightness=Regelt die Helligkeit des Hintergrundes. Wenn Sie die Pfeile nur schlecht sehen können, verringern Sie diesen Wert. +Background=Optionen verändern, die die Hintergründe steuern, die während des Spiels zu sehen sind. Background Options=Optionen verändern, die die Hintergründe steuern, die während des Spiels zu sehen sind. BarDrain=Energieabzug BatLives=Leben @@ -637,6 +638,7 @@ Collapse To One=Zerfall in Einem Compress 2x=Komprimieren 2X Compress 3->2=Komprimieren 3->2 Compress 4->3=Komprimieren 4->3 +Confusion=Durcheinander Connect=Verbinde... Copy Left To Right=Kopieren Links nach Rechts Copy Right To Left=Kopieren Rechts nach Links @@ -723,6 +725,7 @@ Press Start=Start drücken Quick=Schnell R.Vanish=Zufälliges Verschwinden Random=Zufällig +RandomBG=Gelegentliche Hintergründe Random Movies=Zufällige Filme Ranking=Platzierung Ranking Songs=Liedplatzierung @@ -750,6 +753,7 @@ Space=Weltraum Split=Geteilt Standard=Standard Start=Start +StaticBG=Statischer Hintergrund Stealth=Unsichtbar StepMania Style=StepMania Stil Stomp=Stampfen @@ -807,6 +811,7 @@ AutoPlay=AutoSpiel AutogenGroupCourses=Autogen\nGruppenkurse AutogenSteps=Autogen\nSchritte BGBrightness=Helligkeit +Background=Hintergrund Background Options=Hintergrund-Optionen BarDrain=Takt\nAblauf Base Difficulty=Standard-Schwierigkeitsgrad diff --git a/stepmania/Themes/default/Languages/en.ini b/stepmania/Themes/default/Languages/en.ini index 2bec2393b0..0751b33883 100644 --- a/stepmania/Themes/default/Languages/en.ini +++ b/stepmania/Themes/default/Languages/en.ini @@ -284,6 +284,7 @@ AutoPlay=This option is useful for those who would like to play without using a AutogenGroupCourses=Show group Nonstop and Endless courses that were created by Autogen. AutogenSteps=Automatically generate steps from other game types. BGBrightness=Controls how bright the background will appear. Turn this setting down if you have a hard time seeing the notes. +Background=Change options that control the backgrounds that play during gameplay. Background Options=Change options that control the backgrounds that play during gameplay. BarDrain=BarDrain BatLives=BatLives @@ -509,6 +510,7 @@ Collapse To One=Collapse To One Compress 2x=Compress 2x Compress 3->2=Compress 3->2 Compress 4->3=Compress 4->3 +Confusion=Confusion Connect=Connect... Copy Left To Right=Copy Left To Right Copy Right To Left=Copy Right To Left @@ -602,6 +604,7 @@ Press Start=Press Start Quick=Quick R.Vanish=R.Vanish Random=Random +RandomBG=Random Backgrounds Random Movies=Random Movies Ranking=Ranking Ranking Songs=Ranking Songs @@ -629,6 +632,7 @@ Space=Space Split=Split Standard=Standard Start=Start +StaticBG=Static Background Stealth=Stealth StepMania Style=StepMania Style Stomp=Stomp @@ -688,6 +692,7 @@ AutoPlay=AutoPlay AutogenGroupCourses=Autogen Group Courses AutogenSteps=Autogen Steps BGBrightness=Brightness +Background=Background Background Options=Background Options BarDrain=Bar Drain BatLives=Bat Lives diff --git a/stepmania/Themes/default/Languages/es.ini b/stepmania/Themes/default/Languages/es.ini index 0d9ceef528..42319faf0e 100644 --- a/stepmania/Themes/default/Languages/es.ini +++ b/stepmania/Themes/default/Languages/es.ini @@ -439,6 +439,7 @@ AutoPlay=Esta opción es útil para aquellos a los que les gustaría jugar sin u AutogenGroupCourses=Muestra los manuales del grupo sin parar y sin fin que fueron creados por autogen. AutogenSteps=Genera automáticamente pasos desde otro tipo de juegos. BGBrightness=Controla el brillo del fondo de la pantalla. deshaz estos ajustes si te cuesta leer las notas. +Background=Cambia las opciones que controlan los fondos que aparecen durante el juego. Background Options=Cambia las opciones que controlan los fondos que aparecen durante el juego. BarDrain=Controlador de vida BatLives=Barra de energia @@ -605,6 +606,7 @@ Collapse To One=Caída a Uno Compress 2x=Comprimir 2x Compress 3->2=Comprimir 3 a 2 Compress 4->3=Comprimir 4 a 3 +Confusion=Confusión Connect=Conectar... Copy Left To Right=Copiar de Izquierda a Derecha Copy Right To Left=Copiar de Derecha a Izquierda @@ -691,6 +693,7 @@ Press Start=Presione start Quick=Rápido R.Vanish=R. Desvanecerse Random=Al azar +RandomBG=Fondos Al azar Random Movies=Vídeos al Azar Ranking=Ranking Ranking Songs=Ranking de Canciones @@ -718,6 +721,7 @@ Space=Espacio Split=Dividir Standard=Estándar Start=Comienzo +StaticBG=Fondo Estático Stealth=Sigilosamente StepMania Style=Estilo StepMania Stomp=Pisotear @@ -766,6 +770,7 @@ AutoPlay=Auto reproducción AutogenGroupCourses=Autogen\nGrupo de Courses AutogenSteps=Autogen\nPasos BGBrightness=Brillo +Background=Opciones de Fondo Background Options=Opciones de Fondo BarDrain=Controladorn\ de vida Base Difficulty=Dificultad base diff --git a/stepmania/Themes/default/Languages/fr.ini b/stepmania/Themes/default/Languages/fr.ini index f1604c547b..16fa76c120 100644 --- a/stepmania/Themes/default/Languages/fr.ini +++ b/stepmania/Themes/default/Languages/fr.ini @@ -417,6 +417,7 @@ AutoPlay=Cette option est utile pour ceux qui veulent jouer sans utiliser de pad AutogenGroupCourses=Afficher les courses des groupes Nonstop et Endless créées par le générateur automatique. AutogenSteps=Génération automatique de pas à partir de jeux d'un autre type. BGBrightness=Contrôle la luminosité de l'arrière plan. Diminuez ce paramètre si vous éprouvez des difficultés à lire les notes. +Background=Changer les options qui contrôlent les arrière-plans qui défilent pendant le jeu. Background Options=Changer les options qui contrôlent les arrière-plans qui défilent pendant le jeu. BarDrain=Diminution de la barre de vie BatLives=BatLives @@ -614,6 +615,7 @@ Collapse To One=Réduire à un seul Compress 2x=Compresser 2x Compress 3->2=Compresser 3->2 Compress 4->3=Compresser 4->3 +Confusion=Confusion Connect=Connexion... Copy Left To Right=Copier de Gauche à Droite Copy Right To Left=Copier de Droite à Gauche @@ -700,6 +702,7 @@ Press Start=Appuyez sur Démarrer Quick=Vite R.Vanish=Disparition Aléatoire Random=Aléatoire +RandomBG=Milieux Aléatoires Random Movies=Films aléatoires Ranking=Classement Ranking Songs=Classement chansons @@ -727,6 +730,7 @@ Space=Espace Split=Séparer Standard=Standard Start=Démarrer +StaticBG=Fond Statique Stealth=Furtif StepMania Style=Style StepMania Stomp=Poids lourd @@ -784,6 +788,7 @@ AutoPlay=AutoPlay AutogenGroupCourses=Autogénération d'un\nGroupe de courses AutogenSteps=Autogénération\ndes pas BGBrightness=Luminosité +Background=Options d'Arrière-plans Background Options=Options d'Arrière-plans BarDrain=Epuisement de\nla barre de vie Base Difficulty=Difficulté de base diff --git a/stepmania/Themes/default/Languages/it.ini b/stepmania/Themes/default/Languages/it.ini index 7568fd166c..6cd8d6ed88 100644 --- a/stepmania/Themes/default/Languages/it.ini +++ b/stepmania/Themes/default/Languages/it.ini @@ -412,6 +412,7 @@ AutoPlay=Questa opzione è utile per chi vuole giocare senza usare la pedana, ma AutogenGroupCourses=Mostra i percorsi di gruppo Nonstop e Endless creati da Autogen. AutogenSteps=Genera automaticamente passi ricavati da altri giochi. BGBrightness=Controlla la luminosità dello sfondo che comparirà. Se avete difficoltà a leggere le note disabilitate questa impostazione. +Background=Cambia le opzioni che controllano gli sfondi impiegati durante il gioco. Background Options=Cambia le opzioni che controllano gli sfondi impiegati durante il gioco. BarDrain=BarDrain BatLives=BatLives @@ -609,6 +610,7 @@ Collapse To One=Riduci a uno Compress 2x=Compressione 2x Compress 3->2=Compressione 3->2 Compress 4->3=Compressione 4->3 +Confusion=Confusion Connect=Connetti... Copy Left To Right=Copia da sinistra a destra Copy Right To Left=Copia da destra a sinistra @@ -695,6 +697,7 @@ Press Start=Premi Start Quick=Veloce R.Vanish=R. Svanisci Random=Random +RandomBG=Ambiti di provenienza Casuali Random Movies=Filmati a caso Ranking=Graduatoria Ranking Songs=Canzoni in graduatoria @@ -722,6 +725,7 @@ Space=Spazio Split=Dividi Standard=Normale Start=Inizia +StaticBG=Priorità bassa Statica Stealth=Invisibile StepMania Style=Stile StepMania Stomp=Sincopato @@ -779,6 +783,7 @@ AutoPlay=Gioco automatico AutogenGroupCourses=Autogenerazione\nGruppi di corse AutogenSteps=Autogenerazione\nPassi BGBrightness=Luminosità +Background=Background Background Options=Opzioni sfondo BarDrain=Barra\nDiscesa Base Difficulty=Diffcoltà di Base diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index 1b63042d70..f58012ba5c 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -2532,10 +2532,13 @@ HitMineCommand= SetNoBpmCommand=diffusetopedge,color("#777777");diffusebottomedge,color("#666666") SetNormalCommand=diffusetopedge,color("#fbfb57");diffusebottomedge,color("#fb9c57") SetChangeCommand=diffusetopedge,color("#fb9c57");diffusebottomedge,color("#fb5757") +SetRandomCommand=diffusetopedge,color("#fb9c57");diffusebottomedge,color("#fb5757") SetExtraCommand=diffusetopedge,color("#fb5757");diffusebottomedge,color("#9c4242") Cycle=true NoBpmText="000" +RandomCycleSpeed=default -- Options: vslow, slow, default, fast, vfast, hyper Separator="-" +ShowQMarksInRandomCycle=true [CodeDetector] Easier1="Up,Up" @@ -3526,7 +3529,7 @@ Game=Change the current game type with this option. TimerSeconds=30 ShowStyleIcon=false PlayMusic=false -LineNames="1,2,3,4,5,6,7,8,9" +LineNames="1,2,3,4,5,6,7,8,9,10" Line1="list,LifeType" Line2="list,BarDrain" Line3="list,BatLives" @@ -3535,7 +3538,8 @@ Line5="list,Assist" Line6="list,Rate" Line7="list,SoundEffect" Line8="list,AutoAdjust" -Line9="list,SaveScores" +Line9="list,Background" +Line10="list,SaveScores" StopMusicOnBack=false [ScreenCredits2] @@ -3658,16 +3662,17 @@ Accel,3="mod,brake;name,Brake" Accel,4="mod,wave;name,Wave" Accel,5="mod,expand;name,Expand" Accel,6="mod,boomerang;name,Boomerang" -Effect="8" -EffectDefault="mod,no drunk,no dizzy,no mini,no flip,no tornado,no tipsy" +Effect="9" +EffectDefault="mod,no drunk,no dizzy,no confusion,no mini,no flip,no tornado,no tipsy" Effect,1="name,Off" Effect,2="mod,drunk;name,Drunk" Effect,3="mod,dizzy;name,Dizzy" -Effect,4="mod,mini;name,Mini" -Effect,5="mod,-100% mini;name,Big" -Effect,6="mod,flip;name,Flip" -Effect,7="mod,tornado;name,Tornado" -Effect,8="mod,tipsy;name,Tipsy" +Effect,4="mod,confusion;name,Confusion" +Effect,5="mod,mini;name,Mini" +Effect,6="mod,-100% mini;name,Big" +Effect,7="mod,flip;name,Flip" +Effect,8="mod,tornado;name,Tornado" +Effect,9="mod,tipsy;name,Tipsy" Appearance="6" AppearanceDefault="mod,no hidden,no sudden,no stealth,no blink,no randomvanish" Appearance,1="name,Visible" @@ -3793,6 +3798,11 @@ SoundEffectDefault="" SoundEffect,1="mod,no effect;name,Off" SoundEffect,2="mod,EffectSpeed;name,EffectSpeed" SoundEffect,3="mod,EffectPitch;name,EffectPitch" +Background="3;together" +BackgroundDefault="" +Background,1="mod,no effect;name,Default" +Background,2="mod,staticbg;name,StaticBG" +Background,3="mod,randombg;name,RandomBG" SaveScores="2;together" SaveScoresDefault="" SaveScores,1="mod,no savescore;name,Off" diff --git a/stepmania/src/ArrowEffects.cpp b/stepmania/src/ArrowEffects.cpp index b653315641..96e5578dc1 100644 --- a/stepmania/src/ArrowEffects.cpp +++ b/stepmania/src/ArrowEffects.cpp @@ -406,15 +406,51 @@ float ArrowEffects::GetXOffset( const PlayerState* pPlayerState, float fMidiNote float ArrowEffects::GetRotation( const PlayerState* pPlayerState, float fNoteBeat ) { - if( pPlayerState->m_PlayerOptions.GetCurrent().m_fEffects[PlayerOptions::EFFECT_DIZZY] != 0 ) + const float* fEffects = pPlayerState->m_PlayerOptions.GetCurrent().m_fEffects; + // Dizzy + if( fEffects[PlayerOptions::EFFECT_DIZZY] != 0 && fEffects[PlayerOptions::EFFECT_CONFUSION] == 0 ) { const float fSongBeat = GAMESTATE->m_fSongBeatVisible; float fDizzyRotation = fNoteBeat - fSongBeat; - fDizzyRotation *= pPlayerState->m_PlayerOptions.GetCurrent().m_fEffects[PlayerOptions::EFFECT_DIZZY]; + fDizzyRotation *= fEffects[PlayerOptions::EFFECT_DIZZY]; fDizzyRotation = fmodf( fDizzyRotation, 2*PI ); fDizzyRotation *= 180/PI; return fDizzyRotation; } + // Confusion + else if( fEffects[PlayerOptions::EFFECT_DIZZY] == 0 && fEffects[PlayerOptions::EFFECT_CONFUSION] != 0 ) + { + float fConfRotation = ReceptorGetRotation( pPlayerState ); + fConfRotation *= fEffects[PlayerOptions::EFFECT_DIZZY]; + return fConfRotation; + } + // Dizzy + Confusion + if( fEffects[PlayerOptions::EFFECT_DIZZY] != 0 && fEffects[PlayerOptions::EFFECT_CONFUSION] != 0 ) + { + float fRotation = ReceptorGetRotation( pPlayerState ); + float fDizzy = fEffects[PlayerOptions::EFFECT_DIZZY]; + float fConf = fEffects[PlayerOptions::EFFECT_CONFUSION]; + fRotation *= (fDizzy + fConf ); + return fRotation; + } + else + return 0; +} + +float ArrowEffects::ReceptorGetRotation( const PlayerState* pPlayerState ) +{ + const float* fEffects = pPlayerState->m_PlayerOptions.GetCurrent().m_fEffects; + + // Confusion + if( fEffects[PlayerOptions::EFFECT_DIZZY] == 0 && fEffects[PlayerOptions::EFFECT_CONFUSION] != 0 ) + { + const float fSongBeat = GAMESTATE->m_fSongBeatVisible; + float fConfRotation = fNoteBeat - fSongBeat; + fConfRotation *= fEffects[PlayerOptions::EFFECT_CONFUSION]; + fConfRotation = fmodf( fDizzyRotation, 2*PI ); + fConfRotation *= -180/PI; + return fConfRotation; + } else return 0; } diff --git a/stepmania/src/ArrowEffects.h b/stepmania/src/ArrowEffects.h index 5a87011a43..f61844adc0 100644 --- a/stepmania/src/ArrowEffects.h +++ b/stepmania/src/ArrowEffects.h @@ -33,6 +33,7 @@ public: // the arrow and possibly the Arrow effect and the fYOffset (in the case of // EFFECT_DIZZY). static float GetRotation( const PlayerState* pPlayerState, float fNoteBeat ); + static float ReceptorGetRotation( const PlayerState* pPlayerState ); // fXPos is a horizontal position in pixels relative to the center of the field. diff --git a/stepmania/src/BPMDisplay.cpp b/stepmania/src/BPMDisplay.cpp index 8d6a2c8a9b..5fd2830af8 100644 --- a/stepmania/src/BPMDisplay.cpp +++ b/stepmania/src/BPMDisplay.cpp @@ -27,9 +27,12 @@ void BPMDisplay::Load() SET_NO_BPM_COMMAND.Load( m_sName, "SetNoBpmCommand"); SET_NORMAL_COMMAND.Load( m_sName, "SetNormalCommand"); SET_CHANGING_COMMAND.Load( m_sName, "SetChangeCommand" ); + SET_RANDOM_COMMAND.Load( m_sName, "SetRandomCommand" ); SET_EXTRA_COMMAND.Load( m_sName, "SetExtraCommand" ); CYCLE.Load( m_sName, "Cycle" ); + RANDOM_CYCLE_SPEED.Load( m_sName, "RandomCycleSpeed" ); SEPARATOR.Load( m_sName, "Separator" ); + SHOW_QMARKS.Load( m_sName, "ShowQMarksInRandomCycle" ); NO_BPM_TEXT.Load( m_sName, "NoBpmText" ); RunCommands( SET_NORMAL_COMMAND ); @@ -68,7 +71,11 @@ void BPMDisplay::Update( float fDeltaTime ) if(m_fBPMTo == -1) { m_fBPMFrom = -1; - SetText( (RandomFloat(0,1)>0.90f) ? RString("xxx") : ssprintf("%03.0f",RandomFloat(0,600)) ); + + if( (bool)SHOW_QMARKS ) + SetText( (RandomFloat(0,1)>0.90f) ? RString("xxx") : ssprintf("%03.0f",RandomFloat(0,999)) ); + else + SetText( ssprintf("%03.0f",RandomFloat(0,999)) ); } else if(m_fBPMFrom == -1) { @@ -93,6 +100,7 @@ void BPMDisplay::SetBPMRange( const DisplayBpms &bpms ) const vector &BPMS = bpms.vfBpms; bool AllIdentical = true; + bool IsRandom = false; for( unsigned i = 0; i < BPMS.size(); ++i ) { if( i > 0 && BPMS[i] != BPMS[i-1] ) @@ -111,7 +119,10 @@ void BPMDisplay::SetBPMRange( const DisplayBpms &bpms ) if( MinBPM == MaxBPM ) { if( MinBPM == -1 ) + { SetText( "..." ); // random + IsRandom = true; + } else SetText( ssprintf("%i", MinBPM) ); } @@ -140,7 +151,12 @@ void BPMDisplay::SetBPMRange( const DisplayBpms &bpms ) else if( !AllIdentical ) RunCommands( SET_CHANGING_COMMAND ); else - RunCommands( SET_NORMAL_COMMAND ); + { + if( IsRandom ) + RunCommands( SET_RANDOM_COMMAND ); + else + RunCommands( SET_NORMAL_COMMAND ); + } } void BPMDisplay::CycleRandomly() @@ -149,7 +165,21 @@ void BPMDisplay::CycleRandomly() bpms.Add(-1); SetBPMRange( bpms ); - m_fCycleTime = 0.2f; + RString sValue = RANDOM_CYCLE_SPEED; + sValue.MakeLower(); + + if( stricmp(sValue, "vslow") == 0 ) + m_fCycleTime = 1.0f; + else if( stricmp(sValue, "slow") == 0 ) + m_fCycleTime = 0.5f; + else if( stricmp(sValue, "fast") == 0 ) + m_fCycleTime = 0.1f; + else if( stricmp(sValue, "vfast") == 0 ) + m_fCycleTime = 0.05f; + else if( stricmp(sValue, "hyper") == 0 ) + m_fCycleTime = 0.01f; + else + m_fCycleTime = 0.2f; } void BPMDisplay::NoBPM() diff --git a/stepmania/src/BPMDisplay.h b/stepmania/src/BPMDisplay.h index c5cd7c57aa..ac0bdbf277 100644 --- a/stepmania/src/BPMDisplay.h +++ b/stepmania/src/BPMDisplay.h @@ -38,8 +38,11 @@ protected: ThemeMetric SET_NO_BPM_COMMAND; ThemeMetric SET_NORMAL_COMMAND; ThemeMetric SET_CHANGING_COMMAND; + ThemeMetric SET_RANDOM_COMMAND; ThemeMetric SET_EXTRA_COMMAND; ThemeMetric CYCLE; + ThemeMetric SHOW_QMARKS; + ThemeMetric RANDOM_CYCLE_SPEED; ThemeMetric SEPARATOR; ThemeMetric NO_BPM_TEXT; diff --git a/stepmania/src/Background.cpp b/stepmania/src/Background.cpp index 71893b3b86..7de990eda3 100644 --- a/stepmania/src/Background.cpp +++ b/stepmania/src/Background.cpp @@ -386,6 +386,10 @@ BackgroundDef BackgroundImpl::Layer::CreateRandomBGA( const Song *pSong, const R if( g_RandomBackgroundMode == BGMODE_OFF ) return BackgroundDef(); + // Set to not show any BGChanges, whether scripted or random + if( GAMESTATE->m_SongOptions.GetCurrent().m_bStaticBackground ) + return BackgroundDef(); + if( RandomBGAnimations.empty() ) return BackgroundDef(); @@ -515,8 +519,6 @@ void BackgroundImpl::LoadFromSong( const Song* pSong ) m_RandomBGAnimations.push_back( bd ); } } - - /* Song backgrounds (even just background stills) can get very big; never keep them * in memory. */ @@ -525,15 +527,17 @@ void BackgroundImpl::LoadFromSong( const Song* pSong ) TEXTUREMAN->DisableOddDimensionWarning(); - if( !g_bSongBackgrounds ) + // Set to not show any BGChanges, whether scripted or random if m_bStaticBackground is on + if( !g_bSongBackgrounds || GAMESTATE->m_SongOptions.GetCurrent().m_bStaticBackground ) { - /* Backgrounds are disabled; just display the song background. */ + // Backgrounds are disabled; just display the song background. BackgroundChange change; change.m_def = m_StaticBackgroundDef; change.m_fStartBeat = 0; m_Layer[0].m_aBGChanges.push_back( change ); } - else if( pSong->HasBGChanges() ) + // If m_bRandomBGOnly is on, then we want to ignore the scripted BG in favour of randomly loaded BGs + else if( pSong->HasBGChanges() && !GAMESTATE->m_SongOptions.GetCurrent().m_bRandomBGOnly ) { FOREACH_BackgroundLayer( i ) { @@ -583,7 +587,6 @@ void BackgroundImpl::LoadFromSong( const Song* pSong ) layer.m_aBGChanges.push_back( change ); } - // sort segments FOREACH_BackgroundLayer( i ) { diff --git a/stepmania/src/GhostArrowRow.cpp b/stepmania/src/GhostArrowRow.cpp index bce539f122..3fb7a5b08b 100644 --- a/stepmania/src/GhostArrowRow.cpp +++ b/stepmania/src/GhostArrowRow.cpp @@ -58,6 +58,9 @@ void GhostArrowRow::Update( float fDeltaTime ) m_Ghost[c]->SetY( fY ); m_Ghost[c]->SetZ( fZ ); + const float fRotation = ArrowEffects::ReceptorGetRotation( m_pPlayerState ); + m_Ghost[c]->SetRotationZ( fRotation ); + const float fZoom = ArrowEffects::GetZoom( m_pPlayerState ); m_Ghost[c]->SetZoom( fZoom ); } diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index 81871b3fb0..993ec43926 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -134,6 +134,7 @@ void PlayerOptions::GetMods( vector &AddTo, bool bForceNoteSkin ) const AddPart( AddTo, m_fEffects[EFFECT_DRUNK], "Drunk" ); AddPart( AddTo, m_fEffects[EFFECT_DIZZY], "Dizzy" ); + AddPart( AddTo, m_fEffects[EFFECT_CONFUSION], "Confusion" ); AddPart( AddTo, m_fEffects[EFFECT_MINI], "Mini" ); AddPart( AddTo, m_fEffects[EFFECT_TINY], "Tiny" ); AddPart( AddTo, m_fEffects[EFFECT_FLIP], "Flip" ); @@ -321,6 +322,7 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut else if( sBit == "boomerang" ) SET_FLOAT( fAccels[ACCEL_BOOMERANG] ) else if( sBit == "drunk" ) SET_FLOAT( fEffects[EFFECT_DRUNK] ) else if( sBit == "dizzy" ) SET_FLOAT( fEffects[EFFECT_DIZZY] ) + else if( sBit == "confusion" ) SET_FLOAT( fEffects[EFFECT_CONFUSION] ) else if( sBit == "mini" ) SET_FLOAT( fEffects[EFFECT_MINI] ) else if( sBit == "tiny" ) SET_FLOAT( fEffects[EFFECT_TINY] ) else if( sBit == "flip" ) SET_FLOAT( fEffects[EFFECT_FLIP] ) diff --git a/stepmania/src/PlayerOptions.h b/stepmania/src/PlayerOptions.h index 6cb5492cef..84ec47b453 100644 --- a/stepmania/src/PlayerOptions.h +++ b/stepmania/src/PlayerOptions.h @@ -42,6 +42,7 @@ public: enum Effect { EFFECT_DRUNK, EFFECT_DIZZY, + EFFECT_CONFUSION, EFFECT_MINI, EFFECT_TINY, EFFECT_FLIP, diff --git a/stepmania/src/ReceptorArrowRow.cpp b/stepmania/src/ReceptorArrowRow.cpp index d14e5e7163..85ad1846a8 100644 --- a/stepmania/src/ReceptorArrowRow.cpp +++ b/stepmania/src/ReceptorArrowRow.cpp @@ -68,6 +68,9 @@ void ReceptorArrowRow::Update( float fDeltaTime ) m_ReceptorArrow[c]->SetVisible( PitchDetectionTest::s_ms.bVoiced ); */ + const float fRotation = ArrowEffects::ReceptorGetRotation( m_pPlayerState ); + m_ReceptorArrow[c]->SetRotationZ( fRotation ); + const float fZoom = ArrowEffects::GetZoom( m_pPlayerState ); m_ReceptorArrow[c]->SetZoom( fZoom ); } diff --git a/stepmania/src/SongOptions.cpp b/stepmania/src/SongOptions.cpp index 87a746c0ef..2fd0870ce9 100644 --- a/stepmania/src/SongOptions.cpp +++ b/stepmania/src/SongOptions.cpp @@ -17,6 +17,8 @@ void SongOptions::Init() m_SpeedfHaste = 1.0f; m_AutosyncType = AUTOSYNC_OFF; m_SoundEffectType = SOUNDEFFECT_OFF; + m_bStaticBackground = false; + m_bRandomBGOnly = false; m_bSaveScore = true; } @@ -36,6 +38,8 @@ void SongOptions::Approach( const SongOptions& other, float fDeltaSeconds ) DO_COPY( m_bAssistMetronome ); DO_COPY( m_AutosyncType ); DO_COPY( m_SoundEffectType ); + DO_COPY( m_bStaticBackground ); + DO_COPY( m_bRandomBGOnly ); DO_COPY( m_bSaveScore ); #undef APPROACH #undef DO_COPY @@ -104,6 +108,11 @@ void SongOptions::GetMods( vector &AddTo ) const AddTo.push_back( "Clap" ); if( m_bAssistMetronome ) AddTo.push_back( "Metronome" ); + + if( m_bStaticBackground ) + AddTo.push_back( "StaticBG" ); + if( m_bRandomBGOnly ) + AddTo.push_back( "RandomBG" ); } void SongOptions::GetLocalizedMods( vector &v ) const @@ -176,31 +185,26 @@ bool SongOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut ) on = false; } - if( sBit == "norecover" ) m_DrainType = DRAIN_NO_RECOVER; - else if( sBit == "suddendeath" || - sBit == "death" ) m_DrainType = DRAIN_SUDDEN_DEATH; + if( sBit == "norecover" ) m_DrainType = DRAIN_NO_RECOVER; + else if( sBit == "suddendeath" || sBit == "death" ) m_DrainType = DRAIN_SUDDEN_DEATH; else if( sBit == "power-drop" ) m_DrainType = DRAIN_NO_RECOVER; else if( sBit == "normal-drain" ) m_DrainType = DRAIN_NORMAL; - else if( sBit == "clap" ) m_bAssistClap = on; + else if( sBit == "clap" ) m_bAssistClap = on; else if( sBit == "metronome" ) m_bAssistMetronome = on; - else if( sBit == "autosync" || sBit == "autosyncsong" ) - m_AutosyncType = on ? AUTOSYNC_SONG : AUTOSYNC_OFF; - else if( sBit == "autosyncmachine" ) - m_AutosyncType = on ? AUTOSYNC_MACHINE : AUTOSYNC_OFF; - else if( sBit == "autosynctempo" ) - m_AutosyncType = on ? AUTOSYNC_TEMPO : AUTOSYNC_OFF; - else if( sBit == "effect" && !on ) - m_SoundEffectType = SOUNDEFFECT_OFF; - else if( sBit == "effectspeed" ) - m_SoundEffectType = on ? SOUNDEFFECT_SPEED : SOUNDEFFECT_OFF; - else if( sBit == "effectpitch" ) - m_SoundEffectType = on ? SOUNDEFFECT_PITCH : SOUNDEFFECT_OFF; + else if( sBit == "autosync" || sBit == "autosyncsong" ) m_AutosyncType = on ? AUTOSYNC_SONG : AUTOSYNC_OFF; + else if( sBit == "autosyncmachine" ) m_AutosyncType = on ? AUTOSYNC_MACHINE : AUTOSYNC_OFF; + else if( sBit == "autosynctempo" ) m_AutosyncType = on ? AUTOSYNC_TEMPO : AUTOSYNC_OFF; + else if( sBit == "effect" && !on ) m_SoundEffectType = SOUNDEFFECT_OFF; + else if( sBit == "effectspeed" ) m_SoundEffectType = on ? SOUNDEFFECT_SPEED : SOUNDEFFECT_OFF; + else if( sBit == "effectpitch" ) m_SoundEffectType = on ? SOUNDEFFECT_PITCH : SOUNDEFFECT_OFF; + else if( sBit == "staticbg" ) m_bStaticBackground = on; + else if( sBit == "randombg" ) m_bRandomBGOnly = on; else if( sBit == "savescore" ) m_bSaveScore = on; - else if( sBit == "bar" ) m_LifeType = LIFE_BAR; + else if( sBit == "bar" ) m_LifeType = LIFE_BAR; else if( sBit == "battery" ) m_LifeType = LIFE_BATTERY; else if( sBit == "lifetime" ) m_LifeType = LIFE_TIME; - else if( sBit == "haste" ) m_fHaste = on? 1.0f:0.0f; + else if( sBit == "haste" ) m_fHaste = on? 1.0f:0.0f; else return false; @@ -219,6 +223,8 @@ bool SongOptions::operator==( const SongOptions &other ) const COMPARE( m_bAssistMetronome ); COMPARE( m_AutosyncType ); COMPARE( m_SoundEffectType ); + COMPARE( m_bStaticBackground ); + COMPARE( m_bRandomBGOnly ); COMPARE( m_bSaveScore ); #undef COMPARE return true; diff --git a/stepmania/src/SongOptions.h b/stepmania/src/SongOptions.h index a775fb4522..a71af2f9b9 100644 --- a/stepmania/src/SongOptions.h +++ b/stepmania/src/SongOptions.h @@ -34,6 +34,8 @@ public: NUM_AUTOSYNC_TYPES }; AutosyncType m_AutosyncType; + bool m_bStaticBackground; + bool m_bRandomBGOnly; bool m_bSaveScore; enum SoundEffectType { SOUNDEFFECT_OFF,