private void Disconnect(UserClickedLogoffMessage msg, VSPCContext context) { context.FSDIsConnected = false; fsdSession.SendPDU(new PDUDeletePilot(msg.Callsign, context.CID)); fsdSession.Disconnect(); broker.Publish(new FSDDisconnectedMessage()); }
public void HandleMessage(AMessage message, VSPCContext context) { var textMessage = (ATextMessage)message; bool messageShown = false; mainWindow.DoInUIThread(() => { foreach (var ccTab in mainWindow.CommChannelTabs.Where(t => !t.IsAllTab)) { if (ccTab.MessageBelongsToMe(textMessage, context.Callsign)) { messageShown |= (!ccTab.IsAllTab || textMessage.SenderIsServer); // Only mark message as shown if the message is shown in a tab other than "All" with server messages as exception ccTab.ShowMessage(textMessage); } } if (!messageShown && NewTabShouldBeOpened(textMessage, context)) { CommChannelTab newCommTab = mainWindow.AddNewCommTab(textMessage.Sender); newCommTab.ShowMessage(textMessage); messageShown = true; } var allTab = mainWindow.CommChannelTabs.Single(t => t.IsAllTab); if (messageShown || textMessage.SenderIsServer) { allTab.ShowMessage(textMessage); } }); }
public override void HandleMessage(AMessage message, VSPCContext context) { if (message is UserClickedLoginMessage) { Connect((UserClickedLoginMessage)message, context); } else if (message is UserClickedLogoffMessage) { Disconnect((UserClickedLogoffMessage)message, context); } else if (message is PositionReportMessage) { SendPositionReportToFSDServer((PositionReportMessage)message, context); } else if (message is ErrorMessage) { Logger.Error("FSD Error received: {0} {1} {2}", ((ErrorMessage)message).ErrorCode, ((ErrorMessage)message).ErrorInfo, ((ErrorMessage)message).ErrorText); } else if (message is VSPC.Core.Messages.FLSIM.FlightsimConnectedMessage) { context.FlightsimIsConnected = true; } else if (message is VSPC.Core.Messages.FLSIM.FlightsimDisconnectedMessage) { context.FlightsimIsConnected = false; } else if (message is TextMessageSend) { SendTextMessage((TextMessageSend)message); } else { Logger.Error("Unexpected message type received in FSDMessageHandler: " + message.GetType().Name); } }
public void HandleMessage(AMessage message, VSPCContext context) { if (InvokeRequired) { BeginInvoke(new InvokeDelegate(() => HandleMessage(message, context))); } else { textBoxMessages.Text += message.ToString() + Environment.NewLine; } }
private void Connect(UserClickedLoginMessage msg, VSPCContext context) { this.context = context; fsdSession = new FSDSession(new ClientProperties("Claus Joergensen Client", new Version(1, 0), 0x5820, "163f6a324730ed0aa1ba30b29148687c"), msg); fsdSession.ServerIdentificationReceived += fsdSession_ServerIdentificationReceived; fsdSession.ClientQueryReceived += fsdSession_ClientQueryReceived; fsdSession.TextMessageReceived += fsdSession_TextMessageReceived; fsdSession.ATCPositionReceived += fsdSession_ATCPositionReceived; fsdSession.PilotPositionReceived += fsdSession_PilotPositionReceived; fsdSession.NetworkError += fsdSession_NetworkError; fsdSession.ProtocolErrorReceived += fsdSession_ProtocolErrorReceived; fsdSession.KillRequestReceived += fsdSession_KillRequestReceived; fsdSession.IgnoreUnknownPackets = true; fsdSession.Connect(msg.Server, 6809); }
public void HandleMessage(Core.Messages.AMessage message, VSPCContext context) { if (message is FlightsimConnectedMessage) { FlightsimState = ConnectionState.Online; if (FSDState == ConnectionState.Online) { SwitchToOnlineMode(); } } else if (message is FSDConnectedMessage) { FSDState = ConnectionState.Online; if (FlightsimState == ConnectionState.Online) { SwitchToOnlineMode(); } } else if (message is FlightsimDisconnectedMessage) { FlightsimState = ConnectionState.Offline; if (FSDState == ConnectionState.Offline) { SwitchToOfflineMode(); } } else if (message is FSDDisconnectedMessage) { FSDState = ConnectionState.Offline; if (FlightsimState == ConnectionState.Offline) { SwitchToOfflineMode(); } } else if (message is CommErrorMessage) { HandleCommErrorMessage((CommErrorMessage)message); } else if (message is SimCommErrorMessage) { HandleCommErrorMessage((SimCommErrorMessage)message); } else if (message is TextMessageReceive) { HandleTextMessageReceive((TextMessageReceive)message); } }
public void HandleMessage(Core.Messages.AMessage message, VSPCContext context) { if (message is TrafficPositionReportMessage && isSavingPosRepMessages) { var tp = (TrafficPositionReportMessage)message; saveFile.WriteLine(string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}", tp.Latitude, tp.Longitude, tp.TrueAltitude, tp.PressureAltitude, tp.Groundspeed, tp.Heading, tp.BankAngle, tp.Pitch)); } DoInUIThread(() => FSDMessages.Add((AFSDMessage)message)); }
public abstract void HandleMessage(AMessage message, VSPCContext context);
private bool NewTabShouldBeOpened(ATextMessage textMessage, VSPCContext context) { return(!textMessage.SenderIsServer && textMessage.Receiver == context.Callsign); }
private void SendPositionReportToFSDServer(PositionReportMessage positionReportMessage, VSPCContext context) { if (context.FSDIsConnected && fsdSession.Connected) { // TODO: TrueAlt + PressureAlt fsdSession.SendPDU(new PDUPilotPosition(context.Callsign, positionReportMessage.Transponder, positionReportMessage.SquawkingCharlie, positionReportMessage.Identing, NetworkRating.OBS, positionReportMessage.Latitude, positionReportMessage.Longitude, (int)Math.Round(positionReportMessage.TrueAltitude), (int)Math.Round(positionReportMessage.PressureAltitude), (int)Math.Round(positionReportMessage.Groundspeed), (int)Math.Round(positionReportMessage.Pitch), (int)Math.Round(positionReportMessage.Bank), (int)Math.Round(positionReportMessage.Heading))); } }