public override void Load(ConfigNode node) { Volumes.Clear(); base.Load(node); var volumes = node.GetNodes(); for (int i = 0; i < volumes.Length; i++) { var v = volumes[i]; if (v.name == TankVolume.NODE_NAME) { var preset = VolumeConfigsLibrary.GetConfig(v.GetValue("name")); if (preset != null) { float volume; if (!float.TryParse(v.GetValue("Volume"), out volume)) { volume = 100f; } var cfg = preset.Clone <VolumeConfiguration>(); cfg.Volume = volume; Volumes.Add(cfg); } else { Volumes.Add(ConfigNodeObject.FromConfig <TankVolume>(v)); } } else if (v.name == NODE_NAME) { Volumes.Add(ConfigNodeObject.FromConfig <VolumeConfiguration>(v)); } } }
/// <summary> /// Searches for a named tank type or configuration and adds tanks accordingly. /// </summary> /// <returns><c>true</c>, if configuration was added, <c>false</c> otherwise.</returns> /// <param name="name">A name of a tank type or tank configuration.</param> /// <param name="volume">Total volume of the configuration.</param> /// <param name="update_counterparts">If counterparts are to be updated.</param> public bool AddVolume(string name, float volume, bool update_counterparts = true) { if (!AddRemoveEnabled) { return(false); } if (AddTank(name, volume, update_counterparts: update_counterparts)) { return(true); } var cfg = VolumeConfigsLibrary.GetConfig(name); if (cfg == null) { Utils.Log("SwitchableTankManager: no such tank configuration: {}", name); return(false); } return(AddConfiguration(cfg, volume, update_counterparts)); }