예제 #1
0
            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);
            }
예제 #2
0
            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);
            }
예제 #3
0
            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);
            }