From 967237d88133bd33f8c13db82c6a93ee5a72d311 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Thu, 3 May 2012 14:27:51 -0500 Subject: [PATCH] Add Var "Player" and Var "Controller" for NoteSkin. [hanubeki] Sourced from http://code.google.com/r/hanubeki-modified-sm-ssc/source/detail?r=824cff29912d1c29a667046ba463d195e81c524a --- Docs/Changelog_sm5.txt | 5 +++++ Docs/credits.txt | 2 ++ src/GhostArrowRow.cpp | 5 +++++ src/NoteDisplay.cpp | 5 +++++ src/NoteSkinManager.cpp | 5 +++++ src/NoteSkinManager.h | 8 +++++++- src/ReceptorArrow.cpp | 5 +++++ 7 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index c5480ef899..1184163400 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -9,6 +9,11 @@ ________________________________________________________________________________ StepMania 5.0 alpha 2 | 201205?? -------------------------------------------------------------------------------- +2012/05/03 +---------- +* Add Var "Player" and Var "Controller" for NoteSkin. [hanubeki] + Sourced from http://code.google.com/r/hanubeki-modified-sm-ssc/source/detail?r=824cff29912d1c29a667046ba463d195e81c524a + 2012/05/02 ---------- * Make ReceptorArrowRow and GhostArrowRow respect the column draw order. [hanubeki] diff --git a/Docs/credits.txt b/Docs/credits.txt index fc4eeea55c..e56c656a5b 100644 --- a/Docs/credits.txt +++ b/Docs/credits.txt @@ -87,6 +87,8 @@ Macgravel hanubeki (@803832, formerly sy567) * Small beginner helper fix (http://www.stepmania.com/forums/showpost.php?p=158721&postcount=12) + * Lots of code changes from hanubeki-modified-sm-ssc: + http://code.google.com/r/hanubeki-modified-sm-ssc/ galopin * Pump it Up Exceed PlayStation 2 USB dance mat support patch diff --git a/src/GhostArrowRow.cpp b/src/GhostArrowRow.cpp index 934abbd461..9693167e6d 100644 --- a/src/GhostArrowRow.cpp +++ b/src/GhostArrowRow.cpp @@ -16,12 +16,17 @@ void GhostArrowRow::Load( const PlayerState* pPlayerState, float fYReverseOffset m_fYReverseOffsetPixels = fYReverseOffset; const Style* pStyle = GAMESTATE->GetCurrentStyle(); + const PlayerNumber pn = m_pPlayerState->m_PlayerNumber; + NOTESKIN->SetPlayerNumber( pn ); // init arrows for( int c=0; cm_iColsPerPlayer; c++ ) { const RString &sButton = GAMESTATE->GetCurrentStyle()->ColToButtonName( c ); + const GameInput GameI = GAMESTATE->GetCurrentStyle()->StyleInputToGameInput( c, pn ); + NOTESKIN->SetGameController( GameI.controller ); + m_bHoldShowing.push_back( TapNote::SubType_Invalid ); m_bLastHoldShowing.push_back( TapNote::SubType_Invalid ); diff --git a/src/NoteDisplay.cpp b/src/NoteDisplay.cpp index 7e1ff5516c..565619c431 100644 --- a/src/NoteDisplay.cpp +++ b/src/NoteDisplay.cpp @@ -246,6 +246,11 @@ void NoteDisplay::Load( int iColNum, const PlayerState* pPlayerState, float fYRe m_pPlayerState = pPlayerState; m_fYReverseOffsetPixels = fYReverseOffsetPixels; + const PlayerNumber pn = m_pPlayerState->m_PlayerNumber; + const GameInput GameI = GAMESTATE->GetCurrentStyle()->StyleInputToGameInput( iColNum, pn ); + NOTESKIN->SetPlayerNumber( pn ); + NOTESKIN->SetGameController( GameI.controller ); + const RString &sButton = GAMESTATE->GetCurrentStyle()->ColToButtonName( iColNum ); cache->Load( sButton ); diff --git a/src/NoteSkinManager.cpp b/src/NoteSkinManager.cpp index 902a757dd7..8815c414bc 100644 --- a/src/NoteSkinManager.cpp +++ b/src/NoteSkinManager.cpp @@ -2,6 +2,7 @@ #include "NoteSkinManager.h" #include "RageFileManager.h" #include "RageLog.h" +#include "GameInput.h" #include "GameState.h" #include "Game.h" #include "Style.h" @@ -47,6 +48,8 @@ namespace NoteSkinManager::NoteSkinManager() { m_pCurGame = NULL; + m_PlayerNumber = PlayerNumber_Invalid; + m_GameController = GameController_Invalid; // Register with Lua. { @@ -378,6 +381,8 @@ bool NoteSkinManager::PushActorTemplate( Lua *L, const RString &sButton, const R ASSERT( iter != g_mapNameToData.end() ); const NoteSkinData &data = iter->second; + LuaThreadVariable varPlayer( "Player", LuaReference::Create(m_PlayerNumber) ); + LuaThreadVariable varController( "Controller", LuaReference::Create(m_GameController) ); LuaThreadVariable varButton( "Button", sButton ); LuaThreadVariable varElement( "Element", sElement ); LuaThreadVariable varSpriteOnly( "SpriteOnly", LuaReference::Create(bSpriteOnly) ); diff --git a/src/NoteSkinManager.h b/src/NoteSkinManager.h index 7534a51827..3917982fb7 100644 --- a/src/NoteSkinManager.h +++ b/src/NoteSkinManager.h @@ -4,6 +4,7 @@ #include "Actor.h" #include "RageTypes.h" #include "PlayerNumber.h" +#include "GameInput.h" #include "IniFile.h" class Game; @@ -24,7 +25,8 @@ public: void SetCurrentNoteSkin( const RString &sNoteSkin ) { m_sCurrentNoteSkin = sNoteSkin; } const RString &GetCurrentNoteSkin() { return m_sCurrentNoteSkin; } - + void SetPlayerNumber( PlayerNumber pn ) { m_PlayerNumber = pn; } + void SetGameController( GameController gc ) { m_GameController = gc; } RString GetPath( const RString &sButtonName, const RString &sElement ); bool PushActorTemplate( Lua *L, const RString &sButton, const RString &sElement, bool bSpriteOnly ); Actor *LoadActor( const RString &sButton, const RString &sElement, Actor *pParent = NULL, bool bSpriteOnly = false ); @@ -46,6 +48,10 @@ protected: void LoadNoteSkinDataRecursive( const RString &sNoteSkinName, NoteSkinData& data_out ); RString m_sCurrentNoteSkin; const Game* m_pCurGame; + + // xxx: is this the best way to implement this? -freem + PlayerNumber m_PlayerNumber; + GameController m_GameController; }; extern NoteSkinManager* NOTESKIN; // global and accessable from anywhere in our program diff --git a/src/ReceptorArrow.cpp b/src/ReceptorArrow.cpp index 87e260fa08..13628af2d2 100644 --- a/src/ReceptorArrow.cpp +++ b/src/ReceptorArrow.cpp @@ -19,6 +19,11 @@ void ReceptorArrow::Load( const PlayerState* pPlayerState, int iColNo ) m_pPlayerState = pPlayerState; m_iColNo = iColNo; + const PlayerNumber pn = m_pPlayerState->m_PlayerNumber; + const GameInput GameI = GAMESTATE->GetCurrentStyle()->StyleInputToGameInput( iColNo, pn ); + NOTESKIN->SetPlayerNumber( pn ); + NOTESKIN->SetGameController( GameI.controller ); + RString sButton = GAMESTATE->GetCurrentStyle()->ColToButtonName( iColNo ); m_pReceptor.Load( NOTESKIN->LoadActor(sButton, "Receptor") ); this->AddChild( m_pReceptor );