-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimulatorPlugin.cs
More file actions
98 lines (77 loc) · 2.8 KB
/
SimulatorPlugin.cs
File metadata and controls
98 lines (77 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Net.Http;
using System.Threading.Tasks;
using System.Windows.Forms;
using vatsys;
using vatsys.Plugin;
namespace Simulator.Plugin
{
[Export(typeof(IPlugin))]
public class SimulatorPlugin : IPlugin
{
public string Name => "Simulator";
public static HttpClient _httpClient = new HttpClient();
public static string _server = string.Empty;
public static bool _send = false;
public static Dictionary<string, string> Servers { get; set; }
private static CustomToolStripMenuItem _simulatorMenu;
private static SimulatorWindow _simulatorWindow;
public SimulatorPlugin()
{
MMI.SelectedTrackChanged += MMI_SelectedTrackChanged;
MMI.SelectedGroundTrackChanged += MMI_SelectedGroundTrackChanged;
_simulatorMenu = new CustomToolStripMenuItem(CustomToolStripMenuItemWindowType.Main, CustomToolStripMenuItemCategory.Settings, new ToolStripMenuItem("Simulator"));
_simulatorMenu.Item.Click += SimulatorMenu_Click;
MMI.AddCustomMenuItem(_simulatorMenu);
}
private void SimulatorMenu_Click(object sender, EventArgs e)
{
ShowSimulatorWindow();
}
private static void ShowSimulatorWindow()
{
MMI.InvokeOnGUI((MethodInvoker)delegate ()
{
if (_simulatorWindow == null || _simulatorWindow.IsDisposed)
{
_simulatorWindow = new SimulatorWindow();
}
else if (_simulatorWindow.Visible) return;
_simulatorWindow.Show();
});
}
private async void MMI_SelectedGroundTrackChanged(object sender, EventArgs e)
{
if (Network.IsOfficialServer || string.IsNullOrWhiteSpace(_server)) return;
var callsign = MMI.SelectedGroundTrack?.GetFDR()?.Callsign;
if (callsign == null) return;
await SendToServer(callsign);
}
private async void MMI_SelectedTrackChanged(object sender, EventArgs e)
{
if (Network.IsOfficialServer) return;
var callsign = MMI.SelectedTrack?.GetFDR()?.Callsign;
if (callsign == null) return;
await SendToServer(callsign);
}
private async Task SendToServer(string callsign)
{
try
{
await _httpClient.GetAsync($"{_server}/select/{callsign}");
}
catch { }
}
public void OnFDRUpdate(FDP2.FDR updated)
{
return;
}
public void OnRadarTrackUpdate(RDP.RadarTrack updated)
{
return;
}
}
}