Esempio n. 1
0
 public LootItem(LogEntry logEntry)
 {
     Entry = logEntry;
     _lootDetail = GetLootDetail();
     if (_lootDetail.Length == 3)
     {
         Name = _lootDetail[1].Trim().Trim('[').Trim(']');
         Looter = _lootDetail[0].Trim().Trim('[').Trim(']');
         Paid = int.Parse(_lootDetail[2].Trim());
     }
 }
Esempio n. 2
0
        public void Parse()
        {
            _logFile = File.OpenRead(_parentForm.txtLogfile.Text);
            _raidFile = File.OpenRead(_parentForm.txtDumpFile.Text);
            _raid = new Raid(_parentForm.txtRaidName.Text,
                            DateTime.Parse(String.Format("{0} {1}", _parentForm.dtRaidDate.Text, _parentForm.dtStart.Text)),
                            DateTime.Parse(String.Format("{0} {1}", _parentForm.dtRaidDate.Text, _parentForm.dtStart.Text)),
                            DateTime.Parse(String.Format("{0} {1}", _parentForm.dtRaidDate.Text, _parentForm.dtEnd.Text)),
                            int.Parse(_parentForm.txtPointsPerHour.Text),
                            int.Parse(_parentForm.txtAtStartPoints.Text),
                            int.Parse(_parentForm.txtAtEndPoints.Text));

            // Get all the members found in the raid.xml
            ParseMembersFromRaidXML();

            string line;

            var reader = new StreamReader(_logFile);

            while ((line = reader.ReadLine()) != null)
            {
                var entry = new LogEntry(line, _parentForm.dtRaidDate.Text);
                entry.Parse();

                if (EntryIsValid(entry)) continue;

                switch (entry.Type)
                {
                    case EventType.Loot:
                        ParseLootInformation(entry);
                        break;

                    case EventType.Join:
                    case EventType.JoinByLogger:
                        ParseJoinInformation(entry);
                        break;

                    case EventType.Leave:
                    case EventType.LeaveByLogger:
                        ParseLeaveInformation(entry);
                        break;
                }

                entries.Add(entry);
            }

            _logFile.Close();
            _raidFile.Close();

            CalculateRaidDurationForMembers();
        }
Esempio n. 3
0
        private void ParseLeaveInformation(LogEntry entry)
        {
            var memberName = "";

            if (entry.Type == EventType.LeaveByLogger)
            {
                memberName = Settings.Get("LogUser");
            }
            else
            {
                var pos = entry.EventText.IndexOf("]");
                memberName = entry.EventText.Substring(1, pos - 1);
            }

            if (!MemberExists(memberName))
                Members.Add(new RaidMember(memberName));

            var member = GetMember(memberName);

            member.Leaves.Add(entry.EventTime);
        }
Esempio n. 4
0
        private void ParseLootInformation(LogEntry entry)
        {
            var lootItem = new LootItem(entry);

            if (lootItem.Name != null)
                LootItems.Add(lootItem);
        }
Esempio n. 5
0
        private bool EntryIsValid(LogEntry entry)
        {
            var startTimeOk = entry.EventTime.Ticks > _raid.StartTime.Ticks;
            var endTimeOk = entry.EventTime.Ticks < _raid.EndTime.Ticks;
            var IsDuplicate = (entries.Exists(e => e.Entry == entry.Entry));
            var IsValid = entry.Type != EventType.Invalid;

            return !startTimeOk || !endTimeOk || IsDuplicate || !IsValid;
        }