コード例 #1
0
        private IEnumerable <EddnEvent> MakeJournalEvent(LogEvent e)
        {
            var @event = new JournalEvent {
                Header = CreateHeader(), Message = Strip(e.Raw)
            };

            if (@event.Message["StarSystem"] == null)
            {
                var system = stateHistoryRecorder.GetPlayerSystem(e.Timestamp);
                if (system != null)
                {
                    @event.Message.Add("StarSystem", system);
                }
                else // if we can't determine player's location, abort
                {
                    logger.Error("Unable to determine player location");
                    yield break;
                }
            }

            if (@event.Message["StarPos"] == null)
            {
                var starSystem = @event.Message["StarSystem"].ToObject <string>();
                var starPos    = stateHistoryRecorder.GetStarPos(starSystem);
                if (starPos == null)
                {
                    yield break; // we don't know what the system coordinates are
                }
                @event.Message.Add("StarPos", new JArray(starPos));
            }
            yield return(@event);
        }
コード例 #2
0
        private IEnumerable <EddnEvent> MakeJournalEvent(JournalEvent e, string commanderName)
        {
            var @event = new EddnJournalEvent {
                Header = CreateHeader(commanderName), Message = Strip(e.Raw)
            };

            if (@event.Message["StarSystem"] == null)
            {
                string system = stateHistoryRecorder.GetPlayerSystem(e.Timestamp);

                // if we can't determine player's location, abort
                if (system != null)
                {
                    @event.Message.Add("StarSystem", system);
                }
                else
                {
                    Log.Error("Unable to determine player location");
                    yield break;
                }
            }

            string starSystem = @event.Message["StarSystem"].ToObject <string>();

            if (@event.Message["StarPos"] == null)
            {
                double[] starPos = stateHistoryRecorder.GetStarPos(starSystem);
                if (starPos == null)
                {
                    yield break; // we don't know what the system coordinates are
                }
                @event.Message.Add("StarPos", new JArray(starPos));
            }

            if (@event.Message["SystemAddress"] == null)
            {
                ulong?systemAddress = stateHistoryRecorder.GetSystemAddress(starSystem);
                if (systemAddress != null)
                {
                    @event.Message.Add("SystemAddress", systemAddress);
                }
            }

            if (Log.IsTraceEnabled)
            {
                Log.Trace()
                .Message("Converted message")
                .Property("source", Serialize.ToJson(e))
                .Property("output", Serialize.ToJson(@event))
                .Write();
            }

            yield return(@event);
        }