From 39c547c437c255c6cce75ae1e5cb49ff80ef3f29 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 12 Jun 2011 01:48:13 -0500 Subject: [PATCH 01/33] shut stepmania up about multiple filenames warning --- .../Other/ScreenGameplaySyncMachine music.ssc | 2 +- ...ySyncMachine music.ogg => _sync music.ogg} | Bin Themes/_fallback/Scripts/02 Actor.lua | 27 ++++++++++++++---- 3 files changed, 22 insertions(+), 7 deletions(-) rename Themes/_fallback/Other/{ScreenGameplaySyncMachine music.ogg => _sync music.ogg} (100%) diff --git a/Themes/_fallback/Other/ScreenGameplaySyncMachine music.ssc b/Themes/_fallback/Other/ScreenGameplaySyncMachine music.ssc index 6c0c76d05e..5721dff9bf 100644 --- a/Themes/_fallback/Other/ScreenGameplaySyncMachine music.ssc +++ b/Themes/_fallback/Other/ScreenGameplaySyncMachine music.ssc @@ -10,7 +10,7 @@ #BACKGROUND:; #LYRICSPATH:; #CDTITLE:; -#MUSIC:ScreenGameplaySyncMachine music.ogg; +#MUSIC:_sync music.ogg; #OFFSET:-0.012; #SAMPLESTART:0.000; #SAMPLELENGTH:12.000; diff --git a/Themes/_fallback/Other/ScreenGameplaySyncMachine music.ogg b/Themes/_fallback/Other/_sync music.ogg similarity index 100% rename from Themes/_fallback/Other/ScreenGameplaySyncMachine music.ogg rename to Themes/_fallback/Other/_sync music.ogg diff --git a/Themes/_fallback/Scripts/02 Actor.lua b/Themes/_fallback/Scripts/02 Actor.lua index cfded1e6a4..d00281bf65 100644 --- a/Themes/_fallback/Scripts/02 Actor.lua +++ b/Themes/_fallback/Scripts/02 Actor.lua @@ -114,17 +114,32 @@ function Actor:FullScreen() end --[[ Typical background sizes: -320x240 - DDR 1st-Extreme, most NVLM_ZK songs -640x480 - most simfiles in distribution today are this big. -768x480 - 16:10 aspect ratio backgrounds -854x480 - pump it up pro +320x240 - [4:3] +640x480 - [4:3] (most simfiles in distribution today use this res.) +768x480 - [16:10] +854x480 - [16:9] ]] --- "Most backgrounds are 640x480. Some are 768x480. Stretch the 4:3 ones." function Actor:scale_or_crop_background() - if (self:GetWidth() * 3) / 4 == self:GetHeight() then + local gw = self:GetWidth() + local gh = self:GetHeight() + + local graphicAspect = gw/gh + local displayAspect = DISPLAY:GetDisplayWidth()/DISPLAY:GetDisplayHeight() + + if graphicAspect == displayAspect then + -- bga matches the current aspect, we can stretch it. self:stretchto( 0,0,SCREEN_WIDTH,SCREEN_HEIGHT ); else + -- temp self:scaletocover( 0,0,SCREEN_WIDTH,SCREEN_HEIGHT ); + --[[ + -- bga doesn't match the aspect. + if displayAspect > graphicAspect then + -- the graphic is smaller than the display aspect ratio + else + -- the graphic is bigger than the display aspect ratio; crop me + end + --]] end end From 4fb23797469ecefffb8ad1e6321917e2d4373167 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:08:44 -0400 Subject: [PATCH 02/33] I think we can look into XCode 4 now sharksoda. --- Xcode/stepmania.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Xcode/stepmania.xcodeproj/project.pbxproj b/Xcode/stepmania.xcodeproj/project.pbxproj index 7aed8f48e3..69f269a3da 100644 --- a/Xcode/stepmania.xcodeproj/project.pbxproj +++ b/Xcode/stepmania.xcodeproj/project.pbxproj @@ -7889,6 +7889,7 @@ GCC_PREFIX_HEADER = "$(SRCROOT)/../src/archutils/Darwin/StepMania.pch"; GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( "$(SRCROOT)/../src", "$(SRCROOT)/../src/ffmpeg/include", @@ -7911,7 +7912,6 @@ OTHER_CPLUSPLUSFLAGS = ( "-finline-limit=300", "-fconstant-cfstrings", - "-fsingle-precision-constant", "-fno-exceptions", "-falign-loops=16", ); @@ -8576,6 +8576,7 @@ GCC_PREFIX_HEADER = "$(SRCROOT)/../src/archutils/Darwin/StepMania.pch"; GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( "$(SRCROOT)/../src", "$(SRCROOT)/../src/ffmpeg/include", @@ -8598,7 +8599,6 @@ OTHER_CPLUSPLUSFLAGS = ( "-finline-limit=300", "-fconstant-cfstrings", - "-fsingle-precision-constant", "-fno-exceptions", "-falign-loops=16", ); @@ -8815,6 +8815,7 @@ GCC_ENABLE_SSE3_EXTENSIONS = NO; GCC_PREFIX_HEADER = "$(SRCROOT)/../src/archutils/Darwin/StepMania.pch"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( "$(SRCROOT)/../src", "$(SRCROOT)/../src/ffmpeg/include", @@ -8837,7 +8838,6 @@ OTHER_CPLUSPLUSFLAGS = ( "-finline-limit=300", "-fconstant-cfstrings", - "-fsingle-precision-constant", "-fno-exceptions", "-falign-loops=16", ); @@ -8944,6 +8944,7 @@ GCC_ENABLE_OBJC_EXCEPTIONS = NO; GCC_PREFIX_HEADER = "$(SRCROOT)/../src/archutils/Darwin/StepMania.pch"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( "$(SRCROOT)/../src", "$(SRCROOT)/../src/ffmpeg/include", @@ -8966,7 +8967,6 @@ OTHER_CPLUSPLUSFLAGS = ( "-finline-limit=300", "-fconstant-cfstrings", - "-fsingle-precision-constant", "-fno-exceptions", "-falign-loops=16", ); From 720675637e30fd5938e68ce61a89d9c03426567a Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:12:44 -0400 Subject: [PATCH 03/33] The last of the LOG warnings I think. --- src/JsonUtil.cpp | 3 +-- src/NetworkSyncManager.cpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/JsonUtil.cpp b/src/JsonUtil.cpp index be736ea4b5..755036e770 100644 --- a/src/JsonUtil.cpp +++ b/src/JsonUtil.cpp @@ -14,8 +14,7 @@ bool JsonUtil::LoadFromString(Json::Value &root, RString sData, RString &sErrorO if (!parsingSuccessful) { RString err = reader.getFormatedErrorMessages(); - sErrorOut = ssprintf("JSON: LoadFromFileShowErrors failed: %s", err.c_str()); - LOG->Warn(sErrorOut); + LOG->Warn("JSON: LoadFromFileShowErrors failed: %s", err.c_str()); return false; } return true; diff --git a/src/NetworkSyncManager.cpp b/src/NetworkSyncManager.cpp index b49720a46a..66a4a1b4de 100644 --- a/src/NetworkSyncManager.cpp +++ b/src/NetworkSyncManager.cpp @@ -237,7 +237,7 @@ void NetworkSyncManager::ReportScore(int playerID, int step, int score, int comb if( !useSMserver ) //Make sure that we are using the network return; - LOG->Trace( ssprintf("Player ID %i combo = %i", playerID, combo) ); + LOG->Trace( "Player ID %i combo = %i", playerID, combo ); m_packet.ClearPacket(); m_packet.Write1( NSCGSU ); From 4bb0b28fc8d14c585121c2090f1e03a2b18cb7cb Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:30:57 -0400 Subject: [PATCH 04/33] Good old warning fixes...how I missed thee. --- src/DancingCharacters.cpp | 4 +++- src/EnumHelper.h | 3 +++ src/LuaManager.h | 2 ++ src/RageDisplay.h | 2 +- src/RageDisplay_Legacy.cpp | 2 +- src/RageUtil.cpp | 2 ++ 6 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/DancingCharacters.cpp b/src/DancingCharacters.cpp index 8b5be828c3..08088290eb 100644 --- a/src/DancingCharacters.cpp +++ b/src/DancingCharacters.cpp @@ -11,6 +11,8 @@ #include "PrefsManager.h" #include "Model.h" +int Neg1OrPos1(); + #define DC_X( choice ) THEME->GetMetricF("DancingCharacters",ssprintf("2DCharacterXP%d",choice+1)) #define DC_Y( choice ) THEME->GetMetricF("DancingCharacters",ssprintf("2DCharacterYP%d",choice+1)) @@ -344,7 +346,7 @@ void DancingCharacters::DrawPrimitives() ambient, diffuse, specular, - RageVector3(-3, -7.5, +9) ); + RageVector3(-3, -7.5f, +9) ); if( PREFSMAN->m_bCelShadeModels ) { diff --git a/src/EnumHelper.h b/src/EnumHelper.h index 57e81d16c4..3f9c60c295 100644 --- a/src/EnumHelper.h +++ b/src/EnumHelper.h @@ -57,6 +57,7 @@ namespace Enum const RString &EnumToString( int iVal, int iMax, const char **szNameArray, auto_ptr *pNameCache ); // XToString helper #define XToString(X) \ + const RString& X##ToString(X x); \ COMPILE_ASSERT( NUM_##X == ARRAYLEN(X##Names) ); \ const RString& X##ToString( X x ) \ { \ @@ -66,6 +67,7 @@ const RString &EnumToString( int iVal, int iMax, const char **szNameArray, auto_ namespace StringConversion { template<> RString ToString( const X &value ) { return X##ToString(value); } } #define XToLocalizedString(X) \ + const RString &X##ToLocalizedString(X x); \ const RString &X##ToLocalizedString( X x ) \ { \ static auto_ptr g_##X##Name[NUM_##X]; \ @@ -80,6 +82,7 @@ const RString &EnumToString( int iVal, int iMax, const char **szNameArray, auto_ } #define StringToX(X) \ + X StringTo##X(const RString&); \ X StringTo##X( const RString& s ) \ { \ for( unsigned i = 0; i < ARRAYLEN(X##Names); ++i ) \ diff --git a/src/LuaManager.h b/src/LuaManager.h index 5bcf0233eb..084532800a 100644 --- a/src/LuaManager.h +++ b/src/LuaManager.h @@ -220,9 +220,11 @@ inline bool MyLua_checkintboolean( lua_State *L, int iArg ) #define FArg(n) ((float) luaL_checknumber(L,(n))) #define LuaFunction( func, expr ) \ +int LuaFunc_##func( lua_State *L ); \ int LuaFunc_##func( lua_State *L ) { \ LuaHelpers::Push( L, expr ); return 1; \ } \ +void LuaFunc_Register_##func( lua_State *L ); \ void LuaFunc_Register_##func( lua_State *L ) { lua_register( L, #func, LuaFunc_##func ); } \ REGISTER_WITH_LUA_FUNCTION( LuaFunc_Register_##func ); diff --git a/src/RageDisplay.h b/src/RageDisplay.h index 9cad4f74c4..ca881c85f5 100644 --- a/src/RageDisplay.h +++ b/src/RageDisplay.h @@ -112,7 +112,7 @@ public: bpp(0), rate(0), vsync(false), interlaced(false), bSmoothLines(false), bTrilinearFiltering(false), bAnisotropicFiltering(false), sWindowTitle(RString()), - sIconFile(RString()), PAL(false), fDisplayAspectRatio(0.0) {} + sIconFile(RString()), PAL(false), fDisplayAspectRatio(0.0f) {} bool windowed; int width; diff --git a/src/RageDisplay_Legacy.cpp b/src/RageDisplay_Legacy.cpp index b2ea632c5d..51d59720bd 100644 --- a/src/RageDisplay_Legacy.cpp +++ b/src/RageDisplay_Legacy.cpp @@ -2561,7 +2561,7 @@ RString RageDisplay_Legacy::GetTextureDiagnostics(unsigned iTexture) const void RageDisplay_Legacy::SetAlphaTest(bool b) { // Previously this was 0.01, rather than 0x01. - glAlphaFunc(GL_GREATER, 0.00390625 /* 1/256 */); + glAlphaFunc(GL_GREATER, 0.00390625f /* 1/256 */); if (b) glEnable(GL_ALPHA_TEST); else diff --git a/src/RageUtil.cpp b/src/RageUtil.cpp index 4f068df600..f50b1a5882 100644 --- a/src/RageUtil.cpp +++ b/src/RageUtil.cpp @@ -16,6 +16,8 @@ #include #include +bool HexToBinary(const RString&, RString&); + RandomGen g_RandomNumberGenerator; MersenneTwister::MersenneTwister( int iSeed ) : m_iNext(0) From 2ab5a4ddb8ff9c2739f7b9544a5f03cb2a5b2e03 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:37:10 -0400 Subject: [PATCH 05/33] Mostly 64 - 32 float warning fixes. --- src/Actor.cpp | 6 +++--- src/AdjustSync.cpp | 2 +- src/ArrowEffects.cpp | 7 ++++++- src/BeginnerHelper.cpp | 4 ++-- src/LifeMeterBar.cpp | 2 +- src/RageSoundReader_Pan.cpp | 2 +- src/ScreenTestFonts.cpp | 2 +- src/ScreenTestSound.cpp | 4 ++-- src/ScreenUnlockStatus.cpp | 2 +- src/TimingData.cpp | 12 ++++++------ 10 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/Actor.cpp b/src/Actor.cpp index 3191d98d56..d7e8f3f4b2 100644 --- a/src/Actor.cpp +++ b/src/Actor.cpp @@ -105,9 +105,9 @@ void Actor::InitState() #endif m_fSecsIntoEffect = 0; m_fEffectDelta = 0; - m_fEffectRampUp = 0.5; + m_fEffectRampUp = 0.5f; m_fEffectHoldAtHalf = 0; - m_fEffectRampDown = 0.5; + m_fEffectRampDown = 0.5f; m_fEffectHoldAtZero = 0; m_fEffectOffset = 0; m_EffectClock = CLOCK_TIMER; @@ -118,7 +118,7 @@ void Actor::InitState() m_bVisible = true; m_fShadowLengthX = 0; m_fShadowLengthY = 0; - m_ShadowColor = RageColor(0,0,0,0.5); + m_ShadowColor = RageColor(0,0,0,0.5f); m_bIsAnimating = true; m_fHibernateSecondsLeft = 0; m_iDrawOrder = 0; diff --git a/src/AdjustSync.cpp b/src/AdjustSync.cpp index bee582b4bf..bc0425293d 100644 --- a/src/AdjustSync.cpp +++ b/src/AdjustSync.cpp @@ -256,7 +256,7 @@ void AdjustSync::AutosyncTempo() // keep only a fraction of the data, such as the 80% with the lowest // error. However, throwing away the ones with high error should // be enough in most cases. - float fFilteredError = 0.0; + float fFilteredError = 0; s_iStepsFiltered = s_vAutosyncTempoData.size(); FilterHighErrorPoints( s_vAutosyncTempoData, fSlope, fIntercept, ERROR_TOO_HIGH ); s_iStepsFiltered -= s_vAutosyncTempoData.size(); diff --git a/src/ArrowEffects.cpp b/src/ArrowEffects.cpp index fb8da38fb5..5b6dd64b08 100644 --- a/src/ArrowEffects.cpp +++ b/src/ArrowEffects.cpp @@ -60,6 +60,8 @@ static ThemeMetric MINI_PERCENT_BASE( "ArrowEffects", "MiniPercentBase" ) static ThemeMetric MINI_PERCENT_GATE( "ArrowEffects", "MiniPercentGate" ); static ThemeMetric DIZZY_HOLD_HEADS( "ArrowEffects", "DizzyHoldHeads" ); +float ArrowGetPercentVisible( const PlayerState* pPlayerState, float fYPosWithoutReverse ); + static float GetNoteFieldHeight( const PlayerState* pPlayerState ) { return SCREEN_HEIGHT + fabsf(pPlayerState->m_PlayerOptions.GetCurrent().m_fPerspectiveTilt)*200; @@ -236,7 +238,10 @@ float ArrowEffects::GetYOffset( const PlayerState* pPlayerState, int iCol, float if( bShowEffects ) fBeatsUntilStep = pCurSteps->m_Timing.GetDisplayedBeat(fNoteBeat) - pCurSteps->m_Timing.GetDisplayedBeat(fSongBeat); float fYOffsetBeatSpacing = fBeatsUntilStep; - float fSpeedMultiplier = bShowEffects ? pCurSteps->m_Timing.GetDisplayedSpeedPercent( position.m_fSongBeatVisible, position.m_fMusicSecondsVisible ) : 1.0; + float fSpeedMultiplier = bShowEffects ? + pCurSteps->m_Timing.GetDisplayedSpeedPercent( + position.m_fSongBeatVisible, + position.m_fMusicSecondsVisible ) : 1.0f; fYOffset += fSpeedMultiplier * fYOffsetBeatSpacing * (1-pPlayerState->m_PlayerOptions.GetCurrent().m_fTimeSpacing); } diff --git a/src/BeginnerHelper.cpp b/src/BeginnerHelper.cpp index 9bc73247ba..e6361729cf 100644 --- a/src/BeginnerHelper.cpp +++ b/src/BeginnerHelper.cpp @@ -242,7 +242,7 @@ void BeginnerHelper::DrawPrimitives() DISPLAY->SetLighting( true ); DISPLAY->SetLightDirectional( 0, - RageColor(0.5,0.5,0.5,1), + RageColor(0.5f,0.5f,0.5f,1), RageColor(1,1,1,1), RageColor(0,0,0,1), RageVector3(0, 0, 1) ); @@ -271,7 +271,7 @@ void BeginnerHelper::DrawPrimitives() DISPLAY->SetLighting( true ); DISPLAY->SetLightDirectional( 0, - RageColor(0.5,0.5,0.5,1), + RageColor(0.5f,0.5f,0.5f,1), RageColor(1,1,1,1), RageColor(0,0,0,1), RageVector3(0, 0, 1) ); diff --git a/src/LifeMeterBar.cpp b/src/LifeMeterBar.cpp index 8256732b89..bbc101058a 100644 --- a/src/LifeMeterBar.cpp +++ b/src/LifeMeterBar.cpp @@ -172,7 +172,7 @@ void LifeMeterBar::ChangeLife( HoldNoteScore score, TapNoteScore tscore ) switch( score ) { case HNS_Held: fDeltaLife = +0; break; - case HNS_LetGo: fDeltaLife = -1.0; break; + case HNS_LetGo: fDeltaLife = -1.0f; break; default: ASSERT(0); } diff --git a/src/RageSoundReader_Pan.cpp b/src/RageSoundReader_Pan.cpp index ee592c2fff..3b8d505154 100644 --- a/src/RageSoundReader_Pan.cpp +++ b/src/RageSoundReader_Pan.cpp @@ -5,7 +5,7 @@ RageSoundReader_Pan::RageSoundReader_Pan( RageSoundReader *pSource ): RageSoundReader_Filter( pSource ) { - m_fPan = 0.0; + m_fPan = 0; } diff --git a/src/ScreenTestFonts.cpp b/src/ScreenTestFonts.cpp index 8d163e22ec..708a2d711a 100644 --- a/src/ScreenTestFonts.cpp +++ b/src/ScreenTestFonts.cpp @@ -49,7 +49,7 @@ void ScreenTestFonts::Init() font.SetXY( SCREEN_CENTER_X, SCREEN_CENTER_Y+100 ); font.LoadFromFont( THEME->GetPathF("Common", "normal") ); - font.SetZoom(.5); + font.SetZoom(.5f); this->AddChild(&font); txt.SetName( "Text" ); diff --git a/src/ScreenTestSound.cpp b/src/ScreenTestSound.cpp index b27f93a87f..813f5cf6fa 100644 --- a/src/ScreenTestSound.cpp +++ b/src/ScreenTestSound.cpp @@ -17,7 +17,7 @@ void ScreenTestSound::Init() HEEEEEEEEELP.SetXY(450, 400); HEEEEEEEEELP.LoadFromFont( THEME->GetPathF("Common","normal") ); - HEEEEEEEEELP.SetZoom(.5); + HEEEEEEEEELP.SetZoom(.5f); HEEEEEEEEELP.SetText( "p Play\n" "s Stop\n" @@ -29,7 +29,7 @@ void ScreenTestSound::Init() { this->AddChild(&s[i].txt); s[i].txt.LoadFromFont( THEME->GetPathF("Common","normal") ); - s[i].txt.SetZoom(.5); + s[i].txt.SetZoom(.5f); } s[0].txt.SetXY(150, 100); diff --git a/src/ScreenUnlockStatus.cpp b/src/ScreenUnlockStatus.cpp index e06c7dfa95..502e5d76bf 100644 --- a/src/ScreenUnlockStatus.cpp +++ b/src/ScreenUnlockStatus.cpp @@ -127,7 +127,7 @@ void ScreenUnlockStatus::Init() break; default: text->SetText( "" ); - text->SetDiffuse( RageColor(0.5,0,0,1) ); + text->SetDiffuse( RageColor(0.5f,0,0,1) ); break; } diff --git a/src/TimingData.cpp b/src/TimingData.cpp index f65c00122e..660b5e50c0 100644 --- a/src/TimingData.cpp +++ b/src/TimingData.cpp @@ -821,10 +821,10 @@ void TimingData::GetBeatAndBPSFromElapsedTimeNoOffset( float fElapsedTime, float int iLastRow = 0; float fLastTime = -m_fBeat0OffsetInSeconds; - float fBPS = GetBPMAtRow(0) / 60.0; + float fBPS = GetBPMAtRow(0) / 60.0f; float bIsWarping = false; - float fWarpDestination = 0.0; + float fWarpDestination = 0; for( ;; ) { @@ -923,10 +923,10 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const int iLastRow = 0; float fLastTime = -m_fBeat0OffsetInSeconds; - float fBPS = GetBPMAtRow(0) / 60.0; + float fBPS = GetBPMAtRow(0) / 60.0f; float bIsWarping = false; - float fWarpDestination = 0.0; + float fWarpDestination = 0; for( ;; ) { @@ -1004,7 +1004,7 @@ float TimingData::GetElapsedTimeFromBeatNoOffset( float fBeat ) const float TimingData::GetDisplayedBeat( float fBeat ) const { vector::const_iterator it = m_ScrollSegments.begin(), end = m_ScrollSegments.end(); - float fOutBeat = 0.0; + float fOutBeat = 0; for( ; it != end; it++ ) { if( it+1 == end || fBeat <= (it+1)->GetBeat() ) @@ -1508,7 +1508,7 @@ float TimingData::GetDisplayedSpeedPercent( float fSongBeat, float fMusicSeconds if( ( index == 0 && m_SpeedSegments[0].GetLength() > 0.0 ) && fCurTime < fStartTime ) { - return 1.0; + return 1.0f; } else if( fEndTime >= fCurTime && ( index > 0 || m_SpeedSegments[0].GetLength() > 0.0 ) ) { From b7ffecd3d0a2800ffd53c8faeb00d6879ea9c305 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:40:26 -0400 Subject: [PATCH 06/33] This pointer was considered pointless. --- src/ScreenReloadSongs.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/ScreenReloadSongs.cpp b/src/ScreenReloadSongs.cpp index 7cd7360355..837a407e1a 100644 --- a/src/ScreenReloadSongs.cpp +++ b/src/ScreenReloadSongs.cpp @@ -40,14 +40,10 @@ ScreenReloadSongs::~ScreenReloadSongs() delete loadWin; } -int ScreenReloadSongs::loadingThreadProc(void *thisAsVoidPtr) { - - ScreenReloadSongs *self=(ScreenReloadSongs *)thisAsVoidPtr; - +int ScreenReloadSongs::loadingThreadProc(void *thisAsVoidPtr) +{ SONGMAN->Reload( false ); - SCREENMAN->PostMessageToTopScreen( SM_GoToNextScreen, 0 ); - return 0; } From 544f71c2587bf9d5faafc5e07652167d7cf28273 Mon Sep 17 00:00:00 2001 From: Alberto Ramos Date: Sun, 12 Jun 2011 01:41:36 -0600 Subject: [PATCH 07/33] comment+lineup thing --- NoteSkins/pump/default/UpLeft Receptor.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NoteSkins/pump/default/UpLeft Receptor.lua b/NoteSkins/pump/default/UpLeft Receptor.lua index 6ebcd0b547..86a2238fa1 100644 --- a/NoteSkins/pump/default/UpLeft Receptor.lua +++ b/NoteSkins/pump/default/UpLeft Receptor.lua @@ -1,5 +1,5 @@ - local function Beat(self) + -- too many locals local this = self:GetChildren() local player = GAMESTATE:GetMasterPlayerNumber() local playerstate = GAMESTATE:GetPlayerState( player ) From 7f3b8577b348c2f045c0236b8538a6c23931b815 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:42:15 -0400 Subject: [PATCH 08/33] Prototypes. --- src/RageUtil.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/RageUtil.cpp b/src/RageUtil.cpp index f50b1a5882..cee069e043 100644 --- a/src/RageUtil.cpp +++ b/src/RageUtil.cpp @@ -17,6 +17,8 @@ #include bool HexToBinary(const RString&, RString&); +void utf8_sanitize(RString &); +void UnicodeUpperLower(wchar_t *, size_t, const unsigned char *); RandomGen g_RandomNumberGenerator; From 7acbe91683e36f5c6af92e11b8d91a05960bcd66 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:47:22 -0400 Subject: [PATCH 09/33] More prototypes. --- src/Character.cpp | 2 ++ src/GameConstantsAndTypes.cpp | 1 + src/Inventory.cpp | 1 + src/NotesLoaderDWI.cpp | 2 ++ src/NotesLoaderJson.cpp | 2 ++ src/NotesWriterDWI.cpp | 2 ++ 6 files changed, 10 insertions(+) diff --git a/src/Character.cpp b/src/Character.cpp index 209d3c7fa3..bb7d0e0797 100644 --- a/src/Character.cpp +++ b/src/Character.cpp @@ -5,6 +5,8 @@ #include "RageTextureID.h" #include "ActorUtil.h" +RString GetRandomFileInDir( RString sDir ); + Character::Character(): m_sCharDir(""), m_sCharacterID(""), m_sDisplayName(""), m_sCardPath(""), m_sIconPath(""), m_bUsableInRave(false), m_iPreloadRefcount(0) {} diff --git a/src/GameConstantsAndTypes.cpp b/src/GameConstantsAndTypes.cpp index e1cbb161e4..f2279c6f5f 100644 --- a/src/GameConstantsAndTypes.cpp +++ b/src/GameConstantsAndTypes.cpp @@ -11,6 +11,7 @@ #include "PlayerNumber.h" #include +RString StepsTypeToString( StepsType st ); static vector GenerateRankingToFillInMarker() { diff --git a/src/Inventory.cpp b/src/Inventory.cpp index 3b7eb88b32..d3f563c30a 100644 --- a/src/Inventory.cpp +++ b/src/Inventory.cpp @@ -11,6 +11,7 @@ #include "ThemeMetric.h" #include "PlayerState.h" +void ReloadItems(); #define NUM_ITEM_TYPES THEME->GetMetricF("Inventory","NumItemTypes") #define ITEM_DURATION_SECONDS THEME->GetMetricF("Inventory","ItemDurationSeconds") diff --git a/src/NotesLoaderDWI.cpp b/src/NotesLoaderDWI.cpp index 9277a7a464..e7483e6fb6 100644 --- a/src/NotesLoaderDWI.cpp +++ b/src/NotesLoaderDWI.cpp @@ -14,6 +14,8 @@ #include +Difficulty DwiCompatibleStringToDifficulty( const RString& sDC ); + static std::map g_mapDanceNoteToNoteDataColumn; /** @brief The different types of core DWI arrows and pads. */ diff --git a/src/NotesLoaderJson.cpp b/src/NotesLoaderJson.cpp index e0f79204d8..9d422d5177 100644 --- a/src/NotesLoaderJson.cpp +++ b/src/NotesLoaderJson.cpp @@ -10,6 +10,8 @@ #include "Steps.h" #include "GameManager.h" +void Deserialize(BPMSegment &seg, const Json::Value &root); + void NotesLoaderJson::GetApplicableFiles( const RString &sPath, vector &out ) { GetDirListing( sPath + RString("*.json"), out ); diff --git a/src/NotesWriterDWI.cpp b/src/NotesWriterDWI.cpp index 3d0641c0e8..4c451d836a 100644 --- a/src/NotesWriterDWI.cpp +++ b/src/NotesWriterDWI.cpp @@ -11,6 +11,8 @@ #include "Song.h" #include "Steps.h" +RString OptimizeDWIString( RString holds, RString taps ); + /** * @brief Optimize an individual pair of characters whenever possible. * @param c1 the first character. From fe9dfa26c4191da0f27589858afdcb9c20df0fc4 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:47:38 -0400 Subject: [PATCH 10/33] Consistency. --- src/NotesWriterJson.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NotesWriterJson.cpp b/src/NotesWriterJson.cpp index a758444e30..e5ad6338d9 100644 --- a/src/NotesWriterJson.cpp +++ b/src/NotesWriterJson.cpp @@ -9,7 +9,7 @@ #include "NoteData.h" #include "GameManager.h" -void Serialize(const BPMSegment &seg, Json::Value &root) +static void Serialize(const BPMSegment &seg, Json::Value &root) { root["Beat"] = seg.GetBeat(); root["BPM"] = seg.GetBPM(); From 4036ee89c22a45d4d1e847eea6051f59f3226c00 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 03:55:48 -0400 Subject: [PATCH 11/33] Last bit of warnings for tonight. --- src/ModIconRow.cpp | 2 ++ src/Player.cpp | 14 ++++++-------- src/RageDisplay_Legacy.cpp | 7 +++++++ src/ScreenHighScores.cpp | 3 +++ src/ScreenInstallOverlay.cpp | 3 +++ 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/ModIconRow.cpp b/src/ModIconRow.cpp index b2e3c68fd1..d77bed655b 100644 --- a/src/ModIconRow.cpp +++ b/src/ModIconRow.cpp @@ -10,6 +10,8 @@ #include "LuaManager.h" #include "Foreach.h" +int OptionToPreferredColumn( RString sOptionText ); + REGISTER_ACTOR_CLASS( ModIconRow ); ModIconRow::ModIconRow() diff --git a/src/Player.cpp b/src/Player.cpp index 7195d3ab48..e7b55b6a36 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -42,6 +42,9 @@ #include "LocalizedString.h" #include "AdjustSync.h" +RString ATTACK_DISPLAY_X_NAME( size_t p, size_t both_sides ); +void TimingWindowSecondsInit( size_t /*TimingWindow*/ i, RString &sNameOut, float &defaultValueOut ); + /** * @brief Helper class to ensure that each row is only judged once without taking too much memory. */ @@ -1323,14 +1326,9 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector= 0 && tn.iKeysoundIndex < (int) m_vKeysounds.size() ) { - if( tn.subType == TapNote::hold_head_roll ) - { - m_vKeysounds[tn.iKeysoundIndex].SetProperty ("Volume", max(0.0, min(1.0, fLifeFraction * 2.0))); - } - else - { - m_vKeysounds[tn.iKeysoundIndex].SetProperty ("Volume", max(0.0, min(1.0, fLifeFraction * 10.0 - 8.5))); - } + float factor = (tn.subType == TapNote::hold_head_roll ? 2 : 10.0f - 8.5f); + factor *= fLifeFraction; + m_vKeysounds[tn.iKeysoundIndex].SetProperty ("Volume", max(0.0, min(1.0, factor))); } } diff --git a/src/RageDisplay_Legacy.cpp b/src/RageDisplay_Legacy.cpp index 51d59720bd..4247510dc7 100644 --- a/src/RageDisplay_Legacy.cpp +++ b/src/RageDisplay_Legacy.cpp @@ -31,6 +31,13 @@ using namespace RageDisplay_Legacy_Helpers; #define glFlush() #endif +RString GetInfoLog( GLhandleARB h ); +GLhandleARB CompileShader( GLenum ShaderType, RString sFile, vector asDefines ); +GLhandleARB LoadShader( GLenum ShaderType, RString sFile, vector asDefines ); +void InitShaders(); +void SetupExtensions(); +void SetPixelMapForSurface( int glImageFormat, int glTexFormat, const RageSurfacePalette *palette ); + // // Globals // diff --git a/src/ScreenHighScores.cpp b/src/ScreenHighScores.cpp index 1f5034b134..97ea53f980 100644 --- a/src/ScreenHighScores.cpp +++ b/src/ScreenHighScores.cpp @@ -6,6 +6,9 @@ #include "RageLog.h" #include "UnlockManager.h" +RString COLUMN_DIFFICULTY_NAME( size_t i ); +RString COLUMN_STEPS_TYPE_NAME( size_t i ); + static const char *HighScoresTypeNames[] = { "AllSteps", "NonstopCourses", diff --git a/src/ScreenInstallOverlay.cpp b/src/ScreenInstallOverlay.cpp index 25561e7d8d..6882c1be0c 100644 --- a/src/ScreenInstallOverlay.cpp +++ b/src/ScreenInstallOverlay.cpp @@ -41,6 +41,9 @@ struct PlayAfterLaunchInfo } }; +void InstallSmzipOsArg( const RString &sOsZipFile, PlayAfterLaunchInfo &out ); +PlayAfterLaunchInfo DoInstalls( CommandLineActions::CommandLineArgs args ); + static void Parse( const RString &sDir, PlayAfterLaunchInfo &out ) { vector vsDirParts; From e965e0b3e4ace87872fedfa54d358e6628107b3e Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 12 Jun 2011 04:09:49 -0500 Subject: [PATCH 12/33] [ScreenNetSelectMusic] Add PlayerOptionsScreen metric. --- Docs/Changelog_sm5.txt | 4 ++++ Themes/_fallback/metrics.ini | 1 + src/ScreenNetSelectMusic.cpp | 3 ++- src/ScreenNetSelectMusic.h | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 4e2237edd8..daa44ee8ac 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -8,6 +8,10 @@ ________________________________________________________________________________ StepMania 5.0 Preview 2 | 20110??? -------------------------------------------------------------------------------- +2011/06/12 +---------- +* [ScreenNetSelectMusic] Add PlayerOptionsScreen metric. [AJ] + 2011/06/11 ---------- * [ScreenEdit] Allow setting the Music Preview via the Alter Menu. Just select diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index e504462b0e..77257bcb2d 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -3951,6 +3951,7 @@ PrevScreen="ScreenNetRoom" NextScreen="ScreenStageInformation" NoSongsScreen=Branch.TitleMenu() RoomSelectScreen="ScreenNetRoom" +PlayerOptionsScreen="ScreenPlayerOptions" Codes="CodeDetectorOnline" ShowStyleIcon=false diff --git a/src/ScreenNetSelectMusic.cpp b/src/ScreenNetSelectMusic.cpp index c9e4aa3ea8..3397ae997b 100644 --- a/src/ScreenNetSelectMusic.cpp +++ b/src/ScreenNetSelectMusic.cpp @@ -46,6 +46,7 @@ void ScreenNetSelectMusic::Init() SAMPLE_MUSIC_PREVIEW_MODE.Load( m_sName, "SampleMusicPreviewMode" ); MUSIC_WHEEL_TYPE.Load( m_sName, "MusicWheelType" ); + PLAYER_OPTIONS_SCREEN.Load( m_sName, "PlayerOptionsScreen" ); FOREACH_EnabledPlayer (p) { @@ -331,7 +332,7 @@ void ScreenNetSelectMusic::MenuUp( const InputEventPlus &input ) { NSMAN->ReportNSSOnOff(3); GAMESTATE->m_EditMode = EditMode_Full; - SCREENMAN->AddNewScreenToTop( "ScreenPlayerOptions", SM_BackFromPlayerOptions ); + SCREENMAN->AddNewScreenToTop( PLAYER_OPTIONS_SCREEN, SM_BackFromPlayerOptions ); } void ScreenNetSelectMusic::MenuDown( const InputEventPlus &input ) diff --git a/src/ScreenNetSelectMusic.h b/src/ScreenNetSelectMusic.h index 2a0ff5fe1f..ecb89a079f 100644 --- a/src/ScreenNetSelectMusic.h +++ b/src/ScreenNetSelectMusic.h @@ -44,6 +44,7 @@ protected: RString m_sRandomMusicPath; ThemeMetric MUSIC_WHEEL_TYPE; + ThemeMetric PLAYER_OPTIONS_SCREEN; private: MusicWheel m_MusicWheel; From c3c8753620e1daf83e807419f8b651ae4c6c3b66 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 19:20:43 -0400 Subject: [PATCH 13/33] More prototype warning stuff. I know these should be in the .h files, but we can cover that later. --- src/NoteField.cpp | 3 +++ src/Player.cpp | 2 +- src/PlayerOptions.cpp | 3 +++ src/ScreenMiniMenu.cpp | 3 +++ src/StepMania.cpp | 4 ++++ 5 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/NoteField.cpp b/src/NoteField.cpp index 84dc4aae63..3795881eb7 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -20,6 +20,9 @@ #include "Course.h" #include "NoteData.h" +float FindFirstDisplayedBeat( const PlayerState* pPlayerState, int iDrawDistanceAfterTargetsPixels ); +float FindLastDisplayedBeat( const PlayerState* pPlayerState, int iDrawDistanceBeforeTargetsPixels ); + static ThemeMetric SHOW_BOARD( "NoteField", "ShowBoard" ); static ThemeMetric SHOW_BEAT_BARS( "NoteField", "ShowBeatBars" ); static ThemeMetric FADE_BEFORE_TARGETS_PERCENT( "NoteField", "FadeBeforeTargetsPercent" ); diff --git a/src/Player.cpp b/src/Player.cpp index e7b55b6a36..db17f00e07 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -1328,7 +1328,7 @@ void Player::UpdateHoldNotes( int iSongRow, float fDeltaTime, vector +void NextFloat( float fValues[], int size ); +void NextBool( bool bValues[], int size ); + ThemeMetric RANDOM_SPEED_CHANCE ( "PlayerOptions", "RandomSpeedChance" ); ThemeMetric RANDOM_REVERSE_CHANCE ( "PlayerOptions", "RandomReverseChance" ); ThemeMetric RANDOM_DARK_CHANCE ( "PlayerOptions", "RandomDarkChance" ); diff --git a/src/ScreenMiniMenu.cpp b/src/ScreenMiniMenu.cpp index 0d68986a97..83be2dd4f0 100644 --- a/src/ScreenMiniMenu.cpp +++ b/src/ScreenMiniMenu.cpp @@ -10,6 +10,9 @@ #include "OptionRowHandler.h" #include "PrefsManager.h" +void PrepareToLoadScreen( const RString &sScreenName ); +void FinishedLoadingScreen(); + AutoScreenMessage( SM_GoToOK ); AutoScreenMessage( SM_GoToCancel ); diff --git a/src/StepMania.cpp b/src/StepMania.cpp index e72f6f621d..a3d4af5c6f 100644 --- a/src/StepMania.cpp +++ b/src/StepMania.cpp @@ -72,6 +72,10 @@ #include #endif +void ShutdownGame(); +bool HandleGlobalInputs( const InputEventPlus &input ); +void HandleInputEvents(float fDeltaTime); + static Preference g_bAllowMultipleInstances( "AllowMultipleInstances", false ); void StepMania::GetPreferredVideoModeParams( VideoModeParams ¶msOut ) From 3d155c997080c1cb722d9c425016bab41bee750f Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 19:35:24 -0400 Subject: [PATCH 14/33] NOW I start moving prototypes to headers? I need to be more consistent...gah, hungry. --- src/AttackDisplay.h | 2 ++ src/CourseUtil.h | 4 ++++ src/DateTime.h | 2 ++ src/GameSoundManager.h | 3 +++ src/GameState.h | 2 ++ src/MenuTimer.h | 2 ++ src/NoteDataUtil.cpp | 7 ------- src/NoteDataUtil.h | 18 ++++++++++++++++++ src/PrefsManager.h | 3 +++ src/RageFileManager.h | 4 ++++ src/RageSoundReader_MP3.cpp | 1 - src/RageSoundReader_MP3.h | 5 +++++ src/RageSoundReader_WAV.h | 3 +++ src/Song.h | 3 +++ src/SongManager.h | 4 ++++ src/SongUtil.h | 2 ++ src/Sprite.h | 2 ++ src/arch/MovieTexture/MovieTexture.h | 2 ++ src/arch/MovieTexture/MovieTexture_FFMpeg.cpp | 4 ++++ src/archutils/Unix/CrashHandlerChild.cpp | 2 ++ 20 files changed, 67 insertions(+), 8 deletions(-) diff --git a/src/AttackDisplay.h b/src/AttackDisplay.h index 1a411ea55a..5e4dccf3d3 100644 --- a/src/AttackDisplay.h +++ b/src/AttackDisplay.h @@ -6,6 +6,8 @@ #include "GameConstantsAndTypes.h" // for TapNoteScore #include "RageTexturePreloader.h" +RString GetAttackPieceName( const RString &sAttack ); + class PlayerState; /** @brief A graphical display for attacks. */ class AttackDisplay : public ActorFrame diff --git a/src/CourseUtil.h b/src/CourseUtil.h index e338c9c3e7..6be86abe77 100644 --- a/src/CourseUtil.h +++ b/src/CourseUtil.h @@ -11,6 +11,10 @@ class XNode; class CourseEntry; class Song; +bool CompareCoursePointersBySortValueAscending( const Course *pSong1, const Course *pSong2 ); +bool CompareCoursePointersBySortValueDescending( const Course *pSong1, const Course *pSong2 ); +bool CompareCoursePointersByTitle( const Course *pCourse1, const Course *pCourse2 ); + /** @brief Utility functions that deal with Courses. */ namespace CourseUtil { diff --git a/src/DateTime.h b/src/DateTime.h index 58f2cbe6ff..2d77da95bd 100644 --- a/src/DateTime.h +++ b/src/DateTime.h @@ -4,6 +4,8 @@ #include "EnumHelper.h" #include +int StringToDayInYear( RString sDayInYear ); + /** @brief The number of days we check for previously. */ const int NUM_LAST_DAYS = 7; /** @brief The number of weeks we check for previously. */ diff --git a/src/GameSoundManager.h b/src/GameSoundManager.h index 6ce38ca39e..1187924a37 100644 --- a/src/GameSoundManager.h +++ b/src/GameSoundManager.h @@ -6,6 +6,9 @@ class TimingData; class RageSound; struct lua_State; + +int MusicThread_start( void *p ); + /** @brief High-level sound utilities. */ class GameSoundManager { diff --git a/src/GameState.h b/src/GameState.h index 0b2463f3c7..51abbac141 100644 --- a/src/GameState.h +++ b/src/GameState.h @@ -32,6 +32,8 @@ class Style; class TimingData; class Trail; +SortOrder GetDefaultSort(); + /** @brief Holds game data that is not saved between sessions. */ class GameState { diff --git a/src/MenuTimer.h b/src/MenuTimer.h index 1756bf715d..cd3a211c54 100644 --- a/src/MenuTimer.h +++ b/src/MenuTimer.h @@ -9,6 +9,8 @@ #include "ThemeMetric.h" #include "AutoActor.h" +RString WARNING_COMMAND_NAME( size_t i ); + class MenuTimer : public ActorFrame { public: diff --git a/src/NoteDataUtil.cpp b/src/NoteDataUtil.cpp index 7ecbbe46ac..68151e4cae 100644 --- a/src/NoteDataUtil.cpp +++ b/src/NoteDataUtil.cpp @@ -778,13 +778,6 @@ void NoteDataUtil::LoadTransformedLightsFromTwo( const NoteData &marquee, const NoteDataUtil::RemoveMines( out ); } -struct RadarStats { - int taps; - int jumps; - int hands; - int quads; -}; - RadarStats CalculateRadarStatsFast( const NoteData &in, RadarStats &out ) { out.taps = 0; diff --git a/src/NoteDataUtil.h b/src/NoteDataUtil.h index f92043c9ff..167d2955f7 100644 --- a/src/NoteDataUtil.h +++ b/src/NoteDataUtil.h @@ -10,6 +10,24 @@ class NoteData; class Song; struct AttackArray; +/** @brief A limited selection of the RadarValues. */ +struct RadarStats +{ + /** @brief The number of tap notes in the song. */ + int taps; + /** @brief The number of jumps in the song. */ + int jumps; + /** @brief The number of 3 panel hits in the song. */ + int hands; + /** @brief The number of 4 panel hits in the song. */ + int quads; +}; + +void PlaceAutoKeysound( NoteData &out, int row, TapNote akTap ); +int FindLongestOverlappingHoldNoteForAnyTrack( const NoteData &in, int iRow ); +void LightTransformHelper( const NoteData &in, NoteData &out, const vector &aiTracks ); +RadarStats CalculateRadarStatsFast( const NoteData &in, RadarStats &out ); + /** * @brief Utility functions that deal with NoteData. * diff --git a/src/PrefsManager.h b/src/PrefsManager.h index 2d1f564bb3..589da26533 100644 --- a/src/PrefsManager.h +++ b/src/PrefsManager.h @@ -5,6 +5,9 @@ class IniFile; +void ValidateDisplayAspectRatio( float &val ); +void ValidateSongsPerPlay( int &val ); + /** @brief How many songs can be played during a normal game max? * * This assumes no extra stages, no event mode, no course modes. */ diff --git a/src/RageFileManager.h b/src/RageFileManager.h index 59767b7aa4..12c6ca1fe0 100644 --- a/src/RageFileManager.h +++ b/src/RageFileManager.h @@ -10,6 +10,10 @@ namespace RageFileManagerUtil class RageFileDriver; class RageFileBasic; struct lua_State; + +bool ilt( const RString &a, const RString &b ); +bool ieq( const RString &a, const RString &b ); + /** @brief File utilities and high-level manager for RageFile objects. */ class RageFileManager { diff --git a/src/RageSoundReader_MP3.cpp b/src/RageSoundReader_MP3.cpp index 048b20e508..cb7829c09f 100644 --- a/src/RageSoundReader_MP3.cpp +++ b/src/RageSoundReader_MP3.cpp @@ -26,7 +26,6 @@ enum tagtype { TAGTYPE_ID3V2_FOOTER }; -typedef unsigned long id3_length_t; static const int ID3_TAG_FLAG_FOOTERPRESENT = 0x10; static tagtype tagtype( const unsigned char *data, id3_length_t length ) diff --git a/src/RageSoundReader_MP3.h b/src/RageSoundReader_MP3.h index cc8862808a..815e8e7c27 100644 --- a/src/RageSoundReader_MP3.h +++ b/src/RageSoundReader_MP3.h @@ -8,6 +8,11 @@ struct madlib_t; +typedef unsigned long id3_length_t; + +signed long id3_tag_query( const unsigned char *data, id3_length_t length ); +void fill_frame_index_cache( madlib_t *mad ); + class RageSoundReader_MP3: public RageSoundReader_FileReader { public: diff --git a/src/RageSoundReader_WAV.h b/src/RageSoundReader_WAV.h index 20dcdeeaa2..53cf48d18d 100644 --- a/src/RageSoundReader_WAV.h +++ b/src/RageSoundReader_WAV.h @@ -7,6 +7,9 @@ #include "RageFile.h" struct WavReader; + +RString ReadString( RageFileBasic &f, int iSize, RString &sError ); + class RageSoundReader_WAV: public RageSoundReader_FileReader { public: diff --git a/src/Song.h b/src/Song.h index 600694a640..98ff89ece2 100644 --- a/src/Song.h +++ b/src/Song.h @@ -16,6 +16,9 @@ class StepsID; struct lua_State; struct BackgroundChange; +void FixupPath( RString &path, const RString &sSongPath ); +RString GetSongAssetPath( RString sPath, const RString &sSongPath ); + /** @brief The version of the .ssc file format. */ const static float STEPFILE_VERSION_NUMBER = 0.7f; diff --git a/src/SongManager.h b/src/SongManager.h index 4df49feae7..54eaaa0cec 100644 --- a/src/SongManager.h +++ b/src/SongManager.h @@ -18,6 +18,10 @@ struct lua_State; #include "RageTexturePreloader.h" #include "RageUtil.h" +RString SONG_GROUP_COLOR_NAME( size_t i ); +RString COURSE_GROUP_COLOR_NAME( size_t i ); +bool CompareNotesPointersForExtra(const Steps *n1, const Steps *n2); + /** @brief The max number of edit steps a profile can have. */ const int MAX_EDIT_STEPS_PER_PROFILE = 200; /** @brief The max number of edit courses a profile can have. */ diff --git a/src/SongUtil.h b/src/SongUtil.h index 5432d455e3..4ecbcb8687 100644 --- a/src/SongUtil.h +++ b/src/SongUtil.h @@ -13,6 +13,8 @@ class Steps; class Profile; class XNode; +void AppendOctal( int n, int digits, RString &out ); + /** @brief The criteria for dealing with songs. */ class SongCriteria { diff --git a/src/Sprite.h b/src/Sprite.h index 7247171f70..3a941ec28c 100644 --- a/src/Sprite.h +++ b/src/Sprite.h @@ -4,6 +4,8 @@ #include "Actor.h" #include "RageTextureID.h" +void TexCoordArrayFromRect( float fImageCoords[8], const RectF &rect ); + class RageTexture; /** @brief A bitmap Actor that animates and moves around. */ class Sprite: public Actor diff --git a/src/arch/MovieTexture/MovieTexture.h b/src/arch/MovieTexture/MovieTexture.h index a97ea7e89f..b36b15fcae 100644 --- a/src/arch/MovieTexture/MovieTexture.h +++ b/src/arch/MovieTexture/MovieTexture.h @@ -5,6 +5,8 @@ #include "arch/RageDriver.h" #include +void ForceToAscii( RString &str ); + class RageMovieTexture : public RageTexture { public: diff --git a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp index ed70a0acbf..ba00dbacb0 100644 --- a/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp +++ b/src/arch/MovieTexture/MovieTexture_FFMpeg.cpp @@ -28,6 +28,10 @@ namespace avcodec #endif }; +int URLRageFile_open( avcodec::URLContext *h, const char *filename, int flags ); +int URLRageFile_read( avcodec::URLContext *h, unsigned char *buf, int size ); +int URLRageFile_close( avcodec::URLContext *h ); + /* #if defined(_MSC_VER) #pragma comment(lib, "ffmpeg/lib/avcodec.lib") diff --git a/src/archutils/Unix/CrashHandlerChild.cpp b/src/archutils/Unix/CrashHandlerChild.cpp index 4255470779..518ad0c7f6 100644 --- a/src/archutils/Unix/CrashHandlerChild.cpp +++ b/src/archutils/Unix/CrashHandlerChild.cpp @@ -28,6 +28,8 @@ extern const char *const version_date; extern const char *const version_time; #endif +bool child_read( int fd, void *p, int size ); + const char *g_pCrashHandlerArgv0 = NULL; From acdc45042a729d4b951b9424149a04b2369c6be1 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 20:34:23 -0400 Subject: [PATCH 15/33] Put old behavior back by default. Use the Control key for the time signature scrolling behavior. --- Docs/Changelog_sm5.txt | 3 +++ src/ScreenEdit.cpp | 21 ++++++++++++++++++++- src/ScreenEdit.h | 2 ++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index daa44ee8ac..f7ae75008c 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -11,6 +11,9 @@ StepMania 5.0 Preview 2 | 20110??? 2011/06/12 ---------- * [ScreenNetSelectMusic] Add PlayerOptionsScreen metric. [AJ] +* [ScreenEdit] Restore the old PageUp/PageDown behavior, added Control + + PageUp/PageDown to use recent time signature behavior. Laptop users, that + includes you guys too: semicolon and apostrophe are still good. [Wolfman2000] 2011/06/11 ---------- diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 98fbd51007..ea892be983 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -128,6 +128,17 @@ void ScreenEdit::InitEditMappings() m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_UP_PAGE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_SEMICOLON); m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_DOWN_PAGE][0] = DeviceInput(DEVICE_KEYBOARD, KEY_PGDN); m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_DOWN_PAGE][1] = DeviceInput(DEVICE_KEYBOARD, KEY_SQUOTE); + + m_EditMappingsDeviceInput.hold[EDIT_BUTTON_SCROLL_UP_TS][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL); + m_EditMappingsDeviceInput.hold[EDIT_BUTTON_SCROLL_UP_TS][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RCTRL); + m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_UP_TS][0] = DeviceInput(DEVICE_KEYBOARD, KEY_PGUP); + m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_UP_TS][1] = DeviceInput(DEVICE_KEYBOARD, KEY_SEMICOLON); + + m_EditMappingsDeviceInput.hold[EDIT_BUTTON_SCROLL_DOWN_TS][0] = DeviceInput(DEVICE_KEYBOARD, KEY_LCTRL); + m_EditMappingsDeviceInput.hold[EDIT_BUTTON_SCROLL_DOWN_TS][1] = DeviceInput(DEVICE_KEYBOARD, KEY_RCTRL); + m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_DOWN_TS][0] = DeviceInput(DEVICE_KEYBOARD, KEY_PGDN); + m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_DOWN_TS][1] = DeviceInput(DEVICE_KEYBOARD, KEY_SQUOTE); + m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_HOME][0] = DeviceInput(DEVICE_KEYBOARD, KEY_HOME); m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_END][0] = DeviceInput(DEVICE_KEYBOARD, KEY_END); m_EditMappingsDeviceInput.button[EDIT_BUTTON_SCROLL_NEXT][0] = DeviceInput(DEVICE_KEYBOARD, KEY_PERIOD); @@ -1490,8 +1501,10 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB ) break; case EDIT_BUTTON_SCROLL_UP_LINE: case EDIT_BUTTON_SCROLL_UP_PAGE: + case EDIT_BUTTON_SCROLL_UP_TS: case EDIT_BUTTON_SCROLL_DOWN_LINE: case EDIT_BUTTON_SCROLL_DOWN_PAGE: + case EDIT_BUTTON_SCROLL_DOWN_TS: { float fBeatsToMove=0.f; switch( EditB ) @@ -1505,10 +1518,16 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB ) break; case EDIT_BUTTON_SCROLL_UP_PAGE: case EDIT_BUTTON_SCROLL_DOWN_PAGE: - fBeatsToMove = beatsPerMeasure; + fBeatsToMove = 4; if( EditB == EDIT_BUTTON_SCROLL_UP_PAGE ) fBeatsToMove *= -1; break; + case EDIT_BUTTON_SCROLL_UP_TS: + case EDIT_BUTTON_SCROLL_DOWN_TS: + fBeatsToMove = beatsPerMeasure; + if( EditB == EDIT_BUTTON_SCROLL_UP_TS ) + fBeatsToMove *= -1; + break; } if( m_PlayerStateEdit.m_PlayerOptions.GetSong().m_fScrolls[PlayerOptions::SCROLL_REVERSE] > 0.5 ) diff --git a/src/ScreenEdit.h b/src/ScreenEdit.h index 2b3119a10a..2e5a020c3b 100644 --- a/src/ScreenEdit.h +++ b/src/ScreenEdit.h @@ -62,8 +62,10 @@ enum EditButton EDIT_BUTTON_SCROLL_UP_LINE, EDIT_BUTTON_SCROLL_UP_PAGE, + EDIT_BUTTON_SCROLL_UP_TS, EDIT_BUTTON_SCROLL_DOWN_LINE, EDIT_BUTTON_SCROLL_DOWN_PAGE, + EDIT_BUTTON_SCROLL_DOWN_TS, EDIT_BUTTON_SCROLL_NEXT_MEASURE, EDIT_BUTTON_SCROLL_PREV_MEASURE, EDIT_BUTTON_SCROLL_HOME, From fc68776e3f21eae7579ac12dffb2b972214070c0 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 20:45:21 -0400 Subject: [PATCH 16/33] Anyone on linux want to test this? I think this may work for an indeterminate bar. --- src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp index 445654b7f1..86f2e25a5f 100644 --- a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp +++ b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp @@ -62,7 +62,7 @@ extern "C" void SetProgress( int progress, int totalWork ) extern "C" void SetIndeterminate( bool indeterminate ) { - // TODO: Implement this! + gtk_progress_bar_pulse(); gtk_main_iteration_do(FALSE); } From 88f844787f896f41c26586b89678f6986f4a8687 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 20:45:30 -0400 Subject: [PATCH 17/33] Minor doxygen. --- src/ScreenEdit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index ea892be983..9e41da67c4 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -41,7 +41,7 @@ static Preference g_iDefaultRecordLength( "DefaultRecordLength", 4 ); static Preference g_bEditorShowBGChangesPlay( "EditorShowBGChangesPlay", true ); -// Defines specific to ScreenEdit +/** @brief How long must the button be held to generate a hold in record mode? */ const float RECORD_HOLD_SECONDS = 0.3f; #define PLAYER_X (SCREEN_CENTER_X) From e55270cade65c92d71461e363e2ce60013132961 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 12 Jun 2011 20:45:47 -0400 Subject: [PATCH 18/33] Missed a GCC 4.2 spot. Still thinking we could go to LLVM 1.5 here. --- Xcode/stepmania.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Xcode/stepmania.xcodeproj/project.pbxproj b/Xcode/stepmania.xcodeproj/project.pbxproj index 69f269a3da..30f38baac6 100644 --- a/Xcode/stepmania.xcodeproj/project.pbxproj +++ b/Xcode/stepmania.xcodeproj/project.pbxproj @@ -7946,7 +7946,7 @@ GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; GCC_STRICT_ALIASING = YES; GCC_UNROLL_LOOPS = YES; - GCC_VERSION = 4.0; + GCC_VERSION = ""; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; @@ -8523,7 +8523,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_STRICT_ALIASING = YES; GCC_UNROLL_LOOPS = YES; - GCC_VERSION = 4.0; + GCC_VERSION = ""; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; @@ -8870,7 +8870,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_STRICT_ALIASING = YES; GCC_UNROLL_LOOPS = YES; - GCC_VERSION = 4.0; + GCC_VERSION = ""; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; @@ -9000,7 +9000,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_STRICT_ALIASING = YES; GCC_UNROLL_LOOPS = YES; - GCC_VERSION = 4.0; + GCC_VERSION = ""; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES; From 79b0c1ccbe7903aab833d5b65225bc8b25515af5 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 12 Jun 2011 20:36:06 -0500 Subject: [PATCH 19/33] more reverting of 750b688 --- src/NoteSkinManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NoteSkinManager.cpp b/src/NoteSkinManager.cpp index d56062e0df..562629346f 100644 --- a/src/NoteSkinManager.cpp +++ b/src/NoteSkinManager.cpp @@ -200,7 +200,7 @@ bool NoteSkinManager::DoesNoteSkinExist( const RString &sSkinName ) vector asSkinNames; GetAllNoteSkinNamesForGame( GAMESTATE->m_pCurGame, asSkinNames ); for( unsigned i=0; i Date: Sun, 12 Jun 2011 21:52:51 -0500 Subject: [PATCH 20/33] make this value a little bit more realistic so that bad performance doesn't happen as often --- Themes/_fallback/metrics.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 77257bcb2d..e7a253f235 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1527,7 +1527,7 @@ AllowRepeatingInput=false PreSwitchPageSeconds=0 PostSwitchPageSeconds=0 ScrollerSecondsPerItem=0 -ScrollerNumItemsToDraw=1024 +ScrollerNumItemsToDraw=16 ScrollerTransform=function(self,offset,itemIndex,numItems) end ScrollerSubdivisions=1 OverrideSleepAfterTweenOffSeconds=false From 38ea269a10037597d9ca4a061e3296b9f54fbbdc Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 01:39:23 -0500 Subject: [PATCH 21/33] [LifeMeterBattery] Added some metrics that allow anyone to change how the battery meter handles lives. * MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life. * SubtractLives=1 - how many lives are lost when going below MinScoreToKeepLife. * MinesSubtractLives=1 - how many lives are lost when hitting a mine. * HeldAddLives=0 - how many lives are gained when a hold is completed. * LetGoSubtractLives=1 - how many lives are lost on a dropped hold. --- Docs/Changelog_sm5.txt | 9 ++++ Themes/_fallback/metrics.ini | 13 +++++- src/LifeMeterBattery.cpp | 88 +++++++++++++++++++----------------- src/LifeMeterBattery.h | 10 +++- 4 files changed, 77 insertions(+), 43 deletions(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index f7ae75008c..26f97b8b44 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -8,6 +8,15 @@ ________________________________________________________________________________ StepMania 5.0 Preview 2 | 20110??? -------------------------------------------------------------------------------- +2011/06/13 +---------- +* [LifeMeterBattery] Added some important metrics. [AJ] + * MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life. + * SubtractLives=1 - how many lives are lost when going below MinScoreToKeepLife. + * MinesSubtractLives=1 - how many lives are lost when hitting a mine. + * HeldAddLives=0 - how many lives are gained when a hold is completed. + * LetGoSubtractLives=1 - how many lives are lost on a dropped hold. + 2011/06/12 ---------- * [ScreenNetSelectMusic] Add PlayerOptionsScreen metric. [AJ] diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index e7a253f235..d7f2f0cf9a 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -606,6 +606,16 @@ OverY=0 [LifeMeterBattery] # The bar that shows up in Oni mode. +# any score below this one will cause you to lose a life. +MinScoreToKeepLife='TapNoteScore_W3' +# how many lives you'll lose upon doing so. +SubtractLives=1 +# how many lives you'll lose hitting a mine +MinesSubtractLives=1 +# how many lives a successful hold will net you. +HeldAddLives=0 +# how many lives an unsuccessful hold will cost you. +LetGoSubtractLives=1 # How long it flashes when you lose a life. BatteryBlinkTime=1.2 @@ -614,7 +624,8 @@ BatteryP1X=-92 BatteryP1Y=2 BatteryP2X=92 BatteryP2Y=2 -# Where your live count is +# Where your life count is +NumLivesFormat="x%d" NumLivesP1X=-92 NumLivesP1Y=0 NumLivesP2X=92 diff --git a/src/LifeMeterBattery.cpp b/src/LifeMeterBattery.cpp index 009d920e50..92049ee2cc 100644 --- a/src/LifeMeterBattery.cpp +++ b/src/LifeMeterBattery.cpp @@ -26,6 +26,13 @@ void LifeMeterBattery::Load( const PlayerState *pPlayerState, PlayerStageStats * const RString sType = "LifeMeterBattery"; PlayerNumber pn = pPlayerState->m_PlayerNumber; + MIN_SCORE_TO_KEEP_LIFE.Load(sType, "MinScoreToKeepLife"); + SUBTRACT_LIVES.Load(sType, "SubtractLives"); + MINES_SUBTRACT_LIVES.Load(sType, "MinesSubtractLives"); + HELD_ADD_LIVES.Load(sType, "HeldAddLives"); + LET_GO_SUBTRACT_LIVES.Load(sType, "LetGoSubtractLives"); + + LIVES_FORMAT.Load(sType, "NumLivesFormat"); BATTERY_BLINK_TIME.Load(sType, "BatteryBlinkTime"); // 1.2f by default bool bPlayerEnabled = GAMESTATE->IsPlayerEnabled( pPlayerState ); @@ -101,42 +108,46 @@ void LifeMeterBattery::OnSongEnded() Refresh(); } +void LifeMeterBattery::SubtractLives( int iLives ) +{ + m_iTrailingLivesLeft = m_iLivesLeft; + m_iLivesLeft -= iLives; + m_soundLoseLife.Play(); + + m_textNumLives.PlayCommand("LoseLife"); + /* + m_textNumLives.SetZoom( 1.5f ); + m_textNumLives.BeginTweening( 0.15f ); + m_textNumLives.SetZoom( 1.0f ); + */ + + Refresh(); + m_fBatteryBlinkTime = BATTERY_BLINK_TIME; +} + +void LifeMeterBattery::AddLives( int iLives ) +{ + m_iTrailingLivesLeft = m_iLivesLeft; + m_iLivesLeft += iLives; + m_soundGainLife.Play(); + m_textNumLives.PlayCommand("GainLife"); + + Refresh(); + m_fBatteryBlinkTime = 0; +} + void LifeMeterBattery::ChangeLife( TapNoteScore score ) { if( m_iLivesLeft == 0 ) return; - // todo: let the themer decide how this is handled. -aj - switch( score ) + // this probably doesn't handle hold checkpoints. -aj + if( score == TNS_HitMine && MINES_SUBTRACT_LIVES > 0 ) + SubtractLives(MINES_SUBTRACT_LIVES); + else { - case TNS_W1: - case TNS_W2: - case TNS_W3: - break; - case TNS_W4: - case TNS_W5: - case TNS_Miss: - case TNS_HitMine: - m_iTrailingLivesLeft = m_iLivesLeft; - m_iLivesLeft--; - m_soundLoseLife.Play(); - - m_textNumLives.PlayCommand("LoseLife"); - /* - m_textNumLives.SetZoom( 1.5f ); - m_textNumLives.BeginTweening( 0.15f ); - m_textNumLives.SetZoom( 1.0f ); - */ - - Refresh(); - m_fBatteryBlinkTime = BATTERY_BLINK_TIME; - break; - default: - break; - /* - // xxx: this doesn't handle hold checkpoints. - ASSERT(0); - */ + if( score < MIN_SCORE_TO_KEEP_LIFE && SUBTRACT_LIVES > 0 ) + SubtractLives(SUBTRACT_LIVES); } Message msg( "LifeChanged" ); @@ -148,16 +159,10 @@ void LifeMeterBattery::ChangeLife( TapNoteScore score ) void LifeMeterBattery::ChangeLife( HoldNoteScore score, TapNoteScore tscore ) { - switch( score ) - { - case HNS_Held: - break; - case HNS_LetGo: - ChangeLife( TNS_Miss ); // LetGo is the same as a miss - break; - default: - ASSERT(0); - } + if( score == HNS_Held && HELD_ADD_LIVES > 0 ) + AddLives(HELD_ADD_LIVES); + if( score == HNS_LetGo && LET_GO_SUBTRACT_LIVES > 0 ) + SubtractLives(LET_GO_SUBTRACT_LIVES); } void LifeMeterBattery::HandleTapScoreNone() @@ -208,7 +213,8 @@ void LifeMeterBattery::Refresh() } else { - m_textNumLives.SetText( ssprintf("x%d", m_iLivesLeft-1) ); + //m_textNumLives.SetText( ssprintf("x%d", m_iLivesLeft-1) ); + m_textNumLives.SetText( ssprintf(LIVES_FORMAT.GetValue(), m_iLivesLeft-1) ); m_sprBattery.SetState( 3 ); } } diff --git a/src/LifeMeterBattery.h b/src/LifeMeterBattery.h index d7b4a90a1d..30ddad877d 100644 --- a/src/LifeMeterBattery.h +++ b/src/LifeMeterBattery.h @@ -37,13 +37,21 @@ public: virtual void PushSelf( lua_State *L ); private: + void SubtractLives( int iLives ); + void AddLives( int iLives ); + int m_iLivesLeft; // dead when 0 int m_iTrailingLivesLeft; // lags m_iLivesLeft float m_fBatteryBlinkTime; // if > 0 battery is blinking - // theme metrics added for sm-ssc ThemeMetric BATTERY_BLINK_TIME; + ThemeMetric MIN_SCORE_TO_KEEP_LIFE; + ThemeMetric SUBTRACT_LIVES; + ThemeMetric MINES_SUBTRACT_LIVES; + ThemeMetric HELD_ADD_LIVES; + ThemeMetric LET_GO_SUBTRACT_LIVES; + ThemeMetric LIVES_FORMAT; AutoActor m_sprFrame; Sprite m_sprBattery; From 24644f3f231a3da1fb9e434b1dc09cb803f8601c Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 01:56:23 -0500 Subject: [PATCH 22/33] add GainLife/LoseLife commands. --- Themes/_fallback/metrics.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index d7f2f0cf9a..fb6c138ac1 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -628,8 +628,12 @@ BatteryP2Y=2 NumLivesFormat="x%d" NumLivesP1X=-92 NumLivesP1Y=0 +NumLivesP1GainLifeCommand= +NumLivesP1LoseLifeCommand=zoom,1.5;linear,0.15;zoom,1 NumLivesP2X=92 NumLivesP2Y=0 +NumLivesP2GainLifeCommand= +NumLivesP2LoseLifeCommand=zoom,1.5;linear,0.15;zoom,1 [LifeMeterBattery Percent] # The percentage on the bar. I wouldn't even bother changing this, because I From 11c84f8c50e10e3aa746e43171239e791918b646 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 02:00:09 -0500 Subject: [PATCH 23/33] [LifeMeterBattery] Added DangerThreshold metric. --- Docs/Changelog_sm5.txt | 1 + Themes/_fallback/metrics.ini | 2 ++ src/LifeMeterBattery.cpp | 20 ++++++++++++-------- src/LifeMeterBattery.h | 1 + 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 26f97b8b44..264971b4ca 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -10,6 +10,7 @@ StepMania 5.0 Preview 2 | 20110??? 2011/06/13 ---------- +* [LifeMeterBattery] Added DangerThreshold metric. [AJ] * [LifeMeterBattery] Added some important metrics. [AJ] * MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life. * SubtractLives=1 - how many lives are lost when going below MinScoreToKeepLife. diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index fb6c138ac1..1a9b00cb5a 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -617,6 +617,8 @@ HeldAddLives=0 # how many lives an unsuccessful hold will cost you. LetGoSubtractLives=1 +# How many lives trigger the "Danger" state. +DangerThreshold=1 # How long it flashes when you lose a life. BatteryBlinkTime=1.2 # Where the batteries are diff --git a/src/LifeMeterBattery.cpp b/src/LifeMeterBattery.cpp index 92049ee2cc..a638420fbf 100644 --- a/src/LifeMeterBattery.cpp +++ b/src/LifeMeterBattery.cpp @@ -27,6 +27,7 @@ void LifeMeterBattery::Load( const PlayerState *pPlayerState, PlayerStageStats * PlayerNumber pn = pPlayerState->m_PlayerNumber; MIN_SCORE_TO_KEEP_LIFE.Load(sType, "MinScoreToKeepLife"); + DANGER_THRESHOLD.Load(sType, "DangerThreshold"); SUBTRACT_LIVES.Load(sType, "SubtractLives"); MINES_SUBTRACT_LIVES.Load(sType, "MinesSubtractLives"); HELD_ADD_LIVES.Load(sType, "HeldAddLives"); @@ -110,16 +111,13 @@ void LifeMeterBattery::OnSongEnded() void LifeMeterBattery::SubtractLives( int iLives ) { + if( iLives <= 0 ) + return; + m_iTrailingLivesLeft = m_iLivesLeft; m_iLivesLeft -= iLives; m_soundLoseLife.Play(); - m_textNumLives.PlayCommand("LoseLife"); - /* - m_textNumLives.SetZoom( 1.5f ); - m_textNumLives.BeginTweening( 0.15f ); - m_textNumLives.SetZoom( 1.0f ); - */ Refresh(); m_fBatteryBlinkTime = BATTERY_BLINK_TIME; @@ -127,6 +125,9 @@ void LifeMeterBattery::SubtractLives( int iLives ) void LifeMeterBattery::AddLives( int iLives ) { + if( iLives <= 0 ) + return; + m_iTrailingLivesLeft = m_iLivesLeft; m_iLivesLeft += iLives; m_soundGainLife.Play(); @@ -159,6 +160,9 @@ void LifeMeterBattery::ChangeLife( TapNoteScore score ) void LifeMeterBattery::ChangeLife( HoldNoteScore score, TapNoteScore tscore ) { + if( m_iLivesLeft == 0 ) + return; + if( score == HNS_Held && HELD_ADD_LIVES > 0 ) AddLives(HELD_ADD_LIVES); if( score == HNS_LetGo && LET_GO_SUBTRACT_LIVES > 0 ) @@ -176,12 +180,12 @@ void LifeMeterBattery::ChangeLife( float fDeltaLifePercent ) bool LifeMeterBattery::IsInDanger() const { - return false; + return m_iLivesLeft < DANGER_THRESHOLD; } bool LifeMeterBattery::IsHot() const { - return false; + return m_iLivesLeft == GAMESTATE->m_SongOptions.GetSong().m_iBatteryLives; } bool LifeMeterBattery::IsFailing() const diff --git a/src/LifeMeterBattery.h b/src/LifeMeterBattery.h index 30ddad877d..a6d50a0319 100644 --- a/src/LifeMeterBattery.h +++ b/src/LifeMeterBattery.h @@ -47,6 +47,7 @@ private: ThemeMetric BATTERY_BLINK_TIME; ThemeMetric MIN_SCORE_TO_KEEP_LIFE; + ThemeMetric DANGER_THRESHOLD; ThemeMetric SUBTRACT_LIVES; ThemeMetric MINES_SUBTRACT_LIVES; ThemeMetric HELD_ADD_LIVES; From 0488193b6e083feca81cc4439d32d86b2c2f4d26 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 13 Jun 2011 03:43:20 -0400 Subject: [PATCH 24/33] *shrugs* May as well try this. --- src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp index 86f2e25a5f..edc722fcb0 100644 --- a/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp +++ b/src/arch/LoadingWindow/LoadingWindow_GtkModule.cpp @@ -62,7 +62,7 @@ extern "C" void SetProgress( int progress, int totalWork ) extern "C" void SetIndeterminate( bool indeterminate ) { - gtk_progress_bar_pulse(); + gtk_progress_bar_pulse(GTK_PROGRESS_BAR(progressBar)); gtk_main_iteration_do(FALSE); } From d8e1296b5b6cc5f5203e4283ba894da2bf17e5b5 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 13:32:28 -0500 Subject: [PATCH 25/33] [LifeMeterBattery] Added ChangeLives(int) Lua binding. --- Docs/Changelog_sm5.txt | 1 + src/LifeMeterBattery.cpp | 11 ++++++++++- src/LifeMeterBattery.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 264971b4ca..cbfd608628 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -10,6 +10,7 @@ StepMania 5.0 Preview 2 | 20110??? 2011/06/13 ---------- +* [LifeMeterBattery] Added ChangeLives(int) Lua binding. [AJ] * [LifeMeterBattery] Added DangerThreshold metric. [AJ] * [LifeMeterBattery] Added some important metrics. [AJ] * MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life. diff --git a/src/LifeMeterBattery.cpp b/src/LifeMeterBattery.cpp index a638420fbf..20f42ff4e7 100644 --- a/src/LifeMeterBattery.cpp +++ b/src/LifeMeterBattery.cpp @@ -137,6 +137,14 @@ void LifeMeterBattery::AddLives( int iLives ) m_fBatteryBlinkTime = 0; } +void LifeMeterBattery::ChangeLives(int iLifeDiff) +{ + if( iLifeDiff < 0 ) + SubtractLives( abs(iLifeDiff) ); + else if( iLifeDiff > 0 ) + AddLives(iLifeDiff); +} + void LifeMeterBattery::ChangeLife( TapNoteScore score ) { if( m_iLivesLeft == 0 ) @@ -254,13 +262,14 @@ class LunaLifeMeterBattery: public Luna { public: static int GetLivesLeft( T* p, lua_State *L ) { lua_pushnumber( L, p->GetLivesLeft() ); return 1; } - // is this right? wtf -q2x static int GetTotalLives( T* p, lua_State *L ) { lua_pushnumber( L, GAMESTATE->m_SongOptions.GetSong().m_iBatteryLives ); return 1; } + static int ChangeLives( T* p, lua_State *L ) { p->ChangeLives(IArg(1)); return 0; } LunaLifeMeterBattery() { ADD_METHOD( GetLivesLeft ); ADD_METHOD( GetTotalLives ); + ADD_METHOD( ChangeLives ); } }; diff --git a/src/LifeMeterBattery.h b/src/LifeMeterBattery.h index a6d50a0319..648811a9fc 100644 --- a/src/LifeMeterBattery.h +++ b/src/LifeMeterBattery.h @@ -32,6 +32,7 @@ public: void Refresh(); int GetLivesLeft() { return m_iLivesLeft; } + void ChangeLives(int iLifeDiff); // Lua virtual void PushSelf( lua_State *L ); From 6e19262e2929e81037cb50f798f07438782080f3 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 13:39:37 -0500 Subject: [PATCH 26/33] fix this ScreenString debacle once and for all --- Themes/_fallback/Scripts/01 alias.lua | 10 +--------- Themes/_fallback/Scripts/01 compat.lua | 9 --------- Themes/_fallback/Scripts/02 Other.lua | 2 ++ 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/Themes/_fallback/Scripts/01 alias.lua b/Themes/_fallback/Scripts/01 alias.lua index e0e3841f07..05935425bf 100644 --- a/Themes/_fallback/Scripts/01 alias.lua +++ b/Themes/_fallback/Scripts/01 alias.lua @@ -20,12 +20,4 @@ local _screen = { h = SCREEN_HEIGHT, cx = SCREEN_CENTER_X, cy = SCREEN_CENTER_Y -} - -if Screen.String then - ScreenString = Screen.String -end - -if Screen.Metric then - ScreenMetric = Screen.Metric -end \ No newline at end of file +} \ No newline at end of file diff --git a/Themes/_fallback/Scripts/01 compat.lua b/Themes/_fallback/Scripts/01 compat.lua index 36b5327aa2..4103cc9dbc 100644 --- a/Themes/_fallback/Scripts/01 compat.lua +++ b/Themes/_fallback/Scripts/01 compat.lua @@ -56,15 +56,6 @@ function ActorScroller:setfastcatchup(bFastCatchup) self:SetFastCatchup(bFastCatchup) end --- renaming various StepMania functions to sm-ssc ones: -if ScreenString then - ScreenString = Screen.String -end - -if ScreenMetric then - ScreenMetric = Screen.Metric -end - --[[ GameState ]] --Aliases for old GAMESTATE timing functions. --These have been converted to SongPosition, but most themes still use these old functions. diff --git a/Themes/_fallback/Scripts/02 Other.lua b/Themes/_fallback/Scripts/02 Other.lua index ea544d1dd4..91f81f06e1 100644 --- a/Themes/_fallback/Scripts/02 Other.lua +++ b/Themes/_fallback/Scripts/02 Other.lua @@ -102,11 +102,13 @@ Screen.Metric = function ( sName ) local sClass = Var "LoadingScreen" return THEME:GetMetric( sClass, sName ) end +ScreenMetric = Screen.Metric Screen.String = function ( sName ) local sClass = Var "LoadingScreen"; return THEME:GetString( sClass, sName ) end +ScreenString = Screen.String function TextBannerAfterSet(self,param) local Title=self:GetChild("Title"); From 7a16ba9c0f4d51408583b409ead37760bbf75512 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 13 Jun 2011 14:48:15 -0400 Subject: [PATCH 27/33] Add two new noteskin metrics. This properly resolves bug tracker issue 190. --- Docs/Changelog_sm5.txt | 5 +++ NoteSkins/common/common/metrics.ini | 2 ++ src/NoteDisplay.cpp | 47 ++++++++++++++++++++++++++++- src/NoteDisplay.h | 24 +++++++++++++-- src/NoteField.cpp | 23 ++++++++++++-- 5 files changed, 96 insertions(+), 5 deletions(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 264971b4ca..bac154e0ab 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -10,6 +10,11 @@ StepMania 5.0 Preview 2 | 20110??? 2011/06/13 ---------- +* [NoteDisplay] Add two new metrics. + * DrawRollHeadForTapsOnSameRow: bool, similar to DrawHoldHeadForTapsOnSameRow + * TapHoldRollOnRowMeansHold: bool, true means hold and false means roll + * No noteskins should require updating, as these were placed in common/common + for ease of use. [Wolfman2000] * [LifeMeterBattery] Added DangerThreshold metric. [AJ] * [LifeMeterBattery] Added some important metrics. [AJ] * MinScoreToKeepLife='TapNoteScore_*' - any score below this = loss of life. diff --git a/NoteSkins/common/common/metrics.ini b/NoteSkins/common/common/metrics.ini index 619f75b3f6..6c9f3f4e31 100644 --- a/NoteSkins/common/common/metrics.ini +++ b/NoteSkins/common/common/metrics.ini @@ -1,5 +1,7 @@ [NoteDisplay] DrawHoldHeadForTapsOnSameRow=1 +DrawRollHeadForTapsOnSameRow=1 +TapHoldRollOnRowMeansHold=1 AnimationIsBeatBased=1 TapNoteAnimationLength=1 TapMineAnimationLength=1 diff --git a/src/NoteDisplay.cpp b/src/NoteDisplay.cpp index a5c530bd73..9695fd09e9 100644 --- a/src/NoteDisplay.cpp +++ b/src/NoteDisplay.cpp @@ -46,6 +46,8 @@ static const NoteType MAX_DISPLAY_NOTE_TYPE = (NoteType)7; struct NoteMetricCache_t { bool m_bDrawHoldHeadForTapsOnSameRow; + bool m_bDrawRollHeadForTapsOnSameRow; + bool m_bTapHoldRollOnRowMeansHold; float m_fAnimationLength[NUM_NotePart]; bool m_bAnimationIsVivid[NUM_NotePart]; RageVector2 m_fAdditionTextureCoordOffset[NUM_NotePart]; @@ -69,6 +71,8 @@ struct NoteMetricCache_t void NoteMetricCache_t::Load( const RString &sButton ) { m_bDrawHoldHeadForTapsOnSameRow = NOTESKIN->GetMetricB(sButton,"DrawHoldHeadForTapsOnSameRow"); + m_bDrawRollHeadForTapsOnSameRow = NOTESKIN->GetMetricB(sButton,"DrawRollHeadForTapsOnSameRow"); + m_bTapHoldRollOnRowMeansHold = NOTESKIN->GetMetricB(sButton,"TapHoldRollOnRowMeansHold"); FOREACH_NotePart( p ) { const RString &s = NotePartToString(p); @@ -271,6 +275,11 @@ bool NoteDisplay::DrawHoldHeadForTapsOnSameRow() const return cache->m_bDrawHoldHeadForTapsOnSameRow; } +bool NoteDisplay::DrawRollHeadForTapsOnSameRow() const +{ + return cache->m_bDrawRollHeadForTapsOnSameRow; +} + void NoteDisplay::Update( float fDeltaTime ) { /* This function is static: it's called once per game loop, not once per @@ -718,7 +727,13 @@ void NoteDisplay::DrawActor( const TapNote& tn, Actor* pActor, NotePart part, in } } -void NoteDisplay::DrawTap( const TapNote& tn, int iCol, float fBeat, bool bOnSameRowAsHoldStart, bool bIsAddition, float fPercentFadeToFail, float fReverseOffsetPixels, float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar ) +void NoteDisplay::DrawTap(const TapNote& tn, int iCol, float fBeat, + bool bOnSameRowAsHoldStart, bool bOnSameRowAsRollStart, + bool bIsAddition, float fPercentFadeToFail, + float fReverseOffsetPixels, + float fDrawDistanceAfterTargetsPixels, + float fDrawDistanceBeforeTargetsPixels, + float fFadeInPercentOfDrawFar) { Actor* pActor = NULL; NotePart part = NotePart_Tap; @@ -738,10 +753,40 @@ void NoteDisplay::DrawTap( const TapNote& tn, int iCol, float fBeat, bool bOnSam pActor = GetTapActor( m_TapFake, NotePart_Fake, fBeat ); part = NotePart_Fake; } + // TODO: Simplify all of the below. + else if (bOnSameRowAsHoldStart && bOnSameRowAsRollStart) + { + if (cache->m_bDrawHoldHeadForTapsOnSameRow && cache->m_bDrawRollHeadForTapsOnSameRow) + { + if (cache->m_bTapHoldRollOnRowMeansHold) // another new metric? + { + pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, false, false ); + } + else + { + pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, true, false ); + } + } + else if (cache->m_bDrawHoldHeadForTapsOnSameRow) + { + pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, false, false ); + } + else if (cache->m_bDrawRollHeadForTapsOnSameRow) + { + pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, true, false ); + } + } + else if( bOnSameRowAsHoldStart && cache->m_bDrawHoldHeadForTapsOnSameRow ) { pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, false, false ); } + + else if( bOnSameRowAsRollStart && cache->m_bDrawRollHeadForTapsOnSameRow ) + { + pActor = GetHoldActor( m_HoldHead, NotePart_HoldHead, fBeat, true, false ); + } + else { pActor = GetTapActor( m_TapNote, NotePart_Tap, fBeat ); diff --git a/src/NoteDisplay.h b/src/NoteDisplay.h index 8f79041e17..a7e45f3f62 100644 --- a/src/NoteDisplay.h +++ b/src/NoteDisplay.h @@ -80,13 +80,33 @@ public: static void Update( float fDeltaTime ); - void DrawTap( const TapNote& tn, int iCol, float fBeat, bool bOnSameRowAsHoldStart, bool bIsAddition, - float fPercentFadeToFail, float fReverseOffsetPixels, float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels, float fFadeInPercentOfDrawFar ); + /** + * @brief Draw the TapNote onto the NoteField. + * @param tn the TapNote in question. + * @param iCol the column. + * @param float fBeat the beat to draw them on. + * @param bOnSameRowAsHoldStart a flag to see if a hold is on the same beat. + * @param bOnSameRowAsRollStart a flag to see if a roll is on the same beat. + * @param bIsAddition a flag to see if this note was added via mods. + * @param fPercentFadeToFail at what point do the notes fade on failure? + * @param fReverseOffsetPixels How are the notes adjusted on Reverse? + * @param fDrawDistanceAfterTargetsPixels how much to draw after the receptors. + * @param fDrawDistanceBeforeTargetsPixels how much ot draw before the receptors. + * @param fFadeInPercentOfDrawFar when to start fading in. */ + void DrawTap(const TapNote& tn, int iCol, float fBeat, + bool bOnSameRowAsHoldStart, bool bOnSameRowAsRollBeat, + bool bIsAddition, float fPercentFadeToFail, + float fReverseOffsetPixels, + float fDrawDistanceAfterTargetsPixels, + float fDrawDistanceBeforeTargetsPixels, + float fFadeInPercentOfDrawFar ); void DrawHold( const TapNote& tn, int iCol, int iRow, bool bIsBeingHeld, const HoldNoteResult &Result, bool bIsAddition, float fPercentFadeToFail, float fReverseOffsetPixels, float fDrawDistanceAfterTargetsPixels, float fDrawDistanceBeforeTargetsPixels, float fDrawDistanceBeforeTargetsPixels2, float fFadeInPercentOfDrawFar ); bool DrawHoldHeadForTapsOnSameRow() const; + + bool DrawRollHeadForTapsOnSameRow() const; private: void SetActiveFrame( float fNoteBeat, Actor &actorToSet, float fAnimationLength, bool bVivid ); diff --git a/src/NoteField.cpp b/src/NoteField.cpp index 3795881eb7..70faf81a5f 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -1260,13 +1260,31 @@ void NoteField::DrawPrimitives() { for( int c2=0; c2GetNumTracks(); c2++ ) { - if( m_pNoteData->GetTapNote(c2, q).type == TapNote::hold_head) + const TapNote &tmp = m_pNoteData->GetTapNote(c2, q); + if(tmp.type == TapNote::hold_head && + tmp.subType == TapNote::hold_head_hold) { bHoldNoteBeginsOnThisBeat = true; break; } } } + + // do the same for a roll. + bool bRollNoteBeginsOnThisBeat = false; + if (m_pCurDisplay->display[c].DrawRollHeadForTapsOnSameRow() ) + { + for( int c2=0; c2GetNumTracks(); c2++ ) + { + const TapNote &tmp = m_pNoteData->GetTapNote(c2, q); + if(tmp.type == TapNote::hold_head && + tmp.subType == TapNote::hold_head_roll) + { + bRollNoteBeginsOnThisBeat = true; + break; + } + } + } bool bIsInSelectionRange = false; if( m_iBeginMarker!=-1 && m_iEndMarker!=-1 ) @@ -1276,7 +1294,8 @@ void NoteField::DrawPrimitives() bool bIsHopoPossible = (tn.bHopoPossible); bool bUseAdditionColoring = bIsAddition || bIsHopoPossible; NoteDisplayCols *displayCols = tn.pn == PLAYER_INVALID ? m_pCurDisplay : m_pDisplays[tn.pn]; - displayCols->display[c].DrawTap( tn, c, NoteRowToVisibleBeat(m_pPlayerState, q), bHoldNoteBeginsOnThisBeat, + displayCols->display[c].DrawTap(tn, c, NoteRowToVisibleBeat(m_pPlayerState, q), + bHoldNoteBeginsOnThisBeat, bRollNoteBeginsOnThisBeat, bUseAdditionColoring, bIsInSelectionRange ? fSelectedRangeGlow : m_fPercentFadeToFail, m_fYReverseOffsetPixels, iDrawDistanceAfterTargetsPixels, iDrawDistanceBeforeTargetsPixels, FADE_BEFORE_TARGETS_PERCENT ); From a72241666de172ff8d45f9a673c5dc1974e4bda1 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 13 Jun 2011 15:00:21 -0400 Subject: [PATCH 28/33] Ensure AutoPlay doesn't cause ANY combo increase. AutoPlayCPU can, however. --- src/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Player.cpp b/src/Player.cpp index db17f00e07..0fc3e02522 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -2868,7 +2868,7 @@ void Player::CrossedRows( int iLastRowCrossed, const RageTimer &now ) /* Update hold checkpoints * * TODO: Move this to a separate function. */ - if( HOLD_CHECKPOINTS ) + if( HOLD_CHECKPOINTS && m_pPlayerState->m_PlayerController != PC_AUTOPLAY ) { int iCheckpointFrequencyRows = ROWS_PER_BEAT/2; if( CHECKPOINTS_USE_TICKCOUNTS ) From 1a0bad45cf92101b5efc96d847c9b88e0e67aeb9 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 14:32:35 -0500 Subject: [PATCH 29/33] stepmania 5 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 7917055408..dbf0199dca 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.59) -AC_INIT(sm-ssc, experimental, [http://ssc.ajworld.net/sm-ssc/], StepMania) +AC_INIT(StepMania 5, experimental, [http://ssc.ajworld.net/sm-ssc/], StepMania) AC_CONFIG_SRCDIR([src/StepMania.cpp]) AC_CONFIG_AUX_DIR(autoconf) AC_CANONICAL_TARGET From fed3c9bf2cb1addada1fcd151b2b01910ec7080a Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 13 Jun 2011 16:08:28 -0400 Subject: [PATCH 30/33] NumLock becomes Hyphen. P2 gains Back Button. This should alleviate some issues. --- Docs/Changelog_sm5.txt | 4 ++++ src/InputMapper.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 7f7f8273a7..518cb7c920 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -10,6 +10,10 @@ StepMania 5.0 Preview 2 | 20110??? 2011/06/13 ---------- +* [InputMapper] Modify default mappings. Use the Hyphen key instead of the + Numlock key for Player 2's GAME_BUTTON_BACK. This should address some + issues with Player 2 being unable to back out if they use a laptop. + [Wolfman2000] * [NoteDisplay] Add two new metrics. * DrawRollHeadForTapsOnSameRow: bool, similar to DrawHoldHeadForTapsOnSameRow * TapHoldRollOnRowMeansHold: bool, true means hold and false means roll diff --git a/src/InputMapper.cpp b/src/InputMapper.cpp index 90e65ae879..1b0a71e77c 100644 --- a/src/InputMapper.cpp +++ b/src/InputMapper.cpp @@ -64,7 +64,7 @@ static const AutoMappings g_DefaultKeyMappings = AutoMappings( AutoMappingEntry( 0, KEY_KP_C2, GAME_BUTTON_MENUDOWN, true ), AutoMappingEntry( 0, KEY_KP_ENTER, GAME_BUTTON_START, true ), AutoMappingEntry( 0, KEY_KP_C0, GAME_BUTTON_SELECT, true ), - AutoMappingEntry( 0, KEY_NUMLOCK, GAME_BUTTON_BACK, true ), + AutoMappingEntry( 0, KEY_HYPHEN, GAME_BUTTON_BACK, true ), // laptop keyboards. AutoMappingEntry( 0, KEY_F1, GAME_BUTTON_COIN, false ), AutoMappingEntry( 0, KEY_SCRLLOCK, GAME_BUTTON_OPERATOR, false ) ); From cd9c8e97d25495c521cca0501d3fbe9741b66e61 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 15:47:11 -0500 Subject: [PATCH 31/33] [ScreenTextEntry] Make it so only the keyboard's Enter key can finish the screen. Should fix issues with buttons whose secondary function is MenuStart. --- Docs/Changelog_sm5.txt | 2 ++ src/ScreenTextEntry.cpp | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 518cb7c920..bf62e25f8c 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -10,6 +10,8 @@ StepMania 5.0 Preview 2 | 20110??? 2011/06/13 ---------- +* [ScreenTextEntry] Make it so only the keyboard's Enter key can finish the + screen. Should fix issues with buttons whose secondary function is MenuStart. [AJ] * [InputMapper] Modify default mappings. Use the Hyphen key instead of the Numlock key for Player 2's GAME_BUTTON_BACK. This should address some issues with Player 2 being unable to back out if they use a laptop. diff --git a/src/ScreenTextEntry.cpp b/src/ScreenTextEntry.cpp index 994e0fc7a8..ee5fa14164 100644 --- a/src/ScreenTextEntry.cpp +++ b/src/ScreenTextEntry.cpp @@ -258,7 +258,8 @@ void ScreenTextEntry::BackspaceInAnswer() void ScreenTextEntry::MenuStart( const InputEventPlus &input ) { - if( input.type==IET_FIRST_PRESS ) + // HACK: Only allow the screen to end on the Enter key.-aj + if( input.DeviceI == DeviceInput(DEVICE_KEYBOARD, KEY_ENTER) && input.type==IET_FIRST_PRESS ) End( false ); } From 6d29e63095a2d3ea0f48c730fe0797519525f9cf Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 15:50:55 -0500 Subject: [PATCH 32/33] add missing routine stuff, plus some freem voodoo for icon positioning. --- Themes/_fallback/metrics.ini | 1 + Themes/default/Graphics/_SelectIcon Routine.png | Bin 0 -> 5527 bytes Themes/default/metrics.ini | 13 +++++++++---- 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 Themes/default/Graphics/_SelectIcon Routine.png diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 1a9b00cb5a..e14fd53744 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1834,6 +1834,7 @@ ChoiceDouble="name,Double;style,double;text,Double;screen,"..Branch.AfterSelectP ChoiceSolo="name,Solo;style,solo;text,Solo;screen,"..Branch.AfterSelectPlayMode() ChoiceVersus="name,Versus;style,versus;text,Versus;screen,"..Branch.AfterSelectPlayMode() ChoiceCouple="name,Couple;style,couple;text,Couple;screen,"..Branch.AfterSelectPlayMode() +ChoiceRoutine="name,Routine;style,routine;text,Routine;screen,"..Branch.AfterSelectPlayMode() ChoiceHalfDouble="name,HalfDouble;style,halfdouble;text,HalfDouble;screen,"..Branch.AfterSelectPlayMode() Choice5Keys="name,5Keys;style,single5;text,5Keys;screen,"..Branch.AfterSelectPlayMode() Choice7Keys="name,7Keys;style,single7;text,7Keys;screen,"..Branch.AfterSelectPlayMode() diff --git a/Themes/default/Graphics/_SelectIcon Routine.png b/Themes/default/Graphics/_SelectIcon Routine.png new file mode 100644 index 0000000000000000000000000000000000000000..27323219314aba46259645bf69ce6f0ec866de62 GIT binary patch literal 5527 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 Z{|8xcw|a7RS%?4t002ovPDHLkV1js4pV9yT literal 0 HcmV?d00001 diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 85ecd68ca8..12844adf17 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -705,7 +705,7 @@ IconChoiceDoubleX=SCREEN_CENTER_X-160 IconChoiceDoubleY=SCREEN_CENTER_Y IconChoiceDoubleOnCommand=zoom,0;bounceend,0.35;zoom,1 IconChoiceDoubleOffCommand=linear,0.1175;zoomx,0 -# +#### IconChoiceSoloX=SCREEN_CENTER_X-160 IconChoiceSoloY=SCREEN_CENTER_Y+96 IconChoiceSoloOnCommand=zoom,0;bounceend,0.35;zoom,1 @@ -715,17 +715,22 @@ IconChoiceHalfDoubleX=SCREEN_CENTER_X-160 IconChoiceHalfDoubleY=SCREEN_CENTER_Y+96 IconChoiceHalfDoubleOnCommand=zoom,0;bounceend,0.35;zoom,1 IconChoiceHalfDoubleOffCommand=linear,0.1175;zoomx,0 -# +#### IconChoiceVersusX=SCREEN_CENTER_X+160 -IconChoiceVersusY=SCREEN_CENTER_Y-48 +IconChoiceVersusY=string.find(THEME:GetMetric("ScreenSelectStyle","ChoiceNames"),"Routine") and SCREEN_CENTER_Y-96 or SCREEN_CENTER_Y-48 IconChoiceVersusOnCommand=zoom,0;bounceend,0.35;zoom,1 IconChoiceVersusOffCommand=linear,0.1175;zoomx,0 # IconChoiceCoupleX=SCREEN_CENTER_X+160 -IconChoiceCoupleY=SCREEN_CENTER_Y+48 +IconChoiceCoupleY=string.find(THEME:GetMetric("ScreenSelectStyle","ChoiceNames"),"Routine") and SCREEN_CENTER_Y or SCREEN_CENTER_Y+48 IconChoiceCoupleOnCommand=zoom,0;bounceend,0.35;zoom,1 IconChoiceCoupleOffCommand=linear,0.1175;zoomx,0 # +IconChoiceRoutineX=SCREEN_CENTER_X+160 +IconChoiceRoutineY=SCREEN_CENTER_Y+96 +IconChoiceRoutineOnCommand=zoom,0;bounceend,0.35;zoom,1 +IconChoiceRoutineOffCommand=linear,0.1175;zoomx,0 +# IconChoicekb7X=SCREEN_CENTER_X IconChoicekb7Y=SCREEN_CENTER_Y IconChoicekb7OnCommand=zoom,0;bounceend,0.35;zoom,1 From 9b60587be96c6322a5947533e9ad07dbadf65487 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 13 Jun 2011 17:37:13 -0500 Subject: [PATCH 33/33] [InputHandler_DirectInput] Fixed MouseWheel input not resetting. --- Docs/Changelog_sm5.txt | 1 + src/arch/InputHandler/InputHandler_DirectInput.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index bf62e25f8c..874e230a6e 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -10,6 +10,7 @@ StepMania 5.0 Preview 2 | 20110??? 2011/06/13 ---------- +* [InputHandler_DirectInput] Fixed MouseWheel input not resetting. [AJ] * [ScreenTextEntry] Make it so only the keyboard's Enter key can finish the screen. Should fix issues with buttons whose secondary function is MenuStart. [AJ] * [InputMapper] Modify default mappings. Use the Hyphen key instead of the diff --git a/src/arch/InputHandler/InputHandler_DirectInput.cpp b/src/arch/InputHandler/InputHandler_DirectInput.cpp index 9817a88d0d..42d8387441 100644 --- a/src/arch/InputHandler/InputHandler_DirectInput.cpp +++ b/src/arch/InputHandler/InputHandler_DirectInput.cpp @@ -384,6 +384,10 @@ void InputHandler_DInput::UpdatePolled( DIDevice &device, const RageTimer &tm ) if( hr == DIERR_INPUTLOST || hr == DIERR_NOTACQUIRED ) return; + // reset mousewheel + ButtonPressed( DeviceInput(device.dev, MOUSE_WHEELUP, 0, tm) ); + ButtonPressed( DeviceInput(device.dev, MOUSE_WHEELDOWN, 0, tm) ); + for( unsigned i = 0; i < device.Inputs.size(); ++i ) { const input_t &in = device.Inputs[i]; @@ -476,6 +480,12 @@ void InputHandler_DInput::UpdateBuffered( DIDevice &device, const RageTimer &tm return; } + // reset mousewheel + DeviceInput diUp = DeviceInput(device.dev, MOUSE_WHEELUP, 0.0f, tm); + ButtonPressed( diUp ); + DeviceInput diDown = DeviceInput(device.dev, MOUSE_WHEELDOWN, 0.0f, tm); + ButtonPressed( diDown ); + for( int i = 0; i < (int) numevents; ++i ) { for(unsigned j = 0; j < device.Inputs.size(); ++j) @@ -522,6 +532,7 @@ void InputHandler_DInput::UpdateBuffered( DIDevice &device, const RageTimer &tm GetCursorPos(&cursorPos); // convert screen coordinates to client ScreenToClient(GraphicsWindow::GetHwnd(), &cursorPos); + switch(in.ofs) { case DIMOFS_X: