protected override void BuildContent(ImGui gui) { if (model == null) { return; } BuildSummary(gui, model); gui.AllocateSpacing(); flatHierarchyBuilder.Build(gui); gui.SetMinWidth(flatHierarchyBuilder.width); }
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); }