コード例 #1
0
        public static RecipeNode Create(Recipe baseRecipe, ProductionGraph graph)
        {
            var node = new RecipeNode(baseRecipe, graph);

            node.Graph.Nodes.Add(node);
            node.Graph.InvalidateCaches();
            return(node);
        }
コード例 #2
0
            internal override void Build(ProductionGraph graph)
            {
                Built = createFunction(new Item(itemName), graph);

                if (target > 0)
                {
                    Built.DesiredRate = target;
                    Built.RateType    = RateType.Manual;
                }
                else
                {
                    Built.RateType = RateType.Auto;
                }
            }
コード例 #3
0
        internal BuiltData Build()
        {
            var graph = new ProductionGraph();

            foreach (var node in nodes)
            {
                node.Build(graph);
            }

            foreach (var link in links)
            {
                var lhs = link.Item1;
                var rhs = link.Item2;

                foreach (var item in lhs.Built.Outputs.Intersect(rhs.Built.Inputs))
                {
                    NodeLink.Create(lhs.Built, rhs.Built, item);
                }
            }
            return(new BuiltData(graph));
        }
コード例 #4
0
            internal override void Build(ProductionGraph graph)
            {
                var duration = 1;

                name ??= "recipe-" + GetSequence();

                var recipe = new Recipe(name, duration, itemizeKeys(inputs), itemizeKeys(outputs));

                Built = RecipeNode.Create(recipe, graph);
                Built.BeaconModules.OverrideProductivityBonus = efficiency;

                if (target > 0)
                {
                    Built.DesiredRate = target;
                    Built.RateType    = RateType.Manual;
                }
                else
                {
                    Built.RateType = RateType.Auto;
                }
            }
コード例 #5
0
            internal override void Build(ProductionGraph graph)
            {
                var duration = 1;

                if (name == null)
                {
                    name = "recipe-" + GetSequence();
                }

                Recipe recipe = new Recipe(name, duration, itemizeKeys(inputs), itemizeKeys(outputs));

                Built = RecipeNode.Create(recipe, graph);
                this.Built.ProductivityBonus = efficiency;

                if (target > 0)
                {
                    this.Built.desiredRate = target;
                    this.Built.rateType    = RateType.Manual;
                }
                else
                {
                    this.Built.rateType = RateType.Auto;
                }
            }
コード例 #6
0
 public BuiltData(ProductionGraph graph)
 {
     Graph = graph;
 }
コード例 #7
0
 } = null !;                                                  // TODO: Build if not already
 internal abstract void Build(ProductionGraph graph);
コード例 #8
0
 protected RecipeNode(Recipe baseRecipe, ProductionGraph graph)
     : base(graph)
 {
     BaseRecipe = baseRecipe;
 }
コード例 #9
0
 protected EffectableNode(ProductionGraph graph) : base(graph)
 {
     Modules = ModuleSelector.Default;
 }