Esempio n. 1
0
        public void CScoreReboundReq(GameSession session, CScoreReboundReqMessage message)
        {
            var plr  = session.Player;
            var room = plr.Room;

            Player newPlr = null;
            Player oldPlr = null;

            if (message.NewId != 0)
            {
                newPlr = room.Players.GetValueOrDefault(message.NewId.AccountId);
            }

            if (message.OldId != 0)
            {
                oldPlr = room.Players.GetValueOrDefault(message.OldId.AccountId);
            }

            if (newPlr != null)
            {
                newPlr.RoomInfo.PeerId = message.NewId;
            }

            if (oldPlr != null)
            {
                oldPlr.RoomInfo.PeerId = message.OldId;
            }

            if (room.Options.MatchKey.GameRule == GameRule.Touchdown)
            {
                ((TouchdownGameRule)room.GameRuleManager.GameRule).OnScoreRebound(newPlr, oldPlr);
            }
        }
Esempio n. 2
0
        [Firewall(typeof(MustBeTimeState), GameTimeState.HalfTime, Invert = true)] // Must not be half time
        public Task <bool> OnHandle(MessageContext context, CScoreReboundReqMessage message)
        {
            var session = context.GetSession <Session>();
            var plr     = session.Player;
            var room    = plr.Room;

            var newPlr = room.Players.GetValueOrDefault(message.NewId.AccountId);
            var oldPlr = room.Players.GetValueOrDefault(message.OldId.AccountId);

            room.GameRule.OnScoreFumbi(newPlr, oldPlr);
            return(Task.FromResult(true));
        }