private void OnTeamOutfitChangeEvent(object sender, ScrimMessageEventArgs <TeamOutfitChangeMessage> e)
        {
            if (MatchConfiguration.IsManualWorldId)
            {
                return;
            }

            int?worldId;

            var  message    = e.Message;
            var  changeType = message.ChangeType;
            bool isRollBack = false;

            if (changeType == TeamChangeType.Add)
            {
                worldId = e.Message.Outfit.WorldId;
            }
            else
            {
                worldId    = _teamsManager.GetNextWorldId(MatchConfiguration.WorldId);
                isRollBack = true;
            }

            if (worldId == null)
            {
                MatchConfiguration.ResetWorldId();
                SendMatchConfigurationUpdateMessage();
            }
            else if (MatchConfiguration.TrySetWorldId((int)worldId, false, isRollBack))
            {
                SendMatchConfigurationUpdateMessage();
            }
        }
Example #2
0
        private async void OnRulesetRuleChangeEvent(object sender, ScrimMessageEventArgs <RulesetRuleChangeMessage> e)
        {
            if (_activeRuleset.Id == e.Message.Ruleset.Id)
            {
                await SetActiveRulesetAsync();
            }

            // TODO: specific methods for only updating Rule Type that changed (Action Rules or Item Category Rules)
        }
        private async Task HandleRulesetRuleChangeMesssage(object sender, ScrimMessageEventArgs <RulesetRuleChangeMessage> e)
        {
            var changedRulesetId = e.Message.Ruleset.Id;

            if (changedRulesetId == ActiveRuleset.Id)
            {
                await SetUpActiveRulesetAsync();
            }
        }
        private async Task OnFacilityControlEvent(object sender, ScrimMessageEventArgs <ScrimFacilityControlActionEventMessage> e)
        {
            if (!MatchConfiguration.EndRoundOnFacilityCapture)
            {
                return;
            }

            var message      = e.Message;
            var controlEvent = message.FacilityControl;

            if (controlEvent.FacilityId == MatchConfiguration.FacilityId && controlEvent.WorldId == MatchConfiguration.WorldId)
            {
                await EndRound();
            }
        }
        private void ReceiveTeamPlayerChangeEvent(object sender, ScrimMessageEventArgs <TeamPlayerChangeMessage> e)
        {
            var message = e.Message;
            var player  = message.Player;

            switch (message.ChangeType)
            {
            case TeamPlayerChangeType.Add:
                AddCharacterSubscription(player.Id);
                break;

            case TeamPlayerChangeType.Remove:
                RemoveCharacterSubscription(player.Id);
                break;
            }
        }
        private void ReceiveMatchConfigurationUpdateEvent(object sender, ScrimMessageEventArgs <MatchConfigurationUpdateMessage> e)
        {
            var message            = e.Message;
            var matchConfiguration = message.MatchConfiguration;

            SetFacilitySubscription(matchConfiguration.FacilityId);
            SetWorldSubscription(matchConfiguration.WorldId);

            if (matchConfiguration.SaveEventsToDatabase)
            {
                EnableEventStoring();
            }
            else
            {
                DisableEventStoring();
            }
        }
        private async Task OnMatchTimerTick(object sender, ScrimMessageEventArgs <MatchTimerTickMessage> e)
        {
            var message = e.Message;

            SetLatestTimerTickMessage(e.Message);

            var status = message.MatchTimerStatus;

            var state = status.State;

            if (state == MatchTimerState.Stopped && _isRunning)
            {
                await EndRound();

                return;
            }
        }
        private void HandleRulesetOverlayConfigurationChangeMessage(object sender, ScrimMessageEventArgs <RulesetOverlayConfigurationChangeMessage> e)
        {
            var ruleset = e.Message.Ruleset;
            var overlayConfiguration = e.Message.OverlayConfiguration;

            _activateRulesetAutoEvent.WaitOne();

            if (ruleset.Id != ActiveRuleset.Id)
            {
                _activateRulesetAutoEvent.Set();
                return;
            }

            ActiveRuleset.RulesetOverlayConfiguration.UseCompactLayout      = overlayConfiguration.UseCompactLayout;
            ActiveRuleset.RulesetOverlayConfiguration.StatsDisplayType      = overlayConfiguration.StatsDisplayType;
            ActiveRuleset.RulesetOverlayConfiguration.ShowStatusPanelScores = overlayConfiguration.ShowStatusPanelScores;

            _activateRulesetAutoEvent.Set();
        }
        private void HandleRulesetSettingChangeMessage(object sender, ScrimMessageEventArgs <RulesetSettingChangeMessage> e)
        {
            var ruleset = e.Message.Ruleset;

            _activateRulesetAutoEvent.WaitOne();

            if (ruleset.Id != ActiveRuleset.Id)
            {
                _activateRulesetAutoEvent.Set();
                return;
            }

            ActiveRuleset.Name = ruleset.Name;
            ActiveRuleset.DefaultMatchTitle  = ruleset.DefaultMatchTitle;
            ActiveRuleset.DefaultRoundLength = ruleset.DefaultRoundLength;
            ActiveRuleset.DefaultEndRoundOnFacilityCapture = ruleset.DefaultEndRoundOnFacilityCapture;

            _activateRulesetAutoEvent.Set();
        }
 protected virtual void OnRaiseTeamLockStatusChangeEvent(ScrimMessageEventArgs <TeamLockStatusChangeMessage> e)
 {
     RaiseTeamLockStatusChangeEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseMatchConfigurationUpdateEvent(ScrimMessageEventArgs <MatchConfigurationUpdateMessage> e)
 {
     RaiseMatchConfigurationUpdateEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseMatchTimerTickEvent(ScrimMessageEventArgs <MatchTimerTickMessage> e)
 {
     RaiseMatchTimerTickEvent?.Invoke(this, e);
 }
 protected virtual void OnRaisePlayerLogoutEvent(ScrimMessageEventArgs <PlayerLogoutMessage> e)
 {
     RaisePlayerLogoutEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseTeamStatUpdateEvent(ScrimMessageEventArgs <TeamStatUpdateMessage> e)
 {
     RaiseTeamStatUpdateEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseScrimKillfeedEventEvent(ScrimMessageEventArgs <ScrimKillfeedEventMessage> e)
 {
     RaiseScrimKillfeedEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseRulesetRuleChangeEvent(ScrimMessageEventArgs <RulesetRuleChangeMessage> e)
 {
     RaiseRulesetRuleChangeEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseRulesetOverlayConfigurationChangeEvent(ScrimMessageEventArgs <RulesetOverlayConfigurationChangeMessage> e)
 {
     RaiseRulesetOverlayConfigurationChangeEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseConstructedTeamInfoChangeEvent(ScrimMessageEventArgs <ConstructedTeamInfoChangeMessage> e)
 {
     RaiseConstructedTeamInfoChangeEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseScrimVehicleDestructionActionEvent(ScrimMessageEventArgs <ScrimVehicleDestructionActionEventMessage> e)
 {
     RaiseScrimVehicleDestructionActionEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseScrimFacilityControlActionEvent(ScrimMessageEventArgs <ScrimFacilityControlActionEventMessage> e)
 {
     RaiseScrimFacilityControlActionEvent?.Invoke(this, e);
 }
 protected virtual void OnRaiseScrimObjectiveTickActionEvent(ScrimMessageEventArgs <ScrimObjectiveTickActionEventMessage> e)
 {
     RaiseScrimObjectiveTickActionEvent?.Invoke(this, e);
 }
 protected virtual void OnRaisePlayerNameDisplayChangeEvent(ScrimMessageEventArgs <PlayerNameDisplayChangeMessage> e)
 {
     RaisePlayerNameDisplayChangeEvent?.Invoke(this, e);
 }
Example #23
0
 private async void OnActiveRulesetChangeEvent(object sender, ScrimMessageEventArgs <ActiveRulesetChangeMessage> e)
 {
     await SetActiveRulesetAsync();
 }