private static string FormatTargetLabel(ShipTargetedData targetData) { String displayText = ""; if (targetData != null) { if (targetData.TargetLocked == true) { var targetTemplate = $"<table>" + $"<tr><td>Target:</td></tr>" + $"<tr><td>Pilot:</td></tr>" + $"<tr><td>Rank:</td></tr>" + $"<tr><td>Faction:</td></tr>" + $"<tr><td>Status:</td></tr>" + $"<tr><td>Bounty:</td></tr>" + $"</table>"; displayText = targetTemplate; } else { displayText = "<table><tr><td>Target:</td></tr></table>"; } } return(displayText); }
private static string FormatTargetText(ShipTargetedData targetData) { String displayText = ""; if (targetData != null) { if (targetData.TargetLocked == true) { string bountyText = targetData.Bounty == 0 ? "" : targetData.Bounty.ToString(); var targetTemplate = $"<table>" + $"<tr><td>{targetData.Ship}</td></tr>" + $"<tr><td>{targetData.PilotName}</td></tr>" + $"<tr><td>{targetData.PilotRank}</td></tr>" + $"<tr><td>{targetData.Faction}</td></tr>" + $"<tr><td>{targetData.LegalStatus}</td></tr>" + $"<tr><td>{bountyText}</td></tr>" + $"</table>"; displayText = targetTemplate; } else { displayText = "<table><tr><td>No target selected</td></tr></table>"; } } return(displayText); }
public void HandleEvent(object sender, ShipTargetedEvent.ShipTargetedEventArgs currentTargetData) { Log.Instance.Info("Handling Target Event: {targetevent}", currentTargetData.ToString()); ShipTargetedData targetData = new ShipTargetedData(); TimeSpan dataAge = DateTime.UtcNow.Subtract(currentTargetData.Timestamp); Log.Instance.Info("Target data age: {targetage}", dataAge.ToString()); if (dataAge.TotalMinutes < 5) { targetData.LastUpdate = currentTargetData.Timestamp; targetData.TargetLocked = currentTargetData.TargetLocked; if (targetData.TargetLocked == true) { if (String.IsNullOrEmpty(currentTargetData.Ship_Localised)) { string mappedShip = ""; if (ShipMap.TryGetValue(currentTargetData.Ship, out mappedShip)) { targetData.Ship = mappedShip; } else { targetData.Ship = currentTargetData.Ship; } } else { targetData.Ship = currentTargetData.Ship_Localised; } targetData.ScanStage = currentTargetData.ScanStage; if (targetData.ScanStage >= 1) { targetData.PilotName = currentTargetData.PilotName_Localised; targetData.PilotRank = currentTargetData.PilotRank.ToString(); } if (targetData.ScanStage >= 2) { targetData.ShieldHealth = currentTargetData.ShieldHealth; targetData.HullHealth = currentTargetData.HullHealth; } if (targetData.ScanStage >= 3) { targetData.Faction = currentTargetData.Faction; targetData.LegalStatus = currentTargetData.LegalStatus; targetData.SubSystem = currentTargetData.SubSystem; targetData.SubSystemHealth = currentTargetData.SubSystemHealth; targetData.Bounty = currentTargetData.Bounty; } } Log.Instance.Info("Sending target data to worker {target}", targetData.ToString()); Caller.GameDataEvent(GameEventType.Target, targetData); } }
public static FIPPacket CreateFIPPacket(ShipTargetedData targetData) { GameData gameData = new GameData(); gameData.Type = GameEventType.Status.ToString(); gameData.Data = JsonSerializer.Serialize(targetData); FIPPacket packet = new FIPPacket(); packet.PacketType = PacketType.GameData.ToString(); packet.Payload = JsonSerializer.Serialize(gameData); return(packet); }
public void UpdateTarget(ShipTargetedData currentTarget) { if (currentTarget != null) { // Handle Text fields if (MatricButtonList.ContainsKey(MatricConstants.TARGET_LABEL)) { MatricButtonList[MatricConstants.TARGET_LABEL].OffText = FormatTargetLabel(currentTarget); } if (MatricButtonList.ContainsKey(MatricConstants.TARGET)) { MatricButtonList[MatricConstants.TARGET].OffText = FormatTargetText(currentTarget); } foreach (MatricButton button in MatricButtonList.Values) { if (button != null) { button.UpdateMatricState(matric, CLIENT_ID); } } } }
private void GameDataWorkerThread() { GameDataWorkerState = State.Started; Log.Instance.Info("Game Data Worker Thread started"); DateTime lastSuccessfulUpdate = DateTime.Today; CancellationToken cToken = GameDataWorkerCTS.Token; while (cToken.IsCancellationRequested == false) { // Update Matric state if (matricapi.IsConnected()) { Log.Instance.Info("Updating Matric state"); matricapi.UpdateStatus(currentStatus); matricapi.UpdateTarget(currentTarget); } while (!GameDataQueue.IsCompleted) { GameEventTrigger gameEventTrigger = new GameEventTrigger(GameEventType.Empty, null); try { gameEventTrigger = GameDataQueue.Take(cToken); } catch (InvalidOperationException) { } if (gameEventTrigger.GameEvent != GameEventType.Empty) { Log.Instance.Info("Game data event received"); if (gameEventTrigger.GameEvent == GameEventType.ServerStop) { Log.Instance.Info("Server stop event received"); break; } else if (gameEventTrigger.GameEvent == GameEventType.Status) { currentStatus = new StatusData(); currentStatus = gameEventTrigger.EventData as StatusData; string statusJSON = JsonSerializer.Serialize(currentStatus); Log.Instance.Info("Current State: {gamestate}", statusJSON); if (PanelServerStarted) { GameDataUpdateController.SendStatusUpdate(currentStatus); } } else if (gameEventTrigger.GameEvent == GameEventType.Target) { currentTarget = new ShipTargetedData(); currentTarget = gameEventTrigger.EventData as ShipTargetedData; Log.Instance.Info("Current Target: {target}", JsonSerializer.Serialize(currentTarget)); if (PanelServerStarted) { GameDataUpdateController.SendTargetUpdate(currentTarget); } } // Update Matric state if (matricapi.IsConnected()) { Log.Instance.Info("Updating Matric state"); matricapi.UpdateStatus(currentStatus); matricapi.UpdateTarget(currentTarget); } } Log.Instance.Info("Game Data Worker Thread waiting for new work"); } } Log.Instance.Info("Game Data Worker Thread ending"); }
public void SendTargetUpdate(ShipTargetedData targetData) { string targetJSON = JsonSerializer.Serialize(targetData); _hubContext.Clients.All.SendAsync("TargetData", targetJSON); }