Example #1
0
        public override void Update(float frameTime)
        {
            base.Update(frameTime);

            if (!RuleStarted)
            {
                return;
            }

            if (Elapsed > _endAfter)
            {
                ForceEndSelf();
                return;
            }

            _timeUntilLeak -= frameTime;

            if (_timeUntilLeak > 0f)
            {
                return;
            }
            _timeUntilLeak += LeakCooldown;

            if (!_foundTile ||
                _targetGrid == default ||
                EntityManager.Deleted(_targetGrid) ||
                !_atmosphere.IsSimulatedGrid(_targetGrid))
            {
                ForceEndSelf();
                return;
            }

            var environment = _atmosphere.GetTileMixture(_targetGrid, null, _targetTile, true);

            environment?.AdjustMoles(_leakGas, LeakCooldown * _molesPerSecond);
        }