Ejemplo n.º 1
0
        public static void HandleStatusEvents(object sender, StatusFileEvent evt)
        {
            StatusData.ShieldsUp                 = (evt.Flags & StatusFlags.ShieldsUp) != 0;
            StatusData.FlightAssistOff           = (evt.Flags & StatusFlags.FlightAssistOff) != 0;
            StatusData.InWing                    = (evt.Flags & StatusFlags.InWing) != 0;
            StatusData.LightsOn                  = (evt.Flags & StatusFlags.LightsOn) != 0;
            StatusData.NightVision               = (evt.Flags & StatusFlags.NightVision) != 0;
            StatusData.AltitudeFromAverageRadius = (evt.Flags & StatusFlags.AltitudeFromAverageRadius) != 0;
            StatusData.LowFuel                   = (evt.Flags & StatusFlags.LowFuel) != 0;
            StatusData.Overheating               = (evt.Flags & StatusFlags.Overheating) != 0;
            StatusData.HasLatLong                = (evt.Flags & StatusFlags.HasLatLong) != 0;
            StatusData.InMainShip                = (evt.Flags & StatusFlags.InMainShip) != 0;
            StatusData.InFighter                 = (evt.Flags & StatusFlags.InFighter) != 0;
            StatusData.InSRV          = (evt.Flags & StatusFlags.InSRV) != 0;
            StatusData.SrvDriveAssist = (evt.Flags & StatusFlags.SrvDriveAssist) != 0 && StatusData.InSRV;
            StatusData.SrvUnderShip   = (evt.Flags & StatusFlags.SrvUnderShip) != 0 && StatusData.InSRV;
            StatusData.SrvTurret      = (evt.Flags & StatusFlags.SrvTurret) != 0 && StatusData.InSRV;
            StatusData.SrvHandbrake   = (evt.Flags & StatusFlags.SrvHandbrake) != 0 && StatusData.InSRV;
            StatusData.SrvHighBeam    = (evt.Flags & StatusFlags.SrvHighBeam) != 0 && StatusData.InSRV;

            StatusData.Docked             = (evt.Flags & StatusFlags.Docked) != 0;
            StatusData.Landed             = (evt.Flags & StatusFlags.Landed) != 0;
            StatusData.LandingGearDown    = (evt.Flags & StatusFlags.LandingGearDown) != 0;
            StatusData.CargoScoopDeployed = (evt.Flags & StatusFlags.CargoScoopDeployed) != 0;
            StatusData.SilentRunning      = (evt.Flags & StatusFlags.SilentRunning) != 0;
            StatusData.ScoopingFuel       = (evt.Flags & StatusFlags.ScoopingFuel) != 0;
            StatusData.IsInDanger         = (evt.Flags & StatusFlags.IsInDanger) != 0;
            StatusData.BeingInterdicted   = (evt.Flags & StatusFlags.BeingInterdicted) != 0;
            StatusData.HudInAnalysisMode  = (evt.Flags & StatusFlags.HudInAnalysisMode) != 0;

            StatusData.FsdMassLocked = (evt.Flags & StatusFlags.FsdMassLocked) != 0;
            StatusData.FsdCharging   = (evt.Flags & StatusFlags.FsdCharging) != 0;
            StatusData.FsdCooldown   = (evt.Flags & StatusFlags.FsdCooldown) != 0;

            StatusData.Supercruise        = (evt.Flags & StatusFlags.Supercruise) != 0;
            StatusData.FsdJump            = (evt.Flags & StatusFlags.FsdJump) != 0;
            StatusData.HardpointsDeployed = (evt.Flags & StatusFlags.HardpointsDeployed) != 0 && !StatusData.Supercruise && !StatusData.FsdJump;

            StatusData.Fuel = evt.Fuel ?? new StatusFuel();

            StatusData.Cargo = evt.Cargo;

            StatusData.LegalState = evt.LegalState;

            StatusData.Firegroup = evt.Firegroup;
            StatusData.GuiFocus  = evt.GuiFocus;

            StatusData.Latitude     = evt.Latitude;
            StatusData.Longitude    = evt.Longitude;
            StatusData.Altitude     = evt.Altitude;
            StatusData.Heading      = evt.Heading;
            StatusData.BodyName     = evt.BodyName;
            StatusData.PlanetRadius = evt.PlanetRadius;

            StatusData.Pips[0] = evt.Pips.System;
            StatusData.Pips[1] = evt.Pips.Engine;
            StatusData.Pips[2] = evt.Pips.Weapons;
        }
Ejemplo n.º 2
0
        public void Test_Simple_StatusEvent()
        {
            StatusFileEvent evt = null;

            watcher.StatusUpdated += (s, e) => evt = e;
            watcher.SendFakeStatusUpdate(new StatusFileEvent {
                Longitude = 14, Latitude = 7
            });

            Assert.IsNotNull(evt);
            Assert.AreEqual(14, evt.Longitude);
            Assert.AreEqual(7, evt.Latitude);
        }
Ejemplo n.º 3
0
        public void Test_Parse_StatusJson()
        {
            var hodor = new AutoResetEvent(false);

            StatusFileEvent evt     = null;
            int             counter = 0;

            watcher.StatusUpdated += (s, e) =>
            {
                counter++;
                evt = e;
                hodor.Set();
            };
            watcher.StartWatching(tempFolder);

            while (!hodor.WaitOne(100))
            {
                WriteStatusFile(new StatusFileEvent {
                    Timestamp = DateTime.UtcNow, Longitude = 14, Latitude = 7, Pips = (2, 4, 2)
                });
Ejemplo n.º 4
0
        public static void HandleStatusEvents(object sender, StatusFileEvent evt)
        {
            StatusData.ShieldsUp                 = (evt.Flags & StatusFlags.ShieldsUp) != 0;
            StatusData.FlightAssistOff           = (evt.Flags & StatusFlags.FlightAssistOff) != 0;
            StatusData.InWing                    = (evt.Flags & StatusFlags.InWing) != 0;
            StatusData.LightsOn                  = (evt.Flags & StatusFlags.LightsOn) != 0;
            StatusData.NightVision               = (evt.Flags & StatusFlags.NightVision) != 0;
            StatusData.AltitudeFromAverageRadius = (evt.Flags & StatusFlags.AltitudeFromAverageRadius) != 0;
            StatusData.LowFuel                   = (evt.Flags & StatusFlags.LowFuel) != 0;
            StatusData.Overheating               = (evt.Flags & StatusFlags.Overheating) != 0;
            StatusData.HasLatLong                = (evt.Flags & StatusFlags.HasLatLong) != 0;
            StatusData.InMainShip                = (evt.Flags & StatusFlags.InMainShip) != 0;
            StatusData.InFighter                 = (evt.Flags & StatusFlags.InFighter) != 0;
            StatusData.InSRV          = (evt.Flags & StatusFlags.InSRV) != 0;
            StatusData.SrvDriveAssist = (evt.Flags & StatusFlags.SrvDriveAssist) != 0 && StatusData.InSRV;
            StatusData.SrvUnderShip   = (evt.Flags & StatusFlags.SrvUnderShip) != 0 && StatusData.InSRV;
            StatusData.SrvTurret      = (evt.Flags & StatusFlags.SrvTurret) != 0 && StatusData.InSRV;
            StatusData.SrvHandbrake   = (evt.Flags & StatusFlags.SrvHandbrake) != 0 && StatusData.InSRV;
            StatusData.SrvHighBeam    = (evt.Flags & StatusFlags.SrvHighBeam) != 0 && StatusData.InSRV;

            StatusData.Docked             = (evt.Flags & StatusFlags.Docked) != 0;
            StatusData.Landed             = (evt.Flags & StatusFlags.Landed) != 0;
            StatusData.LandingGearDown    = (evt.Flags & StatusFlags.LandingGearDown) != 0;
            StatusData.CargoScoopDeployed = (evt.Flags & StatusFlags.CargoScoopDeployed) != 0;
            StatusData.SilentRunning      = (evt.Flags & StatusFlags.SilentRunning) != 0;
            StatusData.ScoopingFuel       = (evt.Flags & StatusFlags.ScoopingFuel) != 0;
            StatusData.IsInDanger         = (evt.Flags & StatusFlags.IsInDanger) != 0;
            StatusData.BeingInterdicted   = (evt.Flags & StatusFlags.BeingInterdicted) != 0;
            StatusData.HudInAnalysisMode  = (evt.Flags & StatusFlags.HudInAnalysisMode) != 0;

            StatusData.FsdMassLocked = (evt.Flags & StatusFlags.FsdMassLocked) != 0;
            StatusData.FsdCharging   = (evt.Flags & StatusFlags.FsdCharging) != 0;
            StatusData.FsdCooldown   = (evt.Flags & StatusFlags.FsdCooldown) != 0;

            StatusData.Supercruise        = (evt.Flags & StatusFlags.Supercruise) != 0;
            StatusData.FsdJump            = (evt.Flags & StatusFlags.FsdJump) != 0;
            StatusData.HardpointsDeployed = (evt.Flags & StatusFlags.HardpointsDeployed) != 0 && !StatusData.Supercruise && !StatusData.FsdJump;

            StatusData.Fuel = evt.Fuel ?? new StatusFuel();

            StatusData.Cargo = evt.Cargo;

            StatusData.LegalState = evt.LegalState;

            StatusData.Firegroup = evt.Firegroup;
            StatusData.GuiFocus  = evt.GuiFocus;

            StatusData.Latitude     = evt.Latitude;
            StatusData.Longitude    = evt.Longitude;
            StatusData.Altitude     = evt.Altitude;
            StatusData.Heading      = evt.Heading;
            StatusData.BodyName     = evt.BodyName;
            StatusData.PlanetRadius = evt.PlanetRadius;

            StatusData.Pips[0] = evt.Pips.System;
            StatusData.Pips[1] = evt.Pips.Engine;
            StatusData.Pips[2] = evt.Pips.Weapons;

            StatusData.OnFoot          = (evt.Flags2 & StatusFlags2.OnFoot) != 0;
            StatusData.InTaxi          = (evt.Flags2 & StatusFlags2.InTaxi) != 0;
            StatusData.InMulticrew     = (evt.Flags2 & StatusFlags2.InMulticrew) != 0;
            StatusData.OnFootInStation = (evt.Flags2 & StatusFlags2.OnFootInStation) != 0;
            StatusData.OnFootOnPlanet  = (evt.Flags2 & StatusFlags2.OnFootOnPlanet) != 0;
            StatusData.AimDownSight    = (evt.Flags2 & StatusFlags2.AimDownSight) != 0;
            StatusData.LowOxygen       = (evt.Flags2 & StatusFlags2.LowOxygen) != 0;
            StatusData.LowHealth       = (evt.Flags2 & StatusFlags2.LowHealth) != 0;
            StatusData.Cold            = (evt.Flags2 & StatusFlags2.Cold) != 0;
            StatusData.Hot             = (evt.Flags2 & StatusFlags2.Hot) != 0;
            StatusData.VeryCold        = (evt.Flags2 & StatusFlags2.VeryCold) != 0;
            StatusData.VeryHot         = (evt.Flags2 & StatusFlags2.VeryHot) != 0;

            StatusData.GlideMode            = (evt.Flags2 & StatusFlags2.GlideMode) != 0;
            StatusData.OnFootInHangar       = (evt.Flags2 & StatusFlags2.OnFootInHangar) != 0;
            StatusData.OnFootSocialSpace    = (evt.Flags2 & StatusFlags2.OnFootSocialSpace) != 0;
            StatusData.OnFootExterior       = (evt.Flags2 & StatusFlags2.OnFootExterior) != 0;
            StatusData.BreathableAtmosphere = (evt.Flags2 & StatusFlags2.BreathableAtmosphere) != 0;
        }
Ejemplo n.º 5
0
 protected void FireStatusUpdatedEvent(StatusFileEvent evt) => StatusUpdated?.Invoke(this, evt);
Ejemplo n.º 6
0
        private static void StatusWatcher_StatusUpdated(object sender, StatusFileEvent e)
        {
            StatusFlags statusFlags = e.Flags;

            bool isDocked             = (statusFlags & StatusFlags.Docked) != 0;
            bool isFsdCharging        = (statusFlags & StatusFlags.FsdCharging) != 0;
            bool isHardpointsDeployed = (statusFlags & StatusFlags.HardpointsDeployed) != 0;
            bool isOverheating        = (statusFlags & StatusFlags.Overheating) != 0;
            bool isFsdJump            = (statusFlags & StatusFlags.FsdJump) != 0;
            bool isSupercruise        = (statusFlags & StatusFlags.Supercruise) != 0;

            bool isFsdMassLocked   = (statusFlags & StatusFlags.FsdMassLocked) != 0;
            bool isLandingGearDown = (statusFlags & StatusFlags.LandingGearDown) != 0;

            int firegroup = e.Firegroup;

            Console.WriteLine("isDocked=" + isDocked + " | isFsdCharging=" + isFsdCharging + " | isFsdMassLocked=" + isFsdMassLocked + " | isFsdJump=" + isFsdJump +
                              " | isHardpointsDeployed=" + isHardpointsDeployed + " | isOverheating=" + isOverheating + " | isSupercruise=" + isSupercruise);

            if (IsDocked != isDocked)
            {
                IsDocked = isDocked;
                if (isDocked)
                {
                    TPLink.Patterns.ResetDocked();
                }
                else
                {
                    TPLink.Patterns.Suspend();
                }
            }

            if (IsFsdCharging != isFsdCharging)
            {
                IsFsdCharging = isFsdCharging;
                if (isFsdCharging)
                {
                    TPLink.Patterns.FSDCharging();
                }
                else
                {
                    TPLink.Patterns.FSDReset();
                }
            }

            if (isFsdJump)
            {
                TPLink.Patterns.FSDEntry();
            }

            if (IsSupercruise != isSupercruise)
            {
                IsSupercruise = isSupercruise;
                TPLink.Patterns.FSDReset();
            }

            if (IsHardpointsDeployed != isHardpointsDeployed)
            {
                if (isHardpointsDeployed && (!IsSupercruise))
                {
                    IsHardpointsDeployed = isHardpointsDeployed;
                }
                else
                {
                    IsHardpointsDeployed = isHardpointsDeployed;
                }
                if (isHardpointsDeployed && (!IsSupercruise))
                {
                    TPLink.Patterns.ChangeFiregroup(firegroup);
                }
                else
                {
                    TPLink.Patterns.Reset();
                }
            }

            if (IsHardpointsDeployed && (Firegroup != firegroup))
            {
                Firegroup = firegroup;
                TPLink.Patterns.ChangeFiregroup(firegroup);
            }

            if (isOverheating && (!isFsdCharging) && (!IsHardpointsDeployed))
            {
                TPLink.Patterns.Overheat();
            }

            bool isSuspended = (isLandingGearDown || isFsdMassLocked);

            if (IsSuspended != isSuspended)
            {
                if (IsSuspended && (!isSuspended) && (!isDocked))
                {
                    TPLink.Patterns.Reset();
                }
                IsSuspended = isSuspended;
                if (IsSuspended && !isDocked)
                {
                    TPLink.Patterns.Suspend();
                }
            }
        }
        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);
            }
        }
Ejemplo n.º 8
0
 public void SendFakeStatusUpdate(StatusFileEvent evt)
 {
     FireStatusUpdatedEvent(evt);
 }