public UserService(UserData userData, DeskData deskData)
 {
     this.userData = userData;
     this.deskData = deskData;
     // this.reservationData = new ReservationData();
     this.reservationData = reservationData;
 }
Ejemplo n.º 2
0
        public static bool StartAIEngine(GameDV game, UserDV user, DeskData data)
        {
            if (InProgress.Keys.Any(x => x.GameId == game.GameId))
            {
                return(false);
            }
            InProgress.TryAdd(game, 0);

            Task.Run(new Action(() =>
            {
                try
                {
                    Solver solver = new Solver();
                    PointData pd  = solver.GetNextMove(data);

                    JsonPlayRequest request = new JsonPlayRequest();
                    request.gameToken       = game.GameToken;
                    request.userToken       = user.Token;
                    request.positionX       = pd.X;
                    request.positionY       = pd.Y;
                    JsonCommunication.Play(request); // ignore response
                    int outval;
                    InProgress.TryRemove(game, out outval);
                }
                catch (Exception ex)
                {
                    int outval;
                    InProgress.TryRemove(game, out outval);
                }
            }));
            return(true);
        }
Ejemplo n.º 3
0
        public void SetDataForMark(int desk_idx, int mark)
        {
            this.desk_id = desk_idx;
            for (int i = 0; i < chairs.Length; i++)
            {
                int bit = 1 << i;
                chairs[i].SetPlayerShow((mark & bit) == bit, desk_idx, i);
            }
            typ = (mark & (1 << chairs.Length)) > 0 ? 1 : 0;
            string des        = "";
            int    desk_level = desk_idx / 10;

            switch (PlayerData.self.bet_typ)
            {
            case 0:
                des = $"每次需要{DeskData.GetRoomNeedResource(PlayerData.self.bet_id, PlayerData.self.bet_id, desk_level)}{DateFile.instance.resourceDate[PlayerData.self.bet_id][1]}!";
                break;

            case 1:
                des = $"物品价值至少{DeskData.GetRoomNeedResource(7, PlayerData.self.bet_id, desk_level)}!";
                break;

            case 2:
                des = $"人物身价至少{DeskData.GetRoomNeedResource(8, PlayerData.self.bet_id, desk_level)}!";
                break;

            default:
                des = $"物品价值至少{DeskData.GetRoomNeedResource(7, PlayerData.self.bet_id, desk_level)}!";
                break;
            }

            this.des.text = $"{GetDeskLevelName(desk_level)}{desk_idx % 10 + 1}号桌\n<size=22><color=red>{typ_name[typ]}\n{des}</color></size>";
        }
Ejemplo n.º 4
0
        private void ShowSelectedGame()
        {
            try
            {
                if (DataContext is Data data)
                {
                    UserListDV ul = data.UsersPanelDV.UserListDV;
                    if (ul.SelectedUser != null)
                    {
                        if (ul.SelectedUser.Games.Count > 0)
                        {
                            UserDV selectedUser = ul.SelectedUser;
                            GameDV game         = ul.SelectedUser.SelectedGame;

                            if (game == null)
                            {
                                return;
                            }

                            JsonCheckStatusRequest checkStatusRequest = new JsonCheckStatusRequest();
                            checkStatusRequest.userToken = selectedUser.Token;
                            checkStatusRequest.gameToken = game.GameToken;

                            JsonCheckStatusResponse response = JsonCommunication.CheckStatus(checkStatusRequest);

                            if (response.winnerId != null)
                            {
                                ul.SelectedUser.SelectedGame = null;
                                ul.SelectedUser.Games.Remove(game);
                            }
                            else
                            {
                                DeskData dd       = new DeskData();
                                bool     isMyTurn = selectedUser.Id == response.actualPlayerId;
                                ESymbol  mySymbol;
                                if (isMyTurn)
                                {
                                    mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Circle : ESymbol.Cross;
                                }
                                else
                                {
                                    mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Cross : ESymbol.Circle;
                                }

                                dd.Fill(response, mySymbol, isMyTurn);
                                data.DeskData = dd;

                                if (isMyTurn && data.AutomaticMode)
                                {
                                    AIEngine.StartAIEngine(game, selectedUser, dd);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 5
0
 public void AssignTask(DeskData assignedDesk, GroupData assignedGroup)
 {
     AssignedDesk  = assignedDesk;
     AssignedGroup = assignedGroup;
     Game.Player.Charge(m_Price);
     m_UI = Game.Player.TaskManagementUI.AddTask(this);
 }
Ejemplo n.º 6
0
        void OnDeskData(string error, long time_stamp, DeskData deskData, string battle_flag)
        {
            next_auto_send_time = Time.time + auto_send_interval;
            if (null == error)
            {
                tPeopleNum.text = "";
                self.time_stamp = time_stamp;
                if (all.activeSelf && self.desk_idx != -1)
                {
                    if (!desk.gameObject.activeSelf)
                    {
                        this.hall.SetActive(false);
                        this.room.SetActive(false);
                        this.desk.SetActive(true);
                        this.chat.SetActive(true);
                        this.people.SetActive(false);
                        int desk_level = self.desk_idx / 10;
                        tTitle.text   = $"{self.player_name} 大厅>{RoomObj.GetRoomLevelName(self.level)}蛐蛐房>{RoomDeskObj.GetDeskLevelName(desk_level)}{(self.desk_idx % 10 + 1)}号桌";
                        go_close.name = "1556454954,1556454954";
                    }

                    // 聊天
                    ChatData[] chatDatas = deskData.chat_data.ToArray();
                    ququChat.SetData(chatDatas);

                    // 对战桌
                    ququDesk.SetData(deskData);
                }
                else if (!all.activeSelf)
                {
                    tPeopleNum.text = "返回赌桌 " + PlayerData.online_count + "人在线";
                }
                UpdateBetAndQuqu();

                if (!int.TryParse(battle_flag, out int tmp)) // 触发战斗
                {
                    // // // Main.Logger.Log("触发战斗"+ battle_flag);
                    self.ready = 0; // 准备战斗恢复为未准备
                    if (self.observer > 1)
                    {
                        self.observer = 1; // 押注观战恢复为普通观战
                    }
                    PlayBattle(battle_flag);
                }
                else
                {
                    // // // Main.Logger.Log("不触发战斗"+ battle_flag);
                }
                //OnLose();
            }
            else
            {
                self.desk_idx = -1;
                //YesOrNoWindow.instance.SetYesOrNoWindow(-1, "出错!", error, false, true);
                // // Main.Logger.Log("error" + error);
                GetData();
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 请求所有走势信息
        /// </summary>
        /// <param name="deskData"></param>
        /// <param name="callBack"></param>
        public void SendGetGameRecord(DeskData deskData, TwCallBack callBack)
        {
            var dict = new Dictionary <string, object>();

            dict["gameKey"] = deskData.GameKey;
            if (deskData.RoomType != null)
            {
                dict["groupId"] = GetGroupId(deskData.GameKey, deskData.RoomType);//;
            }
            Facade.Instance <TwManager>().SendAction("room.getGameRecord", dict, callBack);
        }
Ejemplo n.º 8
0
        public void OpenSelection(DeskData deskData, GroupData groupData)
        {
            Game.Player.Pause();
            m_DeskData  = deskData;
            m_GroupData = groupData;

            m_SelectionObject.SetActive(true);
            m_CloseTaskSelectionButton.gameObject.SetActive(true);
            foreach (TaskData taskData in Game.Player.TaskPoolDatas)
            {
                NewTaskInfoUI newTask = Instantiate(m_NewTaskInfoUIPrefab, m_SelectionObject.transform);
                newTask.SetTask(taskData, this);
                m_Tasks.Add(newTask);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 打开桌面窗口
        /// </summary>
        public bool ShowDeskListPanel(string gameKey)
        {
            var panelMgr = Facade.Instance <YxPanelManager>();
            var panel    = panelMgr.GetPanel <HallPanel>("GameHallPanel");

            if (panel == null)
            {
                return(false);
            }
            var deskData = new DeskData
            {
                GameKey  = gameKey,
                RoomType = null
            };
            var deskListPanel = panel.ShowChildPanel("DeskListPanel", deskData);

            return(deskListPanel == null);
        }
Ejemplo n.º 10
0
        public PointData GetNextMove(DeskData deskData)
        {
            DeskData = deskData;
            Initialize();

            EvaluateFields(EType.Circle);
            EvaluateFields(EType.Cross);
            EvaluateFieldsValues(EType.Circle);

            //PrintValues();

            SolverField sfBest = GetBestField(EType.Circle);

            return(ConvertSolverField(sfBest));

            //SolverField sf = GetRandomField();
            //PointData pd = ConvertSolverField(sf);
            //return pd;
        }
Ejemplo n.º 11
0
 public DeskService(DeskData deskData)
 {
     this.deskData = deskData;
 }
Ejemplo n.º 12
0
        public void SetData(DeskData data)
        {
            this.data = data;
            loves     = new string[] { "", "" };
            // 玩家
            PlayerData[] playerDats = data.player_data;
            for (int i = 0; i < playerDats.Length; i++)
            {
                if (i < players.Length)
                {
                    PlayerData player = playerDats[i];
                    players[i].SetData(player, i);

                    if (player.ip == self.ip)
                    {
                        my_idx = i;
                    }
                    if (i < 2)
                    {
                        string bet = player.bet;
                        player.SetBetIdAndTyp(i + 1);
                        int bet_typ = player.bet_typ;
                        int bet_id  = player.bet_id;
                        QuquHall.instance.SetBetUI(i, bet_typ, bet_id);
                        if (player.ip != "0")
                        {
                            loves[i] = player.GetLoveQuquName();
                        }

                        if (player.ip != "0")
                        {
                            int[] callTime = i == 0 ? leftQuquCallTime : rightQuquCallTime;
                            callTime = new int[3]
                            {
                                Random.Range(0, 300),
                                Random.Range(0, 300),
                                Random.Range(0, 300)
                            };
                            int[] ququId = i == 0 ? leftQuquId : rightQuquId;
                            for (int k = 0; k < 3; k++)
                            {
                                ququId[k] = player.GetBattleQuquId(k, -10, 1);
                            }
                        }
                        else
                        {
                            int[] ququId = i == 0 ? leftQuquId : rightQuquId;
                            for (int k = 0; k < 3; k++)
                            {
                                ququId[k] = 0;
                            }
                        }
                    }
                }
            }

            if (self.observer == 0) // 参赛选手
            {
                GameObject showBtn;
                GameObject hideBtn;
                Image      tImg;
                if (my_idx == 0)  // 在左边
                {
                    showBtn = leftBtn;
                    hideBtn = rightBtn;
                    tImg    = tLeftImage;
                }
                else // 在右边
                {
                    showBtn = rightBtn;
                    hideBtn = leftBtn;
                    tImg    = tRightImage;
                }
                hideBtn.SetActive(false);
                showBtn.SetActive(true);
                tImg.sprite = self.ready == 2 ? QuquHall.instance.sprite_x : QuquHall.instance.sprite_o;
                tImg.transform.localScale = self.ready == 0 ? new Vector3(.5f, .5f, .5f) : Vector3.one;
                //tBtn.text = ready_state_str[self.ready];
            }
            else // 观众
            {
                if (self.observer == 2) // 押1号选手
                {
                    leftBtn.SetActive(true);
                    //tLeftBtn.text = "取消押注";
                    tLeftImage.sprite = QuquHall.instance.sprite_x;
                }
                else
                {
                    leftBtn.SetActive(true);
                    PlayerData sel = GetPlayer(0);
                    //string bet_player_name = "押他";
                    //tLeftBtn.text = bet_player_name;
                    tLeftImage.sprite = QuquHall.instance.sprite_o;
                }
                if (self.observer == 3) // 押1号选手
                {
                    rightBtn.SetActive(true);
                    //tRightBtn.text = "取消押注";
                    tRightImage.sprite = QuquHall.instance.sprite_x;
                }
                else
                {
                    rightBtn.SetActive(true);
                    PlayerData sel = GetPlayer(1);
                    //string bet_player_name = "押他";
                    //tRightBtn.text = bet_player_name;
                    tRightImage.sprite = QuquHall.instance.sprite_o;
                }
                tLeftImage.transform.localScale  = Vector3.one;
                tRightImage.transform.localScale = Vector3.one;
            }

            UpdateDeskDes(true);
        }
Ejemplo n.º 13
0
 public void AssignTask(DeskData deskData, GroupData groupData, TaskData taskData)
 {
     taskData.AssignTask(deskData, groupData);
     TaskDatas.Add(taskData);
     TaskPoolDatas.Remove(taskData);
 }
Ejemplo n.º 14
0
        private void ShowSelectedGame()
        {
            try
            {
                if (DataContext is Data data)
                {
                    foreach (var bsdi in data.BulkSolveData.Data)
                    {
                        Task.Run(() =>
                        {
                            UserDV user = bsdi.User;
                            GameDV game = bsdi.Game;

                            if (game == null)
                            {
                                return;
                            }

                            JsonCheckStatusRequest checkStatusRequest = new JsonCheckStatusRequest();
                            checkStatusRequest.userToken = user.Token;
                            checkStatusRequest.gameToken = game.GameToken;

                            JsonCheckStatusResponse response = JsonCommunication.CheckStatus(checkStatusRequest);

                            if (response.winnerId != null)
                            {
                                DeskData dd = bsdi.DeskData.Copy();
                                if (response.winnerId == user.Id)
                                {
                                    dd.Winner = user.Nickname;
                                }
                                else
                                {
                                    dd.Winner = "Opponent";
                                }
                                bsdi.DeskData = dd;
                            }
                            else
                            {
                                DeskData dd   = new DeskData();
                                bool isMyTurn = user.Id == response.actualPlayerId;
                                ESymbol mySymbol;
                                if (isMyTurn)
                                {
                                    mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Circle : ESymbol.Cross;
                                }
                                else
                                {
                                    mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Cross : ESymbol.Circle;
                                }

                                dd.SquareSize = 5;
                                dd.Fill(response, mySymbol, isMyTurn);
                                bsdi.DeskData = dd;

                                if (isMyTurn)
                                {
                                    AIEngine.StartAIEngine(game, user, dd);
                                }
                            }
                        });
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
Ejemplo n.º 15
0
        private void Play()
        {
            try
            {
                if (DataContext is Data data)
                {
                    foreach (var d in data.BulkSolveData.Data)
                    {
                        if (d.DeskData.Winner != null)
                        {
                            if (RemoveCounter.ContainsKey(d))
                            {
                                RemoveCounter[d]++;
                            }
                            else
                            {
                                RemoveCounter.Add(d, 0);
                            }

                            if (RemoveCounter[d] >= 5)
                            {
                                data.BulkSolveData.Data.Remove(d);
                                RemoveCounter.Remove(d);
                            }
                        }
                    }

                    if (!stop)
                    {
                        while (data.BulkSolveData.Data.Count < 24)
                        {
                            BulkSolveDataItem bsdi = CreateGame();
                            data.BulkSolveData.Data.Add(bsdi);
                        }
                    }


                    foreach (var item in data.BulkSolveData.Data)
                    {
                        Task.Run(() =>
                        {
                            try
                            {
                                UserDV user = item.User;
                                GameDV game = item.Game;

                                if (game == null)
                                {
                                    return;
                                }

                                JsonCheckStatusRequest checkStatusRequest = new JsonCheckStatusRequest();
                                checkStatusRequest.userToken = user.Token;
                                checkStatusRequest.gameToken = game.GameToken;

                                JsonCheckStatusResponse response = JsonCommunication.CheckStatus(checkStatusRequest);

                                if (response.winnerId != null)
                                {
                                    DeskData dd = item.DeskData.Copy();
                                    if (response.winnerId == user.Id)
                                    {
                                        dd.Winner = user.Nickname;
                                    }
                                    else
                                    {
                                        dd.Winner = "Opponent";
                                    }
                                    item.DeskData = dd;
                                }
                                else
                                {
                                    DeskData dd   = new DeskData();
                                    bool isMyTurn = user.Id == response.actualPlayerId;
                                    ESymbol mySymbol;
                                    if (isMyTurn)
                                    {
                                        mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Circle : ESymbol.Cross;
                                    }
                                    else
                                    {
                                        mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Cross : ESymbol.Circle;
                                    }

                                    dd.SquareSize = 5;
                                    dd.Fill(response, mySymbol, isMyTurn);
                                    item.DeskData = dd;

                                    if (isMyTurn)
                                    {
                                        AIEngine.StartAIEngine(game, user, dd);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                            }
                        });
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }