Пример #1
0
        internal void Trigger_OnPing(string userToken)
        {
            PlayerSession session = (PlayerSession)PlayerRegistry.GetClientSession(userToken);

            if (session != null)
            {
                IGameServerController_Callback callback = session.CallbackChannel;
                if (callback != null)
                {
                    try
                    {
                        callback.GameServer_OnPing();
                    } catch (CommunicationException ex) {
                        Console.WriteLine("> Failed trigger event: OnPing\n" + ex.Message);
                    } catch (TimeoutException ex) {
                        Console.WriteLine("> Failed trigger event: OnPing\n" + ex.Message);
                    }
                }
                else
                {
                    Console.WriteLine("> Failed trigger event: OnPing\n" + "callback object null!");
                }
            }
            else
            {
                Console.WriteLine("> Failed trigger event: OnPing\n" + "PlayerSession not found!");
            }
        }
Пример #2
0
 public void Reconnect(string userToken)
 {
     if (PlayerRegistry.IsClientRegistered(userToken))
     {
         IGameServerController_Callback callbackChannel
             = OperationContext.Current.GetCallbackChannel <IGameServerController_Callback>();
         ((PlayerSession)PlayerRegistry.GetClientSession(userToken)).CallbackChannel = callbackChannel; // update callback channel
         Console.WriteLine("> Player Reconnect: @token:{" + userToken + "}");
     }
 }
Пример #3
0
        //////////////////////////////////////////////////

        ///// STRUCTORS //////////////////////////////////
        public PlayerSession(string username, string address, double lifeSpan,
                             IGameServerController_Callback callbackChannel, Hero userHero)
            : base(username, address, lifeSpan)
        {
            CallbackChannel = callbackChannel;
            PlayerHero      = userHero;
            Move            = null;
            HitTally        = 0;
            Waiting         = true;
        }
Пример #4
0
        public bool JoinGameServer(string userPuid, string userToken, out ECode ec)
        {
            ec = ECode.None;
            bool success = false;
            IGameServerController_Callback callbackChannel // Get player callback object to store
                = OperationContext.Current.GetCallbackChannel <IGameServerController_Callback>();

            try
            {
                if (PlayerRegistry.GetCount() >= MAX_PLAYERS)
                {
                    ec = ECode.ServerFull;
                    Console.WriteLine("> Rejected Player Join: @username:{" + userPuid + "} token:{" + userToken + "}");
                }
                else if (PlayerRegistry.IsClientRegistered(userToken))
                {
                    ((PlayerSession)PlayerRegistry.GetClientSession(userToken)).CallbackChannel = callbackChannel; // update callback channel
                    success = true;
                    Console.WriteLine("> Old Player Join: @username:{" + userPuid + "} token:{" + userToken + "}");
                }
                else if (GPSConnection.IsUserTokenVaild(userToken))
                {
                    // Register Player //
                    PlayerSession ps = new PlayerSession(userPuid, "", PLAYER_LIFESPAN, callbackChannel, null);
                    PlayerRegistry.RegisterClient(userToken, ps);
                    success = true;
                    Console.WriteLine("> New Player Join: @username:{" + userPuid + "} token:{" + userToken + "}");

                    // Notify others of event //
                    AdvertiseToPortal_UserJoin(userPuid);
                    //BroadcastToPlayers_PlayerStatus(userPuid);
                    if (Game != null && Game.HasGameStarted() == false)
                    {   // Notify players if this will change game state
                        BroadcastToPlayers_GameReady(Game.ArePlayersAllowedToEnterGame());
                    }
                }
                else
                {
                    Console.WriteLine("> Invalid Player Join: @username:{" + userPuid + "} token:{" + userToken + "}");
                }
            } catch (ServerConnectionException ex) {
                ec = ex.ErrorCode;
                Console.WriteLine("> Failed Player Join: @username:{" + userPuid + "} token:{" + userToken + "}");
            }

            return(success);
        }