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);
 }