1
0
Fork 0
mirror of https://github.com/hawkeye-stan/msfs-popout-panel-manager.git synced 2024-11-21 13:20:11 +00:00

Remove wait for ready to fly button logic

This commit is contained in:
hawkeye 2023-08-14 02:29:30 -04:00
parent 0862d5ef2d
commit 859e68893e
4 changed files with 44 additions and 47 deletions

View file

@ -4,7 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
--> -->
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<Configuration>Release</Configuration> <Configuration>Local</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
<PublishDir>..\..\..\publish\master</PublishDir> <PublishDir>..\..\..\publish\master</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol> <PublishProtocol>FileSystem</PublishProtocol>

View file

@ -5,7 +5,6 @@ using MSFSPopoutPanelManager.WindowsAgent;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Numerics;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows; using System.Windows;
@ -14,9 +13,6 @@ namespace MSFSPopoutPanelManager.Orchestration
{ {
public class PanelPopOutOrchestrator : ObservableObject 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 ProfileData _profileData; private ProfileData _profileData;
private AppSettingData _appSettingData; private AppSettingData _appSettingData;
private FlightSimData _flightSimData; private FlightSimData _flightSimData;
@ -88,8 +84,6 @@ namespace MSFSPopoutPanelManager.Orchestration
StepPopoutPrep(); StepPopoutPrep();
await StepReadyToFlyDelay(isAutoPopOut);
// *** THIS MUST BE DONE FIRST. Get the built-in panel list to be configured later // *** THIS MUST BE DONE FIRST. Get the built-in panel list to be configured later
List<IntPtr> builtInPanelHandles = WindowActionManager.GetWindowsByPanelType(new List<PanelType>() { PanelType.BuiltInPopout }); List<IntPtr> builtInPanelHandles = WindowActionManager.GetWindowsByPanelType(new List<PanelType>() { PanelType.BuiltInPopout });
@ -122,25 +116,6 @@ namespace MSFSPopoutPanelManager.Orchestration
PanelSourceOrchestrator.CloseAllPanelSource(); PanelSourceOrchestrator.CloseAllPanelSource();
} }
private async Task StepReadyToFlyDelay(bool isAutoPopOut)
{
if (!isAutoPopOut)
return;
await Task.Run(() =>
{
StatusMessageWriter.WriteMessage("Waiting on ready to fly button delay", StatusMessageType.Info);
// Match the delay for Ready to Fly button to disappear
Thread.Sleep(READY_TO_FLY_BUTTON_APPEARANCE_DELAY);
// Extra wait for cockpit view to appear and align
Thread.Sleep(AppSetting.AutoPopOutSetting.ReadyToFlyDelay * 1000);
StatusMessageWriter.WriteOkStatusMessage();
});
}
private async Task StepAddCutomPanels(List<IntPtr> builtInPanelHandles) private async Task StepAddCutomPanels(List<IntPtr> builtInPanelHandles)
{ {
if (!ActiveProfile.HasCustomPanels) if (!ActiveProfile.HasCustomPanels)
@ -187,8 +162,7 @@ namespace MSFSPopoutPanelManager.Orchestration
// Remember current game's zoom level to be recall after pop out // Remember current game's zoom level to be recall after pop out
_prePopOutCockpitZoomLevel = _flightSimData.CockpitCameraZoom; _prePopOutCockpitZoomLevel = _flightSimData.CockpitCameraZoom;
LoadCustomView(AppSetting.PopOutSetting.AutoPanning.KeyBinding); LoadCustomView(AppSetting.PopOutSetting.AutoPanning.KeyBinding);
FlightSimOrchestrator.SetCockpitCameraZoomLevel(50); SetCockpitZoomLevel(50);
Thread.Sleep(1000);
StatusMessageWriter.WriteOkStatusMessage(); StatusMessageWriter.WriteOkStatusMessage();
} }
}); });
@ -246,7 +220,7 @@ namespace MSFSPopoutPanelManager.Orchestration
// Return to custom camera view if set // Return to custom camera view if set
var task = Task.Run(() => { var task = Task.Run(() => {
FlightSimOrchestrator.SetCockpitCameraZoomLevel(_prePopOutCockpitZoomLevel); //SetCockpitZoomLevel(_prePopOutCockpitZoomLevel);
ReturnToAfterPopOutCameraView(); ReturnToAfterPopOutCameraView();
}); });
}); });
@ -485,12 +459,11 @@ namespace MSFSPopoutPanelManager.Orchestration
{ {
case AfterPopOutCameraViewType.CockpitCenterView: case AfterPopOutCameraViewType.CockpitCenterView:
InputEmulationManager.CenterView(); InputEmulationManager.CenterView();
Thread.Sleep(500); SetCockpitZoomLevel(_prePopOutCockpitZoomLevel);
FlightSimOrchestrator.SetCockpitCameraZoomLevel(_prePopOutCockpitZoomLevel);
break; break;
case AfterPopOutCameraViewType.CustomCameraView: case AfterPopOutCameraViewType.CustomCameraView:
LoadCustomView(AppSetting.PopOutSetting.AfterPopOutCameraView.KeyBinding); LoadCustomView(AppSetting.PopOutSetting.AfterPopOutCameraView.KeyBinding);
FlightSimOrchestrator.SetCockpitCameraZoomLevel(_prePopOutCockpitZoomLevel); SetCockpitZoomLevel(_prePopOutCockpitZoomLevel);
break; break;
} }
} }
@ -502,16 +475,30 @@ namespace MSFSPopoutPanelManager.Orchestration
private void LoadCustomView(string keybinding) private void LoadCustomView(string keybinding)
{ {
int retry = 5; int retry = 20;
for(var i = 0; i < retry; i++) for(var i = 0; i < retry; i++)
{ {
InputEmulationManager.LoadCustomView(keybinding); InputEmulationManager.LoadCustomView(keybinding);
Thread.Sleep(500); // wait for flightsimdata to be updated Thread.Sleep(750); // wait for flightsimdata to be updated
if (_flightSimData.CameraViewTypeAndIndex1 == 7) // 7 = custom camera view enum if (_flightSimData.CameraViewTypeAndIndex1 == 7) // 7 = custom camera view enum
break; break;
} }
} }
private void SetCockpitZoomLevel(int zoom)
{
int retry = 10;
for (var i = 0; i < retry; i++)
{
System.Diagnostics.Debug.WriteLine($"zoom {i}");
FlightSimOrchestrator.SetCockpitCameraZoomLevel(zoom);
Thread.Sleep(500); // wait for flightsimdata to be updated
if (_flightSimData.CockpitCameraZoom == zoom)
break;
}
}
} }
} }

View file

@ -63,7 +63,7 @@ namespace MSFSPopoutPanelManager.Orchestration
{ {
_prePanelConfigurationCockpitZoomLevel = _flightSimData.CockpitCameraZoom; _prePanelConfigurationCockpitZoomLevel = _flightSimData.CockpitCameraZoom;
LoadCustomView(AppSetting.PopOutSetting.AutoPanning.KeyBinding); LoadCustomView(AppSetting.PopOutSetting.AutoPanning.KeyBinding);
FlightSimOrchestrator.SetCockpitCameraZoomLevel(50); SetCockpitZoomLevel(50);
WindowActionManager.BringWindowToForeground(ApplicationHandle); WindowActionManager.BringWindowToForeground(ApplicationHandle);
} }
}); });
@ -101,8 +101,7 @@ namespace MSFSPopoutPanelManager.Orchestration
if (!AppSetting.PopOutSetting.AfterPopOutCameraView.IsEnabled) if (!AppSetting.PopOutSetting.AfterPopOutCameraView.IsEnabled)
{ {
InputEmulationManager.CenterView(); InputEmulationManager.CenterView();
Thread.Sleep(500); SetCockpitZoomLevel(_prePanelConfigurationCockpitZoomLevel);
FlightSimOrchestrator.SetCockpitCameraZoomLevel(_prePanelConfigurationCockpitZoomLevel);
} }
else else
{ {
@ -110,12 +109,11 @@ namespace MSFSPopoutPanelManager.Orchestration
{ {
case AfterPopOutCameraViewType.CockpitCenterView: case AfterPopOutCameraViewType.CockpitCenterView:
InputEmulationManager.CenterView(); InputEmulationManager.CenterView();
Thread.Sleep(500); SetCockpitZoomLevel(_prePanelConfigurationCockpitZoomLevel);
FlightSimOrchestrator.SetCockpitCameraZoomLevel(_prePanelConfigurationCockpitZoomLevel);
break; break;
case AfterPopOutCameraViewType.CustomCameraView: case AfterPopOutCameraViewType.CustomCameraView:
LoadCustomView(AppSetting.PopOutSetting.AfterPopOutCameraView.KeyBinding); LoadCustomView(AppSetting.PopOutSetting.AfterPopOutCameraView.KeyBinding);
FlightSimOrchestrator.SetCockpitCameraZoomLevel(_prePanelConfigurationCockpitZoomLevel); SetCockpitZoomLevel(_prePanelConfigurationCockpitZoomLevel);
break; break;
} }
} }
@ -188,15 +186,27 @@ namespace MSFSPopoutPanelManager.Orchestration
private void LoadCustomView(string keybinding) private void LoadCustomView(string keybinding)
{ {
int retry = 5; int retry = 20;
for (var i = 0; i < retry; i++) for (var i = 0; i < retry; i++)
{ {
InputEmulationManager.LoadCustomView(keybinding); InputEmulationManager.LoadCustomView(keybinding);
Thread.Sleep(500); // wait for flightsimdata to be updated Thread.Sleep(750); // wait for flightsimdata to be updated
if (_flightSimData.CameraViewTypeAndIndex1 == 7) // 7 = custom camera view enum if (_flightSimData.CameraViewTypeAndIndex1 == 7) // 7 = custom camera view enum
break; break;
} }
} }
private void SetCockpitZoomLevel(int zoom)
{
int retry = 10;
for (var i = 0; i < retry; i++)
{
FlightSimOrchestrator.SetCockpitCameraZoomLevel(zoom);
Thread.Sleep(500); // wait for flightsimdata to be updated
if (_flightSimData.CockpitCameraZoom == zoom)
break;
}
}
} }
} }

View file

@ -102,6 +102,9 @@ namespace MSFSPopoutPanelManager.WindowsAgent
PInvoke.keybd_event(Convert.ToByte(VK_SPACE), 0, KEYEVENTF_KEYUP, 0); PInvoke.keybd_event(Convert.ToByte(VK_SPACE), 0, KEYEVENTF_KEYUP, 0);
PInvoke.keybd_event(Convert.ToByte(VK_RCONTROL), 0, KEYEVENTF_KEYUP, 0); PInvoke.keybd_event(Convert.ToByte(VK_RCONTROL), 0, KEYEVENTF_KEYUP, 0);
Thread.Sleep(200); Thread.Sleep(200);
// Wait for center view to complete
Thread.Sleep(500);
} }
public static void SaveCustomView(string keybinding) public static void SaveCustomView(string keybinding)
@ -145,9 +148,6 @@ namespace MSFSPopoutPanelManager.WindowsAgent
PInvoke.keybd_event(Convert.ToByte(customViewKey), 0, KEYEVENTF_KEYUP, 0); PInvoke.keybd_event(Convert.ToByte(customViewKey), 0, KEYEVENTF_KEYUP, 0);
PInvoke.keybd_event(Convert.ToByte(VK_LMENU), 0, KEYEVENTF_KEYUP, 0); PInvoke.keybd_event(Convert.ToByte(VK_LMENU), 0, KEYEVENTF_KEYUP, 0);
Thread.Sleep(200); Thread.Sleep(200);
// Small delay to let load custom view finish
Thread.Sleep(500);
} }
public static void ToggleFullScreenPanel(IntPtr hwnd) public static void ToggleFullScreenPanel(IntPtr hwnd)