private void ProcessNvpRecords(List <NvpRecord> nvpRecords, ReportGameDataLoaderProgress reportCb) { Int32 recordsProcessed = 0; foreach (NvpRecord record in nvpRecords) { reportCb("Processing game data entries...", recordsProcessed, nvpRecords.Count); if (m_recordTypeToProcessCallback.ContainsKey(record.RecordType)) { RecordTypeProcessRecord processCb = m_recordTypeToProcessCallback[record.RecordType]; processCb(m_gameModel, record); } else { throw new Exception(String.Format("GameDataApplier does not know how to process a record type of {0} for lines {1} - {2}", record.RecordType, record.LineRangeStart, record.LineRangeEnd)); } SimulateLoadingDelay(); recordsProcessed++; } }
/// <summary> /// Installs a record type into the game data loader. When records of this type are encountered, they can be processed /// with the supplied callback, and records of this type will be sorted in the supplied order. /// </summary> public void InstallRecordType(String recordType, Int32 sortOrder, RecordTypeProcessRecord processCb) { m_recordTypeToSortValue.Add(recordType, sortOrder); m_recordTypeToProcessCallback.Add(recordType, processCb); }