private static void ApplyAbilitySettings(CombatLogEvent @event, CombatLogViewModel viewModel, Settings settings)
        {
            if (!settings.EnableAbilitySettings) return;

            var abilitySetting = settings.AbilitySettings
                              .FirstOrDefault(s => s.AbilityId == @event.Ability.EntityId.ToString() && s.Enabled);

            if (abilitySetting != null)
            {
                if (abilitySetting.Image != null && File.Exists(abilitySetting.Image))
                {
                    viewModel.ImageUrl = abilitySetting.Image;
                }

                if (!string.IsNullOrEmpty(abilitySetting.BorderColor))
                {
                    viewModel.ImageBorderColor = abilitySetting.BorderColor.FromHexToColor();
                }

                if (abilitySetting.Aliases.Any())
                {
                    viewModel.Text = abilitySetting.Aliases.PickRandom();
                }
            }
        }
        public CombatLogViewModel Create(CombatLogEvent @event)
        {
            var viewModel = new CombatLogViewModel(@event);
            var settings = settingsService.Settings;

            if (@event.IsAbilityActivate() || @event.IsApplyEffect())
            {
                ApplyLoggerSettings(@event, viewModel, settings);
                ApplyAbilitySettings(@event, viewModel, settings);
            }

            if (settings.EnableCompanionAbilities && @event.IsPlayerCompanion())
            {
                viewModel.ImageBorderColor = settings.CompanionAbilityBorderColor.FromHexToColor();
            }

            ApplyFontSettings(viewModel, settings);

            return viewModel;
        }
        private void ApplyLoggerSettings(CombatLogEvent combatLogEvent, CombatLogViewModel viewModel, Settings settings)
        {
            var abilityId = combatLogEvent.Ability.EntityId;

            viewModel.ImageUrl = imageService.GetImageById(abilityId);
            viewModel.IsUnknown = imageService.IsUnknown(abilityId);
            viewModel.ImageBorderColor = Colors.Transparent;
            viewModel.Text = combatLogEvent.Ability.DisplayName;
            viewModel.TextVisibility = settings.EnableAbilityText ? Visibility.Visible : Visibility.Hidden;
            viewModel.TooltipText = $"{combatLogEvent.Ability.EntityId} (Click to copy Ability ID to Clipboard!)";
        }
 private void ApplyFontSettings(CombatLogViewModel viewModel, Settings settings)
 {
     viewModel.FontColor = new SolidColorBrush(settings.AbilityTextColor.FromHexToColor());
     viewModel.FontFamily = fontService.GetFontFromString(settings.TextFont);
     viewModel.FontSize = settings.FontSize;
     viewModel.FontBorderColor = new SolidColorBrush(settings.AbilityTextBorderColor.FromHexToColor());
     viewModel.FontBorderThickness = settings.FontBorderThickness;
 }