Exemple #1
0
 public SyncCommand(string name, GameTaskManager task_manager, System.Action OnExecute, System.Action OnCancel = null)
 {
     this.name         = name;
     this.name_hash    = Hash.CRC32(name);
     this.task_manager = task_manager;
     this.OnExecute    = OnExecute;
     this.OnCancel     = OnCancel;
 }
Exemple #2
0
 public AsyncCommand(string name, bool is_parallel, GameTaskManager task_manager, Func <UniTask> OnExecute, Action OnCancel = null)
 {
     this.name         = name;
     this.name_hash    = Hash.CRC32(name);
     this.is_parallel  = is_parallel;
     this.task_manager = task_manager;
     this.OnExecute    = OnExecute;
     this.OnCancel     = OnCancel;
 }
Exemple #3
0
        public void StartNewGame(GameUserSession session, string RoomCode)
        {
            PrePareNewGameInfo(RoomCode);

            var game = GameDataHandle.GetGameData();

            game.GameCoins = new EGameCoins(RoomCode);



            GameTaskManager.SyncTask_ShuffleEnd(session);
        }
Exemple #4
0
        public override List <IGameMessage> HandleData(GameUserSession session, dataPlayerFollow Data)
        {
            List <IGameMessage> msgList = new List <IGameMessage>();
            GameManager         gm      = session.GameManager;
            var gi = gm.GameDataHandle.GetGameInfo();

            gm.PlayerFollow(gi, Data.OpenId, Data.FollowCoins);

            gi = gm.PreNextStep(true);

            var dealCards = gm.DealCard(gi);

            if (dealCards != null)
            {
                var followMsg = GameMessageHandle.CreateResultPlayerFollowMsg(gm.RoomCode, Data.OpenId, "", Data.FollowCoins);
                msgList.Add(followMsg);

                gi = gm.PreNextStep(true);
                var cardsMsg = GameMessageHandle.CreateDealCardMsg(gm.RoomCode, dealCards, gi);
                msgList.Add(cardsMsg);

                GameTaskManager.SyncTask_DealCardDone(session, gi);
            }
            else
            {
                var msg = gm.WaitNextPlayer(gi);
                if (msg != null)
                {
                    msgList.Add(msg);
                }
                else
                {
                    var followMsg = GameMessageHandle.CreateResultPlayerFollowMsg(gm.RoomCode, Data.OpenId, gi.CurBetUserOpenId, Data.FollowCoins);
                    msgList.Add(followMsg);
                }
            }

            return(msgList);
        }
Exemple #5
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);
        }