private void Resync()
        {
            // Already get the pressure before Dirty(), because we can't get the EntitySystem in that thread or smth
            var pressure = 0f;
            var gam      = EntitySystem.Get <AtmosphereSystem>().GetGridAtmosphere(Owner.Transform.GridID);
            var tile     = gam?.GetTile(Owner.Transform.Coordinates)?.Air;

            if (tile != null)
            {
                pressure = tile.Pressure;
            }

            if (pressure >= Atmospherics.HazardHighPressure || pressure <= Atmospherics.HazardLowPressure)
            {
                _pressureDanger = GasAnalyzerDanger.Hazard;
            }
            else if (pressure >= Atmospherics.WarningHighPressure || pressure <= Atmospherics.WarningLowPressure)
            {
                _pressureDanger = GasAnalyzerDanger.Warning;
            }
            else
            {
                _pressureDanger = GasAnalyzerDanger.Nominal;
            }

            Dirty();
            _timeSinceSync = 0f;
        }
예제 #2
0
        private void Resync()
        {
            // Already get the pressure before Dirty(), because we can't get the EntitySystem in that thread or smth
            var pressure = 0f;
            var tile     = EntitySystem.Get <AtmosphereSystem>().GetContainingMixture(Owner, true);

            if (tile != null)
            {
                pressure = tile.Pressure;
            }

            if (pressure >= Atmospherics.HazardHighPressure || pressure <= Atmospherics.HazardLowPressure)
            {
                _pressureDanger = GasAnalyzerDanger.Hazard;
            }
            else if (pressure >= Atmospherics.WarningHighPressure || pressure <= Atmospherics.WarningLowPressure)
            {
                _pressureDanger = GasAnalyzerDanger.Warning;
            }
            else
            {
                _pressureDanger = GasAnalyzerDanger.Nominal;
            }

            Dirty();
            _timeSinceSync = 0f;
        }
        /// <inheritdoc />
        public override void HandleComponentState(ComponentState?curState, ComponentState?nextState)
        {
            if (curState is not GasAnalyzerComponentState state)
            {
                return;
            }

            Danger          = state.Danger;
            _uiUpdateNeeded = true;
        }
예제 #4
0
 public GasAnalyzerComponentState(GasAnalyzerDanger danger) : base(ContentNetIDs.GAS_ANALYZER)
 {
     Danger = danger;
 }
 public GasAnalyzerComponentState(GasAnalyzerDanger danger)
 {
     Danger = danger;
 }