Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 20 additions & 9 deletions YAFC/Widgets/DataGrid.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,18 @@ public override void BuildHeader(ImGui gui)
if (hasMenu)
{
var rect = gui.statePosition;
var menuRect = new Rect(rect.Right-1.7f, rect.Y, 1.5f, 1.5f);
var menuRect = new Rect(rect.Right - 1.7f, rect.Y, 1.5f, 1.5f);
if (gui.isBuilding)
gui.DrawIcon(menuRect, Icon.DropDown, SchemeColor.BackgroundText);
if (gui.BuildButton(menuRect, SchemeColor.None, SchemeColor.Grey))
gui.ShowDropDown(menuRect, BuildMenu, new Padding(1f));
}
}
public virtual void BuildMenu(ImGui gui) {}

public virtual void BuildMenu(ImGui gui) { }
}

public class DataGrid<TData> where TData:class
public class DataGrid<TData> where TData : class
{
public readonly List<DataColumn<TData>> columns;
private readonly Padding innerPadding = new Padding(0.2f);
Expand All @@ -66,7 +66,7 @@ public DataGrid(params DataColumn<TData>[] columns)
this.columns = new List<DataColumn<TData>>(columns);
spacing = innerPadding.left + innerPadding.right;
}


private void BuildHeaderResizer(ImGui gui, DataColumn<TData> column, Rect rect)
{
Expand All @@ -89,7 +89,7 @@ private void BuildHeaderResizer(ImGui gui, DataColumn<TData> column, Rect rect)
gui.Rebuild();
break;
case ImGuiAction.MouseDown:
gui.ConsumeMouseDown(rect, cursor:RenderingUtils.cursorHorizontalResize);
gui.ConsumeMouseDown(rect, cursor: RenderingUtils.cursorHorizontalResize);
break;
case ImGuiAction.MouseUp:
if (gui.ConsumeMouseUp(rect, false))
Expand All @@ -102,6 +102,16 @@ private void BuildHeaderResizer(ImGui gui, DataColumn<TData> column, Rect rect)
}
}

private void CalculateWidth(ImGui gui)
{
var x = 0f;
foreach (var column in columns)
{
x += column.width + spacing;
}
width = MathF.Max(x + 0.2f - spacing, gui.width - 1f);
}

public void BuildHeader(ImGui gui)
{
var spacing = innerPadding.left + innerPadding.right;
Expand All @@ -127,7 +137,7 @@ public void BuildHeader(ImGui gui)
}
}
}
width = MathF.Max(x + 0.2f - spacing, gui.width - 1f);
CalculateWidth(gui);

var separator = gui.AllocateRect(x, 0.1f);
if (gui.isBuilding)
Expand Down Expand Up @@ -162,10 +172,11 @@ public Rect BuildRow(ImGui gui, TData element, float startX = 0f)
buildGroup.Complete();
}

CalculateWidth(gui);
var rect = gui.lastRect;
var bottom = gui.lastRect.Bottom;
if (gui.isBuilding)
gui.DrawRectangle(new Rect(startX, bottom - 0.1f, width-startX, 0.1f), SchemeColor.Grey);
gui.DrawRectangle(new Rect(startX, bottom - 0.1f, width - startX, 0.1f), SchemeColor.Grey);
return rect;
}

Expand All @@ -178,7 +189,7 @@ public void BeginBuildingContent(ImGui gui)
public Rect EndBuildingContent(ImGui gui)
{
var bottom = gui.statePosition.Bottom;
return new Rect(buildingStart.X, buildingStart.Y, width, bottom-buildingStart.Y);
return new Rect(buildingStart.X, buildingStart.Y, width, bottom - buildingStart.Y);
}

public bool BuildContent(ImGui gui, IReadOnlyList<TData> data, out (TData from, TData to) reorder, out Rect rect, Func<TData, bool> filter = null)
Expand Down
6 changes: 4 additions & 2 deletions YAFC/Widgets/ImmediateWidgets.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,10 @@ public static bool BuildFactorioObjectButton(this ImGui gui, Rect rect, Factorio
else
{
overColor = bgColor + 1;
if (MainScreen.Instance.IsSameObjectHovered(gui, obj))
bgColor = overColor;
}
if (MainScreen.Instance.IsSameObjectHovered(gui, obj))
{
bgColor = overColor;
}
var evt = gui.BuildButton(rect, bgColor, overColor, button: 0);
if (evt == ButtonEvent.MouseOver && obj != null)
Expand Down
2 changes: 1 addition & 1 deletion YAFC/Widgets/ObjectTooltip.cs
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@ private void BuildRecipe(RecipeOrTechnology recipe, ImGui gui)
gui.BuildText(DataUtils.FormatAmount(ingredient.amount, UnitOfMeasure.None));
}

gui.allocator = RectAllocator.RemainigRow;
gui.allocator = RectAllocator.RemainingRow;
gui.BuildFactorioObjectButtonWithText(technology);
}
}
Expand Down
34 changes: 17 additions & 17 deletions YAFC/Windows/DependencyExplorer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ namespace YAFC
public class DependencyExplorer : PseudoScreen
{
private static readonly DependencyExplorer Instance = new DependencyExplorer();
private readonly VerticalScrollCustom dependencies;
private readonly VerticalScrollCustom dependants;

private readonly ScrollArea dependencies;
private readonly ScrollArea dependants;
private static readonly Padding listPad = new Padding(0.5f);

private readonly List<FactorioObject> history = new List<FactorioObject>();
private FactorioObject current;

Expand All @@ -31,11 +31,11 @@ public class DependencyExplorer : PseudoScreen
{DependencyList.Flags.SourceEntity, ("Source", "This recipe requires another entity")},
{DependencyList.Flags.Hidden, ("", "This technology is hidden")},
};

public DependencyExplorer() : base(60f)
{
dependencies = new VerticalScrollCustom(30f, DrawDependencies);
dependants = new VerticalScrollCustom(30f, DrawDependants);
dependencies = new ScrollArea(30f, DrawDependencies);
dependants = new ScrollArea(30f, DrawDependants);
}

public static void Show(FactorioObject target)
Expand All @@ -52,9 +52,9 @@ private void DrawFactorioObject(ImGui gui, FactorioId id)
{
gui.BuildFactorioObjectIcon(fobj);
var text = fobj.locName + " (" + fobj.type + ")";
gui.RemainingRow(0.5f).BuildText(text, null, true, color:fobj.IsAccessible() ? SchemeColor.BackgroundText : SchemeColor.BackgroundTextFaint);
gui.RemainingRow(0.5f).BuildText(text, null, true, color: fobj.IsAccessible() ? SchemeColor.BackgroundText : SchemeColor.BackgroundTextFaint);
}
if (gui.BuildFactorioObjectButton(gui.lastRect, fobj, extendHeader:true))
if (gui.BuildFactorioObjectButton(gui.lastRect, fobj, extendHeader: true))
Change(fobj);
}

Expand All @@ -64,12 +64,12 @@ private void DrawDependencies(ImGui gui)
foreach (var data in Dependencies.dependencyList[current])
{
if (!dependencyListTexts.TryGetValue(data.flags, out var dependencyType))
dependencyType = (data.flags.ToString(), "Missing "+data.flags);
dependencyType = (data.flags.ToString(), "Missing " + data.flags);
if (data.elements.Length > 0)
{
gui.AllocateSpacing(0.5f);
if (data.elements.Length == 1)
gui.BuildText("Require this "+dependencyType.name+":");
gui.BuildText("Require this " + dependencyType.name + ":");
else if (data.flags.HasFlags(DependencyList.Flags.RequireEverything))
gui.BuildText("Require ALL of these " + dependencyType.name + "s:");
else gui.BuildText("Require ANY of these " + dependencyType.name + "s:");
Expand All @@ -83,7 +83,7 @@ private void DrawDependencies(ImGui gui)
if (Database.rootAccessible.Contains(current))
text += ", but it is inherently accessible";
else text += ", and it is inaccessible";
gui.BuildText(text, wrap:true);
gui.BuildText(text, wrap: true);
}
}
}
Expand Down Expand Up @@ -113,7 +113,7 @@ public override void Build(ImGui gui)
gui.BuildText("Currently inspecting:", Font.subheader);
if (gui.BuildFactorioObjectButtonWithText(current))
SelectObjectPanel.Select(Database.objects.all, "Select something", Change);
gui.BuildText("(Click to change)", color:SchemeColor.BackgroundTextFaint);
gui.BuildText("(Click to change)", color: SchemeColor.BackgroundTextFaint);
}
using (gui.EnterRow())
{
Expand All @@ -123,7 +123,7 @@ public override void Build(ImGui gui)
if (current.IsAutomatable())
gui.BuildText("Status: Automatable");
else gui.BuildText("Status: Accessible, Not automatable");

if (settings.Flags(current).HasFlags(ProjectPerItemFlags.MarkedAccessible))
{
gui.BuildText("Manually marked as accessible.");
Expand Down Expand Up @@ -165,7 +165,7 @@ public override void Build(ImGui gui)
dependants.Build(gui);
}
}

public void Change(FactorioObject target)
{
if (target == null)
Expand All @@ -174,7 +174,7 @@ public void Change(FactorioObject target)
Close();
return;
}

history.Add(current);
if (history.Count > 100)
history.RemoveRange(0, 20);
Expand All @@ -190,7 +190,7 @@ public override bool KeyDown(SDL.SDL_Keysym key)
{
var last = history[history.Count - 1];
Change(last);
history.RemoveRange(history.Count-2, 2);
history.RemoveRange(history.Count - 2, 2);
return true;
}
return base.KeyDown(key);
Expand Down
8 changes: 4 additions & 4 deletions YAFC/Windows/ErrorListPanel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ public class ErrorListPanel : PseudoScreen
{
private static readonly ErrorListPanel Instance = new ErrorListPanel();
private ErrorCollector collector;
private readonly VerticalScrollCustom verticalList;
private readonly ScrollArea verticalList;
private (string error, ErrorSeverity severity)[] errors;

public ErrorListPanel() : base(60f)
{
verticalList = new VerticalScrollCustom(30f, BuildErrorList, default, true);
verticalList = new ScrollArea(30f, BuildErrorList, default, true);
}

private void BuildErrorList(ImGui gui)
{
foreach (var error in errors)
{
gui.BuildText(error.error, wrap:true, color:error.severity >= ErrorSeverity.MajorDataLoss ? SchemeColor.Error : SchemeColor.BackgroundText);
gui.BuildText(error.error, wrap: true, color: error.severity >= ErrorSeverity.MajorDataLoss ? SchemeColor.Error : SchemeColor.BackgroundText);
}
}

Expand All @@ -37,7 +37,7 @@ public override void Build(ImGui gui)
BuildHeader(gui, "Loading completed with errors");
else BuildHeader(gui, "Analysis warnings");
verticalList.Build(gui);

}
}
}
Loading