Example #1
0
    private void UpdateTileTemperature(TemperatureArtifactComponent component, GasMixture environment)
    {
        var dif    = component.TargetTemperature - environment.Temperature;
        var absDif = Math.Abs(dif);

        if (absDif < component.MaxTemperatureDifference)
        {
            return;
        }

        var step = Math.Min(absDif, component.SpawnTemperature);

        environment.Temperature += dif > 0 ? step : -step;
    }
Example #2
0
    private void OnActivate(EntityUid uid, TemperatureArtifactComponent component, ArtifactActivatedEvent args)
    {
        var transform = Transform(uid);

        var center = _atmosphereSystem.GetTileMixture(transform.Coordinates, true);

        if (center == null)
        {
            return;
        }
        UpdateTileTemperature(component, center);

        if (component.EffectAdjacentTiles)
        {
            var adjacent = _atmosphereSystem.GetAdjacentTileMixtures(transform.Coordinates, invalidate: true);
            foreach (var mixture in adjacent)
            {
                UpdateTileTemperature(component, mixture);
            }
        }
    }
    private void OnActivate(EntityUid uid, TemperatureArtifactComponent component, ArtifactActivatedEvent args)
    {
        var transform = Transform(uid);

        var center = _atmosphereSystem.GetContainingMixture(uid, false, true);

        if (center == null)
        {
            return;
        }
        UpdateTileTemperature(component, center);

        if (component.EffectAdjacentTiles && transform.GridUid != null)
        {
            var adjacent = _atmosphereSystem.GetAdjacentTileMixtures(transform.GridUid.Value,
                                                                     _transformSystem.GetGridOrMapTilePosition(uid, transform), excite: true);

            foreach (var mixture in adjacent)
            {
                UpdateTileTemperature(component, mixture);
            }
        }
    }