예제 #1
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));
            }
        }
예제 #2
0
 public void HandleResponse(ISFSObject anObjectIn, GameLobbyManager ourGLM)
 {
     foreach (string playerName in anObjectIn.GetUtfStringArray("PlayerNameArray"))
     {
         ourGLM.getUserInterface().alterOnlinePlayerText(playerName);
     }
 }
예제 #3
0
    public void SetSlots(ISFSObject objIn, bool x)
    {
        int    end  = 0;
        string info = objIn.GetUtfString("slots");

        end = info.Length;
        for (int i = 0; i < end; i++)
        {
            daysSlots [i] = int.Parse(info [i] + "");
        }
        string[] d;
        if (x)
        {
            d = objIn.GetUtfStringArray("dates");
            dates.Add("Auction Date");
            for (int i = 0; i < d.Length; i++)
            {
                dates.Add(d [i]);
            }
            AucDate.ClearOptions();
            AucDate.AddOptions(dates);
        }

        else if (!x)
        {
            ErrorMessage.text = "Your auction not rigesterd, try choose another time";
        }
    }
예제 #4
0
 public void OnGetPlayers(ISFSObject responseData)
 {
     if (responseData.ContainsKey("playerlist"))
     {
         string[] playerStr = responseData.GetUtfStringArray("playerlist");
         App.GetGameManager <BjlGameManager>().UserListCtrl.RefreshPlayer(playerStr);
     }
 }
예제 #5
0
 public virtual void OnGetPlayers(ISFSObject responseData)
 {
     if (!responseData.IsNull("playerlist"))
     {
         string[] playerStr = responseData.GetUtfStringArray("playerlist");
         UserListCtrl.RefreshPlayer(playerStr);
     }
 }
예제 #6
0
 public void OnGetPlayers(ISFSObject responseData)
 {
     if (responseData.ContainsKey("playerlist"))
     {
         var playerStr = responseData.GetUtfStringArray("playerlist");
         UserListCtrl.RefreshPlayer(playerStr);
     }
 }
예제 #7
0
 public void AddNpcs(ISFSObject gameInfo)
 {
     if (!gameInfo.ContainsKey("npc"))
     {
         return;
     }
     _npcs = gameInfo.GetUtfStringArray("npc");
     StartCoroutine(CheckNpcs(gameInfo));
 }
예제 #8
0
        private IEnumerator CheckNpcs(ISFSObject gameInfo)
        {
            var npslist = gameInfo.GetUtfStringArray("npc");

            YxDebug.LogArray(npslist);
            var maxNpcIndex = npslist.Length - 1;
            var isInit      = true;
            var gdata       = App.GetGameData <FishGameData>();
            var self        = App.GameData.GetPlayerInfo();
            var batterys    = GameMain.Singleton.PlayersBatterys;
            var coin        = gdata.NeedUpperScore ? batterys.MaxGunStyle * 30 : self.CoinA;

            while (true)
            {
                //查找所有空缺位置
                var vacants = new List <Player>();
                foreach (var player in _playerList)
                {
                    if (!player.IsHide())
                    {
                        continue;
                    }
                    if (Random.Range(0, 100) < 40)
                    {
                        continue;
                    }
                    vacants.Add(player);
                }
                YxDebug.Log("---准备加入rb【{0}】-----", "PlayerBatterys", null, vacants.Count);

                foreach (var player in vacants)
                {
                    var index   = Random.Range(0, maxNpcIndex);//随机获取机器人
                    var npcName = _npcs[index];
                    if (string.IsNullOrEmpty(npcName))
                    {
                        continue;                             //忽略
                    }
                    var obj = new SFSObject();
                    var x1  = Random.Range(coin * 0.8f, coin * 1.5f);//随机
                    //max*Random.Range(20, 100) + Random.Range(35342, 105480)
                    var ncoin = isInit ? x1 : 0;
                    obj.PutInt(RequestKey.KeyCoin, (int)ncoin);
                    obj.PutInt(RequestKey.KeySeat, player.Idx);
                    obj.PutInt("nid", index);
                    obj.PutUtfString(RequestKey.KeyName, npcName);
                    _npcs[index] = null;
                    AddPlayer(obj, true);
                }
                isInit = false;
                YxDebug.LogArray(_npcs);
                yield return(new WaitForSeconds(Random.Range(300f, 600f)));
            }
        }
        public void HandleResponse(ISFSObject anObjectIn, GameWorldManager ourGWM)
        {
            Debug.Log("Inventory Update Recieved");
            int[] iDArray = anObjectIn.GetIntArray("IDArray");
            int[] itemArray = anObjectIn.GetIntArray("ItemIDArray");
            int[] quantityArray = anObjectIn.GetIntArray("QuantityArray");
            string[] nameArray = anObjectIn.GetUtfStringArray("NameArray");
            string[] descriptionArray = anObjectIn.GetUtfStringArray("DescriptionArray");
            string[] locationArray = anObjectIn.GetUtfStringArray("SubLocationArray");

            bool reopenInventory = false;
            if(GameObject.Find("InventoryPanel") != null)
            {
                GameObject.Find("SceneScriptsObject").GetComponent<GameUI>().openInventory();
                reopenInventory = true;
            }

            if(itemArray.Length != quantityArray.Length)
            {
                Debug.Log("Item array and quantity array are not the same size.");
            }
            int iPos = 0;
            foreach (int ID in iDArray)
            {
                //If the inventory already has this item in it, simply update its data.
                if(ourGWM.getLPC().getInventory().ContainsKey(ID))
                {
                    ourGWM.getLPC().getInventory()[ID].updateItemData(itemArray[iPos], quantityArray[iPos], nameArray[iPos], descriptionArray[iPos], locationArray[iPos]);
                }
                else if(!ourGWM.getLPC().getInventory().ContainsKey(ID))
                {
                    ourGWM.getLPC().getInventory().Add(ID, new Item(ID, itemArray[iPos], quantityArray[iPos], nameArray[iPos], descriptionArray[iPos], locationArray[iPos]));
                }
                iPos++;
            }
            if(reopenInventory)
            {
                GameObject.Find("SceneScriptsObject").GetComponent<GameUI>().openInventory();
            }
        }
        public void HandleResponse(ISFSObject anObjectIn, GameWorldManager ourGWM)
        {
            string[] types = anObjectIn.GetUtfStringArray("Type");
            int[] levels = anObjectIn.GetIntArray("Level");
            string[] location = anObjectIn.GetUtfStringArray("Location");

            for(int i = 0; i < levels.Length; i++)
            {
                GameObject aNode;
                if(levels[i] == 0)
                {
                    aNode = ourGWM.createObject("Prefabs/Settlements/WoodSign");
                }
                else
                {
                    aNode = ourGWM.createObject("Prefabs/Settlements/" + types[i] + "/" + levels[i].ToString());
                }
                aNode.name = "Node_" + types[i] + "_" + levels[i];
                aNode.transform.position = new Vector3(Convert.ToSingle(location[i].Split(',')[0]), Convert.ToSingle(location[i].Split(',')[1]), Convert.ToSingle(location[i].Split(',')[2]));
                aNode.transform.rotation = new Quaternion(0, Convert.ToSingle(location[i].Split(',')[3]), 0, 0);
            }
        }
예제 #11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="gameInfo"></param>
 protected override void InitGameData(ISFSObject gameInfo)
 {
     base.InitGameData(gameInfo);
     Ante   = gameInfo.GetInt("ante");
     Caichi = gameInfo.GetLong("caichi");
     if (gameInfo.ContainsKey("jilu"))
     {
         var sfZhongJiangJiLu = gameInfo.GetUtfStringArray("jilu");
         foreach (var t in sfZhongJiangJiLu)
         {
             // 保存启动时服务器发来的中奖纪录
             AddPrizeData(t, false);
         }
         YxDebug.LogError("cuol");
     }
 }
예제 #12
0
        public override void OnGetGameInfo(ISFSObject requestData)
        {
            base.OnGetGameInfo(requestData);

            if (requestData.ContainsKey("bkmingold"))
            {
                ((ProgressCtrl02)ProgressCtrl).SetBankerLimitLabel(requestData.GetInt("bkmingold"));
            }
            if (GameSetting != null)
            {
                var music = YxFramwork.Framework.Core.Facade.Instance <YxFramwork.Manager.MusicManager>();
                MusicToggle.StartsActive = music.MusicVolume > 0;
                GameSetting.SetSound(music.MusicVolume > 0);
            }
            if (requestData.ContainsKey("record"))
            {
                var strArray = requestData.GetUtfStringArray("record");
                AddHistoryResultList(strArray);
            }
        }
예제 #13
0
        protected override void InitGameData(ISFSObject gameInfo)
        {
            base.InitGameData(gameInfo);
            Ante   = gameInfo.GetInt("ante");
            Caichi = gameInfo.GetInt("caichi");
            Config = gameInfo.GetUtfString("config");

            var gdata            = App.GetGameData <SlyzGameData>();
            var sfZhongJiangJiLu = gameInfo.GetUtfStringArray("jilu");
            var len = sfZhongJiangJiLu.Length;

            for (var i = len - 1; 0 <= i; i--)
            {
                // 保存启动时服务器发来的中奖纪录
                gdata.AddPrizeData(sfZhongJiangJiLu[i], false);
            }

            var sfHaoPaiJiLu = gameInfo.GetSFSObject("user").GetUtfStringArray("goodCards");

            mStartData.ParseCardRecordInGameInfo(sfHaoPaiJiLu);
        }
        public void HandleResponse(ISFSObject anObjectIn, GameLobbyManager ourGLM)
        {
            //Define variables
            GameObject formationsPanel = ourGLM.createObject("UI/FormationsPanel");

            formationsPanel.name = "FormationsPanel";
            formationsPanel.transform.SetParent(GameObject.Find("Canvas").transform);
            formationsPanel.transform.localPosition = new Vector3();

            if (anObjectIn.GetInt("NumberOfFormations") > 0)
            {
                string[] formationButtonNames = anObjectIn.GetUtfStringArray("FormationNames");
                for (int i = 0; i < formationButtonNames.Length; i++)
                {
                    Transform aFormationButton = formationsPanel.transform.FindChild("New 1v1 Formation");
                    aFormationButton.GetComponentInChildren <Text>().text = formationButtonNames[i];
                    aFormationButton.name = formationButtonNames[i];

                    //Add Button Event Listener and Button to the ButtonDictionary
                    ourGLM.getUserInterface().getButtonDictionary().Add(aFormationButton.GetComponent <Button>(), new GetFormationButtonHandler());
                    aFormationButton.GetComponent <Button>().onClick.AddListener(() => { ourGLM.buttonClicked(aFormationButton.GetComponent <Button>()); });
                }
            }
        }
예제 #15
0
        public override void GameResponseStatus(int type, ISFSObject response)
        {
            YxDebug.Log("Request == " + (RequestType)type);
            if (response.ContainsKey("playerlist"))
            {
                BankerMgr.RefreshPlayerList(response.GetUtfStringArray("playerlist"));
            }

            switch ((RequestType)type)
            {
            case RequestType.Bet:
                if (response.ContainsKey("golds"))      // -- 统一走else逻辑
                {
                    YxDebug.Log("收到重复上轮");
                    var golds = response.GetIntArray("golds");
                    var seat  = response.GetInt("seat");
                    if (seat == App.GameData.SelfSeat)
                    {
                        RightBottomMgr.LastTime.isEnabled = true;
                    }

                    for (int i = 0; i < golds.Length; i++)
                    {
                        AddBet(golds[i], i, seat, true);
                    }
                }
                else
                {
                    int p    = response.GetInt("p");
                    int gold = response.GetInt("gold");
                    int seat = response.GetInt("seat");
                    AddBet(gold, p, seat);
                }
                break;

            case RequestType.Reward:
                break;

            case RequestType.ApplyBanker:
                break;

            case RequestType.ApplyQuit:
                break;

            case RequestType.BeginBet:
                CanQuit = true;
                Loading.SetActive(false);
                RightBottomMgr.CurNum++;
                ResultManager.GetInstance().CloseResult();
                ClearAllBet();
                BetManager.GetInstance().IsBeginBet = true;
                StartCountNum();
                Wheel.GetInstance().Selected.GetComponent <TweenAlpha>().enabled = false;
                Wheel.GetInstance().Selected.GetComponent <TweenAlpha>().value   =
                    Wheel.GetInstance().Selected.GetComponent <TweenAlpha>().from;

                break;

            case RequestType.EndBet:
                Loading.SetActive(false);
                BetManager.GetInstance().IsBeginBet = false;
                //开始摇奖
                Wheel.GetInstance().StartTrun();

                RefreshRepeatData(RightBottomMgr.UpBetValue.ToArray());

                break;

            case RequestType.GiveCards:
                int carIndex = response.GetInt("carInx");

                //针对超过20的服务器反馈进行处理
                if (carIndex >= 20 && Wheel.GetInstance().Items.Length <= 20)      //=>条件2考虑兼容问题
                {
                    carIndex = carIndex % 8;
                }

                LuckIndex = carIndex;
                Wheel.GetInstance().StopTrun(carIndex, OnDrawFinish);
                break;

            case RequestType.Result:
                CanQuit = true;
                Loading.SetActive(false);
                RightBottomMgr.RefreshLastTimeBtn();
                if (!BankerMgr.IsBanker(-1))
                {
                    BankerMgr.Banker.WinTotalCoin += response.GetInt("bankWin");
                    var bankerCoin = "¥" + YxUtiles.ReduceNumber(BankerMgr.Banker.WinTotalCoin);
                    BankerMgr.Banker.WinTotalCoinLabel.Text(bankerCoin);
                }
                var self = App.GameData.GetPlayer();
                self.Coin          = response.GetLong("total");
                self.WinTotalCoin += response.GetInt("win");

                YxDebug.Log("---------结算-----------");
                ResultManager.GetInstance().OpenResult(response);
                HistoryRecord.GetInstance().RefreshData(response.GetInt("carInx"), 1);
                //YxDebug.Log("result");
                break;

            case RequestType.BankerList:
                //UserManager.GetInstance().BankerSeat = response.GetInt("banker");
                if (response.GetInt("banker") == -1)
                {
                    BankerMgr.SetBankerInfo(null);
                }
                BankerMgr.RefreshBankerList(response.GetSFSArray("bankers"), response.GetInt("banker"));
                break;

            default:
                YxDebug.Log("不存在的服务器交互!");
                break;
            }
        }
예제 #16
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;
            }
        }
예제 #17
0
        /// <summary>
        /// 打开结算界面
        /// </summary>
        public void OpenResult(ISFSObject data = null)
        {
            var selfRd = GetData(Self);

            if (data != null)
            {
                var pwins = data.GetUtfStringArray("pwins");
                var index = 0;

                foreach (var pwin in pwins)
                {
                    var info = pwin.Split(',');

                    if (index < Top.Length && int.Parse(info[1]) != 0)
                    {
                        var topRd = GetData(Top[index]);
                        topRd.Top.text  = (index + 1).ToString();
                        topRd.Name.text = info[2];
                        long coin;
                        long.TryParse(info[1], out coin);
                        topRd.Gold.text = "¥" + YxUtiles.GetShowNumberForm(coin);
                        index++;
                    }
                }

                for (var i = index; i < Top.Length; i++)
                {
                    var topRd = GetData(Top[i]);
                    SetDataNull(topRd);
                }
                selfRd.Top.text  = "本家";
                selfRd.Gold.text = "¥" + YxUtiles.GetShowNumberForm(data.GetInt("win"));

                if (data.GetInt("win") > 0)
                {
                    Facade.Instance <MusicManager>().Play("Win");
                    var gameMgr = App.GetGameManager <CschGameManager>();
                    //gameMgr.LeftLampCtrl.PlayLamp();
                    //gameMgr.RightLampCtrl.PlayLamp();
                }

                selfRd.Name.text = App.GameData.GetPlayer().Nick;
                var bankerRd = GetData(Banker);
                bankerRd.Name.text = App.GetGameManager <CschGameManager>().BankerMgr.Banker.Nick;
                bankerRd.Gold.text = "¥" + YxUtiles.GetShowNumberForm(data.GetInt("bankWin"));

                PlayerRecord.GetInstance().ShowRealResultRecord();
            }
            else
            {
                SetDataNull(selfRd);

                foreach (var t in Top)
                {
                    var topRd = GetData(t);
                    SetDataNull(topRd);
                }
            }



            BG.SetActive(true);
            var game       = App.GetGameManager <CschGameManager>();
            var rbMgr      = App.GetGameManager <CschGameManager>().RightBottomMgr;
            var upBetValue = rbMgr.UpBetValue;

            if (!game.Execute)
            {
                for (var i = 0; i < game.Regions.Length; i++)
                {
                    upBetValue[i] = 0;
                }
            }
            else
            {
                game.Execute = false;
            }

            RecordCtrl.GetInstance().AssignmentLastRound();

            for (var i = 0; i < game.Regions.Length; i++)
            {
                upBetValue[i] = 0;
            }

            CoinSpriteVisCtrl();
        }