Example #1
0
        public UserWaitBetTask(GameServer gameServer, string waitUserOpenId)
        {
            _GameServer     = gameServer;
            _waitUserOpenId = waitUserOpenId;

            _GameMessageHandle = new GameMessageHandle();
        }
Example #2
0
        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);
        }
Example #3
0
        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();
        }
Example #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);
        }
Example #5
0
        //public delegate void DoAfterTask(string RoomCode);
        //public event DoAfterTask afterTaskEvent;


        public ShuffleEndTask(GameManager gameManger)
        {
            _GameManager       = gameManger;
            _GameMessageHandle = new GameMessageHandle();
        }