diff --git a/isometric-park-fna/Engines/ImGuiWindowBridgeEngine.cs b/isometric-park-fna/Engines/ImGuiWindowBridgeEngine.cs --- a/isometric-park-fna/Engines/ImGuiWindowBridgeEngine.cs +++ b/isometric-park-fna/Engines/ImGuiWindowBridgeEngine.cs @@ -27,7 +27,9 @@ [Reads(typeof(VisibilityComponent), typeof(WindowTypeComponent), typeof(TrespassingPolicyComponent), - typeof(ContractStatusComponent))] + typeof(ContractStatusComponent), + typeof(RelatedOrganizationComponent), + typeof(NameAndDescriptionComponent))] public class ImGuiWindowBridgeEngine : Engine { @@ -53,13 +55,17 @@ public Dictionary windowStatuses {get;} public bool showContractIndicator; + public List contracts; public ImFontPtr font; public ImFontPtr italicFont; private DebugWindow debugWindow; + private Simulation Simulation; + public ImGuiWindowBridgeEngine(DebugWindow debugWindow, - ImFontPtr font, ImFontPtr italicFont) + ImFontPtr font, ImFontPtr italicFont, + Simulation simulation) { this.messages = new List(); this.typeMessages = new List(); @@ -80,6 +86,10 @@ this.font = font; this.italicFont = italicFont; this.debugWindow = debugWindow; + this.Simulation = simulation; + + + this.contracts = new List(); //Prepopulate: @@ -172,14 +182,25 @@ //reset this.showContractIndicator = false; + this.contracts.Clear(); foreach(var entity in ReadEntities()) { var contractStatus = GetComponent(entity); - if(contractStatus.date > new DateTime(2021, 4, 1)) + var age = this.Simulation.DateTime - contractStatus.date; + if((age.TotalDays > (5*30) ) + && (contractStatus.status == ContractStatus.Proposed)) { - this.showContractIndicator = true; + try { + this.showContractIndicator = true; + var organizationEntity = GetComponent(entity).Entity; + var name = GetComponent(organizationEntity).DisplayName; + this.contracts.Add(name); + } + catch (Exception e) + { + Logging.Error(string.Format("Exception: {0}", e.ToString())); + } } - } diff --git a/isometric-park-fna/FNAGame.cs b/isometric-park-fna/FNAGame.cs --- a/isometric-park-fna/FNAGame.cs +++ b/isometric-park-fna/FNAGame.cs @@ -248,7 +248,7 @@ WorldBuilder.AddEngine(new GameStateEngine()); WorldBuilder.AddEngine(this.simulation.BridgeEngine); WorldBuilder.AddEngine(new CameraBridgeEngine(this.camera)); - this.imGuiWindowBridgeEngine = new ImGuiWindowBridgeEngine(this.debugWindow, debugWindow.monoFont, debugWindow.italicFont); + this.imGuiWindowBridgeEngine = new ImGuiWindowBridgeEngine(this.debugWindow, debugWindow.monoFont, debugWindow.italicFont, this.simulation); WorldBuilder.AddEngine(this.imGuiWindowBridgeEngine); WorldBuilder.AddEngine(new ContractStatusEngine(this.simulation)); diff --git a/isometric-park-fna/UI/Menu.cs b/isometric-park-fna/UI/Menu.cs --- a/isometric-park-fna/UI/Menu.cs +++ b/isometric-park-fna/UI/Menu.cs @@ -72,7 +72,7 @@ { if (bridgeEngine.showContractIndicator) { - return Menu.activeButtonIndicator("\ue0c2 Contracts", bridgeEngine.windowStatuses[Window.Contracts], StyleSets.selected, StyleSets.white, "(!)", StyleSets.red, "Contract Offer X will expire"); + return Menu.activeButtonIndicator("\ue0c2 Contracts", bridgeEngine.windowStatuses[Window.Contracts], StyleSets.selected, StyleSets.white, "(!)", StyleSets.red, "Contracts about to expire:\n" + string.Join("\n", bridgeEngine.contracts)); } else { @@ -103,7 +103,7 @@ if (contractsButton(bridgeEngine)) { Logging.Trace("Contracts toggled."); - Logging.Spy(bridgeEngine.windowStatuses, "statuses"); + // Logging.Spy(bridgeEngine.windowStatuses, "statuses"); bridgeEngine.typeMessages.Add(new ToggleWindowTypeMessage{Window = Window.Contracts}); } //Budget isn't connected to an entity yet: