예제 #1
0
        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();
        }
예제 #2
0
 void RegisterWorkTable(string defName, float idlePower, float activePower)
 {
     PowerLevels.Add(defName, new Vector2(idlePower, activePower));
 }