public override void DefsLoaded() { var defs = DefDatabase <RePowerDef> .AllDefs; var loadedDefs = new List <string>(); var skippedDefs = new List <string>(); int num = 0, loaded = 0; foreach (var def in defs) { ++num; var target = def.targetDef; var namedDef = DefDatabase <ThingDef> .GetNamedSilentFail(target); if (namedDef == null) { skippedDefs.Add(target); continue; } if (def.poweredWorkbench) { RegisterWorkTable(namedDef.defName, def.lowPower, def.highPower); } if (def.poweredReservable) { RegisterExternalReservable(namedDef.defName, def.lowPower, def.highPower); } if (def.scheduledPower) { RegisterScheduledBuilding(namedDef.defName, def.lowPower, def.highPower); } // Some objects might not be reservable, like workbenches. // e.g., HydroponicsBasins if (!def.poweredWorkbench && !def.poweredReservable && !def.scheduledPower) { PowerLevels.Add(namedDef.defName, new Vector2(def.lowPower, def.highPower)); } ++loaded; loadedDefs.Add(target); } var names = String.Join(", ", loadedDefs.ToArray()).Trim(); Logger.Message(string.Format("Loaded {1} of {0} building defs: {2}", num, loaded, names)); if (skippedDefs.Count > 0) { names = String.Join(", ", skippedDefs.ToArray()).Trim(); Logger.Message(string.Format("Skipped {0} defs because they could not be found: {1}", skippedDefs.Count, names)); } Tracker.LoadThingDefs(); }
void RegisterWorkTable(string defName, float idlePower, float activePower) { PowerLevels.Add(defName, new Vector2(idlePower, activePower)); }