예제 #1
0
        public override bool Load(ConfigNode configNode)
        {
            // Load base class
            bool valid = base.Load(configNode);

            IEnumerable <ConfigNode> nodes = ConfigNodeUtil.GetChildNodes(configNode, "RESOURCE");

            if (configNode.HasValue("resource"))
            {
                nodes = nodes.Concat(new ConfigNode[] { configNode });
            }

            foreach (ConfigNode childNode in nodes)
            {
                HasResource.Filter filter = new HasResource.Filter();

                valid &= ConfigNodeUtil.ParseValue <double>(childNode, "minQuantity", x => filter.minQuantity = x, this, 0.01, x => Validation.GE(x, 0.0));
                valid &= ConfigNodeUtil.ParseValue <double>(childNode, "maxQuantity", x => filter.maxQuantity = x, this, double.MaxValue, x => Validation.GE(x, 0.0));
                valid &= ConfigNodeUtil.ParseValue <Resource>(childNode, "resource", x => filter.resource = x.res, this);

                filters.Add(filter);
            }

            return(valid);
        }
예제 #2
0
        protected override void OnParameterLoad(ConfigNode node)
        {
            try
            {
                base.OnParameterLoad(node);

                capacity = ConfigNodeUtil.ParseValue <bool?>(node, "capacity", (bool?)false).Value;

                foreach (ConfigNode childNode in node.GetNodes("RESOURCE"))
                {
                    HasResource.Filter filter = new HasResource.Filter();

                    filter.resource    = ConfigNodeUtil.ParseValue <PartResourceDefinition>(childNode, "resource");
                    filter.minQuantity = ConfigNodeUtil.ParseValue <double>(childNode, "minQuantity");
                    filter.maxQuantity = ConfigNodeUtil.ParseValue <double>(childNode, "maxQuantity", double.MaxValue);

                    filters.Add(filter);
                }

                // Legacy
                if (node.HasValue("resource"))
                {
                    HasResource.Filter filter = new HasResource.Filter();

                    filter.resource    = ConfigNodeUtil.ParseValue <PartResourceDefinition>(node, "resource");
                    filter.minQuantity = ConfigNodeUtil.ParseValue <double>(node, "minQuantity");
                    filter.maxQuantity = ConfigNodeUtil.ParseValue <double>(node, "maxQuantity", double.MaxValue);

                    filters.Add(filter);
                }

                CreateDelegates();
            }
            finally
            {
                ParameterDelegate <Part> .OnDelegateContainerLoad(node);
            }
        }