public bool Get(out float destination, RPMVesselComputer comp, PersistenceAccessor persistence) { if (stateFunction != null) { bool state = stateFunction(); destination = state.GetHashCode(); return(true); } if (value != null) { destination = value.Value; return(true); } destination = comp.ProcessVariable(variableName, persistence).MassageToFloat(); if (float.IsNaN(destination) || float.IsInfinity(destination)) { if (!warningMade) { JUtil.LogMessage(this, "Warning: {0} can fail to produce a usable number.", variableName); warningMade = true; return(false); } } return(true); }
public bool Get(out float destination, RPMVesselComputer comp, PersistenceAccessor persistence) { if (stateFunction != null) { bool state = stateFunction(); destination = state.GetHashCode(); return true; } if (value != null) { destination = value.Value; return true; } destination = comp.ProcessVariable(variableName, persistence).MassageToFloat(); if (float.IsNaN(destination) || float.IsInfinity(destination)) { if (!warningMade) { JUtil.LogMessage(this, "Warning: {0} can fail to produce a usable number.", variableName); warningMade = true; return false; } } return true; }
/// <summary> /// Provides a simple boolean true/false for whether the named /// variable is in range. /// </summary> /// <param name="comp"></param> /// <param name="persistence"></param> /// <returns></returns> public bool IsInRange(RPMVesselComputer comp, PersistenceAccessor persistence) { float value; float low, high; if (stateFunction != null) { bool state = stateFunction(); value = state.GetHashCode(); } else if (!string.IsNullOrEmpty(sourceValueName)) { value = comp.ProcessVariable(sourceValueName, persistence).MassageToFloat(); } else { value = sourceValue; } if (float.IsNaN(value) || float.IsInfinity(value)) { if (!warningMade) { JUtil.LogMessage(this, "Warning: {0} can fail to produce a usable number.", sourceValueName); warningMade = true; } return(false); } if (!string.IsNullOrEmpty(lowerBoundName)) { low = comp.ProcessVariable(lowerBoundName, persistence).MassageToFloat(); if (float.IsNaN(low) || float.IsInfinity(low)) { if (!warningMade) { JUtil.LogMessage(this, "Warning: {0} can fail to produce a usable number.", lowerBoundName); warningMade = true; } return(false); } } else { low = lowerBound; } if (!string.IsNullOrEmpty(upperBoundName)) { high = comp.ProcessVariable(upperBoundName, persistence).MassageToFloat(); if (float.IsNaN(high) || float.IsInfinity(high)) { if (!warningMade) { JUtil.LogMessage(this, "Warning: {0} can fail to produce a usable number.", upperBoundName); warningMade = true; } return(false); } } else { high = upperBound; } if (high < low) { return(value >= high && value <= low); } else { return(value >= low && value <= high); } }
/// <summary> /// Provides a simple boolean true/false for whether the named /// variable is in range. /// </summary> /// <param name="comp"></param> /// <param name="persistence"></param> /// <returns></returns> public bool IsInRange(RPMVesselComputer comp, PersistenceAccessor persistence) { float value; float low, high; if (stateFunction != null) { bool state = stateFunction(); value = state.GetHashCode(); } else if (!string.IsNullOrEmpty(sourceValueName)) { value = comp.ProcessVariable(sourceValueName, persistence).MassageToFloat(); } else { value = sourceValue; } if (float.IsNaN(value) || float.IsInfinity(value)) { if (!warningMade) { JUtil.LogMessage(this, "Warning: {0} can fail to produce a usable number.", sourceValueName); warningMade = true; } return false; } if (!string.IsNullOrEmpty(lowerBoundName)) { low = comp.ProcessVariable(lowerBoundName, persistence).MassageToFloat(); if (float.IsNaN(low) || float.IsInfinity(low)) { if (!warningMade) { JUtil.LogMessage(this, "Warning: {0} can fail to produce a usable number.", lowerBoundName); warningMade = true; } return false; } } else { low = lowerBound; } if (!string.IsNullOrEmpty(upperBoundName)) { high = comp.ProcessVariable(upperBoundName, persistence).MassageToFloat(); if (float.IsNaN(high) || float.IsInfinity(high)) { if (!warningMade) { JUtil.LogMessage(this, "Warning: {0} can fail to produce a usable number.", upperBoundName); warningMade = true; } return false; } } else { high = upperBound; } if (high < low) { return (value >= high && value <= low); } else { return (value >= low && value <= high); } }
private void Start() { InstallationPathWarning.Warn("SCANsatRPM"); // Arrrgh. if (!string.IsNullOrEmpty(iconColorSelf)) { iconColorSelfValue = ConfigNode.ParseColor32(iconColorSelf); } if (!string.IsNullOrEmpty(iconColorTarget)) { iconColorTargetValue = ConfigNode.ParseColor32(iconColorTarget); } if (!string.IsNullOrEmpty(iconColorUnvisitedAnomaly)) { iconColorUnvisitedAnomalyValue = ConfigNode.ParseColor32(iconColorUnvisitedAnomaly); } if (!string.IsNullOrEmpty(iconColorVisitedAnomaly)) { iconColorVisitedAnomalyValue = ConfigNode.ParseColor32(iconColorVisitedAnomaly); } if (!string.IsNullOrEmpty(iconColorShadow)) { iconColorShadowValue = ConfigNode.ParseColor32(iconColorShadow); } if (!string.IsNullOrEmpty(iconColorAP)) { iconColorAPValue = ConfigNode.ParseColor32(iconColorAP); } if (!string.IsNullOrEmpty(iconColorPE)) { iconColorPEValue = ConfigNode.ParseColor32(iconColorPE); } if (!string.IsNullOrEmpty(iconColorANDN)) { iconColorANDNValue = ConfigNode.ParseColor32(iconColorANDN); } if (!string.IsNullOrEmpty(iconColorNode)) { iconColorNodeValue = ConfigNode.ParseColor32(iconColorNode); } if (!string.IsNullOrEmpty(trailColor)) { trailColorValue = ConfigNode.ParseColor32(trailColor); } // Referencing the parent project should work, shouldn't it. persistentVarName = "scansat" + internalProp.propID; persistence = new PersistenceAccessor(part); showLines = persistence.GetBool(persistentVarName + "lines") ?? true; trailMaterial = JUtil.DrawLineMaterial(); LeaveTrail(); if (!string.IsNullOrEmpty(scaleBar) && !string.IsNullOrEmpty(scaleLabels) && !string.IsNullOrEmpty(scaleLevels)) { scaleBarTexture = GameDatabase.Instance.GetTexture(scaleBar, false); scaleLabelTexture = GameDatabase.Instance.GetTexture(scaleLabels, false); var scales = new List <float>(); foreach (string scl in scaleLevels.Split(',')) { float scale; if (float.TryParse(scl.Trim(), out scale)) { scales.Add(scale / 1000); } } scaleLevelValues = scales.ToArray(); Array.Sort(scaleLevelValues); scaleLabelSpan = 1f / scaleLevelValues.Length; } // Now the fun bit: Locate all cfg files depicting map features anywhere. foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes("JSISCANSATVECTORMARK")) { mapMarkup.Add(new MapMarkupLine(node)); } startupComplete = true; }