From ecc75b60f964d98e9d1fec37ac731bc48664b034 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Sun, 5 Jun 2011 10:45:50 -0400 Subject: [PATCH 01/14] Let's try to make the FN key recognized! I'm DeceasedCrabWolfman2000, huzzah! --- src/RageInputDevice.cpp | 2 ++ src/RageInputDevice.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/RageInputDevice.cpp b/src/RageInputDevice.cpp index 084a1ed9e5..544943bf84 100644 --- a/src/RageInputDevice.cpp +++ b/src/RageInputDevice.cpp @@ -63,6 +63,8 @@ static void InitNames() g_mapNamesToString[KEY_LSUPER] = "left super"; g_mapNamesToString[KEY_RSUPER] = "right super"; g_mapNamesToString[KEY_MENU] = "menu"; + + g_mapNamesToString[KEY_FN] = "function"; g_mapNamesToString[KEY_NUMLOCK] = "num lock"; g_mapNamesToString[KEY_SCRLLOCK] = "scroll lock"; diff --git a/src/RageInputDevice.h b/src/RageInputDevice.h index a81401e6a3..c8591b202f 100644 --- a/src/RageInputDevice.h +++ b/src/RageInputDevice.h @@ -221,6 +221,8 @@ enum DeviceButton KEY_LSUPER, KEY_RSUPER, KEY_MENU, + + KEY_FN, // Laptop function keys. KEY_NUMLOCK, KEY_SCRLLOCK, From 6b3057e3fb5f43817ecb0ba44a573d30a6b9ab55 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 5 Jun 2011 13:43:56 -0500 Subject: [PATCH 02/14] work on stepstype icons some --- .../Graphics/_StepsType/Dance_Double.png | Bin 174 -> 317 bytes .../default/Graphics/_StepsType/Pump_Double.png | Bin 194 -> 338 bytes .../Graphics/_StepsType/Techno_Double4.png | Bin 179 -> 284 bytes .../Graphics/_StepsType/Techno_Double5.png | Bin 194 -> 295 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Themes/default/Graphics/_StepsType/Dance_Double.png b/Themes/default/Graphics/_StepsType/Dance_Double.png index 06440ad36d5f5803afa7e28857cd725e3f7dce58..8eb15da47d1d5ca6dc1ec5e121acb44ab6de985f 100644 GIT binary patch delta 302 zcmV+}0nz@h0lfl{7=H)@0002tMXn71002BtOjJbx007R;&QMTLfB;3<*x1a>%)7h0 z(9qD_+}r>Ifd2rD0095s;NWN|ODHO6P9IqC@bJLE!2F2Eh@sgV8sQSTz~s+V;%#8@bn0SU5uSU zD{LiXO7dP5LHZHO6(}ZImO&SXkRc4ZI1@qeE(n%Xpcvyz1$4Qf$%Le+fG!u1csgd| z6hW5@NIcD-RhhSfE*C7QutF%8cNr(r;X(+t3;SwvAyZYc52+C--d(vTB!9Afo|>6e zz`mNAYkHUBLML<0{>;C)CWC!=&71x;pFhA8UldCd(4&|r&;S4c07*qoM6N<$f+2^5 AegFUf delta 158 zcmdnXw2pCtL_G^L0|SG~R%ad{#UJ1k;tHg};QxUG2mUiKycKA)1o9b6g8YIR9G=}s z19E&lT^vIy;`W|D$jP9ba=+Nw<{)c5UHx3vIVCg! E05>r<9RL6T diff --git a/Themes/default/Graphics/_StepsType/Pump_Double.png b/Themes/default/Graphics/_StepsType/Pump_Double.png index 4d60abdb894ac926ebef311e1d6318a08b5933de..50113c23ead728933b9f59ea99342449d7693396 100644 GIT binary patch delta 323 zcmV-J0lfag0n!4H7=H)@0002tMXn71002l(OjJbx003M~JWxxsXli1}QD)!Q$LcV1NcLgm7;H zi~BUlLKE;?V2i>=l>p!3Q2fjX5oRU8w>T7M1TX~n7Kb!|A;+;95?_Z|93G0iU0o@QW^3+fPBW1AirP+ zhi5m^fSfo_7srr_xVh&payA(7v?LZb7c;H(yKviKlhe0&*F%lDC!^n~e%Slx=B01n z-iu7w)6o2+!Axz(Nj?QX#woFk4o#Zc9mnt3`e_4s2hRxkL>^53#?%qakSgAxI%9LD Z{DP;({W}(!PypZn|Nj8HySvWL&dkir*x1<6(9qo6+~DBg z@bK`!z`y|i03BM-umAu60d!JMQvg8b*k%9#0H8@kK~#8Nz0bW3!axj$Vc38qAbzA2 zcmw1KkURp(1gBKAQL@0zK*0n|zyeIbM10>F!HM*^d8MbZJ$akVy!gz*;WnNs)dTW| zYafd50EQTLmv~fF1`wODy|)B}&~}gYm;fP|*``Ur_}W!>CLn~T$kL2}5JV(f>rjjA zaTw!J0&pLa!4Q7{_c6YffcqH#mSASgzrN*U-#X-LC-VZ@$4VR{j#~Tx0000Q2zh`0095HySvWL&i?_x%*@Q#*x1m}(A?bI z;NalEz`*eE@b3A0zW@LL0d!JMQvg8b*k%9#0INwvK~#8NWzM?|!axuNQ0M^jk@!Sx z2WTrm+7dXqgR20^2`Q3Y!1X{v1H=?TIn4N0oX%`A(hFvG_J4Qt=68z>B64`7GonCK zF2hpf_!=&Z0?+%khCWRo1qaR&+V1V(ZD!_xwt5zAd@RPu0HAIEX$c4d+P1?82m;!6 zVFX5=-E=nsf}pBvGXlb)nkB4MPxy~f0RPp{rwOFsz*z$R%fKU;S%GSHdSCAeNySW1 SMDG9q002ovP6b4+LSTYkAbha^ delta 166 zcmZ3^bck_+O1)5kPlzi61H*v>2Y}>%AZGagpYede_0PFLCSysEUoeBivm0qZPMoKU zV@O5Z+;bN>8w_|_5(}G)nb!JUxb3jX>07+(p~l>k(eG40?EQ1|(zkE#MJDWNXnxXQ zrnciGpMoFblvqZGCQa>*<9BR9oP%eCd?F7fe`AvG2xdqX?@*nwIa7YYQ{(;}i%dZF OGI+ZBxvX Date: Sun, 5 Jun 2011 13:45:57 -0500 Subject: [PATCH 03/14] remove unused --- .../Graphics/ScreenTitleMenu logo/_multi.png | Bin 15806 -> 0 bytes .../Graphics/ScreenTitleMenu logo/_text.png | Bin 13664 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Themes/default/Graphics/ScreenTitleMenu logo/_multi.png delete mode 100644 Themes/default/Graphics/ScreenTitleMenu logo/_text.png diff --git a/Themes/default/Graphics/ScreenTitleMenu logo/_multi.png b/Themes/default/Graphics/ScreenTitleMenu logo/_multi.png deleted file mode 100644 index 35a26da8e232a0d1bf905c78e97bd5fa5c6e249c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15806 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ⅆ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 Date: Sun, 5 Jun 2011 13:46:34 -0500 Subject: [PATCH 04/14] more removal of unused stuff, this time in the animation --- .../Graphics/ScreenTitleMenu logo/default.lua | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/Themes/default/Graphics/ScreenTitleMenu logo/default.lua b/Themes/default/Graphics/ScreenTitleMenu logo/default.lua index c44247f181..d15b1bc77c 100644 --- a/Themes/default/Graphics/ScreenTitleMenu logo/default.lua +++ b/Themes/default/Graphics/ScreenTitleMenu logo/default.lua @@ -3,21 +3,6 @@ -- this file are in metrics.ini ([ScreenTitleMenu] ShowLogo, etc.) local t = Def.ActorFrame{ -- [BGAnimation] LoadActor("_logo"); -- [Layer1] Type=0 File=_ball.png - LoadActor("_logo")..{ -- [Layer2] Type=0 File=_ball.png - }; - --[[LoadActor("_text")..{ -- [Layer3] Type=0 File=_text.png - InitCommand=cmd(y,48;hide_if,GAMESTATE:GetMultiplayer()); -- Command=y,48 - }; - LoadActor("_multi")..{ -- [Layer4] Type=0 File=_multi.png - InitCommand=cmd(y,60;hide_if,not GAMESTATE:GetMultiplayer()); -- Command=y,48 - -- the hide_if command would be similar to Condition=, which also exists. - -- Condition=GAMESTATE:GetMultiplayer(); is the equivalent code. - };]] - LoadFont("Common normal")..{ - Text="sm-ssc Multiplayer"; - InitCommand=cmd(y,5;shadowlength,0;strokecolor,color("0,0,0,0.375");diffusebottomedge,color("#D6DBDD");); - BeginCommand=cmd(hide_if,not GAMESTATE:GetMultiplayer()); - }; }; return t; From d4c2aee3b9884abfcea7852b71dfaab8d942c0a0 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sun, 5 Jun 2011 13:49:24 -0500 Subject: [PATCH 05/14] slightly clean up battery lives graphic --- .../Graphics/LifeMeterBattery lives 1x4.png | Bin 1192 -> 1776 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Themes/default/Graphics/LifeMeterBattery lives 1x4.png b/Themes/default/Graphics/LifeMeterBattery lives 1x4.png index 87a32d19d26959b7392598f898ccbc41b4bba19c..1267376f698c405332b7e6d50e92f31597dc7e65 100644 GIT binary patch literal 1776 zcmeAS@N?(olHy`uVBq!ia0y~yVB`U^H*hcm$+Nl(q=6KBiKnkC`)xK>Ap?sip}W=s zg*Xd5B8wRqxP?HN@zUM8KR`j2bVpxD28NCO+F0pQpTgdLHGBTq^ZJK$hG}jLi~Ja7xIcL> z%&^#>q1}d|%Z_254@0XJ!$fC>xn2xS77Pn~8D@DhOmSi8v1h0hD4>(Lw3(U3cUYj zn6%q%-Z9SVBi0KpYHhf#JmZ{R{sD&-SJWq*G2D4mK5L(I=SkD1V-`RUj)Kt;AT z#V!ZRz5W&XqN*EcarE1%g&>3Gew$b54y5;e%iQD-q#M84K5hWYJHM5Fp$Ig?{Z{^D zWuP1Sw#KhL4zy-&#(85uppn*B=atL_I=5_@Ewe4q*0(X$R&{^v&X{ecLxZ zUnQHLdOpLITYyHNsHfBXjc2({uuOa&bG%(-&p1z_r6(t zt8eM`0abX zJ^8}7+4K01FL-NiE8pjMJHN_Krg_`_FEtiyx%*%K97GyQn1O+=w^D!Q{-Qg2Q=(^q OvaF}8pUXO@geCyr$941o delta 969 zcmeysyMl9q3ggL%v1jX@n0zW37#NsKg8YJk^sllb_kg@^PZ!6KinuqoT=QHEC72Vo z^Rv&KDS7J5cl(g@2A|gG)c=07=n4DdpfhLA{(io_fxQ0`*>2C*>7iI-Fei z#YsbULCTbS!j}Z6m~57B$r1LFI>@h>;oxb#PxVNy#>=$A@+NI6%!wpb&w;Byb_6rG)(*M+>o?(mebs%Ga| z?Q5IFyWRYz!^vs4SL7~C`R;ME-tnX?=d5+-Tf7a8fnf7$0Oy2{#b z?<KFMGRyg+YRiDZ2=IuOYh6Zc7iu3kc z%W{|)I9v>`96NN#Nrdl+q7EO6A`ulLQuU(+`|{-R%>di-Vl zslLnqldqi%5?}%O(rsz0Yk}ytIOWrU||qwYg)mgBkS^($t)A%);q8BnNx#W(?$?%(-Od8W;GUVoo0 ze$N}n>UZ{tJDd>l`xZhlU=RJAS z|0ic3H)CKB5OFc}YF;oo!{pojQ?_D%j(pvIFnY`5AO9E09{<1ojm19O{^!2d1wKG; lHW-}vw^Dbbuoz Date: Mon, 6 Jun 2011 13:39:44 -0500 Subject: [PATCH 06/14] change ScreenOptionsMaster Next/Back screen to post-init screen --- Themes/_fallback/metrics.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 195bd35e1f..fbe5f51939 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -2510,8 +2510,8 @@ CursorOnCommand=visible,false Class="ScreenOptionsMaster" Fallback="ScreenOptionsSimpleService" # -NextScreen=Branch.Init() -PrevScreen=Branch.Init() +NextScreen=Branch.AfterInit() +PrevScreen=Branch.AfterInit() LineNames="SystemDirection,KeyConfig,GameType,6,8,Reload,Credits,MoreOptions" # LineNames="SystemDirection,1,2,Sync,13,3,10,11,4,12,6,5,Theme,8,9" From 226d2a0e6716e2c4b18ef12b2c8bc125f0571227 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 6 Jun 2011 13:40:30 -0500 Subject: [PATCH 07/14] simplify branch --- Themes/_fallback/Scripts/02 Branches.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Themes/_fallback/Scripts/02 Branches.lua b/Themes/_fallback/Scripts/02 Branches.lua index f10f448946..f4b1a09950 100644 --- a/Themes/_fallback/Scripts/02 Branches.lua +++ b/Themes/_fallback/Scripts/02 Branches.lua @@ -33,11 +33,7 @@ end Branch = { Init = function() - if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then - return "ScreenInit" - else - return "ScreenInit" - end + return "ScreenInit" end, AfterInit = function() if GAMESTATE:GetCoinMode() == 'CoinMode_Home' then From cb38eae9ba6cfdf3ead06dca4f68b2439fd7b700 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 6 Jun 2011 18:55:49 -0400 Subject: [PATCH 08/14] Removing the ScoreDisplay mods. Lua has since replaced it. --- Docs/Changelog_sm5.txt | 5 +++++ Themes/_fallback/metrics.ini | 1 - Themes/default/metrics.ini | 4 ++-- src/PercentageDisplay.cpp | 20 -------------------- src/PlayerOptions.cpp | 7 ------- src/PlayerOptions.h | 10 +--------- src/ScoreDisplayNormal.cpp | 30 ------------------------------ 7 files changed, 8 insertions(+), 69 deletions(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 6dc057dfb3..194703cba3 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -8,6 +8,11 @@ ________________________________________________________________________________ StepMania 5.0 Preview 2 | 20110??? -------------------------------------------------------------------------------- +2011/06/06 +---------- +* [PlayerOptions] Removed the ScoreDisplay mod choices. Use lua to make your + own scoring formulas that work in reverse instead. [Wolfman2000] + 2011/06/04 ---------- * Changed default MusicWheelSwitchSpeed to 15 (was 10). [AJ] diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index fbe5f51939..18712e9a16 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -2884,7 +2884,6 @@ Line11="list,Attacks" Line12="list,PlayerAutoPlay" Line13="list,Hide" Line14="list,Persp" -Line15="list,ScoreDisplay" Line16="list,Steps" Line17="list,Characters" diff --git a/Themes/default/metrics.ini b/Themes/default/metrics.ini index 65558ea9ca..85ecd68ca8 100644 --- a/Themes/default/metrics.ini +++ b/Themes/default/metrics.ini @@ -1216,7 +1216,7 @@ ItemsLongRowSharedX=SCREEN_CENTER_X [ScreenTestInput] [ScreenOptionsSystemDirection] -LineNames="1,2,3,4,5,6,7,8,9,FlashyCombo,RollCombo,10,11,12,13,14,15,16,LF,17,18,19,20,21,22" +LineNames="1,2,3,4,5,6,7,8,9,FlashyCombo,RollCombo,10,11,12,13,14,16,LF,17,18,19,20,21,22" LineLF="lua,UserPrefLongFail()" LineRollCombo="lua,UserPrefComboOnRolls()" LineFlashyCombo="lua,UserPrefFlashyCombo()" @@ -1224,7 +1224,7 @@ LineFlashyCombo="lua,UserPrefFlashyCombo()" [ScreenOptionsGraphicsSound] [ScreenOptionsAdvanced] -LineNames="Score,3,4,8,11,13,14,15,16,28,29,30,RollCombo" +LineNames="Score,3,4,8,11,13,14,16,28,29,30,RollCombo" LineRollCombo="lua,UserPrefComboOnRolls()" [ScreenAppearanceOptions] diff --git a/src/PercentageDisplay.cpp b/src/PercentageDisplay.cpp index 502f8f6989..503f153eb7 100644 --- a/src/PercentageDisplay.cpp +++ b/src/PercentageDisplay.cpp @@ -137,26 +137,6 @@ void PercentageDisplay::Refresh() else { float fPercentDancePoints = m_pPlayerStageStats->GetPercentDancePoints(); - float fCurMaxPercentDancePoints = m_pPlayerStageStats->GetCurMaxPercentDancePoints(); - - if( m_bApplyScoreDisplayOptions ) - { - switch( m_pPlayerState->m_PlayerOptions.GetCurrent().m_ScoreDisplay ) - { - case PlayerOptions::SCORING_ADD: - // nothing to do - break; - case PlayerOptions::SCORING_SUBTRACT: - fPercentDancePoints = 1.0f - ( fCurMaxPercentDancePoints - fPercentDancePoints ); - break; - case PlayerOptions::SCORING_AVERAGE: - if( fCurMaxPercentDancePoints == 0.0f ) // don't divide by zero fats - fPercentDancePoints = 0.0f; - else - fPercentDancePoints = fPercentDancePoints / fCurMaxPercentDancePoints; - break; - } - } // clamp percentage - feedback is that negative numbers look weird here. CLAMP( fPercentDancePoints, 0.f, 1.f ); diff --git a/src/PlayerOptions.cpp b/src/PlayerOptions.cpp index 363851cd6a..965acfd223 100644 --- a/src/PlayerOptions.cpp +++ b/src/PlayerOptions.cpp @@ -45,7 +45,6 @@ void PlayerOptions::Init() ZERO( m_bTransforms ); m_bMuteOnError = false; m_FailType = FAIL_IMMEDIATE; - m_ScoreDisplay = SCORING_ADD; m_sNoteSkin = ""; } @@ -85,7 +84,6 @@ void PlayerOptions::Approach( const PlayerOptions& other, float fDeltaSeconds ) for( int i=0; iGetDefaultPlayerOptions( po ); m_FailType = po.m_FailType; } - else if( sBit == "addscore" ) m_ScoreDisplay = SCORING_ADD; - else if( sBit == "subtractscore" ) m_ScoreDisplay = SCORING_SUBTRACT; - else if( sBit == "averagescore" ) m_ScoreDisplay = SCORING_AVERAGE; else if( sBit == "muteonerror" ) m_bMuteOnError = on; else if( sBit == "random" ) ChooseRandomModifiers(); // deprecated mods/left in for compatibility @@ -653,7 +648,6 @@ bool PlayerOptions::operator==( const PlayerOptions &other ) const COMPARE(m_fScrollSpeed); COMPARE(m_fScrollBPM); COMPARE(m_fRandomSpeed); - COMPARE(m_ScoreDisplay); COMPARE(m_FailType); COMPARE(m_bMuteOnError); COMPARE(m_fDark); @@ -798,7 +792,6 @@ RString PlayerOptions::GetSavedPrefsString() const SAVE( m_bTransforms[TRANSFORM_NOSTRETCH] ); SAVE( m_bTransforms[TRANSFORM_NOLIFTS] ); SAVE( m_bTransforms[TRANSFORM_NOFAKES] ); - SAVE( m_ScoreDisplay ); SAVE( m_bMuteOnError ); SAVE( m_sNoteSkin ); #undef SAVE diff --git a/src/PlayerOptions.h b/src/PlayerOptions.h index c6ea986160..9f4017bc42 100644 --- a/src/PlayerOptions.h +++ b/src/PlayerOptions.h @@ -34,8 +34,7 @@ public: m_fSkew(0), m_SpeedfSkew(1.0f), m_fPassmark(0), m_SpeedfPassmark(1.0f), m_fRandomSpeed(0), m_SpeedfRandomSpeed(1.0f), - m_bMuteOnError(false), m_FailType(FAIL_IMMEDIATE), - m_ScoreDisplay(SCORING_ADD) + m_bMuteOnError(false), m_FailType(FAIL_IMMEDIATE) { m_sNoteSkin = ""; ZERO( m_fAccels ); ONE( m_SpeedfAccels ); @@ -151,12 +150,6 @@ public: SCROLL_CENTERED, NUM_SCROLLS }; - enum ScoreDisplay { - SCORING_ADD=0, - SCORING_SUBTRACT, - SCORING_AVERAGE, - NUM_SCOREDISPLAYS - }; float GetReversePercentForColumn( int iCol ) const; // accounts for all Directions @@ -198,7 +191,6 @@ public: }; /** @brief The method for which a player can fail a song. */ FailType m_FailType; - ScoreDisplay m_ScoreDisplay; /** * @brief The Noteskin to use. diff --git a/src/ScoreDisplayNormal.cpp b/src/ScoreDisplayNormal.cpp index f34613a1d9..dad9eeed02 100644 --- a/src/ScoreDisplayNormal.cpp +++ b/src/ScoreDisplayNormal.cpp @@ -46,36 +46,6 @@ void ScoreDisplayNormal::SetScore( int iNewScore ) { float fScore = (float)iNewScore; - // TODO: Remove use of PlayerNumber. - PlayerNumber pn = m_pPlayerState->m_PlayerNumber; - - // Play some games to display the correct score -- the actual internal - // score does not change at all but the displayed one can (ie: displayed - // score for subtractive is MaxScore - score). - - int iMaxScore = STATSMAN->m_CurStageStats.m_player[pn].m_iMaxScore; - int iCurMaxScore = STATSMAN->m_CurStageStats.m_player[pn].m_iCurMaxScore; - - switch( m_pPlayerState->m_PlayerOptions.GetCurrent().m_ScoreDisplay ) - { - case PlayerOptions::SCORING_ADD: - // nothing to do - break; - case PlayerOptions::SCORING_SUBTRACT: - fScore = iMaxScore - ( iCurMaxScore - fScore ); - break; - case PlayerOptions::SCORING_AVERAGE: - if( iCurMaxScore == 0 ) // don't divide by zero fats - { - fScore = 0; - } - else - { - float fScoreRatio = fScore / (float)iCurMaxScore; - fScore = fScoreRatio * iMaxScore; - } - } - m_text.SetTargetNumber( fScore ); } From 4d4b441492f47f774c16839eba83ff2430171088 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Mon, 6 Jun 2011 17:57:53 -0500 Subject: [PATCH 09/14] rename Profile(pn) to GetPlayerOrMachineProfile(pn) so that the Profile class will show up in Lua.xml --- Themes/_fallback/Scripts/03 ProductivityHelpers.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Themes/_fallback/Scripts/03 ProductivityHelpers.lua b/Themes/_fallback/Scripts/03 ProductivityHelpers.lua index eb2d64bb9d..0d9fbd2816 100644 --- a/Themes/_fallback/Scripts/03 ProductivityHelpers.lua +++ b/Themes/_fallback/Scripts/03 ProductivityHelpers.lua @@ -224,10 +224,10 @@ end; --[[ ----------------------------------------------------------------------- ]] --[[ profile stuff ]] --- Profile(pn) +-- GetPlayerOrMachineProfile(pn) -- This returns a profile, preferably a player one. -- If there isn't one, we fall back on the machine profile. -function Profile(pn) +function GetPlayerOrMachineProfile(pn) if PROFILEMAN:IsPersistentProfile(pn) then -- player profile return PROFILEMAN:GetProfile(pn); From 963cc9d4f16a87dec10460f9c18a05a7a9b8537b Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 6 Jun 2011 20:23:23 -0400 Subject: [PATCH 10/14] Fix a Player 2 assist tick / clap bug. --- Docs/Changelog_sm5.txt | 4 ++++ src/GameState.h | 8 ++++++++ src/ScreenGameplay.cpp | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 194703cba3..02a780e44e 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -12,6 +12,10 @@ StepMania 5.0 Preview 2 | 20110??? ---------- * [PlayerOptions] Removed the ScoreDisplay mod choices. Use lua to make your own scoring formulas that work in reverse instead. [Wolfman2000] +* [ScreenGameplay] Fix an assist tick bug if there was no Player 1. Note that + this changes the behavior slightly: it is the first enabled player, or + master player, that gets the ticks now. A better solution will be looked at + in the future. [Wolfman2000] 2011/06/04 ---------- diff --git a/src/GameState.h b/src/GameState.h index 5e925e05ff..17ed341899 100644 --- a/src/GameState.h +++ b/src/GameState.h @@ -139,6 +139,14 @@ public: PlayerNumber GetFirstDisabledPlayer() const; bool IsCpuPlayer( PlayerNumber pn ) const; bool AnyPlayersAreCpu() const; + + /** + * @brief Retrieve the present master player number. + * @return The master player number. */ + PlayerNumber GetMasterPlayerNumber() const + { + return m_MasterPlayerNumber; + } bool IsCourseMode() const; bool IsBattleMode() const; // not Rave diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index ef55cd02c7..af23e65018 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -1393,7 +1393,7 @@ void ScreenGameplay::PlayTicks() /* TODO: Allow all players to have ticks. Not as simple as it looks. * If a loop takes place, it could make one player's ticks come later * than intended. Any help here would be appreciated. -Wolfman2000 */ - Player &player = *m_vPlayerInfo[0].m_pPlayer; + Player &player = *m_vPlayerInfo[GAMESTATE->GetMasterPlayerNumber()].m_pPlayer; const NoteData &nd = player.GetNoteData(); m_GameplayAssist.PlayTicks( nd, player.GetPlayerState() ); } From 0a7b9ce170d21d219770c65bb54e4fc4b9fbc84e Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 6 Jun 2011 20:40:11 -0400 Subject: [PATCH 11/14] Some respect for OOP. (MasterPlayerNumber) --- src/AutoKeysounds.cpp | 4 +-- src/CourseContentsList.cpp | 4 +-- src/GameState.cpp | 50 +++++++++++++++++----------- src/GameState.h | 14 ++++---- src/NoteField.cpp | 2 +- src/OptionRow.cpp | 6 ++-- src/Player.cpp | 2 +- src/PlayerState.cpp | 2 +- src/ScoreKeeperShared.cpp | 20 +++++------ src/ScreenDebugOverlay.cpp | 6 ++-- src/ScreenEvaluation.cpp | 4 +-- src/ScreenGameplay.cpp | 4 +-- src/ScreenGameplayShared.cpp | 4 +-- src/ScreenHowToPlay.cpp | 2 +- src/ScreenInstallOverlay.cpp | 2 +- src/ScreenJukebox.cpp | 2 +- src/ScreenMiniMenu.cpp | 2 +- src/ScreenNameEntry.cpp | 2 +- src/ScreenNameEntryTraditional.cpp | 2 +- src/ScreenOptions.cpp | 2 +- src/ScreenOptionsCourseOverview.cpp | 4 +-- src/ScreenOptionsEditCourse.cpp | 2 +- src/ScreenOptionsExportPackage.cpp | 2 +- src/ScreenOptionsManageCourses.cpp | 10 +++--- src/ScreenOptionsManageEditSteps.cpp | 6 ++-- src/ScreenOptionsManageProfiles.cpp | 6 ++-- src/ScreenOptionsMemoryCard.cpp | 8 ++--- src/ScreenSMOnlineLogin.cpp | 2 +- src/ScreenSelect.cpp | 4 +-- src/ScreenSelectMaster.cpp | 8 ++--- src/ScreenSelectMusic.cpp | 8 ++--- src/ScreenSongOptions.cpp | 2 +- src/StatsManager.cpp | 2 +- 33 files changed, 106 insertions(+), 94 deletions(-) diff --git a/src/AutoKeysounds.cpp b/src/AutoKeysounds.cpp index 79ec773973..068036bd69 100644 --- a/src/AutoKeysounds.cpp +++ b/src/AutoKeysounds.cpp @@ -49,7 +49,7 @@ void AutoKeysounds::LoadAutoplaySoundsInto( RageSoundReader_Chain *pChain ) * Add all current autoplay sounds in both players to the chain. If a sound is * common to both players, don't pan it; otherwise pan it to that player's side. */ - int iNumTracks = m_ndAutoKeysoundsOnly[GAMESTATE->m_MasterPlayerNumber].GetNumTracks(); + int iNumTracks = m_ndAutoKeysoundsOnly[GAMESTATE->GetMasterPlayerNumber()].GetNumTracks(); for( int t = 0; t < iNumTracks; t++ ) { int iRow = -1; @@ -297,7 +297,7 @@ void AutoKeysounds::FinishLoading() apSounds.push_back( m_pPlayerSounds[1] ); } - if( GAMESTATE->GetNumPlayersEnabled() == 1 && GAMESTATE->m_MasterPlayerNumber == PLAYER_2 ) + if( GAMESTATE->GetNumPlayersEnabled() == 1 && GAMESTATE->GetMasterPlayerNumber() == PLAYER_2 ) swap( m_pPlayerSounds[PLAYER_1], m_pPlayerSounds[PLAYER_2] ); if( apSounds.size() > 1 ) diff --git a/src/CourseContentsList.cpp b/src/CourseContentsList.cpp index ee4b99cb2f..2566465c15 100644 --- a/src/CourseContentsList.cpp +++ b/src/CourseContentsList.cpp @@ -42,9 +42,9 @@ void CourseContentsList::SetFromGameState() { RemoveAllChildren(); - if( GAMESTATE->m_MasterPlayerNumber == PlayerNumber_Invalid ) + if( GAMESTATE->GetMasterPlayerNumber() == PlayerNumber_Invalid ) return; - const Trail *pMasterTrail = GAMESTATE->m_pCurTrail[GAMESTATE->m_MasterPlayerNumber]; + const Trail *pMasterTrail = GAMESTATE->m_pCurTrail[GAMESTATE->GetMasterPlayerNumber()]; if( pMasterTrail == NULL ) return; unsigned uNumEntriesToShow = pMasterTrail->m_vEntries.size(); diff --git a/src/GameState.cpp b/src/GameState.cpp index dbca4fc9a3..a720dcbd89 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -190,6 +190,16 @@ GameState::~GameState() SAFE_DELETE( g_pImpl ); } +PlayerNumber GameState::GetMasterPlayerNumber() const +{ + return this->masterPlayerNumber; +} + +void GameState::SetMasterPlayerNumber(const PlayerNumber p) +{ + this->masterPlayerNumber = p; +} + void GameState::ApplyGameCommand( const RString &sCommand, PlayerNumber pn ) { GameCommand m; @@ -244,7 +254,7 @@ void GameState::ResetPlayer( PlayerNumber pn ) void GameState::Reset() { - m_MasterPlayerNumber = PLAYER_INVALID; // must initialize for UnjoinPlayer + this->SetMasterPlayerNumber(PLAYER_INVALID); // must initialize for UnjoinPlayer FOREACH_PlayerNumber( pn ) UnjoinPlayer( pn ); @@ -334,14 +344,14 @@ void GameState::JoinPlayer( PlayerNumber pn ) * give the new player the same number of stage tokens that the old player * has. */ if( GetCoinMode() == CoinMode_Pay && GetPremium() == Premium_2PlayersFor1Credit && GetNumSidesJoined() == 1 ) - m_iPlayerStageTokens[pn] = m_iPlayerStageTokens[m_MasterPlayerNumber]; + m_iPlayerStageTokens[pn] = m_iPlayerStageTokens[this->GetMasterPlayerNumber()]; else m_iPlayerStageTokens[pn] = PREFSMAN->m_iSongsPerPlay; m_bSideIsJoined[pn] = true; - if( m_MasterPlayerNumber == PLAYER_INVALID ) - m_MasterPlayerNumber = pn; + if( this->GetMasterPlayerNumber() == PLAYER_INVALID ) + this->SetMasterPlayerNumber(pn); // if first player to join, set start time if( GetNumSidesJoined() == 1 ) @@ -385,8 +395,8 @@ void GameState::UnjoinPlayer( PlayerNumber pn ) ResetPlayer( pn ); - if( m_MasterPlayerNumber == pn ) - m_MasterPlayerNumber = GetFirstHumanPlayer(); + if( this->GetMasterPlayerNumber() == pn ) + this->SetMasterPlayerNumber(GetFirstHumanPlayer()); /* Unjoin STATSMAN first, so steps used by this player are released * and can be released by PROFILEMAN. */ @@ -398,7 +408,7 @@ void GameState::UnjoinPlayer( PlayerNumber pn ) MESSAGEMAN->Broadcast( msg ); // If there are no players left, reset some non-player-specific stuff, too. - if( m_MasterPlayerNumber == PLAYER_INVALID ) + if( this->GetMasterPlayerNumber() == PLAYER_INVALID ) { SongOptions so; GetDefaultSongOptions( so ); @@ -635,8 +645,8 @@ int GameState::GetNumStagesForCurrentSongAndStepsOrCourse() const if( pStyle == NULL ) { const Steps *pSteps = NULL; - if( m_MasterPlayerNumber != PlayerNumber_Invalid ) - pSteps = m_pCurSteps[m_MasterPlayerNumber]; + if( this->GetMasterPlayerNumber() != PlayerNumber_Invalid ) + pSteps = m_pCurSteps[this->GetMasterPlayerNumber()]; // Don't call GetFirstCompatibleStyle if numSidesJoined == 0. // This happens because on SContinue when players are unjoined, // pCurSteps will still be set while no players are joined. -Chris @@ -994,9 +1004,9 @@ bool GameState::IsFinalStageForAnyHumanPlayer() const bool GameState::IsAnExtraStage() const { - if( m_MasterPlayerNumber == PlayerNumber_Invalid ) + if( this->GetMasterPlayerNumber() == PlayerNumber_Invalid ) return false; - return !IsEventMode() && !IsCourseMode() && m_iAwardedExtraStages[m_MasterPlayerNumber] > 0; + return !IsEventMode() && !IsCourseMode() && m_iAwardedExtraStages[this->GetMasterPlayerNumber()] > 0; } static ThemeMetric LOCK_EXTRA_STAGE_SELECTION("GameState","LockExtraStageSelection"); @@ -1007,16 +1017,16 @@ bool GameState::IsAnExtraStageAndSelectionLocked() const bool GameState::IsExtraStage() const { - if( m_MasterPlayerNumber == PlayerNumber_Invalid ) + if( this->GetMasterPlayerNumber() == PlayerNumber_Invalid ) return false; - return !IsEventMode() && !IsCourseMode() && m_iAwardedExtraStages[m_MasterPlayerNumber] == 1; + return !IsEventMode() && !IsCourseMode() && m_iAwardedExtraStages[this->GetMasterPlayerNumber()] == 1; } bool GameState::IsExtraStage2() const { - if( m_MasterPlayerNumber == PlayerNumber_Invalid ) + if( this->GetMasterPlayerNumber() == PlayerNumber_Invalid ) return false; - return !IsEventMode() && !IsCourseMode() && m_iAwardedExtraStages[m_MasterPlayerNumber] == 2; + return !IsEventMode() && !IsCourseMode() && m_iAwardedExtraStages[this->GetMasterPlayerNumber()] == 2; } Stage GameState::GetCurrentStage() const @@ -1059,7 +1069,7 @@ int GameState::GetCourseSongIndex() const } else { - return STATSMAN->m_CurStageStats.m_player[m_MasterPlayerNumber].m_iSongsPlayed-1; + return STATSMAN->m_CurStageStats.m_player[this->GetMasterPlayerNumber()].m_iSongsPlayed-1; } } @@ -1131,7 +1141,7 @@ void GameState::SetCurrentStyle( const Style *pStyle ) if( INPUTMAPPER ) { if( GetCurrentStyle() && GetCurrentStyle()->m_StyleType == StyleType_OnePlayerTwoSides ) - INPUTMAPPER->SetJoinControllers( m_MasterPlayerNumber ); + INPUTMAPPER->SetJoinControllers( this->GetMasterPlayerNumber() ); else INPUTMAPPER->SetJoinControllers( PLAYER_INVALID ); } @@ -1192,7 +1202,7 @@ bool GameState::IsHumanPlayer( PlayerNumber pn ) const return true; case StyleType_OnePlayerOneSide: case StyleType_OnePlayerTwoSides: - return pn == m_MasterPlayerNumber; + return pn == this->GetMasterPlayerNumber(); default: ASSERT(0); // invalid style type return false; @@ -1276,7 +1286,7 @@ EarnedExtraStage GameState::CalculateEarnedExtraStage() const if( GetSmallestNumStagesLeftForAnyHumanPlayer() > 0 ) return EarnedExtraStage_No; - if( m_iAwardedExtraStages[m_MasterPlayerNumber] >= 2 ) + if( m_iAwardedExtraStages[this->GetMasterPlayerNumber()] >= 2 ) return EarnedExtraStage_No; FOREACH_EnabledPlayer( pn ) @@ -2124,7 +2134,7 @@ public: DEFINE_METHOD( IsPlayerEnabled, IsPlayerEnabled(Enum::Check(L, 1)) ) DEFINE_METHOD( IsHumanPlayer, IsHumanPlayer(Enum::Check(L, 1)) ) DEFINE_METHOD( GetPlayerDisplayName, GetPlayerDisplayName(Enum::Check(L, 1)) ) - DEFINE_METHOD( GetMasterPlayerNumber, m_MasterPlayerNumber ) + DEFINE_METHOD( GetMasterPlayerNumber, GetMasterPlayerNumber() ) DEFINE_METHOD( GetMultiplayer, m_bMultiplayer ) static int SetMultiplayer( T* p, lua_State *L ) { diff --git a/src/GameState.h b/src/GameState.h index 17ed341899..79618aa711 100644 --- a/src/GameState.h +++ b/src/GameState.h @@ -35,6 +35,8 @@ class Trail; /** @brief Holds game data that is not saved between sessions. */ class GameState { + /** @brief The player number used with Styles where one player controls both sides. */ + PlayerNumber masterPlayerNumber; public: /** @brief Set up the GameState with initial values. */ GameState(); @@ -91,8 +93,6 @@ public: * to get one credit, only to have to put in another four coins to get * the three credits needed to begin the game. */ BroadcastOnChange m_iCoins; - /** @brief The player number used with Styles where one player controls both sides. */ - PlayerNumber m_MasterPlayerNumber; bool m_bMultiplayer; int m_iNumMultiplayerNoteFields; bool DifficultiesLocked() const; @@ -143,10 +143,12 @@ public: /** * @brief Retrieve the present master player number. * @return The master player number. */ - PlayerNumber GetMasterPlayerNumber() const - { - return m_MasterPlayerNumber; - } + PlayerNumber GetMasterPlayerNumber() const; + + /** + * @brief Set the master player number. + * @param p the master player number. */ + void SetMasterPlayerNumber(const PlayerNumber p); bool IsCourseMode() const; bool IsBattleMode() const; // not Rave diff --git a/src/NoteField.cpp b/src/NoteField.cpp index 60b0d9b6be..84dc4aae63 100644 --- a/src/NoteField.cpp +++ b/src/NoteField.cpp @@ -303,7 +303,7 @@ void NoteField::Update( float fDeltaTime ) // TODO: Remove use of PlayerNumber. PlayerNumber pn = m_pPlayerState->m_PlayerNumber; - if( pn == GAMESTATE->m_MasterPlayerNumber ) + if( pn == GAMESTATE->GetMasterPlayerNumber() ) NoteDisplay::Update( fDeltaTime ); } diff --git a/src/OptionRow.cpp b/src/OptionRow.cpp index ee043f65df..4f50268542 100644 --- a/src/OptionRow.cpp +++ b/src/OptionRow.cpp @@ -196,7 +196,7 @@ RString OptionRow::GetRowTitle() const if( GAMESTATE->m_pCurCourse ) { - const Trail* pTrail = GAMESTATE->m_pCurTrail[GAMESTATE->m_MasterPlayerNumber]; + const Trail* pTrail = GAMESTATE->m_pCurTrail[GAMESTATE->GetMasterPlayerNumber()]; ASSERT( pTrail != NULL ); const int iNumCourseEntries = pTrail->m_vEntries.size(); if( iNumCourseEntries > CommonMetrics::MAX_COURSE_ENTRIES_BEFORE_VARIOUS ) @@ -417,8 +417,8 @@ void OptionRow::AfterImportOptions( PlayerNumber pn ) // we need to copy p2 to p1, not p1 to p2. if( m_pHand->m_Def.m_bOneChoiceForAllPlayers ) { - PlayerNumber pnCopyFrom = GAMESTATE->m_MasterPlayerNumber; - if( GAMESTATE->m_MasterPlayerNumber == PLAYER_INVALID ) + PlayerNumber pnCopyFrom = GAMESTATE->GetMasterPlayerNumber(); + if( GAMESTATE->GetMasterPlayerNumber() == PLAYER_INVALID ) pnCopyFrom = PLAYER_1; FOREACH_PlayerNumber( p ) m_vbSelected[p] = m_vbSelected[pnCopyFrom]; diff --git a/src/Player.cpp b/src/Player.cpp index 5bd48778f8..6179b16d83 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -1375,7 +1375,7 @@ void Player::DrawPrimitives() // May have both players in doubles (for battle play); only draw primary player. if( GAMESTATE->GetCurrentStyle()->m_StyleType == StyleType_OnePlayerTwoSides && - pn != GAMESTATE->m_MasterPlayerNumber ) + pn != GAMESTATE->GetMasterPlayerNumber() ) return; // Draw these below everything else. diff --git a/src/PlayerState.cpp b/src/PlayerState.cpp index 9d7b652851..c30805daf9 100644 --- a/src/PlayerState.cpp +++ b/src/PlayerState.cpp @@ -162,7 +162,7 @@ void PlayerState::RebuildPlayerOptionsFromActiveAttacks() so.FromString( m_ActiveAttacks[s].sModifiers ); } m_PlayerOptions.Assign( ModsLevel_Song, po ); - if( m_PlayerNumber == GAMESTATE->m_MasterPlayerNumber ) + if( m_PlayerNumber == GAMESTATE->GetMasterPlayerNumber() ) GAMESTATE->m_SongOptions.Assign( ModsLevel_Song, so ); int iSumOfAttackLevels = GetSumOfActiveAttackLevels(); diff --git a/src/ScoreKeeperShared.cpp b/src/ScoreKeeperShared.cpp index 95a28a8599..6686adf4f2 100644 --- a/src/ScoreKeeperShared.cpp +++ b/src/ScoreKeeperShared.cpp @@ -16,7 +16,7 @@ void ScoreKeeperShared::Load( const vector &apSteps, const vector &asModifiers ) { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::Load( apSongs, apSteps, asModifiers ); } @@ -24,63 +24,63 @@ void ScoreKeeperShared::Load( // These ScoreKeepers don't get to draw. void ScoreKeeperShared::DrawPrimitives() { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::DrawPrimitives(); } void ScoreKeeperShared::Update( float fDelta ) { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::Update( fDelta ); } void ScoreKeeperShared::OnNextSong( int iSongInCourseIndex, const Steps* pSteps, const NoteData* pNoteData ) { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::OnNextSong( iSongInCourseIndex, pSteps, pNoteData ); } void ScoreKeeperShared::HandleTapScore( const TapNote &tn ) { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::HandleTapScore( tn ); } void ScoreKeeperShared::HandleTapRowScore( const NoteData &nd, int iRow ) { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::HandleTapRowScore( nd, iRow ); } void ScoreKeeperShared::HandleHoldScore( const TapNote &tn ) { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::HandleHoldScore( tn ); } void ScoreKeeperShared::HandleHoldActiveSeconds( float fMusicSecondsHeld ) { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::HandleHoldActiveSeconds( fMusicSecondsHeld ); } void ScoreKeeperShared::HandleHoldCheckpointScore( const NoteData &nd, int iRow, int iNumHoldsHeldThisRow, int iNumHoldsMissedThisRow ) { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::HandleHoldCheckpointScore( nd, iRow, iNumHoldsHeldThisRow, iNumHoldsMissedThisRow ); } void ScoreKeeperShared::HandleTapScoreNone() { - if( m_pPlayerState->m_PlayerNumber != GAMESTATE->m_MasterPlayerNumber ) + if( m_pPlayerState->m_PlayerNumber != GAMESTATE->GetMasterPlayerNumber() ) return; ScoreKeeperNormal::HandleTapScoreNone(); } diff --git a/src/ScreenDebugOverlay.cpp b/src/ScreenDebugOverlay.cpp index b65b0efc7d..dd8a50b27b 100644 --- a/src/ScreenDebugOverlay.cpp +++ b/src/ScreenDebugOverlay.cpp @@ -598,8 +598,8 @@ class DebugLineAutoplay : public IDebugLine virtual bool IsEnabled() { return GamePreferences::m_AutoPlay.Get() != PC_HUMAN; } virtual void DoAndLog( RString &sMessageOut ) { - ASSERT( GAMESTATE->m_MasterPlayerNumber != PLAYER_INVALID ); - PlayerController pc = GAMESTATE->m_pPlayerState[GAMESTATE->m_MasterPlayerNumber]->m_PlayerController; + ASSERT( GAMESTATE->GetMasterPlayerNumber() != PLAYER_INVALID ); + PlayerController pc = GAMESTATE->m_pPlayerState[GAMESTATE->GetMasterPlayerNumber()]->m_PlayerController; bool bHoldingShift = INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT) ) || INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_RSHIFT) ); @@ -639,7 +639,7 @@ class DebugLineAssist : public IDebugLine virtual bool IsEnabled() { return GAMESTATE->m_SongOptions.GetSong().m_bAssistClap || GAMESTATE->m_SongOptions.GetSong().m_bAssistMetronome; } virtual void DoAndLog( RString &sMessageOut ) { - ASSERT( GAMESTATE->m_MasterPlayerNumber != PLAYER_INVALID ); + ASSERT( GAMESTATE->GetMasterPlayerNumber() != PLAYER_INVALID ); bool bHoldingShift = INPUTFILTER->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, KEY_LSHIFT) ); bool b; if( bHoldingShift ) diff --git a/src/ScreenEvaluation.cpp b/src/ScreenEvaluation.cpp index 1f87fe4b97..654f1d0bb5 100644 --- a/src/ScreenEvaluation.cpp +++ b/src/ScreenEvaluation.cpp @@ -99,7 +99,7 @@ void ScreenEvaluation::Init() ss.m_Stage = Stage_1st; enum_add( ss.m_Stage, rand()%3 ); ss.m_EarnedExtraStage = (EarnedExtraStage)(rand() % NUM_EarnedExtraStage); - GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->SetMasterPlayerNumber(PLAYER_1); GAMESTATE->m_pCurSong.Set( SONGMAN->GetRandomSong() ); ss.m_vpPlayedSongs.push_back( GAMESTATE->m_pCurSong ); ss.m_vpPossibleSongs.push_back( GAMESTATE->m_pCurSong ); @@ -635,7 +635,7 @@ void ScreenEvaluation::Init() { case PLAY_MODE_BATTLE: { - bool bWon = GAMESTATE->GetStageResult(GAMESTATE->m_MasterPlayerNumber) == RESULT_WIN; + bool bWon = GAMESTATE->GetStageResult(GAMESTATE->GetMasterPlayerNumber()) == RESULT_WIN; if( bWon ) SOUND->PlayOnceFromDir( ANNOUNCER->GetPathTo("evaluation win") ); else diff --git a/src/ScreenGameplay.cpp b/src/ScreenGameplay.cpp index af23e65018..c4a6ccaeca 100644 --- a/src/ScreenGameplay.cpp +++ b/src/ScreenGameplay.cpp @@ -776,7 +776,7 @@ void ScreenGameplay::InitSongQueues() ASSERT( pCourse ); m_apSongsQueue.clear(); - PlayerNumber pnMaster = GAMESTATE->m_MasterPlayerNumber; + PlayerNumber pnMaster = GAMESTATE->GetMasterPlayerNumber(); Trail *pTrail = GAMESTATE->m_pCurTrail[pnMaster]; ASSERT( pTrail ); FOREACH_CONST( TrailEntry, pTrail->m_vEntries, e ) @@ -1227,7 +1227,7 @@ void ScreenGameplay::LoadNextSong() FOREACH_EnabledPlayerInfo( m_vPlayerInfo, pi ) { RageSoundReader *pPlayerSound = m_AutoKeysounds.GetPlayerSound(pi->m_pn); - if( pPlayerSound == NULL && pi->m_pn == GAMESTATE->m_MasterPlayerNumber ) + if( pPlayerSound == NULL && pi->m_pn == GAMESTATE->GetMasterPlayerNumber() ) pPlayerSound = m_AutoKeysounds.GetSharedSound(); pi->m_SoundEffectControl.SetSoundReader( pPlayerSound ); } diff --git a/src/ScreenGameplayShared.cpp b/src/ScreenGameplayShared.cpp index b7f179f078..21b656648e 100644 --- a/src/ScreenGameplayShared.cpp +++ b/src/ScreenGameplayShared.cpp @@ -11,7 +11,7 @@ REGISTER_SCREEN_CLASS( ScreenGameplayShared ); void ScreenGameplayShared::FillPlayerInfo( vector &vPlayerInfoOut ) { - const PlayerNumber master = GAMESTATE->m_MasterPlayerNumber; + const PlayerNumber master = GAMESTATE->GetMasterPlayerNumber(); const PlayerNumber other = (master == PLAYER_1? PLAYER_2:PLAYER_1); /* The master player is where all of the real work takes place. The other player exists @@ -23,7 +23,7 @@ void ScreenGameplayShared::FillPlayerInfo( vector &vPlayerInfoOut ) PlayerInfo &ScreenGameplayShared::GetPlayerInfoForInput( const InputEventPlus& iep ) { - return m_vPlayerInfo[GAMESTATE->m_MasterPlayerNumber]; + return m_vPlayerInfo[GAMESTATE->GetMasterPlayerNumber()]; } /* diff --git a/src/ScreenHowToPlay.cpp b/src/ScreenHowToPlay.cpp index 81e8d73d6b..b38848bb7d 100644 --- a/src/ScreenHowToPlay.cpp +++ b/src/ScreenHowToPlay.cpp @@ -172,7 +172,7 @@ void ScreenHowToPlay::Init() // Don't show judgment PO_GROUP_ASSIGN( GAMESTATE->m_pPlayerState[PLAYER_1]->m_PlayerOptions, ModsLevel_Stage, m_fBlind, 1.0f ); - GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->SetMasterPlayerNumber(PLAYER_1); GAMESTATE->m_bDemonstrationOrJukebox = true; } diff --git a/src/ScreenInstallOverlay.cpp b/src/ScreenInstallOverlay.cpp index b1037fce23..c9840ea7a0 100644 --- a/src/ScreenInstallOverlay.cpp +++ b/src/ScreenInstallOverlay.cpp @@ -375,7 +375,7 @@ void ScreenInstallOverlay::Update( float fDeltaTime ) GAMEMAN->GetStylesForGame( GAMESTATE->m_pCurGame, vpStyle, false ); GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR ); GAMESTATE->m_bSideIsJoined[0] = true; - GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->SetMasterPlayerNumber(PLAYER_1); GAMESTATE->m_pCurStyle.Set( vpStyle[0] ); GAMESTATE->m_pCurSong.Set( pSong ); GAMESTATE->m_pPreferredSong = pSong; diff --git a/src/ScreenJukebox.cpp b/src/ScreenJukebox.cpp index 07f293bfe3..eb1769c040 100644 --- a/src/ScreenJukebox.cpp +++ b/src/ScreenJukebox.cpp @@ -179,7 +179,7 @@ void ScreenJukebox::Init() // ASSERT( GAMESTATE->m_pCurSong ); - GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->SetMasterPlayerNumber(PLAYER_1); // choose some cool options int Benchmark = 0; diff --git a/src/ScreenMiniMenu.cpp b/src/ScreenMiniMenu.cpp index da3ff924b0..0d68986a97 100644 --- a/src/ScreenMiniMenu.cpp +++ b/src/ScreenMiniMenu.cpp @@ -107,7 +107,7 @@ void ScreenMiniMenu::AfterChangeValueOrRow( PlayerNumber pn ) OptionRow &optrow = *m_pRows[i]; optrow.GetRowDef().m_vEnabledForPlayers.clear(); if( mr.pfnEnabled() ) - optrow.GetRowDef().m_vEnabledForPlayers.insert( GAMESTATE->m_MasterPlayerNumber ); + optrow.GetRowDef().m_vEnabledForPlayers.insert( GAMESTATE->GetMasterPlayerNumber() ); } m_pRows[i]->UpdateEnabledDisabled(); } diff --git a/src/ScreenNameEntry.cpp b/src/ScreenNameEntry.cpp index b4eeeed4cc..b7faaa4fc1 100644 --- a/src/ScreenNameEntry.cpp +++ b/src/ScreenNameEntry.cpp @@ -118,7 +118,7 @@ ScreenNameEntry::ScreenNameEntry() { GAMESTATE->m_bSideIsJoined[PLAYER_1] = true; GAMESTATE->m_bSideIsJoined[PLAYER_2] = true; - GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->SetMasterPlayerNumber(PLAYER_1); GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR ); GAMESTATE->SetCurrentStyle( GAMEMAN->GameAndStringToStyle( GAMEMAN->GetDefaultGame(),"versus") ); StageStats ss; diff --git a/src/ScreenNameEntryTraditional.cpp b/src/ScreenNameEntryTraditional.cpp index 3663641412..c685531180 100644 --- a/src/ScreenNameEntryTraditional.cpp +++ b/src/ScreenNameEntryTraditional.cpp @@ -22,7 +22,7 @@ void ScreenNameEntryTraditional::Init() { GAMESTATE->m_bSideIsJoined[PLAYER_1] = true; GAMESTATE->m_bSideIsJoined[PLAYER_2] = true; - GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->SetMasterPlayerNumber(PLAYER_1); GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR ); GAMESTATE->SetCurrentStyle( GAMEMAN->GameAndStringToStyle( GAMEMAN->GetDefaultGame(),"versus") ); for( int z = 0; z < 3; ++z ) diff --git a/src/ScreenOptions.cpp b/src/ScreenOptions.cpp index 4cf574d9b5..e783125e00 100644 --- a/src/ScreenOptions.cpp +++ b/src/ScreenOptions.cpp @@ -531,7 +531,7 @@ void ScreenOptions::HandleScreenMessage( const ScreenMessage SM ) return; // already transitioning // If the selected option sets a screen, honor it. - RString sThisScreen = GetNextScreenForFocusedItem( GAMESTATE->m_MasterPlayerNumber ); + RString sThisScreen = GetNextScreenForFocusedItem( GAMESTATE->GetMasterPlayerNumber() ); if( sThisScreen != "" ) m_sNextScreen = sThisScreen; diff --git a/src/ScreenOptionsCourseOverview.cpp b/src/ScreenOptionsCourseOverview.cpp index 0003ab7b2a..cefd327d1c 100644 --- a/src/ScreenOptionsCourseOverview.cpp +++ b/src/ScreenOptionsCourseOverview.cpp @@ -119,7 +119,7 @@ void ScreenOptionsCourseOverview::HandleScreenMessage( const ScreenMessage SM ) } else if( SM == SM_GoToNextScreen ) { - int iRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; switch( iRow ) { case CourseOverviewRow_Play: @@ -191,7 +191,7 @@ void ScreenOptionsCourseOverview::ProcessMenuStart( const InputEventPlus &input if( IsTransitioning() ) return; - int iRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; switch( iRow ) { case CourseOverviewRow_Play: diff --git a/src/ScreenOptionsEditCourse.cpp b/src/ScreenOptionsEditCourse.cpp index 6e108856ba..6f5c6aa111 100644 --- a/src/ScreenOptionsEditCourse.cpp +++ b/src/ScreenOptionsEditCourse.cpp @@ -488,7 +488,7 @@ void ScreenOptionsEditCourse::ProcessMenuStart( const InputEventPlus &input ) if( IsTransitioning() ) return; - int iRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; unsigned iSongCount = GAMESTATE->m_pCurCourse->m_vEntries.size(); diff --git a/src/ScreenOptionsExportPackage.cpp b/src/ScreenOptionsExportPackage.cpp index eda77e4ac9..1ff29e1f0c 100644 --- a/src/ScreenOptionsExportPackage.cpp +++ b/src/ScreenOptionsExportPackage.cpp @@ -147,7 +147,7 @@ void ScreenOptionsExportPackage::ProcessMenuStart( const InputEventPlus &input ) if( IsTransitioning() ) return; - int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; if( m_pRows[iCurRow]->GetRowType() == OptionRow::RowType_Exit ) { ScreenOptions::ProcessMenuStart( input ); diff --git a/src/ScreenOptionsManageCourses.cpp b/src/ScreenOptionsManageCourses.cpp index c3f61721eb..40a0bbcdfa 100644 --- a/src/ScreenOptionsManageCourses.cpp +++ b/src/ScreenOptionsManageCourses.cpp @@ -143,18 +143,18 @@ void ScreenOptionsManageCourses::BeginScreen() if( iter != m_vpCourses.end() ) { iIndex = iter - m_vpCourses.begin(); - this->MoveRowAbsolute( GAMESTATE->m_MasterPlayerNumber, 1 + iIndex ); + this->MoveRowAbsolute( GAMESTATE->GetMasterPlayerNumber(), 1 + iIndex ); } } - AfterChangeRow( GAMESTATE->m_MasterPlayerNumber ); + AfterChangeRow( GAMESTATE->GetMasterPlayerNumber() ); } void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM ) { if( SM == SM_GoToNextScreen ) { - int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; if( iCurRow == 0 ) // "create new" { @@ -218,7 +218,7 @@ void ScreenOptionsManageCourses::ProcessMenuStart( const InputEventPlus &input ) if( IsTransitioning() ) return; - int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; if( iCurRow == 0 ) // "create new" { @@ -259,7 +259,7 @@ void ScreenOptionsManageCourses::ExportOptions( int iRow, const vectorm_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; if( iCurRow == 0 ) return NULL; else if( m_pRows[iCurRow]->GetRowType() == OptionRow::RowType_Exit ) diff --git a/src/ScreenOptionsManageEditSteps.cpp b/src/ScreenOptionsManageEditSteps.cpp index 6a4e416c9d..62d58bdfee 100644 --- a/src/ScreenOptionsManageEditSteps.cpp +++ b/src/ScreenOptionsManageEditSteps.cpp @@ -125,7 +125,7 @@ void ScreenOptionsManageEditSteps::HandleScreenMessage( const ScreenMessage SM ) { if( SM == SM_GoToNextScreen ) { - int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; if( iCurRow == 0 ) // "create new" { @@ -245,7 +245,7 @@ void ScreenOptionsManageEditSteps::ProcessMenuStart( const InputEventPlus &input if( IsTransitioning() ) return; - int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; if( iCurRow == 0 ) // "create new" { @@ -292,7 +292,7 @@ void ScreenOptionsManageEditSteps::ExportOptions( int iRow, const vectorm_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; if( iCurRow == 0 ) return NULL; else if( m_pRows[iCurRow]->GetRowType() == OptionRow::RowType_Exit ) diff --git a/src/ScreenOptionsManageProfiles.cpp b/src/ScreenOptionsManageProfiles.cpp index f3bae8fe78..140177c9c2 100644 --- a/src/ScreenOptionsManageProfiles.cpp +++ b/src/ScreenOptionsManageProfiles.cpp @@ -167,7 +167,7 @@ void ScreenOptionsManageProfiles::HandleScreenMessage( const ScreenMessage SM ) { if( SM == SM_GoToNextScreen ) { - int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; OptionRow &row = *m_pRows[iCurRow]; if( row.GetRowType() == OptionRow::RowType_Exit ) { @@ -337,7 +337,7 @@ void ScreenOptionsManageProfiles::ProcessMenuStart( const InputEventPlus &input if( IsTransitioning() ) return; - int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; OptionRow &row = *m_pRows[iCurRow]; if( SHOW_CREATE_NEW && iCurRow == 0 ) // "create new" @@ -405,7 +405,7 @@ void ScreenOptionsManageProfiles::ExportOptions( int iRow, const vectorm_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; OptionRow &row = *m_pRows[iCurRow]; if( SHOW_CREATE_NEW && iCurRow == 0 ) // "create new" diff --git a/src/ScreenOptionsMemoryCard.cpp b/src/ScreenOptionsMemoryCard.cpp index 8aab5b16d5..c0bfa6351b 100644 --- a/src/ScreenOptionsMemoryCard.cpp +++ b/src/ScreenOptionsMemoryCard.cpp @@ -111,7 +111,7 @@ void ScreenOptionsMemoryCard::AfterChangeRow( PlayerNumber pn ) } else { - int iRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; m_textOsMountDir.SetText( m_CurrentUsbStorageDevices[iRow].sOsMountDir ); } } @@ -124,7 +124,7 @@ void ScreenOptionsMemoryCard::HandleMessage( const Message &msg ) { /* Remember the old mountpoint. */ const vector &v = m_CurrentUsbStorageDevices; - int iRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; RString sOldMountPoint; if( iRow < int(v.size()) ) { @@ -158,7 +158,7 @@ void ScreenOptionsMemoryCard::ExportOptions( int iRow, const vectorm_MasterPlayerNumber; + PlayerNumber pn = GAMESTATE->GetMasterPlayerNumber(); if( m_iCurrentRow[pn] == iRow ) { const vector &v = m_CurrentUsbStorageDevices; @@ -192,7 +192,7 @@ void ScreenOptionsMemoryCard::ProcessMenuStart( const InputEventPlus &input ) if( IsTransitioning() ) return; - int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; + int iCurRow = m_iCurrentRow[GAMESTATE->GetMasterPlayerNumber()]; const vector &v = m_CurrentUsbStorageDevices; if( iCurRow < int(v.size()) ) // a card diff --git a/src/ScreenSMOnlineLogin.cpp b/src/ScreenSMOnlineLogin.cpp index 80d0c40b1d..5cf0e61cb1 100644 --- a/src/ScreenSMOnlineLogin.cpp +++ b/src/ScreenSMOnlineLogin.cpp @@ -155,7 +155,7 @@ void ScreenSMOnlineLogin::HandleScreenMessage(const ScreenMessage SM) { LOG->Trace("[ScreenSMOnlineLogin::HandleScreenMessage] GoToNextScreen"); vector v; - v.push_back( GAMESTATE->m_MasterPlayerNumber ); + v.push_back( GAMESTATE->GetMasterPlayerNumber() ); for( unsigned r=0; rm_MasterPlayerNumber != PlayerNumber_Invalid ); - int iMastersIndex = this->GetSelectionIndex( GAMESTATE->m_MasterPlayerNumber ); + ASSERT( GAMESTATE->GetMasterPlayerNumber() != PlayerNumber_Invalid ); + int iMastersIndex = this->GetSelectionIndex( GAMESTATE->GetMasterPlayerNumber() ); bool bAllPlayersChoseTheSame = true; FOREACH_HumanPlayer( p ) { diff --git a/src/ScreenSelectMaster.cpp b/src/ScreenSelectMaster.cpp index 0e50f5ccbf..3c3a80a4b9 100644 --- a/src/ScreenSelectMaster.cpp +++ b/src/ScreenSelectMaster.cpp @@ -294,7 +294,7 @@ void ScreenSelectMaster::HandleScreenMessage( const ScreenMessage SM ) if( SM == SM_PlayPostSwitchPage ) { - int iNewChoice = m_iChoice[ GAMESTATE->m_MasterPlayerNumber ]; + int iNewChoice = m_iChoice[ GAMESTATE->GetMasterPlayerNumber() ]; Page newPage = GetPage( iNewChoice ); Message msg("PostSwitchPage"); @@ -516,7 +516,7 @@ void ScreenSelectMaster::MenuDown( const InputEventPlus &input ) bool ScreenSelectMaster::ChangePage( int iNewChoice ) { - Page oldPage = GetPage( m_iChoice[GAMESTATE->m_MasterPlayerNumber] ); + Page oldPage = GetPage( m_iChoice[GAMESTATE->GetMasterPlayerNumber()] ); Page newPage = GetPage( iNewChoice ); // If anyone has already chosen, don't allow changing of pages @@ -710,8 +710,8 @@ bool ScreenSelectMaster::ChangeSelection( PlayerNumber pn, MenuDir dir, int iNew PlayerNumber ScreenSelectMaster::GetSharedPlayer() { - if( GAMESTATE->m_MasterPlayerNumber != PLAYER_INVALID ) - return GAMESTATE->m_MasterPlayerNumber; + if( GAMESTATE->GetMasterPlayerNumber() != PLAYER_INVALID ) + return GAMESTATE->GetMasterPlayerNumber(); return PLAYER_1; } diff --git a/src/ScreenSelectMusic.cpp b/src/ScreenSelectMusic.cpp index 1ee3c116a4..4251ae73ab 100644 --- a/src/ScreenSelectMusic.cpp +++ b/src/ScreenSelectMusic.cpp @@ -68,7 +68,7 @@ void ScreenSelectMusic::Init() GAMESTATE->m_PlayMode.Set( PLAY_MODE_REGULAR ); GAMESTATE->SetCurrentStyle( GAMEMAN->GameAndStringToStyle(GAMEMAN->GetDefaultGame(),"versus") ); GAMESTATE->JoinPlayer( PLAYER_1 ); - GAMESTATE->m_MasterPlayerNumber = PLAYER_1; + GAMESTATE->SetMasterPlayerNumber(PLAYER_1); } SAMPLE_MUSIC_DELAY_INIT.Load( m_sName, "SampleMusicDelayInit" ); @@ -1020,7 +1020,7 @@ void ScreenSelectMusic::HandleMessage( const Message &msg ) // TODO: Invalidate the CurSteps only if they are no longer playable. // That way, after music change will clamp to the nearest in the StepsDisplayList. - GAMESTATE->m_pCurSteps[GAMESTATE->m_MasterPlayerNumber].SetWithoutBroadcast( NULL ); + GAMESTATE->m_pCurSteps[GAMESTATE->GetMasterPlayerNumber()].SetWithoutBroadcast( NULL ); FOREACH_ENUM( PlayerNumber, p ) GAMESTATE->m_pCurSteps[p].SetWithoutBroadcast( NULL ); @@ -1392,7 +1392,7 @@ void ScreenSelectMusic::MenuStart( const InputEventPlus &input ) if( pStyle == NULL ) { StepsType stCurrent; - PlayerNumber pn = GAMESTATE->m_MasterPlayerNumber; + PlayerNumber pn = GAMESTATE->GetMasterPlayerNumber(); if( GAMESTATE->IsCourseMode() ) { ASSERT( GAMESTATE->m_pCurTrail[pn] ); @@ -1615,7 +1615,7 @@ void ScreenSelectMusic::SwitchToPreferredDifficulty() if( GAMESTATE->DifficultiesLocked() ) { FOREACH_HumanPlayer( p ) - m_iSelection[p] = m_iSelection[GAMESTATE->m_MasterPlayerNumber]; + m_iSelection[p] = m_iSelection[GAMESTATE->GetMasterPlayerNumber()]; } } diff --git a/src/ScreenSongOptions.cpp b/src/ScreenSongOptions.cpp index 5006b43ac3..2b9287c232 100644 --- a/src/ScreenSongOptions.cpp +++ b/src/ScreenSongOptions.cpp @@ -23,7 +23,7 @@ void ScreenSongOptions::Init() void ScreenSongOptions::ExportOptions( int iRow, const vector &vpns ) { - PlayerNumber pn = GAMESTATE->m_MasterPlayerNumber; + PlayerNumber pn = GAMESTATE->GetMasterPlayerNumber(); PlayerState *pPS = GAMESTATE->m_pPlayerState[pn]; const PlayerOptions::FailType ft = pPS->m_PlayerOptions.GetPreferred().m_FailType; diff --git a/src/StatsManager.cpp b/src/StatsManager.cpp index 99a95a10c7..96e91409a5 100644 --- a/src/StatsManager.cpp +++ b/src/StatsManager.cpp @@ -275,7 +275,7 @@ void StatsManager::CommitStatsToProfiles( const StageStats *pSS ) { if( pSS->m_multiPlayer[mp].m_HighScore.IsEmpty() ) continue; - recent->AppendChild( MakeRecentScoreNode( *pSS, GAMESTATE->m_pCurTrail[GAMESTATE->m_MasterPlayerNumber], pSS->m_multiPlayer[mp], mp ) ); + recent->AppendChild( MakeRecentScoreNode( *pSS, GAMESTATE->m_pCurTrail[GAMESTATE->GetMasterPlayerNumber()], pSS->m_multiPlayer[mp], mp ) ); } } From 7d81680bb3622bb10bce9030477323e3e0524b38 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 6 Jun 2011 20:47:21 -0400 Subject: [PATCH 12/14] Readability. --- src/SongUtil.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/SongUtil.cpp b/src/SongUtil.cpp index 3d83420167..b188a0c108 100644 --- a/src/SongUtil.cpp +++ b/src/SongUtil.cpp @@ -927,7 +927,9 @@ void SongUtil::GetPlayableStepsTypes( const Song *pSong, set &vOut ) iNumPlayers = max( iNumPlayers, 1 ); const Style *pStyle = GAMEMAN->GetFirstCompatibleStyle( GAMESTATE->m_pCurGame, iNumPlayers, *st ); - bool bEnoughStages = GAMESTATE->IsAnExtraStage() || GAMESTATE->GetSmallestNumStagesLeftForAnyHumanPlayer() >= GAMESTATE->GetNumStagesForSongAndStyleType(pSong, pStyle->m_StyleType); + bool bEnoughStages = GAMESTATE->IsAnExtraStage() || + GAMESTATE->GetSmallestNumStagesLeftForAnyHumanPlayer() >= + GAMESTATE->GetNumStagesForSongAndStyleType(pSong, pStyle->m_StyleType); if( bShowThisStepsType && bEnoughStages ) vOut.insert( *st ); From 09305639aed1b8fc553800b6e8e09aefc3b57647 Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 6 Jun 2011 21:41:24 -0400 Subject: [PATCH 13/14] Let AutoSetStyle select all charts in the game. --- src/MusicWheel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MusicWheel.cpp b/src/MusicWheel.cpp index 77303f5286..e8e4c76353 100644 --- a/src/MusicWheel.cpp +++ b/src/MusicWheel.cpp @@ -969,7 +969,7 @@ void MusicWheel::FilterWheelItemDatas(vector &aUnFilteredD } /* If the song has no steps for the current style, remove it. */ - if( !pSong->HasStepsType(GAMESTATE->GetCurrentStyle()->m_StepsType) ) + if( !CommonMetrics::AUTO_SET_STYLE && !pSong->HasStepsType(GAMESTATE->GetCurrentStyle()->m_StepsType) ) { aiRemove[i] = true; continue; From 5c83d529ab4a41e3423e52cd16063533bdca3fcf Mon Sep 17 00:00:00 2001 From: Jason Felds Date: Mon, 6 Jun 2011 23:00:07 -0400 Subject: [PATCH 14/14] Remove faulty shortcut code for hand calcs. Unfortunately, to maintain accuracy, this will invalidate the ca-- *beaten to the floor with the nya cat* --- Docs/Changelog_sm5.txt | 2 ++ src/NoteDataUtil.cpp | 2 +- src/Song.cpp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 02a780e44e..e9ccf1cc69 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -16,6 +16,8 @@ StepMania 5.0 Preview 2 | 20110??? this changes the behavior slightly: it is the first enabled player, or master player, that gets the ticks now. A better solution will be looked at in the future. [Wolfman2000] +* [NoteDataUtil] Fix a radar issue involving hands. Unfortunately, this means + yet another cache reload for accuracy purposes. [Wolfman2000] 2011/06/04 ---------- diff --git a/src/NoteDataUtil.cpp b/src/NoteDataUtil.cpp index 022691c700..ccb9faf2b4 100644 --- a/src/NoteDataUtil.cpp +++ b/src/NoteDataUtil.cpp @@ -886,7 +886,7 @@ void NoteDataUtil::CalculateRadarValues( const NoteData &in, float fSongSeconds, case RadarCategory_Jumps: out[rc] = (float) stats.jumps; break; case RadarCategory_Holds: out[rc] = (float) in.GetNumHoldNotes(); break; case RadarCategory_Mines: out[rc] = (float) in.GetNumMines(); break; - case RadarCategory_Hands: out[rc] = (float) stats.hands; break; + case RadarCategory_Hands: out[rc] = (float) in.GetNumHands(); break; case RadarCategory_Rolls: out[rc] = (float) in.GetNumRolls(); break; case RadarCategory_Lifts: out[rc] = (float) in.GetNumLifts(); break; case RadarCategory_Fakes: out[rc] = (float) in.GetNumFakes(); break; diff --git a/src/Song.cpp b/src/Song.cpp index cc57bccd9b..62696a93e2 100644 --- a/src/Song.cpp +++ b/src/Song.cpp @@ -41,7 +41,7 @@ * @brief The internal version of the cache for StepMania. * * Increment this value to invalidate the current cache. */ -const int FILE_CACHE_VERSION = 178; +const int FILE_CACHE_VERSION = 179; /** @brief How long does a song sample last by default? */ const float DEFAULT_MUSIC_SAMPLE_LENGTH = 12.f;