Example #1
0
        public BaseResourceProcessor(ConfigNode node)
        {
            if (node.HasValue(ProcessorNodeName))
            {
                name = node.GetValue(ProcessorNodeName);
            }

            if (node.HasValue(ProcessorNodeSecondsPerCycle))
            {
                double.TryParse(node.GetValue(ProcessorNodeSecondsPerCycle), out secondsPerCycle);
            }

            //Create lists
            preconditions      = new List <BasePrecondition>();
            inputList          = new List <ProcessedResource>();
            outputList         = new List <ProcessedResource>();
            consumptionResults = new Dictionary <string, SnacksProcessorResult>();
            productionResults  = new Dictionary <string, SnacksProcessorResult>();
            outcomes           = new List <BaseOutcome>();

            //Add processed resources
            ConfigNode[]      nodes;
            ConfigNode        configNode;
            ProcessedResource resource;
            BaseOutcome       outcome;

            if (node.HasNode(ConsumedResourceNode))
            {
                nodes = node.GetNodes(ConsumedResourceNode);
                for (int index = 0; index < nodes.Length; index++)
                {
                    configNode = nodes[index];
                    resource   = new ProcessedResource();
                    resource.Load(configNode);
                    inputList.Add(resource);
                }
            }

            if (node.HasNode(ProducedResourceNode))
            {
                nodes = node.GetNodes(ProducedResourceNode);
                for (int index = 0; index < nodes.Length; index++)
                {
                    configNode = nodes[index];
                    resource   = new ProcessedResource();
                    resource.Load(configNode);
                    outputList.Add(resource);
                }
            }

            //Add outcomes
            if (node.HasNode(OutcomeNode))
            {
                nodes = node.GetNodes(OutcomeNode);
                for (int index = 0; index < nodes.Length; index++)
                {
                    configNode = nodes[index];
                    outcome    = SnacksScenario.Instance.CreateOutcome(configNode);
                    if (outcome != null)
                    {
                        outcomes.Add(outcome);
                    }
                }
            }

            //Add preconditions
            BasePrecondition precondition;

            if (node.HasNode(BasePrecondition.PRECONDITION))
            {
                nodes = node.GetNodes(BasePrecondition.PRECONDITION);
                for (int index = 0; index < nodes.Length; index++)
                {
                    configNode   = nodes[index];
                    precondition = SnacksScenario.Instance.CreatePrecondition(configNode);
                    if (precondition != null)
                    {
                        preconditions.Add(precondition);
                    }
                }
            }
        }