public UserWaitBetTask(GameServer gameServer, string waitUserOpenId) { _GameServer = gameServer; _waitUserOpenId = waitUserOpenId; _GameMessageHandle = new GameMessageHandle(); }
public override List <IGameMessage> HandleData(GameUserSession session, dataPlayerAddCoins Data) { List <IGameMessage> msgList = new List <IGameMessage>(); GameManager gm = session.GameManager; EGameInfo gi = gm.GameDataHandle.GetGameInfo(); var nextUser = gm.PlayerAddCoins(gi, Data.OpenId, Data.Coins, 0); if (nextUser == null) { gi = gm.GameEndShowCard(gi, true); } var msg = gm.WaitNextPlayer(gi); if (msg != null) { msgList.Add(msg); } else { var passMsg = GameMessageHandle.CreateResultPlayerAddCoinsMsg(gm.RoomCode, Data.OpenId, gi.CurBetUserOpenId, Data.Coins); msgList.Add(passMsg); } return(msgList); }
public void Run(int WaitSec = GameConfig.Turn_Wait_Server) { Task SubTask = new Task(() => { SpinWait.SpinUntil(() => { return(false); }, WaitSec * 1000); //【有Bug 风险,用户突然离线】 var betSession = _GameServer.GetSessions(s => s.GameAttr.UserOpenId == _waitUserOpenId).FirstOrDefault(); GameManager gm = betSession.GameManager; var gi = gm.GetGameBasic(); //时间到了 还是此用户下注,说明超时,则弃牌 if (gi.CurBetUserOpenId == gm.UserOpenId) { var list = new List <IGameMessage>(); //系统主动弃牌 gm.PlayerGiveUp(); var giveUpMsg = GameMessageHandle.CreateResultPlayerGiveUpMsg(gm.RoomCode, gm.UserOpenId, gi.CurBetUserOpenId); list.Add(giveUpMsg); gi = gm.PreNextStep(true); var msg = gm.WaitNextPlayer(gi); if (msg != null) { list.Add(msg); } _GameMessageHandle.Push(list); _GameMessageHandle.Run(_GameServer); } }); SubTask.Start(); }
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 delegate void DoAfterTask(string RoomCode); //public event DoAfterTask afterTaskEvent; public ShuffleEndTask(GameManager gameManger) { _GameManager = gameManger; _GameMessageHandle = new GameMessageHandle(); }