From ccd2409126fb5386e31187fda44f9b4e87b2e4e8 Mon Sep 17 00:00:00 2001 From: hawkeye Date: Sat, 4 Nov 2023 22:10:03 -0400 Subject: [PATCH] Added 4.0.3 beta 2 features --- DomainModel/DomainModel.csproj | 6 ++-- MainApp/MainApp.csproj | 6 ++-- MainApp/MessageWindow.xaml | 4 +-- MainApp/ViewModel/MessageWindowViewModel.cs | 38 ++++++++++++++++----- Orchestration/Orchestration.csproj | 6 ++-- Orchestration/PanelPopOutOrchestrator.cs | 33 ++++++------------ Orchestration/PanelSourceOrchestrator.cs | 14 ++++++++ RELEASENOTES.md | 12 ++++++- Shared/Shared.csproj | 6 ++-- SimconnectAgent/SimconnectAgent.csproj | 6 ++-- VERSION.md | 12 ++++++- WindowsAgent/InputEmulationManager.cs | 23 +------------ WindowsAgent/WindowsAgent.csproj | 6 ++-- 13 files changed, 98 insertions(+), 74 deletions(-) diff --git a/DomainModel/DomainModel.csproj b/DomainModel/DomainModel.csproj index 26dbfce..1a3d908 100644 --- a/DomainModel/DomainModel.csproj +++ b/DomainModel/DomainModel.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.DomainModel x64 - 4.0.3.0 - 4.0.3.0 - 4.0.3.0 + 4.0.3.2 + 4.0.3.2 + 4.0.3.2 win-x64 Embedded Debug;Release;Local diff --git a/MainApp/MainApp.csproj b/MainApp/MainApp.csproj index b6d6aed..934c4f1 100644 --- a/MainApp/MainApp.csproj +++ b/MainApp/MainApp.csproj @@ -14,9 +14,9 @@ MSFSPopoutPanelManager.MainApp logo.ico x64 - 4.0.3.0 - 4.0.3.0 - 4.0.3.0 + 4.0.3.2 + 4.0.3.2 + 4.0.3.2 embedded en diff --git a/MainApp/MessageWindow.xaml b/MainApp/MessageWindow.xaml index b87cff1..16a38df 100644 --- a/MainApp/MessageWindow.xaml +++ b/MainApp/MessageWindow.xaml @@ -32,8 +32,8 @@ Height="Auto" Mode="Dark"> IsVisible = true; + Orchestrator.PanelPopOut.OnPopOutStarted += (sender, e) => + { + IsVisible = true; + WindowWidth = WINDOW_WIDTH_POPOUT_MESSAGE; + WindowHeight = WINDOW_HEIGHT_POPOUT_MESSAGE; + }; Orchestrator.PanelPopOut.OnPopOutCompleted += (sender, e) => { Thread.Sleep(1000); IsVisible = false; + WindowWidth = WINDOW_WIDTH_POPOUT_MESSAGE; + WindowHeight = WINDOW_HEIGHT_POPOUT_MESSAGE; + }; + Orchestrator.PanelSource.OnStatusMessageStarted += (sender, e) => + { + IsVisible = true; + WindowWidth = WINDOW_WIDTH_REGULAR_MESSAGE; + WindowHeight = WINDOW_HEIGHT_REGULAR_MESSAGE; + }; + Orchestrator.PanelSource.OnStatusMessageEnded += (sender, e) => + { + IsVisible = false; + WindowWidth = WINDOW_WIDTH_REGULAR_MESSAGE; + WindowHeight = WINDOW_HEIGHT_REGULAR_MESSAGE; }; StatusMessageWriter.OnStatusMessage += (sender, e) => @@ -72,9 +94,9 @@ namespace MSFSPopoutPanelManager.MainApp.ViewModel return; var simulatorRectangle = WindowActionManager.GetWindowRectangle(WindowProcessManager.SimulatorProcess.Handle); - var left = simulatorRectangle.Left + simulatorRectangle.Width / 2 - WINDOW_WIDTH / 2; - var top = simulatorRectangle.Top + simulatorRectangle.Height / 2 - WINDOW_HEIGHT / 2; - WindowActionManager.MoveWindow(Handle, left, top, WINDOW_WIDTH, WINDOW_HEIGHT); + var left = simulatorRectangle.Left + simulatorRectangle.Width / 2 - WindowWidth / 2; + var top = simulatorRectangle.Top + simulatorRectangle.Height / 2 - WindowHeight / 2; + WindowActionManager.MoveWindow(Handle, left, top, WindowWidth, WindowHeight); WindowActionManager.ApplyAlwaysOnTop(Handle, PanelType.StatusMessageWindow, true); } } diff --git a/Orchestration/Orchestration.csproj b/Orchestration/Orchestration.csproj index bc1fedf..c11b359 100644 --- a/Orchestration/Orchestration.csproj +++ b/Orchestration/Orchestration.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.Orchestration x64 - 4.0.3.0 - 4.0.3.0 - 4.0.3.0 + 4.0.3.2 + 4.0.3.2 + 4.0.3.2 win-x64 Embedded Debug;Release;Local diff --git a/Orchestration/PanelPopOutOrchestrator.cs b/Orchestration/PanelPopOutOrchestrator.cs index 030e831..5212e5d 100644 --- a/Orchestration/PanelPopOutOrchestrator.cs +++ b/Orchestration/PanelPopOutOrchestrator.cs @@ -13,7 +13,6 @@ namespace MSFSPopoutPanelManager.Orchestration { public class PanelPopOutOrchestrator : ObservableObject { - // This will be replaced by a signal from Ready to Fly Skipper into webserver in version 4.0 private const int READY_TO_FLY_BUTTON_APPEARANCE_DELAY = 2000; private const int CAMERA_VIEW_HOME_COCKPIT_MODE = 8; private const int CAMERA_VIEW_CUSTOM_CAMERA = 7; @@ -99,7 +98,7 @@ namespace MSFSPopoutPanelManager.Orchestration // *** THIS MUST BE DONE FIRST. Get the built-in panel list to be configured later List builtInPanelHandles = WindowActionManager.GetWindowsByPanelType(new List() { PanelType.BuiltInPopout }); - await StepAddCutomPanels(builtInPanelHandles); + await StepAddCustomPanels(builtInPanelHandles); StepAddBuiltInPanels(builtInPanelHandles); @@ -152,7 +151,7 @@ namespace MSFSPopoutPanelManager.Orchestration } - private async Task StepAddCutomPanels(List builtInPanelHandles) + private async Task StepAddCustomPanels(List builtInPanelHandles) { if (!ActiveProfile.HasCustomPanels) return; @@ -214,7 +213,7 @@ namespace MSFSPopoutPanelManager.Orchestration var success = WorkflowStepWithMessage.Execute("Loading custom camera view", () => { - return LoadCustomView(AppSetting.PopOutSetting.AutoPanning.KeyBinding, AppSetting.GeneralSetting.TurboMode); + return LoadCustomView(AppSetting.PopOutSetting.AutoPanning.KeyBinding, AppSetting.GeneralSetting.TurboMode, false); }, true); if (!success) @@ -249,21 +248,11 @@ namespace MSFSPopoutPanelManager.Orchestration WorkflowStepWithMessage.Execute(panelConfig.PanelName, () => { panelConfig.IsSelectedPanelSource = true; - - if(AppSetting.GeneralSetting.TurboMode) - { - InputEmulationManager.PrepareToPopOutPanel((int)panelConfig.PanelSource.X, (int)panelConfig.PanelSource.Y, AppSetting.GeneralSetting.TurboMode); - PanelSourceOrchestrator.ShowPanelSourceNonEdit(panelConfig); - ExecuteCustomPopout(panelConfig, builtInPanelHandles, index++); - PanelSourceOrchestrator.ClosePanelSourceNonEdit(panelConfig); - } - else - { - PanelSourceOrchestrator.ShowPanelSourceNonEdit(panelConfig); - InputEmulationManager.PrepareToPopOutPanel((int)panelConfig.PanelSource.X, (int)panelConfig.PanelSource.Y, AppSetting.GeneralSetting.TurboMode); - PanelSourceOrchestrator.ClosePanelSourceNonEdit(panelConfig); - ExecuteCustomPopout(panelConfig, builtInPanelHandles, index++); - } + + PanelSourceOrchestrator.ShowPanelSourceNonEdit(panelConfig); + InputEmulationManager.PrepareToPopOutPanel((int)panelConfig.PanelSource.X, (int)panelConfig.PanelSource.Y, AppSetting.GeneralSetting.TurboMode); + PanelSourceOrchestrator.ClosePanelSourceNonEdit(panelConfig); + ExecuteCustomPopout(panelConfig, builtInPanelHandles, index++); ApplyPanelLocation(panelConfig); panelConfig.IsSelectedPanelSource = false; @@ -568,7 +557,7 @@ namespace MSFSPopoutPanelManager.Orchestration WorkflowStepWithMessage.Execute("Loading custom camera view", () => { - return LoadCustomView(AppSetting.PopOutSetting.AfterPopOutCameraView.KeyBinding, AppSetting.GeneralSetting.TurboMode); + return LoadCustomView(AppSetting.PopOutSetting.AfterPopOutCameraView.KeyBinding, AppSetting.GeneralSetting.TurboMode, true); }, true); break; @@ -593,7 +582,7 @@ namespace MSFSPopoutPanelManager.Orchestration } } - private bool LoadCustomView(string keybinding, bool isTurboMode) + private bool LoadCustomView(string keybinding, bool isTurboMode, bool ignoreError) { int retry = 10; for(var i = 0; i < retry; i++) @@ -604,7 +593,7 @@ namespace MSFSPopoutPanelManager.Orchestration return true; } - return false; + return ignoreError; } private void SetCockpitZoomLevel(int zoom, bool isTurboMode) diff --git a/Orchestration/PanelSourceOrchestrator.cs b/Orchestration/PanelSourceOrchestrator.cs index 9653b37..a421b09 100644 --- a/Orchestration/PanelSourceOrchestrator.cs +++ b/Orchestration/PanelSourceOrchestrator.cs @@ -19,6 +19,9 @@ namespace MSFSPopoutPanelManager.Orchestration private FlightSimData _flightSimData; private bool _isEditingPanelSourceLock = false; + public event EventHandler OnStatusMessageStarted; + public event EventHandler OnStatusMessageEnded; + public PanelSourceOrchestrator(ProfileData profileData, AppSettingData appSettingData, FlightSimData flightSimData) { _profileData = profileData; @@ -64,6 +67,12 @@ namespace MSFSPopoutPanelManager.Orchestration await Task.Run(() => { + OnStatusMessageStarted?.Invoke(this, null); + StatusMessageWriter.IsEnabled = true; + StatusMessageWriter.ClearMessage(); + StatusMessageWriter.WriteMessage("Loading camera view. Please wait......", StatusMessageType.Info); + + // Set Windowed Display Mode window's configuration if needed if (_appSettingData.ApplicationSetting.WindowedModeSetting.AutoResizeMsfsGameWindow) WindowActionManager.SetMsfsGameWindowLocation(ActiveProfile.MsfsGameWindowConfig); @@ -91,6 +100,11 @@ namespace MSFSPopoutPanelManager.Orchestration // Turn off TrackIR if TrackIR is started FlightSimOrchestrator.TurnOffTrackIR(); + + Thread.Sleep(500); + StatusMessageWriter.IsEnabled = false; + OnStatusMessageEnded?.Invoke(this, null); + }); } diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 867464c..293ef5c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -1,4 +1,14 @@ -## Version 4.0.3 Beta +## Version 4.0.3 Beta 2 + +* Update logic to turbo mode to help resolve pop out reliability issue. + +* Added please wait message when editing panel source to resolve the confusion that Pop Out Panel Manager seems to hang when trying to select panel source when creating a new aircraft profile. + +* Remove pop out failure error message when after pop out predefined camera view has not been setup for an aircraft. + +* KNOWN ISSUE: For A2A Comanche PA-24-250, pop out step "Resetting camera view" does not work since this aircraft does not seem to implement SimConnect variable CAMERA_VIEW_TYPE_AND_INDEX:1 which Pop Out Panel Manager uses. + +## Version 4.0.3 Beta 1 * Added a new turbo mode to improve execution speed during pop out process. Turbo mode can be turned on in preferences => general settings. diff --git a/Shared/Shared.csproj b/Shared/Shared.csproj index b7612cb..ab85c74 100644 --- a/Shared/Shared.csproj +++ b/Shared/Shared.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.Shared x64 - 4.0.3.0 - 4.0.3.0 - 4.0.3.0 + 4.0.3.2 + 4.0.3.2 + 4.0.3.2 win-x64 Embedded Debug;Release;Local diff --git a/SimconnectAgent/SimconnectAgent.csproj b/SimconnectAgent/SimconnectAgent.csproj index f1490bd..86e42c9 100644 --- a/SimconnectAgent/SimconnectAgent.csproj +++ b/SimconnectAgent/SimconnectAgent.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.SimConnectAgent x64 - 4.0.3.0 - 4.0.3.0 - 4.0.3.0 + 4.0.3.2 + 4.0.3.2 + 4.0.3.2 win-x64 Embedded Debug;Release;Local diff --git a/VERSION.md b/VERSION.md index 3b236de..fccaa26 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1,7 +1,17 @@ # Version History
-## Version 4.0.3 Beta +## Version 4.0.3 Beta 2 + +* Update logic to turbo mode to help resolve pop out reliability issue. + +* Added please wait message when editing panel source to resolve the confusion that Pop Out Panel Manager seems to hang when trying to select panel source when creating a new aircraft profile. + +* Remove pop out failure error message when after pop out predefined camera view has not been setup for an aircraft. + +* KNOWN ISSUE: For A2A Comanche PA-24-250, pop out step "Resetting camera view" does not work since this aircraft does not seem to implement SimConnect variable CAMERA_VIEW_TYPE_AND_INDEX:1 which Pop Out Panel Manager uses. + +## Version 4.0.3 Beta 1 * Added a new turbo mode to improve execution speed during pop out process. Turbo mode can be turned on in preferences => general settings. diff --git a/WindowsAgent/InputEmulationManager.cs b/WindowsAgent/InputEmulationManager.cs index 43f9f3a..f8443bc 100644 --- a/WindowsAgent/InputEmulationManager.cs +++ b/WindowsAgent/InputEmulationManager.cs @@ -51,8 +51,7 @@ namespace MSFSPopoutPanelManager.WindowsAgent MoveAppWindowFromLeftClickPoint(x, y); - if(!isTurboMode) - LeftClick(x + 30, y); // Left click outside the cirlce area to focus game window + LeftClick(x + 30, y); // Left click outside the circle area to focus game window // Force cursor reset and focus PInvoke.SetCursorPos(x, y); @@ -106,26 +105,6 @@ namespace MSFSPopoutPanelManager.WindowsAgent } } - public static void CenterView() - { - Debug.WriteLine("Centering view......"); - - var hwnd = WindowProcessManager.SimulatorProcess.Handle; - PInvoke.SetForegroundWindow(hwnd); - Thread.Sleep(200); - - // First center view using Ctrl-Space - PInvoke.keybd_event(Convert.ToByte(VK_RCONTROL), 0, KEYEVENTF_KEYDOWN, 0); - PInvoke.keybd_event(Convert.ToByte(VK_SPACE), 0, KEYEVENTF_KEYDOWN, 0); - Thread.Sleep(200); - PInvoke.keybd_event(Convert.ToByte(VK_SPACE), 0, KEYEVENTF_KEYUP, 0); - PInvoke.keybd_event(Convert.ToByte(VK_RCONTROL), 0, KEYEVENTF_KEYUP, 0); - Thread.Sleep(200); - - // Wait for center view to complete - Thread.Sleep(500); - } - public static void SaveCustomView(string keybinding) { Debug.WriteLine("Saving custom view..."); diff --git a/WindowsAgent/WindowsAgent.csproj b/WindowsAgent/WindowsAgent.csproj index 566d14a..8e62f66 100644 --- a/WindowsAgent/WindowsAgent.csproj +++ b/WindowsAgent/WindowsAgent.csproj @@ -11,9 +11,9 @@ https://github.com/hawkeye-stan/msfs-popout-panel-manager MSFSPopoutPanelManager.WindowsAgent x64 - 4.0.3.0 - 4.0.3.0 - 4.0.3.0 + 4.0.3.2 + 4.0.3.2 + 4.0.3.2 win-x64 Embedded Debug;Release;Local