[Firewall(typeof(MustBeTimeState), GameTimeState.HalfTime, Invert = true)] // Must not be half time public Task <bool> OnHandle(MessageContext context, CScoreGoalReqMessage message) { var session = context.GetSession <Session>(); var plr = session.Player; var room = plr.Room; var td = room.Players.GetValueOrDefault(message.PeerId.AccountId); if (td == null) { return(Task.FromResult(true)); } room.GameRule.OnScoreTouchdown(td); return(Task.FromResult(true)); }
public void CScoreGoalReq(GameSession session, CScoreGoalReqMessage message) { var plr = session.Player; var room = plr.Room; var target = room.Players.Values.FirstOrDefault(p => p.RoomInfo.PeerId == message.PeerId); if (target == null) { return; } if (room.Options.MatchKey.GameRule == GameRule.Touchdown) { ((TouchdownGameRule)room.GameRuleManager.GameRule).OnScoreGoal(target); } }