コード例 #1
0
 private void SendEventFromStatus(string statusFilePath)
 {
     lock (@lock)
     {
         var @event = FromJsonFile <StatusEvent>(statusFilePath);
         if (@event != null)
         {
             if ([email protected](_currentGameStatus))
             {
                 _currentGameStatus = @event;
                 GameEvents.InvokeEvent(@event);
                 AllEvents?.Invoke(this, new ProcessedEvent
                 {
                     EventName = @event.Event.ToLower(),
                     EventType = typeof(StatusEvent),
                     Event     = @event
                 });
             }
         }
     }
 }
コード例 #2
0
        internal JournalEvent ExecuteEvent(string eventName, string json)
        {
            var rawEvent = new OriginalEvent {
                EventName = eventName, Source = json
            };

            BeforeEvent?.Invoke(this, rawEvent);
            if (rawEvent.Ignore)
            {
                return(null);
            }

            if (_cache.Value.TryGetValue(eventName, out var eventCacheItem))
            {
                JournalEvent @event = null;
                try
                {
                    @event = (JournalEvent)eventCacheItem.Execute.Invoke(null, new object[] { json, this });
                }
                catch (Exception exception)
                {
                    LogJournalException(new JournalRecordException(json, exception));
                }

                if (@event != null)
                {
                    AllEvents?.Invoke(this, new ProcessedEvent
                    {
                        EventName = eventCacheItem.Name,
                        EventType = eventCacheItem.Type,
                        Event     = @event
                    });
                }
                return(@event);
            }
            LogJournalWarning(new JournalEventNotFoundException(eventName, json));

            return(null);
        }