Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 5
0
        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);
                    }
                }
            }
        }
Exemplo n.º 6
0
        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);
        }