Esempio n. 1
0
        private static string ProcessEventLog()
        {
            List<string> emailerInfo = new List<string>();
            try
            {
                emailerInfo = FileReader.ReadFile(GetSettingPath("EmailerFile", "testdata/emailer.txt"), 0);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error reading emailer.txt: " + ex.ToString());
                return null;
            }
            try
            {
                _Emailer = new EmailUtility(int.Parse(GetSetting("WaitTimeBetweenSends", "2000")));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error setting up smtp client: " + ex.ToString());
                return null;
            }
            string lastEventProcessed = null;
            if (emailerInfo.Count > 0) lastEventProcessed = emailerInfo[0];

            // Read event log
            List<string> eventInfo = new List<string>();
            try
            {
                eventInfo = FileReader.ReadFile(GetSettingPath("EventFile", "testdata/event.txt"), 0);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error reading event.txt: " + ex.ToString());
                return null;
            }
            // Truncate at last line processed last time this utility was run
            List<string> newEvents = new List<string>();
            foreach (string line in eventInfo)
            {
                if (!string.IsNullOrEmpty(lastEventProcessed) && line == lastEventProcessed) break;
                newEvents.Add(line);
            }
            newEvents.Reverse();

            // What was the turn number for the last event processed?
            int lastTurnProcessed = 0;
            if (!string.IsNullOrEmpty(lastEventProcessed))
            {
                lastTurnProcessed = new EventLine(lastEventProcessed, null).Turn;
            }

            // Process new lines
            string lastLineProcessed = null;
            foreach (string eventLine in newEvents)
            {
                EventLine evt = new EventLine(eventLine, null);
                if (evt.Turn > lastTurnProcessed)
                {
                    if (!SendTurnRollEmail(evt.Turn)) return lastLineProcessed;
                    lastTurnProcessed = evt.Turn;
                }
                else if (evt.Turn >= 0 && evt.Turn < lastTurnProcessed)
                {
                    if (!SendReloadDetectedEmail(evt.Turn)) return lastLineProcessed;
                    lastTurnProcessed = evt.Turn;
                }
                lastLineProcessed = eventLine;
            }
            return lastLineProcessed;
        }
Esempio n. 2
0
        private List<EventLine> ShowEvents()
        {
            List<string> eventInfo = new List<string>();
            try
            {
                eventInfo = FileReader.ReadFile(GetSettingPath("EventFile", "testdata/event.txt"), int.Parse(GetSetting("EventCutoff", "100")));
            }
            catch (Exception ex)
            {
                litEventLog.Text = "Error reading event.txt: " + ex.Message;
            }
            List<EventLine> eventLines = new List<EventLine>();
            int utcOffset = int.Parse(GetSetting("SystemTimeUTCOffset", "1"));
            foreach (string line in eventInfo)
            {
                EventLine evt = new EventLine(line, _selectedTimeZone, utcOffset);
                eventLines.Add(evt);
            }

            var PlayerNames = new Dictionary<int, string>();
            var newEvents = new List<EventLine>();
            eventLines.Reverse();
            int currentTurn = -1;
            foreach (var evt in eventLines)
            {
                if (currentTurn != -1)
                {
                    if (evt.Turn > currentTurn) newEvents.Add(new EventLine(evt.EventTime, evt.EventTimeParsed, "", "turnroll", "A new turn has begun. It is now turn " + evt.Turn + ".", -1, evt.Turn));
                    if (evt.Turn < currentTurn) newEvents.Add(new EventLine(evt.EventTime, evt.EventTimeParsed, "", "reload", "A reload has been detected. It is now turn " + evt.Turn + ".", -1, evt.Turn));
                }
                currentTurn = evt.Turn;
                if (PlayerNames.ContainsKey(evt.PlayerId))
                {
                    if (PlayerNames[evt.PlayerId] != evt.PlayerName)
                    {
                        newEvents.Add(new EventLine(evt.EventTime, evt.EventTimeParsed, evt.PlayerName, "namechange", PlayerNames[evt.PlayerId] + " changed name to " + evt.PlayerName, evt.PlayerId, evt.Turn));
                        PlayerNames[evt.PlayerId] = evt.PlayerName;
                    }
                }
                else
                {
                    PlayerNames[evt.PlayerId] = evt.PlayerName;
                }
                if (evt.EventType == "scorechange")
                {
                    var lastScoreEvent = newEvents.LastOrDefault(e => e.EventType == "scorechange" && e.PlayerId == evt.PlayerId);
                    if (lastScoreEvent != null) evt.LastScore = lastScoreEvent.Score;
                }
                newEvents.Add(evt);
            }
            newEvents.Reverse();

            if (newEvents.Count > 0)
            {
                var eventHtml = "";
                foreach (var evt in newEvents)
                {
                    eventHtml += evt.ToHtml() + "\n";
                }
                litEventLog.Text = eventHtml;
            }
            return newEvents;
        }