示例#1
0
        public void SetPowerLevel(PowerLevels powerLevel)
        {
            byte setup = ReadRegister(Constants.RF_SETUP);

            setup &= (byte)(~(_BV(Constants.RF_PWR_LOW) | _BV(Constants.RF_PWR_HIGH)));
            if (powerLevel == PowerLevels.PowerLevelMax)
            {
                setup |= (byte)(_BV(Constants.RF_PWR_LOW) | _BV(Constants.RF_PWR_HIGH));
            }
            else if (powerLevel == PowerLevels.PowerLevelHigh)
            {
                setup |= _BV(Constants.RF_PWR_HIGH);
            }
            else if (powerLevel == PowerLevels.PowerLevelLow)
            {
                setup |= _BV(Constants.RF_PWR_LOW);
            }
            else if (powerLevel == PowerLevels.PowerLevelMin)
            {
                // nothing
            }
            else if (powerLevel == PowerLevels.PowerLevelError)
            {
                setup |= (byte)(_BV(Constants.RF_PWR_LOW) | _BV(Constants.RF_PWR_HIGH));
            }

            WriteRegister(Constants.RF_SETUP, setup);
        }
示例#2
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();
        }
示例#3
0
 public Channel(Modes mode, PowerLevels powerLevel, int contactIndex, int receiveGroupIndex, double receiveFreq, double transmitFreq, string name)
 {
     Mode              = mode;
     PowerLevel        = powerLevel;
     ContactIndex      = contactIndex;
     ReceiveGroupIndex = receiveGroupIndex;
     ReceiveFrequency  = receiveFreq;
     TransmitFrequency = transmitFreq;
     Name              = name;
 }
示例#4
0
        public PowerLevels GetPowerLevel()
        {
            PowerLevels powerLevel = PowerLevels.PowerLevelError;
            byte        setup      = (byte)(ReadRegister(Constants.RF_SETUP) & (_BV(Constants.RF_PWR_LOW) | _BV(Constants.RF_PWR_HIGH)));

            if (setup == (_BV(Constants.RF_PWR_LOW) | _BV(Constants.RF_PWR_HIGH)))
            {
                powerLevel = PowerLevels.PowerLevelMax;
            }
            else if (setup == _BV(Constants.RF_PWR_HIGH))
            {
                powerLevel = PowerLevels.PowerLevelHigh;
            }
            else if (setup == _BV(Constants.RF_PWR_LOW))
            {
                powerLevel = PowerLevels.PowerLevelLow;
            }
            else
            {
                powerLevel = PowerLevels.PowerLevelMin;
            }
            return(powerLevel);
        }
 public static string GetName(this PowerLevels powerLevel)
 {
     return(PowerLevels[(int)powerLevel]);
 }
示例#6
0
        public void SetPowerLevel(PowerLevels powerLevel)
        {
            byte setup = ReadRegister(Constants.RF_SETUP);
            setup &= (byte)(~(BitValue(Constants.RF_PWR_LOW) | BitValue(Constants.RF_PWR_HIGH)));
            if (powerLevel == PowerLevels.PowerLevelMax)
                setup |= (byte)(BitValue(Constants.RF_PWR_LOW) | BitValue(Constants.RF_PWR_HIGH));
            else if (powerLevel == PowerLevels.PowerLevelHigh)
                setup |= BitValue(Constants.RF_PWR_HIGH);
            else if (powerLevel == PowerLevels.PowerLevelLow)
                setup |= BitValue(Constants.RF_PWR_LOW);
            else if (powerLevel == PowerLevels.PowerLevelMin)
            {
                // nothing
            }
            else if (powerLevel == PowerLevels.PowerLevelError)
                setup |= (byte)(BitValue(Constants.RF_PWR_LOW) | BitValue(Constants.RF_PWR_HIGH));

            WriteRegister(Constants.RF_SETUP, setup);
        }
示例#7
0
 void RegisterWorkTable(string defName, float idlePower, float activePower)
 {
     PowerLevels.Add(defName, new Vector2(idlePower, activePower));
 }