Example #1
0
        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));
        }