public static void ResolveDrawEntries(ColonistHistoryData data) { RecordReportUtility.cachedDrawEntries.Clear(); if (ColonistHistoryMod.Settings.hideUnrecorded) { foreach (ColonistHistoryDef def in ColonistHistoryMod.Settings.ColonistHistorysOrder) { foreach (ColonistHistoryRecord record in data.records.records) { if (def == record.Parent) { RecordReportUtility.cachedDrawEntries.Add(new RecordDrawEntry(record)); } } } } else { CompRecorder.ResolveAvailableRecords(); foreach (ColonistHistoryDef def in ColonistHistoryMod.Settings.ColonistHistorysOrder) { foreach (RecordIdentifier recordID in CompRecorder.AvailableRecords) { if (recordID.colonistHistoryDef == def) { ColonistHistoryRecord record = data.GetRecord(recordID, true); RecordReportUtility.cachedDrawEntries.Add(new RecordDrawEntry(record)); } } } } }
public void Add(ColonistHistoryData data, Pawn pawn = null) { this.log.Add(data); if (pawn != null) { this.pawnName = pawn.Name.ToStringShort; } }
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); }
public ColonistHistoryData(ColonistHistoryData src, bool copyRecords) { this.recordTick = src.recordTick; this.forceRecord = src.forceRecord; if (copyRecords) { this.records = new ColonistHistoryDataRecords(src.records); } else { this.records = new ColonistHistoryDataRecords(); } this.dateString = src.dateString; }
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 bool Record(bool manualRecord = false) { int currentTick = Current.Game.tickManager.TicksAbs; List <Pawn> colonists = Find.ColonistBar.GetColonistsInOrder().Where(p => ColonistHistoryMod.Settings.recordOtherFactionPawn || !p.ExistExtraNoPlayerFactions()).ToList(); if (colonists.NullOrEmpty()) { return(false); } if (this.firstTile == -1) { this.firstTile = colonists.First().MapHeld.Tile; } foreach (Pawn colonist in colonists) { if (!this.colonistHistories.ContainsKey(colonist)) { this.colonistHistories[colonist] = new ColonistHistoryDataList(colonist); } ColonistHistoryData colonistHistoryData = new ColonistHistoryData(currentTick, this.firstTile, manualRecord, colonist); this.colonistHistories[colonist].Add(colonistHistoryData, colonist); } this.lastRecordIsManual = manualRecord; if (manualRecord) { this.lastManualRecordTick = currentTick; } else { this.lastAutoRecordTick = currentTick; } ResolveAvailableRecords(); RecordGraphUtility.CurRecordGroup.ResolveGraph(); return(true); }