示例#1
0
        public ActiveTriggers(
            string characterName,
            [NotNull] ISoundManager soundManager,
            [NotNull] ITrayPopups trayPopups,
            [NotNull] IWurmApi wurmApi,
            [NotNull] ILogger logger,
            [NotNull] IActionQueueConditions actionQueueConditions,
            [NotNull] TriggersDataContext triggersDataContext,
            [NotNull] ITelemetry telemetry)
        {
            if (soundManager == null)
            {
                throw new ArgumentNullException(nameof(soundManager));
            }
            if (trayPopups == null)
            {
                throw new ArgumentNullException(nameof(trayPopups));
            }
            if (wurmApi == null)
            {
                throw new ArgumentNullException(nameof(wurmApi));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (actionQueueConditions == null)
            {
                throw new ArgumentNullException(nameof(actionQueueConditions));
            }
            if (triggersDataContext == null)
            {
                throw new ArgumentNullException(nameof(triggersDataContext));
            }

            CharacterName = characterName;

            this.soundManager          = soundManager;
            this.trayPopups            = trayPopups;
            this.wurmApi               = wurmApi;
            this.logger                = logger;
            this.actionQueueConditions = actionQueueConditions;
            this.telemetry             = telemetry ?? throw new ArgumentNullException(nameof(telemetry));
            this.triggersConfig        = triggersDataContext.CharacterTriggersConfigs.GetOrCreate(characterName);

            foreach (var entity in triggersConfig.TriggerEntities.Values)
            {
                try
                {
                    triggers.Add(entity.TriggerId, BuildTrigger(entity));
                }
                catch (Exception exception)
                {
                    logger.Error(exception,
                                 string.Format("Error initializing trigger id {0}, name: {1}", entity.TriggerId, entity.Name));
                }
            }
        }
示例#2
0
        public TriggerManager(
            [NotNull] string characterName,
            [NotNull] IWurmApi wurmApi,
            [NotNull] ISoundManager soundManager,
            [NotNull] ILogger logger,
            [NotNull] ITrayPopups trayPopups,
            [NotNull] IActiveTriggersFactory activeTriggersFactory,
            [NotNull] IWindowManager windowManager,
            [NotNull] TriggersDataContext triggersDataContext,
            [NotNull] IExporterFactory exporterFactory,
            [NotNull] IImporterFactory importerFactory)
        {
            if (characterName == null)
            {
                throw new ArgumentNullException(nameof(characterName));
            }
            if (wurmApi == null)
            {
                throw new ArgumentNullException(nameof(wurmApi));
            }
            if (soundManager == null)
            {
                throw new ArgumentNullException(nameof(soundManager));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (trayPopups == null)
            {
                throw new ArgumentNullException(nameof(trayPopups));
            }
            if (activeTriggersFactory == null)
            {
                throw new ArgumentNullException(nameof(activeTriggersFactory));
            }
            if (windowManager == null)
            {
                throw new ArgumentNullException(nameof(windowManager));
            }
            if (triggersDataContext == null)
            {
                throw new ArgumentNullException(nameof(triggersDataContext));
            }
            if (exporterFactory == null)
            {
                throw new ArgumentNullException(nameof(exporterFactory));
            }
            if (importerFactory == null)
            {
                throw new ArgumentNullException(nameof(importerFactory));
            }

            this.CharacterName         = characterName;
            this.wurmApi               = wurmApi;
            this.soundManager          = soundManager;
            this.logger                = logger;
            this.trayPopups            = trayPopups;
            this.activeTriggersFactory = activeTriggersFactory;
            this.windowManager         = windowManager;
            this.exporterFactory       = exporterFactory;
            this.importerFactory       = importerFactory;
            this.triggersConfig        = triggersDataContext.CharacterTriggersConfigs.GetOrCreate(characterName);

            activeTriggers = activeTriggersFactory.CreateActiveTriggers(CharacterName);
            activeTriggers.MutedEvaluator = GetMutedEvaluator();

            //create control for Module UI
            controlUi = new UcPlayerTriggersController();

            //create this notifier UI
            triggersConfigUi = new FormTriggersConfig(this, soundManager, windowManager, exporterFactory, importerFactory);

            UpdateMutedState();
            controlUi.label1.Text            = CharacterName;
            controlUi.buttonMute.Click      += ToggleMute;
            controlUi.buttonConfigure.Click += Configure;
            controlUi.buttonRemove.Click    += StopAndRemove;

            try
            {
                wurmApi.LogsMonitor.Subscribe(this.CharacterName, LogType.AllLogs, OnNewLogEvents);
            }
            catch (DataNotFoundException exception)
            {
                logger.Warn(exception, $"Unable to subscribe LogsMonitor events for character {this.CharacterName}.");
            }
        }