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; }
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); }
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) });
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; }
protected void FireStatusUpdatedEvent(StatusFileEvent evt) => StatusUpdated?.Invoke(this, evt);
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); } }
public void SendFakeStatusUpdate(StatusFileEvent evt) { FireStatusUpdatedEvent(evt); }