From c5a322a6a8481a7a4137e3f3dd4ca7bde35d6948 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 1 Mar 2007 23:40:52 +0000 Subject: [PATCH] do some combo stuff in lua --- .../default/Graphics/Player combo/_combo.png | Bin 0 -> 2543 bytes .../default/Graphics/Player combo/_misses.png | Bin 0 -> 2370 bytes .../default/Graphics/Player combo/default.lua | 63 +++++++++ stepmania/Themes/default/metrics.ini | 7 +- stepmania/src/Combo.cpp | 122 +++--------------- stepmania/src/Combo.h | 21 +-- stepmania/src/Player.cpp | 2 +- 7 files changed, 84 insertions(+), 131 deletions(-) create mode 100644 stepmania/Themes/default/Graphics/Player combo/_combo.png create mode 100755 stepmania/Themes/default/Graphics/Player combo/_misses.png create mode 100644 stepmania/Themes/default/Graphics/Player combo/default.lua diff --git a/stepmania/Themes/default/Graphics/Player combo/_combo.png b/stepmania/Themes/default/Graphics/Player combo/_combo.png new file mode 100644 index 0000000000000000000000000000000000000000..650bf41ffe0b25abffadf9ce760bda684acb721b GIT binary patch literal 2543 zcmVI9mkOHh;4zC1V~a-HzWjF7K)H4ZJ{cKs_Fy!0Jf-7X)DxHL7f)y z2&KS}VxSZpP(c(ZsH)Pa2qz&;!Xrp7PDly`5}Z1Tv7KFeA2T~M_v_Ksl^t7-y-*~m z>LVTP&g^%;?>pbQ_sWtLK2pp=L~tZx_^2_9kFz1Oh~xhomysDv#5%I;f7Xz-S`Y&8 z$>4~jNyC|;$r4#0i=^0f)ntwN{^3EBqvX5fKLmKqQJJRhjp@?>q{sns_qugyZ(SEI z)zWnmfF?{tnJihBNrz0?eyb|%p+FAVdLOzWk=CZEn#u2N!yze{8ZpZR*+?Ek!p2AT z(%6j%5pN4t&<|_$&?8CwSY)t^;tOHiJ?U)ysQPW?rsn*xiCUWDblQk9MN+v zSwBguwwp4lKyRF!Ly8C=oQe%eqXPVFJYjaNAM}I}WCd88O11(ZD?-nYy>hlm0S*-M zA{Zj?t#aD{G+=sUzf|;ko~ce%6#FZ`+%rdjL=eKjF9XR08e=ikL=g~@#B<4b`njXz zxVGf?G%AHU(uZJB1ox!e_oer1B|i(GB13K=Gc{*_x*-n0P?1n@ChbD8RHUEF;(9l6 zIarMRq1)V?ahqGrddKF7*_9Clp#Y)XQN`ZZaAzuc>$RiB8|oBrTW$4K05Vm}mbWG9 z>&*#r6vpZcVAcnwZVohKFJoI>8yi>SaS=!xs~LNvn`D3JJp1tI0|x+z=OZTqNyH&E zLuiVsukTo}d^ubwd(y?$Bbnp3Rj$c#UB39hUA5JVK)p%oO;w;bw0a+_a&KKYl)C|` zFIvfH-ecNbl_3Bc~= zU*4QK@#+kkxa*p^zBZ;%t71slYMu!4n(N7bg&_`P4`bk_8!`OE@N&8N01h?o>&LM?A?=9-UMvUbUwa$Em$u{Ue_4;k@whSL5NpMmyPrAwLXF{_ zy?Fb}7bDE&7K3J-NWBZLy2i|^)p4fPyN7yr4i2K&aTEL}pXd~k?@xC^GF3nQIV9;~ zk!UQXuD#_l{#GnuIE(;2)oreT7zbY{f`Gf~%uMnd-@*xOepx&QM+AS*m+*EFq9g*Q zL=78W<|ffbHt_qN+B!7eaVK_cSf459a)(;J^F1tFyacTfEaC4tirDV?#)JrBHb@)_ z%?Ss~l1ZdmTi|IyukT}L5Fv!1ECL70n6onFqMbdyBN3t{OR(bVYp`YQ?HLf-^KdW- zu!(gF)F?sOoRVjT4g*RVy5v{uYS12cFi#2gpK=P^>wbdXjvF)cSD%$x`t9#x0R$(- z)QozQV4rRZRX5*)@`k@=lu|c{NcL!kq@7cjLTEr87w;=Zcx-PU{71V0(c@l-fUpgN zjA75g10Xh`?UU*EMhjpe1Pb^=b`*UZ)+5@p8%JW_XU|9BQ!CJ3ox*Wi!>53zQ%^(x z_HF6;E6%`t4&@jQ^I*xt!$Vp4k30++8G!}VoH=-d#`jlOqrEDHR~h$uvB+N6O^ADg zaj$;!N?bXw0aXBoIP_%u3ZoVF$^y;GgJ4aeIeLE|N_XA?3wU*P=wgm*ni?^m!_``& zOjCM+w&qo&Dc7L?1T;C?n9`ehu*ji7kl4?uL_2t+Tx)Uo-#-(xNZr3J|QK0*p3 zP~dlugW6XPupv9bD`XqIU*FEAL5?9ETiBZ3wQ?19aiGweaW76C*V3APXys~rW=<_e zIrMi%^RR%FJYz@|S>ljD!*qXthkyUQn2@9OYcK`sHg1OnM$bL-7ZQY!LJ_?*qdyTh zJJ7^EzjY0T!^WjWYg6kLd)oFhKA<21Z|3sI4QDaLTxQo6JrJl}-@V41N)hBgcV1db zB}hIGIFu2E;PcdRTrc?oHggaJqI_|pA&jj_CQ9K-+{FktcNZ~=GS zn+4vPg#rk3#tyu_fD6#NJEexeIwfRj!w&o0~@}Iw2f}FtLg|ra|ZY3*nyF zlAf1JVtGS77NlG_ws2WTroTK3Y}>ITJ@8=X-NNr?_o#7^?k#u0%?_u}I;Ih&h_M61 zP|YnS4$=5uZ(s5ZQBcR70HLXfG{o-qF+=i2D5KXQXVxnuG+BWm&ql9oza+N2ou(-2Gy{cdJqg1U zy@}6t$pq#mlMnzyzKS|UJ#mjLGggHqCWk3Mus;_?u& zrJsNRrieX`W*3acNGMDOd?OefY-iAUcP9RYOQ9O)L6ovNl*wZt8djL0e(Mc{e}2l; zCoe=fFsEb;K?noxMtd5@-+SKskK^wao#9iDU%`5CR-8FWuYz^j_G&*%C4^g^NA%*> zPWLzWclkfM`i$VddouAae&vJdodiWr#sy@CyaewLn{0tUlGocDtsh|RWp-_P%HJ(M z#JDr;?^mEQWbN9!$pI4ojb0I%&X8Hm{tI^&A7?{m@gIFL@#UyD78L*h002ovPDHLk FV1g+tz3l)1 literal 0 HcmV?d00001 diff --git a/stepmania/Themes/default/Graphics/Player combo/_misses.png b/stepmania/Themes/default/Graphics/Player combo/_misses.png new file mode 100755 index 0000000000000000000000000000000000000000..2d34d2f6157b66da5a9a20d984916e22cbbe7a7d GIT binary patch literal 2370 zcmV-I3BC4-P)B$jViCUYV?MBPx3P%-r9v$tio1tBltkXW7Rp=r`mtE3 zi%m_K7hD%^CIe@15RaZa*RbBQ-h8gE4zb!=2&S)H!z%*=jh8*I_n+Igb(h?CAMEmS zz_KtecpiMmfuGF==e`w*z=}pi=Iz6uo`y$}SP5kxi@_=>nb-5h)}NXRR)N^rrKN$u zws9x0aEJI}_wLYHNQjW7u0=Fy0_V#wvA(OT@moN$t)>P`w{H)0#?PF=KJJ|dc3#=F zt0T%iL!M9KG>lJk5fETeW+cM*rEo&L#51Ek#n_vBg$+P^S;b!g3ggK2p`InTMP=z@3{wPZE$(BFJsWxd{a53WNMfzT zK{0wJms~r6+3RNvsqyi8-Anu9(P(0A$U(T$r{rex6X_u@Y0o?2?%esj=tMsJ@Nl(d z9ozzq@R=e7IT+5;jG@Q#_Oe)S6`QC%bb2revLytrTc?PWGj_=mGs>j+7BDszbbV@K zA|96skoQS7>0i1u)SH+9#>au{*8|;F&uf0VuMb36)P2TbwYMi&Bs79`xJnhqZJj2{gT`A<-Dp9AEFaBBMFtfaQim!)mKQ5jNri7*uh9L z$;6Oqh(-@48Cx}dGiKqYFb27{Z56}N5WwSK_}`^Iw2Brg@e+UvipLi{>gxlN{ZBtt zq!Wf9i$r4MM%3{k9*gE*z6^Z+x#_Mz&*BFG9(qU>kcsSb9JG#(Hg^sUwfVGjsb>uj z2mX8()K|yAQ@`J|37fg+k{nAKrMA{|vG@&%q7H7{0O*5+DKdz7X=&n*)OCf76)Rw^ zU8`cCK5dl`^(;j)$?>^bmStkVjwMSHKc~I-zys2-D#lMf0j^yWE>tXKWw2zA@k%i( z8O!VB;^d`EiL~RS-llB@3*fTA0blpuuO`s8O@YEj85n@iI9veEJl;`_TcuHCLz3+8 z$I$81IG(5UP0DU|fAo<@fP3$S#}9!a68#4#`1(xU%;Nm;;zig`J{ctCGl}nT?IaIU zsH_y6#RJ7-^7^A8zM6K^H*W^SThzBnUW(oNMk=K~Ow92^eV_N`*bG2jqNUDt6H}Zd ziv-xzv)FVJPurC%=x0HVy}%dJrO?!s=XL2O*v^<7?%CwQl6PKvJ5Erq2MT7Qp6Kqz zqn~{Sd&?FT4{bJca=Oy#crB;XAupEaDd96aS&UA}&Ez4?K|kQ>;c4#r5uk0hLSafP zdn7B%2{{VjW#EY3GB|V{KVe1Y!MtNlhy+I~fdiE@APKD1S)77N?MHl*=%AG3O1h^Ie#A3 z>eX;rR8Q<=5_CuV;)5{^h>yw1Zv75j>GFD-Qx;)!NyARFNKHB?_m%UbU;^~9-1*&zP3UXx0LSEk`PkLaU+z zJ{u={;Q~Ca7Xf@1kYb&Dj`96Ucp&*8@ecQE0sIH#RyW!zpz+&4@@?(kG~ka_9x28U zUo%r4j9v1!d0a{iGKmhGDa#2Q2Jn6LoCjH~-l7vVL2f|eXxeSIQ|{HiK7C7PgTRiP4BftFuzJ!}e< z;|H8pn_>ztaOqd<<(c0D8a`m5934BSTIUnyS0V(8p?14RoZ!8zJ#c8)@2^@Ck4$hFP$7s*K!T0fIB(w-K< zC~#~yAb%7$6dV10()}!wz!WMDLfIVo8?fmteXJ^CUr9O60vUqMv)5BT&~c7YY!kaC zd>xRKqs-tErAhlR__tb8{{lL8F@^_cIl>P6K5AJcvCnE=>cc!xv``YdW2Pd9@cHUZ zn?e=n6&7kNFK}J#AN&&7zX7vjqqa9ig1#ow+2`%Gt9i?FewP9BAGo{${cFjeTCXC-w3BE^ug1&XE<-Q@Bj7`GJGH z;SubscribeToMessage( Message_BeatCrossed ); } -void Combo::Load( const PlayerState *pPlayerState, const PlayerStageStats *pPlayerStageStats ) +void Combo::Load( const RString &sPath, const PlayerState *pPlayerState, const PlayerStageStats *pPlayerStageStats ) { ASSERT( m_SubActors.empty() ); // don't load twice m_pPlayerState = pPlayerState; m_pPlayerStageStats = pPlayerStageStats; - SHOW_COMBO_AT .Load(m_sName,"ShowComboAt"); - NUMBER_MIN_ZOOM .Load(m_sName,"NumberMinZoom"); - NUMBER_MAX_ZOOM .Load(m_sName,"NumberMaxZoom"); - NUMBER_MAX_ZOOM_AT .Load(m_sName,"NumberMaxZoomAt"); - PULSE_COMMAND .Load(m_sName,"PulseCommand"); - FULL_COMBO_W3_COMMAND .Load(m_sName,"FullComboW3Command"); - FULL_COMBO_W2_COMMAND .Load(m_sName,"FullComboW2Command"); - FULL_COMBO_W1_COMMAND .Load(m_sName,"FullComboW1Command"); - FULL_COMBO_BROKEN_COMMAND .Load(m_sName,"FullComboBrokenCommand"); - MISS_COMBO_COMMAND .Load(m_sName,"MissComboCommand"); - - m_spr100Milestone.Load( THEME->GetPathG(m_sName,"100milestone") ); - this->AddChild( m_spr100Milestone ); - - m_spr1000Milestone.Load( THEME->GetPathG(m_sName,"1000milestone") ); - this->AddChild( m_spr1000Milestone ); - - m_sprComboLabel.Load( THEME->GetPathG(m_sName,"label") ); - m_sprComboLabel->SetName( "Label" ); - m_sprComboLabel->SetVisible( false ); - LOAD_ALL_COMMANDS( m_sprComboLabel ); + LuaThreadVariable var( "Player", LuaReference::Create(m_pPlayerState->m_PlayerNumber) ); + m_sprComboLabel.Load( sPath ); this->AddChild( m_sprComboLabel ); - m_sprComboLabel->PlayCommand( "On" ); - - m_sprMissesLabel.Load( THEME->GetPathG(m_sName,"misses") ); - m_sprMissesLabel->SetName( "Label" ); - m_sprMissesLabel->SetVisible( false ); - LOAD_ALL_COMMANDS( m_sprMissesLabel ); - this->AddChild( m_sprMissesLabel ); - m_sprMissesLabel->PlayCommand( "On" ); - - m_textNumber.LoadFromFont( THEME->GetPathF(m_sName,"numbers") ); - m_textNumber.SetName( "Number" ); - m_textNumber.SetVisible( false ); - LOAD_ALL_COMMANDS( m_textNumber ); - this->AddChild( &m_textNumber ); - m_textNumber.PlayCommand( "On" ); } void Combo::SetCombo( int iCombo, int iMisses ) { - bool bComboOfMisses = iMisses > 0; - int iNum = bComboOfMisses ? iMisses : iCombo; - bool bShowCombo = iNum >= (int)SHOW_COMBO_AT; - - if( !bShowCombo ) - { - m_sprComboLabel->SetVisible( false ); - m_sprMissesLabel->SetVisible( false ); - m_textNumber.SetVisible( false ); - return; - } - if( m_iLastSeenCombo == -1 ) // first update, don't set bIsMilestone=true m_iLastSeenCombo = iCombo; @@ -90,68 +43,27 @@ void Combo::SetCombo( int iCombo, int iMisses ) } m_iLastSeenCombo = iCombo; - m_sprComboLabel->SetVisible( !bComboOfMisses ); - m_sprMissesLabel->SetVisible( bComboOfMisses ); - m_textNumber.SetVisible( true ); - - RString txt = ssprintf("%d", iNum); - - // Do pulse even if the number isn't changing. - - m_textNumber.SetText( txt ); - float fNumberZoom = SCALE(iNum,0.f,(float)NUMBER_MAX_ZOOM_AT,(float)NUMBER_MIN_ZOOM,(float)NUMBER_MAX_ZOOM); - CLAMP( fNumberZoom, (float)NUMBER_MIN_ZOOM, (float)NUMBER_MAX_ZOOM ); - m_textNumber.FinishTweening(); - m_textNumber.SetZoom( fNumberZoom ); - m_textNumber.RunCommands( PULSE_COMMAND ); - - AutoActor &sprLabel = bComboOfMisses ? m_sprMissesLabel : m_sprComboLabel; - - sprLabel->FinishTweening(); - sprLabel->RunCommands( PULSE_COMMAND ); - if( b100Milestone ) - m_spr100Milestone->PlayCommand( "Milestone" ); + this->PlayCommand( "100Milestone" ); if( b1000Milestone ) - m_spr1000Milestone->PlayCommand( "Milestone" ); + this->PlayCommand( "1000Milestone" ); // don't show a colored combo until 1/4 of the way through the song bool bPastMidpoint = GAMESTATE->GetCourseSongIndex()>0 || GAMESTATE->m_fMusicSeconds > GAMESTATE->m_pCurSong->m_fMusicLengthSeconds/4; - if( bComboOfMisses ) - { - sprLabel->RunCommands( MISS_COMBO_COMMAND ); - m_textNumber.RunCommands( MISS_COMBO_COMMAND ); - } - else if( bPastMidpoint ) - { - if( m_pPlayerStageStats->FullComboOfScore(TNS_W1) ) - { - sprLabel->RunCommands( FULL_COMBO_W1_COMMAND ); - m_textNumber.RunCommands( FULL_COMBO_W1_COMMAND ); - } - else if( bPastMidpoint && m_pPlayerStageStats->FullComboOfScore(TNS_W2) ) - { - sprLabel->RunCommands( FULL_COMBO_W2_COMMAND ); - m_textNumber.RunCommands( FULL_COMBO_W2_COMMAND ); - } - else if( bPastMidpoint && m_pPlayerStageStats->FullComboOfScore(TNS_W3) ) - { - sprLabel->RunCommands( FULL_COMBO_W3_COMMAND ); - m_textNumber.RunCommands( FULL_COMBO_W3_COMMAND ); - } - else - { - sprLabel->RunCommands( FULL_COMBO_BROKEN_COMMAND ); - m_textNumber.RunCommands( FULL_COMBO_BROKEN_COMMAND ); - } - } - else - { - sprLabel->RunCommands( FULL_COMBO_BROKEN_COMMAND ); - m_textNumber.RunCommands( FULL_COMBO_BROKEN_COMMAND ); - } + Message msg("Combo"); + if( iCombo ) + msg.SetParam( "Combo", iCombo ); + if( iMisses ) + msg.SetParam( "Misses", iMisses ); + if( bPastMidpoint && m_pPlayerStageStats->FullComboOfScore(TNS_W1) ) + msg.SetParam( "FullComboW1", true ); + if( bPastMidpoint && m_pPlayerStageStats->FullComboOfScore(TNS_W2) ) + msg.SetParam( "FullComboW2", true ); + if( bPastMidpoint && m_pPlayerStageStats->FullComboOfScore(TNS_W3) ) + msg.SetParam( "FullComboW3", true ); + this->HandleMessage( msg ); } /* diff --git a/stepmania/src/Combo.h b/stepmania/src/Combo.h index be77bc22f1..7b7a832186 100644 --- a/stepmania/src/Combo.h +++ b/stepmania/src/Combo.h @@ -5,9 +5,8 @@ #include "ActorFrame.h" #include "AutoActor.h" -#include "BitmapText.h" #include "PlayerNumber.h" -#include "ThemeMetric.h" +//#include "ThemeMetric.h" class PlayerState; class PlayerStageStats; @@ -16,31 +15,15 @@ class Combo : public ActorFrame public: Combo(); - void Load( const PlayerState *pPlayerState, const PlayerStageStats *pPlayerStageStats ); + void Load( const RString &sPath, const PlayerState *pPlayerState, const PlayerStageStats *pPlayerStageStats ); void SetCombo( int iCombo, int iMisses ); protected: - ThemeMetric SHOW_COMBO_AT; - ThemeMetric NUMBER_MIN_ZOOM; - ThemeMetric NUMBER_MAX_ZOOM; - ThemeMetric NUMBER_MAX_ZOOM_AT; - ThemeMetric PULSE_COMMAND; - ThemeMetric TWEEN_SECONDS; - ThemeMetric FULL_COMBO_W3_COMMAND; - ThemeMetric FULL_COMBO_W2_COMMAND; - ThemeMetric FULL_COMBO_W1_COMMAND; - ThemeMetric FULL_COMBO_BROKEN_COMMAND; - ThemeMetric MISS_COMBO_COMMAND; - const PlayerState *m_pPlayerState; const PlayerStageStats *m_pPlayerStageStats; - AutoActor m_spr100Milestone; - AutoActor m_spr1000Milestone; AutoActor m_sprComboLabel; - AutoActor m_sprMissesLabel; - BitmapText m_textNumber; int m_iLastSeenCombo; }; diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index ab53aee415..7f44c92234 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -382,7 +382,7 @@ void Player::Init( if( m_pCombo ) { m_pCombo->SetName( "Combo" ); - m_pCombo->Load( m_pPlayerState, m_pPlayerStageStats ); + m_pCombo->Load( THEME->GetPathG(sType,"combo"), m_pPlayerState, m_pPlayerStageStats ); ActorUtil::LoadAllCommandsAndOnCommand( m_pCombo, sType ); }