public override void OnJoinedGame(ISpectatorControl control) { Gdk.Threads.Enter(); parent.Update(); Gdk.Threads.Leave(); Animation anim = new Animation(parent); IGame game = control.Game; foreach(IPublicPlayerView player in game.Players) { int playerId = player.ID; anim.EndAllocManager.SetPlayerLifepoints(playerId, player.LifePoints); anim.GetPlayerCharacterAnimator(playerId).EndState.Type = player.CharacterType; anim.GetPlayerRoleAnimator(playerId).EndState.Role = player.Role; foreach(ICard card in player.Hand) { int cardId = card.ID; anim.EndAllocManager.AddPlayerHandCard(playerId, cardId); PlayingCardAnimator a = anim.GetPlayingCardAnimator(cardId); a.EndState.Type = card.Type; a.EndState.Rank = card.Rank; a.EndState.Suit = card.Suit; } foreach(ICard card in player.Table) { int cardId = card.ID; anim.EndAllocManager.AddPlayerTableCard(playerId, cardId); PlayingCardAnimator a = anim.GetPlayingCardAnimator(cardId); a.EndState.Type = card.Type; a.EndState.Rank = card.Rank; a.EndState.Suit = card.Suit; } } ICard graveyardTop = game.GraveyardTop; if(graveyardTop != null) { int cardId = graveyardTop.ID; anim.EndAllocManager.AddGraveyardCard(cardId); PlayingCardAnimator a = anim.GetPlayingCardAnimator(cardId); a.EndState.Type = graveyardTop.Type; a.EndState.Rank = graveyardTop.Rank; a.EndState.Suit = graveyardTop.Suit; } parent.EnqueueAnimation(anim); }
public override void OnPlayerDied(IPublicPlayerView player, IPublicPlayerView causedBy) { Animation anim = new Animation(parent, parent.lastAnim); RoleCardAnimator a = anim.GetPlayerRoleAnimator(player.ID); a.EndState.Role = player.Role; parent.EnqueueAnimation(anim); }
public override void OnGameEnded() { Animation anim = new Animation(parent, parent.lastAnim); IGame game = ConnectionManager.Game; foreach(IPublicPlayerView player in game.Players) { int playerId = player.ID; RoleCardAnimator a = anim.GetPlayerRoleAnimator(playerId); a.EndState.Role = player.Role; } parent.EnqueueAnimation(anim); }