public static ColonistHistoryDataList ConvertFromLightWeight(ColonistHistoryDataList lightWeightList)
        {
            ColonistHistoryDataList dataList = new ColonistHistoryDataList(lightWeightList.pawnName);

            LightWeightSaver.tableRecords.Clear();
            foreach (ColonistHistoryData dataSrc in lightWeightList.log)
            {
                ColonistHistoryData data = new ColonistHistoryData(dataSrc, false);
                foreach (ColonistHistoryRecord recordNew in dataSrc.records.records)
                {
                    if (LightWeightSaver.tableRecords.ContainsKey(recordNew.RecordID))
                    {
                        if (!LightWeightSaver.tableRecords[recordNew.RecordID].IsEqualValue(recordNew))
                        {
                            LightWeightSaver.tableRecords[recordNew.RecordID] = recordNew;
                        }
                    }
                    else
                    {
                        LightWeightSaver.tableRecords[recordNew.RecordID] = recordNew;
                    }
                }
                foreach (ColonistHistoryDef def in DefDatabase <ColonistHistoryDef> .AllDefsListForReading)
                {
                    foreach (RecordIdentifier recordID in def.RecordIDs)
                    {
                        if (LightWeightSaver.tableRecords.ContainsKey(recordID))
                        {
                            data.records.records.Add(LightWeightSaver.tableRecords[recordID]);
                        }
                    }
                }
                dataList.Add(data);
            }

            /*
             * dataList.log.Add(new ColonistHistoryData(lightWeightList.log[0], true));
             * for (int i = 1; i < lightWeightList.log.Count; i++) {
             *  ColonistHistoryData current = lightWeightList.log[i];
             *  ColonistHistoryData previous = new ColonistHistoryData(dataList.log[i-1],true);
             *
             *  ColonistHistoryData data = new ColonistHistoryData(current, false);
             *  data.records.records = new List<ColonistHistoryRecord>(previous.records.records);
             *  foreach (ColonistHistoryRecord recordNew in current.records.records) {
             *      int index = data.records.records.FindIndex(r => r.RecordID.IsSame(recordNew.RecordID));
             *      if (index != -1) {
             *          data.records.records[index].SetValue(recordNew);
             *      } else {
             *          data.records.records.Add(recordNew);
             *      }
             *  }
             *  dataList.log.Add(data);
             * }
             */
            return(dataList);
        }
Beispiel #2
0
 private void DeleteLog(ColonistHistoryDataList dataList, TargetDatetime targetDatetime, int targetTick)
 {
     if (targetDatetime == TargetDatetime.Only)
     {
         dataList.DeleteLog(targetTick);
     }
     else if (targetDatetime == TargetDatetime.Before)
     {
         dataList.DeleteLogRange(-1, targetTick);
     }
     else if (targetDatetime == TargetDatetime.After)
     {
         dataList.DeleteLogRange(targetTick, -1);
     }
 }
        public static ColonistHistoryDataList GetLightWeight(ColonistHistoryDataList dataListSrc)
        {
            LightWeightSaver.tableValues.Clear();
            LightWeightSaver.tableIsUnrecorded.Clear();

            ColonistHistoryDataList dataList = new ColonistHistoryDataList(dataListSrc.pawnName);

            foreach (ColonistHistoryData dataSrc in dataListSrc.log)
            {
                ColonistHistoryData data = new ColonistHistoryData(dataSrc, false);
                foreach (ColonistHistoryRecord recordSrc in dataSrc.records.records)
                {
                    if (RegisterTable(recordSrc))
                    {
                        data.records.records.Add(recordSrc);
                    }
                }
                dataList.Add(data);
            }
            return(dataList);
        }
 public void ResolveGraph()
 {
     this.cachedGraph = new Dictionary <Pawn, List <Vector2> >();
     if (this.comp != null)
     {
         foreach (Pawn pawn in this.comp.Colonists)
         {
             ColonistHistoryDataList dataList = this.comp.GetRecords(pawn);
             if (!dataList.log.NullOrEmpty())
             {
                 this.cachedGraph[pawn] = new List <Vector2>();
                 if (dataList != null)
                 {
                     foreach (ColonistHistoryData data in dataList.log)
                     {
                         ColonistHistoryRecord record = data.GetRecord(recordID, false);
                         if ((record != null && !record.IsUnrecorded) || ColonistHistoryMod.Settings.treatingUnrecordedAsZero)
                         {
                             float x = GenDate.TickAbsToGame(data.recordTick);
                             float y = 0f;
                             if (record != null)
                             {
                                 y = record.ValueForGraph;
                             }
                             if (this.cachedGraph[pawn].Count == 0 && ColonistHistoryMod.Settings.addZeroBeforeFirst)
                             {
                                 this.cachedGraph[pawn].Add(new Vector2(x - 0.001f, 0));
                             }
                             this.cachedGraph[pawn].Add(new Vector2(x, y));
                         }
                     }
                 }
             }
         }
     }
 }