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; }
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; }
public void StartNewGame(GameUserSession session, string RoomCode) { PrePareNewGameInfo(RoomCode); var game = GameDataHandle.GetGameData(); game.GameCoins = new EGameCoins(RoomCode); GameTaskManager.SyncTask_ShuffleEnd(session); }
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); }
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); }