diff --git a/isometric-park-fna/UI/ContractsWindow.cs b/isometric-park-fna/UI/ContractsWindow.cs --- a/isometric-park-fna/UI/ContractsWindow.cs +++ b/isometric-park-fna/UI/ContractsWindow.cs @@ -15,12 +15,10 @@ { public static class ContractsWindow { - public static Entity selected; - public static ContractStatus selected_status; - public static decimal selected_amount; + public static bool show_all; - public static bool show_all; - private static string selected_tree_delta; + private static (Entity entity, string name, ContractStatus status, decimal amount, string delta_trees) selected; + public static void Render(ImFontPtr font, ImGuiWindowBridgeEngine engine, List<(Entity entity, string name, ContractStatus status, decimal amount, string delta_trees)> contracts) @@ -62,17 +60,15 @@ foreach (var contract in contracts.Where((contract) => ((!(new[] {ContractStatus.Expired, ContractStatus.Broken, ContractStatus.Rejected}.Contains(contract.status)) || ContractsWindow.show_all )))) { - if (ImGui.Selectable(contract.name, ContractsWindow.selected == contract.entity)) + if (ImGui.Selectable(contract.name, ContractsWindow.selected.entity== contract.entity)) { - ContractsWindow.selected = contract.entity; + ContractsWindow.selected.entity= contract.entity; // newSelected = contract.entity; } - if (ContractsWindow.selected == contract.entity) + if (ContractsWindow.selected.entity== contract.entity) { - ContractsWindow.selected_status = contract.status; - ContractsWindow.selected_amount = contract.amount; - ContractsWindow.selected_tree_delta = contract.delta_trees; + ContractsWindow.selected = contract; } @@ -108,16 +104,16 @@ ImGui.Checkbox("Show All", ref show_all); ImGui.Separator(); - ImGui.Text(string.Format("Amount: ${0}/mo.", ContractsWindow.selected_amount)); + ImGui.Text(string.Format("Amount: ${0}/mo.", ContractsWindow.selected.amount)); - if (ContractsWindow.selected_tree_delta != null) + if (ContractsWindow.selected.delta_trees != null) { ImGui.Text("Sustainability: "); ImGui.SameLine(); var color = new Num.Vector4(1f, 1f, 1f, 1f); - switch (ContractsWindow.selected_tree_delta) + switch (ContractsWindow.selected.delta_trees) { case "Unsustainable": color = new Num.Vector4(0.95f, 0.25f, 0.25f, 1f); @@ -130,37 +126,37 @@ color = new Num.Vector4(0.95f, 0.65f, 0.25f, 1f); break; } - ImGui.TextColored(color, ContractsWindow.selected_tree_delta); + ImGui.TextColored(color, ContractsWindow.selected.delta_trees); } - if (selected_status == ContractStatus.Proposed) + if (selected.status == ContractStatus.Proposed) { if (ImGui.Button("Accept")) { - System.Console.Write(string.Format("{0} selected", ContractsWindow.selected)); + System.Console.Write(string.Format("{0} selected", ContractsWindow.selected.entity)); - engine.contractStatusMessages.Add(new ChangeContractStatusMessage { Entity = ContractsWindow.selected, newStatus = ContractStatus.Accepted }); + engine.contractStatusMessages.Add(new ChangeContractStatusMessage { Entity = ContractsWindow.selected.entity, newStatus = ContractStatus.Accepted }); } ImGui.SameLine(); if (ImGui.Button("Reject")) { - System.Console.Write(string.Format("{0} rejected", ContractsWindow.selected)); + System.Console.Write(string.Format("{0} rejected", ContractsWindow.selected.entity)); - engine.contractStatusMessages.Add(new ChangeContractStatusMessage { Entity = ContractsWindow.selected, newStatus = ContractStatus.Rejected }); + engine.contractStatusMessages.Add(new ChangeContractStatusMessage { Entity = ContractsWindow.selected.entity, newStatus = ContractStatus.Rejected }); } } - else if (selected_status == ContractStatus.Accepted) + else if (selected.status == ContractStatus.Accepted) { if (ImGui.Button("Cancel")) { - System.Console.Write(string.Format("{0} canceled", ContractsWindow.selected)); + System.Console.Write(string.Format("{0} canceled", ContractsWindow.selected.entity)); - engine.contractStatusMessages.Add(new ChangeContractStatusMessage { Entity = ContractsWindow.selected, newStatus = ContractStatus.Broken }); + engine.contractStatusMessages.Add(new ChangeContractStatusMessage { Entity = ContractsWindow.selected.entity, newStatus = ContractStatus.Broken }); } } @@ -183,7 +179,7 @@ engine.messages.Add(new ToggleWindowMessage { Window = Window.Contracts }); } - engine.selectedMessages.Add(new SelectMessage { Entity = selected }); + engine.selectedMessages.Add(new SelectMessage { Entity = selected.entity }); } }