Exemplo n.º 1
0
        private void DispatchRequest(ISFSObject requestObject)
        {
            IMessage message = new Message();

            if (requestObject.IsNull(CONTROLLER_ID))
            {
                throw new SFSCodecError("Request rejected: No Controller ID in request!");
            }
            if (requestObject.IsNull(ACTION_ID))
            {
                throw new SFSCodecError("Request rejected: No Action ID in request!");
            }
            message.Id      = Convert.ToInt32(requestObject.GetShort(ACTION_ID));
            message.Content = requestObject.GetSFSObject(PARAM_ID);
            message.IsUDP   = requestObject.ContainsKey(UDP_PACKET_ID);
            if (message.IsUDP)
            {
                message.PacketId = requestObject.GetLong(UDP_PACKET_ID);
            }
            int         @byte      = requestObject.GetByte(CONTROLLER_ID);
            IController controller = bitSwarm.GetController(@byte);

            if (controller == null)
            {
                throw new SFSError("Cannot handle server response. Unknown controller, id: " + @byte);
            }
            controller.HandleMessage(message);
        }
Exemplo n.º 2
0
        public void HandleHandShake(BaseEvent evt)
        {
            ISFSObject iSFSObject = evt.Params["message"] as ISFSObject;

            if (iSFSObject.IsNull(BaseRequest.KEY_ERROR_CODE))
            {
                sessionToken = iSFSObject.GetUtfString(HandshakeRequest.KEY_SESSION_TOKEN);
                socketClient.CompressionThreshold = iSFSObject.GetInt(HandshakeRequest.KEY_COMPRESSION_THRESHOLD);
                socketClient.MaxMessageSize       = iSFSObject.GetInt(HandshakeRequest.KEY_MAX_MESSAGE_SIZE);
                if (debug)
                {
                    log.Debug($"Handshake response: tk => {sessionToken}, ct => {socketClient.CompressionThreshold}");
                }
                if (socketClient.IsReconnecting)
                {
                    socketClient.IsReconnecting = false;
                    DispatchEvent(new SFSEvent(SFSEvent.CONNECTION_RESUME));
                    return;
                }
                isConnecting = false;
                Hashtable hashtable = new Hashtable();
                hashtable["success"] = true;
                DispatchEvent(new SFSEvent(SFSEvent.CONNECTION, hashtable));
            }
            else
            {
                short     @short       = iSFSObject.GetShort(BaseRequest.KEY_ERROR_CODE);
                string    errorMessage = SFSErrorCodes.GetErrorMessage(@short, log, iSFSObject.GetUtfStringArray(BaseRequest.KEY_ERROR_PARAMS));
                Hashtable hashtable2   = new Hashtable();
                hashtable2["success"]      = false;
                hashtable2["errorMessage"] = errorMessage;
                hashtable2["errorCode"]    = @short;
                DispatchEvent(new SFSEvent(SFSEvent.CONNECTION, hashtable2));
            }
        }
Exemplo n.º 3
0
 public virtual void OnGetPlayers(ISFSObject responseData)
 {
     if (!responseData.IsNull("playerlist"))
     {
         string[] playerStr = responseData.GetUtfStringArray("playerlist");
         UserListCtrl.RefreshPlayer(playerStr);
     }
 }
Exemplo n.º 4
0
        public override void GameResponseStatus(int type, ISFSObject response)
        {
            if (response.ContainsKey("playerlist") && !response.IsNull("playerlist"))
            {
                var playerStr = response.GetUtfStringArray("playerlist");
                UserListCtrl.RefreshPlayer(playerStr);
            }
            var gdata = App.GetGameData <BtwGameData>();

            switch ((BtwRequestType)type)
            {
            case BtwRequestType.Bet:
                YxDebug.Log("-----------------下注--------------");
                WaitWin.Hide();
                BetCtrl.Bet(response);
                ShowNumCtrl.RefreshNum(response);
                break;

            case BtwRequestType.BankerList:
                YxDebug.Log("-----------------上庄列表--------------");
                WaitWin.Hide();
                UserListCtrl.RefreshBanker(response);
                ProgressCtrl.SetNum(response);
                BetCtrl.ShowChip();
                break;

            case BtwRequestType.BeginBet:
                YxDebug.Log("-----------------开始下注--------------");
                WaitWin.Hide();
                gdata.BeginBet = true;
                CardsCtrl.ReSetPonits();
                CardsCtrl.gameObject.SetActive(false);
                ShowNumCtrl.Reset();
                ReSetGame();
                BetCtrl.ShowChip();
                ProgressCtrl.ReSetCountdown(15);
                ProgressCtrl.BeginCountdown();
                ApplyCtrl.RefreshBanker();
                TimeBet.gameObject.SetActive(true);
                YxMessageTip.Show("开始下注");
                break;

            case BtwRequestType.EndBet:
                YxDebug.Log("-----------------停止下注--------------");
                gdata.BeginBet = false;
                BetCtrl.HideChip();
                ProgressCtrl.EndCountdown();
                TimeBet.gameObject.SetActive(false);
                WaitWin.Hide();
                break;

            case BtwRequestType.GiveCards:
                YxDebug.Log("-----------------发牌--------------");
                CardsCtrl.BeginGiveCards(response);
                CardsCtrl.gameObject.SetActive(true);
                WaitWin.Hide();
                break;

            case BtwRequestType.Result:
                YxDebug.Log("-----------------结算--------------");
                gdata.GStatus = YxEGameStatus.Normal;
                if (ResultWin != null)
                {
                    ResultWin.ShowWithData(response);
                }
                UserListCtrl.RefreshBanker(response);
                ProgressCtrl.SetNum(response);
                ApplyCtrl.HideApplyBanker();
                WaitWin.Hide();
                break;
            }
        }