diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index d7ab01a0b9..def9fc5d0b 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -1787,6 +1787,48 @@ Profile* GameState::GetEditLocalProfile() } +PlayerNumber GetNextHumanPlayer( PlayerNumber pn ) +{ + for( enum_add(pn, 1); pn < NUM_PLAYERS; enum_add(pn, 1) ) + if( GAMESTATE->IsHumanPlayer(pn) ) + return pn; + return PLAYER_INVALID; +} + +PlayerNumber GetNextEnabledPlayer( PlayerNumber pn ) +{ + for( enum_add(pn, 1); pn < NUM_PLAYERS; enum_add(pn, 1) ) + if( GAMESTATE->IsPlayerEnabled(pn) ) + return pn; + return PLAYER_INVALID; +} + +PlayerNumber GetNextCpuPlayer( PlayerNumber pn ) +{ + for( enum_add(pn, 1); pn < NUM_PLAYERS; enum_add(pn, 1) ) + if( GAMESTATE->IsCpuPlayer(pn) ) + return pn; + return PLAYER_INVALID; +} + +PlayerNumber GetNextPotentialCpuPlayer( PlayerNumber pn ) +{ + for( enum_add(pn, 1); pn < NUM_PLAYERS; enum_add(pn, 1) ) + if( !GAMESTATE->IsHumanPlayer(pn) ) + return pn; + return PLAYER_INVALID; +} + +MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp ) +{ + for( enum_add(mp, 1); mp < NUM_MultiPlayer; enum_add(mp, 1) ) + if( GAMESTATE->IsMultiPlayerEnabled(mp) ) + return mp; + return MultiPlayer_Invalid; +} + + + // lua start #include "LuaBinding.h" #include "Game.h" @@ -2024,6 +2066,17 @@ public: pStyle->PushSelf( L ); return 1; } + static int IsAnyHumanPlayerUsingMemoryCard( T* p, lua_State *L ) + { + bool bUsingMemoryCard = false; + FOREACH_HumanPlayer( pn ) + { + if( MEMCARDMAN->GetCardState(pn) == MemoryCardState_Ready ) + bUsingMemoryCard = true; + } + lua_pushboolean(L, bUsingMemoryCard ); + return 1; + } LunaGameState() { @@ -2096,6 +2149,7 @@ public: ADD_METHOD( GetHumanPlayers ); ADD_METHOD( SetSongOptions ); ADD_METHOD( GetCurrentStyle ); + ADD_METHOD( IsAnyHumanPlayerUsingMemoryCard ); } }; diff --git a/stepmania/src/GameState.h b/stepmania/src/GameState.h index 94ecd312cc..076de29a2d 100644 --- a/stepmania/src/GameState.h +++ b/stepmania/src/GameState.h @@ -296,6 +296,19 @@ public: void PushSelf( lua_State *L ); }; +PlayerNumber GetNextHumanPlayer( PlayerNumber pn ); +PlayerNumber GetNextEnabledPlayer( PlayerNumber pn ); +PlayerNumber GetNextCpuPlayer( PlayerNumber pn ); +PlayerNumber GetNextPotentialCpuPlayer( PlayerNumber pn ); + +#define FOREACH_HumanPlayer( pn ) for( PlayerNumber pn=GetNextHumanPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextHumanPlayer(pn) ) +#define FOREACH_EnabledPlayer( pn ) for( PlayerNumber pn=GetNextEnabledPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextEnabledPlayer(pn) ) +#define FOREACH_CpuPlayer( pn ) for( PlayerNumber pn=GetNextCpuPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextCpuPlayer(pn) ) +#define FOREACH_PotentialCpuPlayer( pn ) for( PlayerNumber pn=GetNextPotentialCpuPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextPotentialCpuPlayer(pn) ) + + +MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp ); +#define FOREACH_EnabledMultiPlayer( mp ) for( MultiPlayer mp=GetNextEnabledMultiPlayer((MultiPlayer)-1); mp!=MultiPlayer_Invalid; mp=GetNextEnabledMultiPlayer(mp) ) extern GameState* GAMESTATE; // global and accessable from anywhere in our program diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index 9ce9e8754b..8d431e11f8 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -702,28 +702,14 @@ void MemoryCardManager::UnPauseMountingThread() RageFileDriverTimeout::SetTimeout( -1 ); } -bool IsAnyPlayerUsingMemoryCard() -{ - FOREACH_HumanPlayer( pn ) - { - if( MEMCARDMAN->GetCardState(pn) == MemoryCardState_Ready ) - return true; - } - return false; -} - - // lua start #include "LuaBinding.h" class LunaMemoryCardManager: public Luna { public: - static int IsAnyPlayerUsingMemoryCard( T* p, lua_State *L ) { lua_pushboolean(L, ::IsAnyPlayerUsingMemoryCard() ); return 1; } - LunaMemoryCardManager() { - ADD_METHOD( IsAnyPlayerUsingMemoryCard ); } }; diff --git a/stepmania/src/PlayerNumber.cpp b/stepmania/src/PlayerNumber.cpp index 9b7f93e027..e68687943b 100644 --- a/stepmania/src/PlayerNumber.cpp +++ b/stepmania/src/PlayerNumber.cpp @@ -1,6 +1,5 @@ #include "global.h" #include "PlayerNumber.h" -#include "GameState.h" #include "LuaManager.h" #include "LocalizedString.h" @@ -54,46 +53,6 @@ LuaFunction( MultiPlayerToLocalizedString, MultiPlayerToLocalizedString(Enum::Ch LuaXType( MultiPlayer ); -PlayerNumber GetNextHumanPlayer( PlayerNumber pn ) -{ - for( enum_add(pn, 1); pn < NUM_PLAYERS; enum_add(pn, 1) ) - if( GAMESTATE->IsHumanPlayer(pn) ) - return pn; - return PLAYER_INVALID; -} - -PlayerNumber GetNextEnabledPlayer( PlayerNumber pn ) -{ - for( enum_add(pn, 1); pn < NUM_PLAYERS; enum_add(pn, 1) ) - if( GAMESTATE->IsPlayerEnabled(pn) ) - return pn; - return PLAYER_INVALID; -} - -PlayerNumber GetNextCpuPlayer( PlayerNumber pn ) -{ - for( enum_add(pn, 1); pn < NUM_PLAYERS; enum_add(pn, 1) ) - if( GAMESTATE->IsCpuPlayer(pn) ) - return pn; - return PLAYER_INVALID; -} - -PlayerNumber GetNextPotentialCpuPlayer( PlayerNumber pn ) -{ - for( enum_add(pn, 1); pn < NUM_PLAYERS; enum_add(pn, 1) ) - if( !GAMESTATE->IsHumanPlayer(pn) ) - return pn; - return PLAYER_INVALID; -} - -MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp ) -{ - for( enum_add(mp, 1); mp < NUM_MultiPlayer; enum_add(mp, 1) ) - if( GAMESTATE->IsMultiPlayerEnabled(mp) ) - return mp; - return MultiPlayer_Invalid; -} - /* * (c) 2001-2004 Chris Danford, Chris Gomez * All rights reserved. diff --git a/stepmania/src/PlayerNumber.h b/stepmania/src/PlayerNumber.h index 81b4ecee74..d1d0f38bbf 100644 --- a/stepmania/src/PlayerNumber.h +++ b/stepmania/src/PlayerNumber.h @@ -23,15 +23,6 @@ const RString& PlayerNumberToLocalizedString( PlayerNumber pn ); LuaDeclareType( PlayerNumber ); #define FOREACH_PlayerNumber( pn ) FOREACH_ENUM( PlayerNumber, pn ) -#define FOREACH_HumanPlayer( pn ) for( PlayerNumber pn=GetNextHumanPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextHumanPlayer(pn) ) -#define FOREACH_EnabledPlayer( pn ) for( PlayerNumber pn=GetNextEnabledPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextEnabledPlayer(pn) ) -#define FOREACH_CpuPlayer( pn ) for( PlayerNumber pn=GetNextCpuPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextCpuPlayer(pn) ) -#define FOREACH_PotentialCpuPlayer( pn ) for( PlayerNumber pn=GetNextPotentialCpuPlayer((PlayerNumber)-1); pn!=PLAYER_INVALID; pn=GetNextPotentialCpuPlayer(pn) ) - -PlayerNumber GetNextHumanPlayer( PlayerNumber pn ); -PlayerNumber GetNextEnabledPlayer( PlayerNumber pn ); -PlayerNumber GetNextCpuPlayer( PlayerNumber pn ); -PlayerNumber GetNextPotentialCpuPlayer( PlayerNumber pn ); const PlayerNumber OPPOSITE_PLAYER[NUM_PLAYERS] = { PLAYER_2, PLAYER_1 }; @@ -79,10 +70,6 @@ LuaDeclareType( MultiPlayer ); #define FOREACH_MultiPlayer( pn ) FOREACH_ENUM( MultiPlayer, pn ) -#define FOREACH_EnabledMultiPlayer( mp ) for( MultiPlayer mp=GetNextEnabledMultiPlayer((MultiPlayer)-1); mp!=MultiPlayer_Invalid; mp=GetNextEnabledMultiPlayer(mp) ) - -MultiPlayer GetNextEnabledMultiPlayer( MultiPlayer mp ); - #endif /* diff --git a/stepmania/src/ScreenManager.cpp b/stepmania/src/ScreenManager.cpp index 5d20f507ff..40a24068b8 100644 --- a/stepmania/src/ScreenManager.cpp +++ b/stepmania/src/ScreenManager.cpp @@ -71,6 +71,7 @@ #include "ScreenDimensions.h" #include "Foreach.h" #include "ActorUtil.h" +#include "GameState.h" // XXX: bad dep ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program