Ejemplo n.º 1
0
 protected override void BuildContent(ImGui gui)
 {
     if (model == null)
     {
         return;
     }
     BuildSummary(gui, model);
     gui.AllocateSpacing();
     flatHierarchyBuilder.Build(gui);
     gui.SetMinWidth(flatHierarchyBuilder.width);
 }
Ejemplo n.º 2
0
        protected override void BuildContent(ImGui gui)
        {
            if (model == null)
            {
                return;
            }
            var elementsPerRow = MathUtils.Floor((flatHierarchyBuilder.width - 2f) / 4f);

            gui.spacing = 1f;
            var pad = new Padding(1f, 0.2f);

            using (gui.EnterGroup(pad))
            {
                gui.BuildText("Desired products and amounts:");
                using (var grid = gui.EnterInlineGrid(3f, 1f, elementsPerRow))
                {
                    foreach (var link in model.links)
                    {
                        if (link.amount != 0f)
                        {
                            grid.Next();
                            DrawDesiredProduct(gui, link);
                        }
                    }

                    grid.Next();
                    if (gui.BuildButton(Icon.Plus, SchemeColor.Primary, SchemeColor.PrimalyAlt, size: 2.5f))
                    {
                        SelectObjectPanel.Select(Database.goods.all, "Add desired product", product =>
                        {
                            if (model.linkMap.TryGetValue(product, out var existing))
                            {
                                if (existing.amount != 0)
                                {
                                    return;
                                }
                                existing.RecordUndo().amount = 1f;
                            }
                            else
                            {
                                model.RecordUndo().links.Add(new ProductionLink(model, product)
                                {
                                    amount = 1f
                                });
                            }
                        });
                    }
                }
            }
            if (gui.isBuilding)
            {
                gui.DrawRectangle(gui.lastRect, SchemeColor.Background, RectangleBorder.Thin);
            }

            if (model.flow.Length > 0 && model.flow[0].amount < -1e-5f)
            {
                using (gui.EnterGroup(pad))
                {
                    gui.BuildText("Summary ingredients:");
                    var grid = gui.EnterInlineGrid(3f, 1f, elementsPerRow);
                    BuildTableIngredients(gui, model, model, ref grid);
                    grid.Dispose();
                }
                if (gui.isBuilding)
                {
                    gui.DrawRectangle(gui.lastRect, SchemeColor.Background, RectangleBorder.Thin);
                }
            }

            if (model.flow.Length > 0 && model.flow[model.flow.Length - 1].amount > 1e-5f)
            {
                using (gui.EnterGroup(pad))
                {
                    gui.BuildText("Extra products:");
                    var grid = gui.EnterInlineGrid(3f, 1f, elementsPerRow);
                    BuildTableProducts(gui, model, model, ref grid);
                    grid.Dispose();
                }
                if (gui.isBuilding)
                {
                    gui.DrawRectangle(gui.lastRect, SchemeColor.Background, RectangleBorder.Thin);
                }
            }
            gui.AllocateSpacing();
            flatHierarchyBuilder.Build(gui);
            gui.SetMinWidth(flatHierarchyBuilder.width);
        }