void client_CommandReceived(object sender, CommandReceivedEventArgs e) { Dispatcher.BeginInvoke((Action)(() => { try { var type = typeof(IFAPIStatus).Assembly.GetType(e.Response.Type); if (type == typeof(APIAircraftState)) { var state = Serializer.DeserializeJson <APIAircraftState>(e.CommandString); Console.WriteLine(state.VerticalSpeed); // convert to fpm state.VerticalSpeed = float.Parse(Convert.ToString(state.VerticalSpeed * 200, CultureInfo.InvariantCulture.NumberFormat), CultureInfo.InvariantCulture.NumberFormat); // multiply by 200, this somehow gets it accurate.. airplaneStateGrid.DataContext = null; airplaneStateGrid.DataContext = state; pAircraftState = state; if (FMSControl.autoFplDirectActive) { FMSControl.updateAutoNav(state); } AircraftStateControl.AircraftState = state; AttitudeIndicator.updateAttitude(state.Pitch, state.Bank); updateLandingRoll(state); } else if (type == typeof(GetValueResponse)) { var state = Serializer.DeserializeJson <GetValueResponse>(e.CommandString); Console.WriteLine("{0} -> {1}", state.Parameters[0].Name, state.Parameters[0].Value); } else if (type == typeof(LiveAirplaneList)) { LiveAirplaneList airplaneList = Serializer.DeserializeJson <LiveAirplaneList>(e.CommandString); //airplaneDataGrid.ItemsSource = airplaneList.Airplanes; } else if (type == typeof(FacilityList)) { var facilityList = Serializer.DeserializeJson <FacilityList>(e.CommandString); //facilitiesDataGrid.ItemsSource = facilityList.Facilities; } else if (type == typeof(IFAPIStatus)) { var status = Serializer.DeserializeJson <IFAPIStatus>(e.CommandString); } else if (type == typeof(APIATCMessage)) { var msg = Serializer.DeserializeJson <APIATCMessage>(e.CommandString); // TODO client.ExecuteCommand("Live.GetCurrentCOMFrequencies"); } else if (type == typeof(APIFrequencyInfoList)) { var msg = Serializer.DeserializeJson <APIFrequencyInfoList>(e.CommandString); } else if (type == typeof(ATCMessageList)) { var msg = Serializer.DeserializeJson <ATCMessageList>(e.CommandString); atcMessagesDataGrid.ItemsSource = msg.ATCMessages; } else if (type == typeof(APIFlightPlan)) { var msg = Serializer.DeserializeJson <APIFlightPlan>(e.CommandString); Console.WriteLine("Flight Plan: {0} items", msg.Waypoints.Length); FMSControl.fplReceived(msg); //Update FMS with FPL from IF. foreach (var item in msg.Waypoints) { Console.WriteLine(" -> {0} {1} - {2}, {3}", item.Name, item.Code, item.Latitude, item.Longitude); } } } catch (System.NullReferenceException) { Console.WriteLine("Disconnected from server!"); //Let the client handle the lost connection. //connectionStatus = false; } })); }
private void client_Disconnected(object sender, CommandReceivedEventArgs e) { Dispatcher.Invoke(DispatcherPriority.Normal, (Action) delegate() { connectionLost(); }); }