From e09fa186cf57be16005678a436e03b443eeb56e1 Mon Sep 17 00:00:00 2001 From: Paul Hebble Date: Mon, 24 Jun 2024 15:04:50 -0500 Subject: [PATCH] Remove constructor from RPM menu --- GameData/Astrogator/Astrogator-Changelog.cfg | 5 ++++ Source/AstrogatorMenu.cs | 28 +++++++++----------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/GameData/Astrogator/Astrogator-Changelog.cfg b/GameData/Astrogator/Astrogator-Changelog.cfg index 3ac0a75..37c02ef 100644 --- a/GameData/Astrogator/Astrogator-Changelog.cfg +++ b/GameData/Astrogator/Astrogator-Changelog.cfg @@ -15,6 +15,11 @@ KERBALCHANGELOG change = Better fixes for FlightGlobals NREs type = Fix } + CHANGE + { + change = Initialize RPM menu on demand instead of in constructor + type = Change + } } VERSION diff --git a/Source/AstrogatorMenu.cs b/Source/AstrogatorMenu.cs index d5a60f3..6507005 100644 --- a/Source/AstrogatorMenu.cs +++ b/Source/AstrogatorMenu.cs @@ -16,17 +16,6 @@ namespace Astrogator { /// public class AstrogatorMenu : InternalModule { - AstrogatorMenu() - : base() - { - model = new AstrogationModel(GetBestOrigin()); - loader = new AstrogationLoadBehaviorette(model, null); - timeToWait = new List(); - cursorTransfer = 0; - - loader.TryStartLoad(model.origin, null, null, null); - } - /// /// Key code for the upward pointing wedge button, overridable by RPM configuration. /// We use it to move the selection up by one row. @@ -78,9 +67,9 @@ public class AstrogatorMenu : InternalModule { private AstrogationModel model { get; set; } private AstrogationLoadBehaviorette loader { get; set; } - private List timeToWait { get; set; } + private List timeToWait { get; set; } = new List(); private double lastUniversalTime { get; set; } - private int cursorTransfer { get; set; } + private int cursorTransfer { get; set; } = 0; private bool cursorMoved { get; set; } private string menu { get; set; } private int? activeButton { get; set; } @@ -282,6 +271,13 @@ private void addRow(StringBuilder sb, TransferModel m, DateTimeParts dt, bool se /// public string ShowMenu(int columns, int rows) { + if (model == null) { + model = new AstrogationModel(GetBestOrigin()); + loader = new AstrogationLoadBehaviorette(model, null); + loader.OnDisplayOpened(); + loader.TryStartLoad(model.origin, null, null, null); + } + if ((RefreshTransfers() || cursorMoved)) { StringBuilder sb = new StringBuilder(); @@ -334,10 +330,10 @@ private bool ErrorCondition { public void PageActive(bool pageActive, int pageNumber) { if (pageActive) { - loader.OnDisplayOpened(); - loader.TryStartLoad(model.origin, null, null, null); + loader?.OnDisplayOpened(); + loader?.TryStartLoad(model.origin, null, null, null); } else { - loader.OnDisplayClosed(); + loader?.OnDisplayClosed(); } }