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 void HandleEvent(object sender, StatusFileEvent currentStatusData)
        {
            Log.Instance.Info("Handling Status Event: {statusevent}", currentStatusData.ToString());
            StatusData statusData = new StatusData();

            if (currentStatusData != null)
            {
                statusData.LastUpdate = DateTime.Now;

                // Original Status Flags
                StatusFlags curState = currentStatusData.Flags;
                if (curState.HasFlag(StatusFlags.Docked))
                {
                    statusData.Docked = true;
                }
                if (curState.HasFlag(StatusFlags.Landed))
                {
                    statusData.Landed = true;
                }
                if (curState.HasFlag(StatusFlags.LandingGearDown))
                {
                    statusData.LandingGearDown = true;
                }
                if (curState.HasFlag(StatusFlags.ShieldsUp))
                {
                    statusData.ShieldsUp = true;
                }
                if (curState.HasFlag(StatusFlags.Supercruise))
                {
                    statusData.Supercruise = true;
                }
                if (curState.HasFlag(StatusFlags.FlightAssistOff))
                {
                    statusData.FlightAssistOff = true;
                }
                if (curState.HasFlag(StatusFlags.HardpointsDeployed))
                {
                    statusData.HardpointsDeployed = true;
                }
                if (curState.HasFlag(StatusFlags.InWing))
                {
                    statusData.InWing = true;
                }
                if (curState.HasFlag(StatusFlags.LightsOn))
                {
                    statusData.LightsOn = true;
                }
                if (curState.HasFlag(StatusFlags.CargoScoopDeployed))
                {
                    statusData.CargoScoopDeployed = true;
                }
                if (curState.HasFlag(StatusFlags.SilentRunning))
                {
                    statusData.SilentRunning = true;
                }
                if (curState.HasFlag(StatusFlags.ScoopingFuel))
                {
                    statusData.ScoopingFuel = true;
                }
                if (curState.HasFlag(StatusFlags.SrvHandbrake))
                {
                    statusData.SrvHandbrake = true;
                }
                if (curState.HasFlag(StatusFlags.SrvTurret))
                {
                    statusData.SrvTurret = true;
                }
                if (curState.HasFlag(StatusFlags.SrvUnderShip))
                {
                    statusData.SrvUnderShip = true;
                }
                if (curState.HasFlag(StatusFlags.SrvDriveAssist))
                {
                    statusData.SrvDriveAssist = true;
                }
                if (curState.HasFlag(StatusFlags.FsdMassLocked))
                {
                    statusData.FsdMassLocked = true;
                }
                if (curState.HasFlag(StatusFlags.FsdCharging))
                {
                    statusData.FsdCharging = true;
                }
                if (curState.HasFlag(StatusFlags.FsdCooldown))
                {
                    statusData.FsdCooldown = true;
                }
                if (curState.HasFlag(StatusFlags.LowFuel))
                {
                    statusData.LowFuel = true;
                }
                if (curState.HasFlag(StatusFlags.Overheating))
                {
                    statusData.Overheating = true;
                }
                if (curState.HasFlag(StatusFlags.HasLatLong))
                {
                    statusData.HasLatLong = true;
                    statusData.Latitude   = currentStatusData.Latitude;
                    statusData.Longitude  = currentStatusData.Longitude;
                }
                if (curState.HasFlag(StatusFlags.IsInDanger))
                {
                    statusData.InDanger = true;
                }
                if (curState.HasFlag(StatusFlags.BeingInterdicted))
                {
                    statusData.BeingInterdicted = true;
                }
                if (curState.HasFlag(StatusFlags.InMainShip))
                {
                    statusData.InMainShip = true;
                }
                if (curState.HasFlag(StatusFlags.InFighter))
                {
                    statusData.InFighter = true;
                }
                if (curState.HasFlag(StatusFlags.HudInAnalysisMode))
                {
                    statusData.HudAnalysisMode = true;
                }
                if (curState.HasFlag(StatusFlags.NightVision))
                {
                    statusData.NightVision = true;
                }
                if (curState.HasFlag(StatusFlags.FsdJump))
                {
                    statusData.FsdJump = true;
                }
                if (curState.HasFlag(StatusFlags.AltitudeFromAverageRadius))
                {
                    statusData.AltitudeFromAverageRadius = true;
                }
                if (curState.HasFlag(StatusFlags.SrvHighBeam))
                {
                    statusData.SrvHighBeam = true;
                }

                // Extended Flags from Odyssey
                MoreStatusFlags curState2 = currentStatusData.Flags2;
                if (curState2.HasFlag(MoreStatusFlags.OnFoot))
                {
                    statusData.OnFoot = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.InTaxi))
                {
                    statusData.InTaxi = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.InMulticrew))
                {
                    statusData.InMulticrew = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.OnFootInStation))
                {
                    statusData.OnFootInStation = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.OnFootOnPlanet))
                {
                    statusData.OnFootOnPlanet = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.AimDownSight))
                {
                    statusData.AimDownSight = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.LowOxygen))
                {
                    statusData.LowOxygen = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.LowHealth))
                {
                    statusData.LowHealth = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.Cold))
                {
                    statusData.Cold = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.Hot))
                {
                    statusData.Hot = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.VeryCold))
                {
                    statusData.VeryCold = true;
                }
                if (curState2.HasFlag(MoreStatusFlags.VeryHot))
                {
                    statusData.VeryHot = true;
                }

                if (currentStatusData.Flags != 0)
                {
                    if (currentStatusData.Pips.System != null)
                    {
                        statusData.SystemPips = currentStatusData.Pips.System;
                    }
                    if (currentStatusData.Pips.Engine != null)
                    {
                        statusData.EnginePips = currentStatusData.Pips.Engine;
                    }
                    if (currentStatusData.Pips.Weapons != null)
                    {
                        statusData.WeaponPips = currentStatusData.Pips.Weapons;
                    }
                    if (currentStatusData.Firegroup != null)
                    {
                        statusData.FireGroup = currentStatusData.Firegroup;
                    }
                    if (currentStatusData.GuiFocus != null)
                    {
                        statusData.GuiFocus = currentStatusData.GuiFocus.ToString();
                    }
                    if (currentStatusData.Fuel != null)
                    {
                        statusData.FuelMain = currentStatusData.Fuel.FuelMain;
                    }
                    if (currentStatusData.Fuel != null)
                    {
                        statusData.FuelReservoir = currentStatusData.Fuel.FuelReservoir;
                    }
                    if (currentStatusData.Cargo != null)
                    {
                        statusData.Cargo = currentStatusData.Cargo;
                    }
                    if (currentStatusData.LegalState != null)
                    {
                        statusData.LegalState = currentStatusData.LegalState;
                    }
                    if (currentStatusData.Altitude != null)
                    {
                        statusData.Altitude = currentStatusData.Altitude;
                    }
                    if (currentStatusData.Heading != null)
                    {
                        statusData.Heading = currentStatusData.Heading;
                    }
                    if (currentStatusData.BodyName != null)
                    {
                        statusData.BodyName = currentStatusData.BodyName;
                    }
                    if (currentStatusData.PlanetRadius != null)
                    {
                        statusData.PlanetRadius = currentStatusData.PlanetRadius;
                    }
                    if (currentStatusData.Balance != null)
                    {
                        statusData.Balance = currentStatusData.Balance;
                    }
                    if (currentStatusData.Destination.System != null)
                    {
                        statusData.DestinationSystem = currentStatusData.Destination.System;
                    }
                    if (currentStatusData.Destination.Body != null)
                    {
                        statusData.DestinationBody = currentStatusData.Destination.Body;
                    }
                    if (currentStatusData.Destination.Name != null)
                    {
                        statusData.DestinationName = currentStatusData.Destination.Name;
                    }
                    if (currentStatusData.Oxygen != null)
                    {
                        statusData.Oxygen = currentStatusData.Oxygen;
                    }
                    if (currentStatusData.Health != null)
                    {
                        statusData.Health = currentStatusData.Health;
                    }
                    if (currentStatusData.Temperature != null)
                    {
                        statusData.Temperature = currentStatusData.Temperature;
                    }
                    if (currentStatusData.SelectedWeapon != null)
                    {
                        statusData.SelectedWeapon = currentStatusData.SelectedWeapon;
                    }
                    if (currentStatusData.Gravity != null)
                    {
                        statusData.Gravity = currentStatusData.Gravity;
                    }
                }

                Log.Instance.Info("Sending Status to worker {status}", statusData.ToString());
                Caller.GameDataEvent(GameEventType.Status, statusData);
            }
        }