예제 #1
0
        public override List <IGameMessage> HandleData(GameUserSession session, dataTestStartGame Data)
        {
            List <IGameMessage> result      = new List <IGameMessage>();
            GameManager         gameManager = session.GameManager;

            ResultGameShuffleStart shuffleStartMsg = new ResultGameShuffleStart(Data.RoomCode);

            result.Add(shuffleStartMsg);

            gameManager.StartNewGame(session, Data.RoomCode);

            return(result);
        }
예제 #2
0
        public override List <IGameMessage> HandleData(GameUserSession session, dataUserSitDown Data)
        {
            List <IGameMessage> result = new List <IGameMessage>();

            //检测用户状态
            GameManager gameManager = session.GameManager;

            //if (!gameManager.CanSitDown())
            //{
            //    result.Add(new MessageNormalError("当前不能入座!请等待"));
            //    return result;
            //}
            //用户坐下
            lock (_lockSitDown)
            {
                var r = gameManager.UserSitDown(Data.SeatNo, Data.Coins);
                if (r.IsSuccess)
                {
                    ResultUserSitDown msg = new ResultUserSitDown(gameManager.RoomCode);
                    msg.RemainCoins = Data.Coins;
                    msg.RoomCode    = r.SuccessMsg;
                    msg.SeatNo      = r.IntMsg;
                    result.Add(msg);
                }
                else
                {
                    result.Add(new MessageNormalError(r.ErrorMsg));
                    return(result);
                }
                //游戏下一阶段
                var gameInfo = gameManager.GetGameBasic();
                var gs       = gameInfo.GameStatus;
                if (gs == GameStatus.NoGame ||
                    gs == GameStatus.WaitPlayer ||
                    gs == GameStatus.Shuffling)
                {
                    var nextGs = gameManager.GetNextGameStatus(gameInfo, true);

                    if (nextGs == GameStatus.WaitPlayer)
                    {
                        result.Add(new ResultGameWait(gameInfo.RoomCode));
                    }
                    if (nextGs == GameStatus.StartShuffle)
                    {
                        //通知前端洗牌
                        ResultGameShuffleStart shuffleStartMsg = new ResultGameShuffleStart(gameInfo.RoomCode);
                        result.Add(shuffleStartMsg);


                        //   gameManager.PrePareNewGameInfo(gameInfo);

                        //洗牌异步指令,洗牌结束需要通知前端,开始游戏
                        GameTaskManager.SyncTask_ShuffleEnd(session);
                    }
                    //else if (nextGs == GameStatus.Shuffling)
                    //{
                    //    ResultGameShuffling shuffleMsg = gameManager.WhileShuffling();
                    //    result.Add(shuffleMsg);
                    //}
                }
            }

            return(result);
        }