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