public void ProcessEvent(EDEvent edEvent)
        {
            if (SessionStartTime == DateTime.MinValue)
            {
                SessionStartTime = new DateTime(edEvent.TimeStamp.Year, edEvent.TimeStamp.Month, edEvent.TimeStamp.Day, edEvent.TimeStamp.Hour, edEvent.TimeStamp.Minute, edEvent.TimeStamp.Second);
                _telemetry["SessionStartTime"] = SessionStartTime.ToString("HH:mm:ss");
                _telemetry["SessionDate"]      = SessionStartTime.ToShortDateString();
            }

            bool statsUpdated = ProcessFlags(edEvent);

            switch (edEvent.EventName)
            {
            case "DockSRV":
                TotalShipRepairs++;
                HullHealth = 1;
                _telemetry["HullStrength"]        = "100%";
                _telemetry["TotalSRVShipRepairs"] = TotalShipRepairs.ToString();
                statsUpdated   = true;
                _playerIsInSRV = false;
                break;

            case "LaunchSRV":
                _playerIsInSRV = true;
                break;

            case "Shutdown":
                SaveSession();
                break;

            case "SRVDestroyed":
                _playerIsInSRV = false;
                TotalSRVsDestroyed++;
                _telemetry["TotalSRVsDestroyed"] = TotalSRVsDestroyed.ToString();
                statsUpdated = true;
                break;

            case "HullDamage":
                HullHealth = edEvent.Health;
                _telemetry["HullStrength"] = $"{(HullHealth * 100).ToString("F1")}%";
                statsUpdated = true;
                break;

            case "Synthesis":
                TotalSynthRepairs++;
                _telemetry["TotalSRVSynthRepairs"] = TotalSynthRepairs.ToString();
                statsUpdated = true;
                break;

            case "Status":
                if (_playerIsInSRV && ProcessLocationUpdate(edEvent))
                {
                    statsUpdated = true;
                }
                break;
            }

            _lastEventTime = edEvent.TimeStamp;
            if (statsUpdated)
            {
                SessionHistory.Add(edEvent);
                _srvTelemetryDisplay?.UpdateTargetData(Telemetry());
            }
        }
Exemple #2
0
        public void ProcessEvent(EDEvent edEvent, bool noHistory = false)
        {
            bool statsUpdated = ProcessFlags(edEvent);

            switch (edEvent.EventName)
            {
            case "DockSRV":
                TotalShipRepairs++;
                HullHealth = 1;
                _telemetry["HullStrength"]        = "100%";
                _telemetry["TotalSRVShipRepairs"] = TotalShipRepairs.ToString();
                statsUpdated   = true;
                _playerIsInSRV = false;
                ResetSpeedCalc();
                break;

            case "LaunchSRV":
                _playerIsInSRV = true;
                ResetSpeedCalc();
                break;

            case "Shutdown":
                SaveSession();
                break;

            case "SRVDestroyed":
                _playerIsInSRV = false;
                TotalSRVsDestroyed++;
                _telemetry["TotalSRVsDestroyed"] = TotalSRVsDestroyed.ToString();
                ResetSpeedCalc();
                statsUpdated = true;
                break;

            case "HullDamage":
                HullHealth = edEvent.Health;
                _telemetry["HullStrength"] = $"{(HullHealth * 100).ToString("F1")}%";
                statsUpdated = true;
                break;

            case "Synthesis":
                if (edEvent.AdditionalData.StartsWith("Repair"))
                {
                    TotalSynthRepairs++;
                    _telemetry["TotalSRVSynthRepairs"] = TotalSynthRepairs.ToString();
                    HullHealth = 1;
                    _telemetry["HullStrength"] = "100%";
                    statsUpdated = true;
                }
                break;

            case "Status":
                // We only process location updates if the event is for the correct vehicle (ship or SRV)
                if ((_playerIsInSRV == TrackSRV) && ProcessLocationUpdate(edEvent))
                {
                    statsUpdated = true;
                }
                break;
            }

            _lastEventTime = edEvent.TimeStamp;
            if (statsUpdated)
            {
                if (!noHistory)
                {
                    SessionHistory.Add(edEvent);
                }
                _srvTelemetryDisplay?.UpdateTargetData(Telemetry());
            }
        }