コード例 #1
0
ファイル: Parser.cs プロジェクト: demyte/RiftDKPParser
        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();
        }