No XNA, há uma SignedInGamer
classe com um SignedInGamer.PlayerIndex
membro que deve informar exatamente isso, se você conseguir se apossar do SignedInGamer
objeto.
Para fazer isso, existe a Gamer.SignedInGamers
propriedade estática que contém uma coleção de SignedInGamer
objetos com base no estado atual do sistema. Isso é do Microsoft.Xna.Framework.GamerServices
espaço para nome.
Com essas informações, você pode fazer algo como o seguinte:
//If player 2 is connected
if (GamePad.GetState(PlayerIndex.Two).IsConnected)
{
//If we can't find a signed in gamer with a PlayerIndex of two
if (!Gamer.SignedInGamers.Cast<SignedInGamer>().Any(x => x.PlayerIndex == PlayerIndex.Two))
{
//Your handling code here
}
}