diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 6689c3b902..9ad07b0294 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -5,10 +5,15 @@ from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt. ________________________________________________________________________________ ================================================================================ -StepMania 5.0 ????????? | 20110??? +StepMania 5.0 Preview 2 | 20110??? -------------------------------------------------------------------------------- -2011/05/31 +2011/06/02 +---------- +* [BPMDisplay] Added SetFromSteps Lua binding. [AJ] + +2011/06/01 +---------- * [TimingData] Added the HasScrollChanges lua binding. [Wolfman2000] 2011/05/31 @@ -16,6 +21,7 @@ StepMania 5.0 ????????? | 20110??? * [Player] Added the BattleRaveMirror metric. This determines if Battle and Rave mode will have the two players with mirrored charts or not. By default, this is set to true, preserving the ITG style behavior. [Wolfman2000] +* [TimingData] Added the HasScrollChanges lua binding. [Wolfman2000] ================================================================================ StepMania 5.0 Preview 1 | 20110529 diff --git a/Docs/Luadoc/LuaDocumentation.xml b/Docs/Luadoc/LuaDocumentation.xml index 226a38d700..0f01eb1189 100644 --- a/Docs/Luadoc/LuaDocumentation.xml +++ b/Docs/Luadoc/LuaDocumentation.xml @@ -902,12 +902,18 @@ [02 Actor.lua] + + [02 Actor.lua] Centers an Actor on the screen. (equivalent to x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y) + [03 ProductivityHelpers.lua] Centers an Actor on the X axis. (equivalent to x,SCREEN_CENTER_X) [03 ProductivityHelpers.lua] Centers an Actor on the y axis. (equivalent to y,SCREEN_CENTER_Y) + + [02 Actor.lua] Stretches an Actor to cover the screen. (equivalent to stretchto,0,0,SCREEN_WIDTH,SCREEN_HEIGHT) + [03 ProductivityHelpers.lua] A customized version of pulse that is more appealing for on-beat effects. @@ -1267,6 +1273,9 @@ Sets the BPMDisplay from the specified Song. + + Sets the BPMDisplay from the specified Steps. + diff --git a/Docs/Luadoc/favicon.ico b/Docs/Luadoc/favicon.ico index 5a530ab403..95519364bc 100644 Binary files a/Docs/Luadoc/favicon.ico and b/Docs/Luadoc/favicon.ico differ diff --git a/Themes/_fallback/Fonts/_misc 16px.ini b/Themes/_fallback/Fonts/_misc 16px.ini index 2b44a545ce..b29a07252b 100644 --- a/Themes/_fallback/Fonts/_misc 16px.ini +++ b/Themes/_fallback/Fonts/_misc 16px.ini @@ -27,7 +27,7 @@ Top=8 Baseline=23 LineSpacing=24 -line 0=☆★♡♥Ω +line 0=☆★♥♡Ω map doublezeta=5 map planet=6 diff --git a/src/BPMDisplay.cpp b/src/BPMDisplay.cpp index bdeb805d52..a891f7161f 100644 --- a/src/BPMDisplay.cpp +++ b/src/BPMDisplay.cpp @@ -9,6 +9,7 @@ #include "CommonMetrics.h" #include "LocalizedString.h" #include "Song.h" +#include "Steps.h" #include @@ -198,6 +199,17 @@ void BPMDisplay::SetBpmFromSong( const Song* pSong ) } } +void BPMDisplay::SetBpmFromSteps( const Steps* pSteps ) +{ + ASSERT( pSteps ); + DisplayBpms bpms; + float fMinBPM, fMaxBPM; + pSteps->m_Timing.GetActualBPM( fMinBPM, fMaxBPM ); + bpms.Add( fMinBPM ); + bpms.Add( fMaxBPM ); + m_fCycleTime = 1.0f; +} + void BPMDisplay::SetBpmFromCourse( const Course* pCourse ) { ASSERT( pCourse ); @@ -307,6 +319,16 @@ public: } return 0; } + static int SetFromSteps( T* p, lua_State *L ) + { + if( lua_isnil(L,1) ) { p->NoBPM(); } + else + { + const Steps* pSteps = Luna::check( L, 1, true ); + p->SetBpmFromSteps(pSteps); + } + return 0; + } static int SetFromCourse( T* p, lua_State *L ) { if( lua_isnil(L,1) ) { p->NoBPM(); } @@ -323,6 +345,7 @@ public: { ADD_METHOD( SetFromGameState ); ADD_METHOD( SetFromSong ); + ADD_METHOD( SetFromSteps ); ADD_METHOD( SetFromCourse ); ADD_METHOD( GetText ); } diff --git a/src/BPMDisplay.h b/src/BPMDisplay.h index b27f96408a..d868ab23be 100644 --- a/src/BPMDisplay.h +++ b/src/BPMDisplay.h @@ -6,6 +6,7 @@ #include "ThemeMetric.h" #include "LocalizedString.h" class Song; +class Steps; class Course; struct DisplayBpms; @@ -30,6 +31,11 @@ public: * @param pSong the song in question. */ void SetBpmFromSong( const Song* pSong ); + /** + * @brief Use the BPM[s] from a steps. + * @param pSteps the steps in question. + */ + void SetBpmFromSteps( const Steps* pSteps ); /** * @brief Use the BPM[s] from a course. * @param pCourse the course in question. diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 9632d0431b..c6905545f4 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -2354,12 +2354,16 @@ void ScreenEdit::TransitionEditState( EditState em ) case STATE_PLAYING: AdjustSync::HandleSongEnd(); + if (!GAMESTATE->m_bIsUsingStepTiming) + GAMESTATE->m_pCurSteps[PLAYER_1]->m_Timing = backupStepTiming; if( AdjustSync::IsSyncDataChanged() ) ScreenSaveSync::PromptSaveSync(); break; case STATE_RECORDING: SetDirty( true ); + if (!GAMESTATE->m_bIsUsingStepTiming) + GAMESTATE->m_pCurSteps[PLAYER_1]->m_Timing = backupStepTiming; SaveUndo(); // delete old TapNotes in the range @@ -2410,6 +2414,12 @@ void ScreenEdit::TransitionEditState( EditState em ) GAMESTATE->UpdateSongPosition( fSeconds, GetAppropriateTiming(), RageZeroTimer, true ); GAMESTATE->m_bGameplayLeadIn.Set( false ); + + if (!GAMESTATE->m_bIsUsingStepTiming) + { + backupStepTiming = GetAppropriateTiming(); + GAMESTATE->m_pCurSteps[PLAYER_1]->m_Timing = GAMESTATE->m_pCurSong->m_SongTiming; + } /* Reset the note skin, in case preferences have changed. */ // XXX diff --git a/src/ScreenEdit.h b/src/ScreenEdit.h index 2fd6d9435d..2b92f8bbd5 100644 --- a/src/ScreenEdit.h +++ b/src/ScreenEdit.h @@ -251,6 +251,13 @@ protected: BitmapText m_textInputTips; + /** + * @brief Keep a backup of the present Step TimingData when + * entering a playing or recording state. + * + * This is mainly to allow playing a chart with Song Timing. */ + TimingData backupStepTiming; + /** @brief The current TapNote that would be inserted. */ TapNote m_selectedTap;