PlayerNumber is a simple, regular data structure, and is depended on
by lower level things (eg. InputMapper). However, concepts like "joined players" and "human players" is a high-level, GAMESTATE concept, and engine stuff shouldn't depend on that. Move the GameState-depending stuff into GameState. Move IsAnyPlayerUsingMemoryCard as well (and rename to HumanPlayer), to fix MemoryCardManager dep.
This commit is contained in:
@@ -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
|
// lua start
|
||||||
#include "LuaBinding.h"
|
#include "LuaBinding.h"
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
@@ -2024,6 +2066,17 @@ public:
|
|||||||
pStyle->PushSelf( L );
|
pStyle->PushSelf( L );
|
||||||
return 1;
|
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()
|
LunaGameState()
|
||||||
{
|
{
|
||||||
@@ -2096,6 +2149,7 @@ public:
|
|||||||
ADD_METHOD( GetHumanPlayers );
|
ADD_METHOD( GetHumanPlayers );
|
||||||
ADD_METHOD( SetSongOptions );
|
ADD_METHOD( SetSongOptions );
|
||||||
ADD_METHOD( GetCurrentStyle );
|
ADD_METHOD( GetCurrentStyle );
|
||||||
|
ADD_METHOD( IsAnyHumanPlayerUsingMemoryCard );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -296,6 +296,19 @@ public:
|
|||||||
void PushSelf( lua_State *L );
|
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
|
extern GameState* GAMESTATE; // global and accessable from anywhere in our program
|
||||||
|
|
||||||
|
|||||||
@@ -702,28 +702,14 @@ void MemoryCardManager::UnPauseMountingThread()
|
|||||||
RageFileDriverTimeout::SetTimeout( -1 );
|
RageFileDriverTimeout::SetTimeout( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsAnyPlayerUsingMemoryCard()
|
|
||||||
{
|
|
||||||
FOREACH_HumanPlayer( pn )
|
|
||||||
{
|
|
||||||
if( MEMCARDMAN->GetCardState(pn) == MemoryCardState_Ready )
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// lua start
|
// lua start
|
||||||
#include "LuaBinding.h"
|
#include "LuaBinding.h"
|
||||||
|
|
||||||
class LunaMemoryCardManager: public Luna<MemoryCardManager>
|
class LunaMemoryCardManager: public Luna<MemoryCardManager>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static int IsAnyPlayerUsingMemoryCard( T* p, lua_State *L ) { lua_pushboolean(L, ::IsAnyPlayerUsingMemoryCard() ); return 1; }
|
|
||||||
|
|
||||||
LunaMemoryCardManager()
|
LunaMemoryCardManager()
|
||||||
{
|
{
|
||||||
ADD_METHOD( IsAnyPlayerUsingMemoryCard );
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "PlayerNumber.h"
|
#include "PlayerNumber.h"
|
||||||
#include "GameState.h"
|
|
||||||
#include "LuaManager.h"
|
#include "LuaManager.h"
|
||||||
#include "LocalizedString.h"
|
#include "LocalizedString.h"
|
||||||
|
|
||||||
@@ -54,46 +53,6 @@ LuaFunction( MultiPlayerToLocalizedString, MultiPlayerToLocalizedString(Enum::Ch
|
|||||||
LuaXType( MultiPlayer );
|
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
|
* (c) 2001-2004 Chris Danford, Chris Gomez
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
|||||||
@@ -23,15 +23,6 @@ const RString& PlayerNumberToLocalizedString( PlayerNumber pn );
|
|||||||
LuaDeclareType( PlayerNumber );
|
LuaDeclareType( PlayerNumber );
|
||||||
|
|
||||||
#define FOREACH_PlayerNumber( pn ) FOREACH_ENUM( PlayerNumber, pn )
|
#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 };
|
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_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
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -71,6 +71,7 @@
|
|||||||
#include "ScreenDimensions.h"
|
#include "ScreenDimensions.h"
|
||||||
#include "Foreach.h"
|
#include "Foreach.h"
|
||||||
#include "ActorUtil.h"
|
#include "ActorUtil.h"
|
||||||
|
#include "GameState.h" // XXX: bad dep
|
||||||
|
|
||||||
ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program
|
ScreenManager* SCREENMAN = NULL; // global and accessable from anywhere in our program
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user