public ScrimMatchEngine(IScrimTeamsManager teamsManager, IWebsocketMonitor wsMonitor, IStatefulTimer timer,
                                IScrimMatchDataService matchDataService, IScrimMessageBroadcastService messageService, IScrimRulesetManager rulesetManager, ILogger <ScrimMatchEngine> logger)
        {
            _teamsManager     = teamsManager;
            _wsMonitor        = wsMonitor;
            _timer            = timer;
            _messageService   = messageService;
            _matchDataService = matchDataService;
            _rulesetManager   = rulesetManager;

            // Copy default values to match config
            var activeRuleset = rulesetManager.ActiveRuleset;

            MatchConfiguration.TrySetTitle(activeRuleset.DefaultMatchTitle, false);
            MatchConfiguration.TrySetRoundLength(activeRuleset.DefaultRoundLength, false);
            MatchConfiguration.TrySetEndRoundOnFacilityCapture(activeRuleset.DefaultEndRoundOnFacilityCapture, false);

            _logger = logger;

            _messageService.RaiseMatchTimerTickEvent += async(s, e) => await OnMatchTimerTick(s, e);

            _messageService.RaiseTeamOutfitChangeEvent += OnTeamOutfitChangeEvent;
            _messageService.RaiseTeamPlayerChangeEvent += OnTeamPlayerChangeEvent;

            _messageService.RaiseScrimFacilityControlActionEvent += async(s, e) => await OnFacilityControlEvent(s, e);
        }
        public ScrimMatchEngine(IScrimTeamsManager teamsManager, IWebsocketMonitor wsMonitor, IStatefulTimer timer,
                                IScrimMatchDataService matchDataService, IScrimMessageBroadcastService messageService, ILogger <ScrimMatchEngine> logger)
        {
            _teamsManager     = teamsManager;
            _wsMonitor        = wsMonitor;
            _timer            = timer;
            _messageService   = messageService;
            _matchDataService = matchDataService;
            _logger           = logger;

            _messageService.RaiseMatchTimerTickEvent += async(s, e) => await OnMatchTimerTick(s, e);

            _messageService.RaiseTeamOutfitChangeEvent += OnTeamOutfitChangeEvent;
            _messageService.RaiseTeamPlayerChangeEvent += OnTeamPlayerChangeEvent;

            _messageService.RaiseScrimFacilityControlActionEvent += async(s, e) => await OnFacilityControlEvent(s, e);
        }
 public WebsocketMonitorHostedService(IWebsocketMonitor service)
 {
     _service = service;
 }