public virtual void OnJoinedGame(ISpectatorControl control)
 {
 }
示例#2
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);
            }
示例#3
0
        /// <summary>
        /// Disconnects from the currently connected session.
        /// </summary>
        public static void DisconnectFromSession()
        {
            lock(Lock)
            {
                if(!SessionConnected)
                    return;

                try
                {
                    if(playerSessionControl != null)
                        playerSessionControl.Disconnect();
                    if(spectatorSessionControl != null)
                        spectatorSessionControl.Disconnect();
                }
                catch
                {
                }

                playerGameControl = null;
                spectatorGameControl = null;
                game = null;

                playerSessionControl = null;
                spectatorSessionControl = null;
                session = null;
                if(OnSessionDisconnected != null)
                    OnSessionDisconnected();
            }
        }
示例#4
0
 public override void OnJoinedGame(ISpectatorControl control)
 {
     lock(ConnectionManager.Lock)
     {
         ConnectionManager.spectatorGameControl = control;
         ConnectionManager.game = control.Game;
         if(OnGameConnected != null)
             OnGameConnected();
     }
 }
 public void OnJoinedGame(ISpectatorControl control)
 {
     foreach(ISpectatorSessionEventListener listener  in spectatorListeners.ToArray())
         listener.OnJoinedGame(control);
 }