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); }
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(); }
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; }
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]); }
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); }
void RegisterWorkTable(string defName, float idlePower, float activePower) { PowerLevels.Add(defName, new Vector2(idlePower, activePower)); }