protected override void DoUpdate(JamUtilities.TimeObject time) { _tile.GetWorldProperties().SunLightIntensityFactor = 1.0f + _tile.GetWorldProperties().SunLightIntensityFactor * (float)(Math.Sin(-_tile.GetLocalTime() * _tile.GetWorldProperties().DayNightCycleFrequency + _tile.GetTileProperties().DayNightCyclePhase)); float atmosphericHeatOutFlux = -_tile.GetWorldProperties().AtmosphericHeatOutFluxPerSecond *_tile.GetTileProperties().TemperatureInKelvin; float sunHeatInFlux = _tile.GetWorldProperties().SunHeatInfluxPerSecond *_tile.GetWorldProperties().SunLightIntensityFactor; float totalHeatFlux = (atmosphericHeatOutFlux + sunHeatInFlux) * time.ElapsedGameTime; _tile.GetTileProperties().TemperatureInKelvin += totalHeatFlux; }
protected override void DoUpdate(JamUtilities.TimeObject time) { _summedUpTemperatureFlow = 0.0f; float thisTileTemperature = _tile.GetTileProperties().TemperatureInKelvin; foreach (var t in _tile.NeighbourTiles) { float otherTileTemperature = t.GetTileProperties().TemperatureInKelvin; float temperatureDifference = otherTileTemperature - thisTileTemperature; float temperatureFlux = temperatureDifference * time.ElapsedGameTime; temperatureFlux *= _tile.GetWorldProperties().TileTemperatureExchangeAmplification; EnsureHeatChangeRanges(ref temperatureFlux); _summedUpTemperatureFlow += temperatureFlux; } }
public override void DoPostUpdate(JamUtilities.TimeObject time) { float equatorialHeatFlow = 0.0f; if (_tile.GetTileProperties().TemperatureInKelvin >= _tile.GetWorldProperties().DesiredTemperature) { equatorialHeatFlow = yFactorWarmRegions * time.ElapsedGameTime; } else { equatorialHeatFlow = -yFactorColdRegions * time.ElapsedGameTime; } EnsureHeatChangeRanges(ref equatorialHeatFlow); float newTemperature = _tile.GetTileProperties().TemperatureInKelvin - equatorialHeatFlow; _tile.GetTileProperties().TemperatureInKelvin = newTemperature; }
protected override void DoUpdate(JamUtilities.TimeObject time) { float temperatureChange = (float)(Math.Sin(_tile.GetLocalTime() * _tile.GetWorldProperties().DayNightCycleFrequency + _tile.GetTileProperties().DayNightCyclePhase)) * _tile.GetWorldProperties().SunLightIntensityFactor; EnsureHeatChangeRanges(ref temperatureChange); if (temperatureChange <= 0) // night { _tile._dayNightTime = -temperatureChange / _tile.GetWorldProperties().SunLightIntensityFactor; } else { _tile._dayNightTime = 0; } _tile.GetTileProperties().TemperatureInKelvin += temperatureChange; }
public static void DoCameraMovement(JamUtilities.TimeObject deltaT) { //Vector2f newCamPos = new Vector2f((_player.ActorPosition.X - 6) * GameProperties.TileSizeInPixel, (_player.ActorPosition.Y - 6) * GameProperties.TileSizeInPixel); Vector2f playerPosInPixels = ShouldBePosition; EnsurePositionRanges(ref playerPosInPixels); ShouldBePosition = playerPosInPixels; float DistanceXSquared = (float)(Math.Sign(CameraPosition.X - playerPosInPixels.X)) * (CameraPosition.X - playerPosInPixels.X) * (CameraPosition.X - playerPosInPixels.X); float DistanceYSquared = (float)(Math.Sign(CameraPosition.Y - playerPosInPixels.Y)) * (CameraPosition.Y - playerPosInPixels.Y) * (CameraPosition.Y - playerPosInPixels.Y); Vector2f newCamVelocity = 0.125f * new Vector2f(-DistanceXSquared, -DistanceYSquared); if (newCamVelocity.X >= CameraMaxVelocity) { newCamVelocity.X = CameraMaxVelocity; } else if (newCamVelocity.X <= -CameraMaxVelocity) { newCamVelocity.X = -CameraMaxVelocity; } if (newCamVelocity.Y >= CameraMaxVelocity) { newCamVelocity.Y = CameraMaxVelocity; } else if (newCamVelocity.Y <= -CameraMaxVelocity) { newCamVelocity.Y = -CameraMaxVelocity; } CameraVelocity = newCamVelocity; Vector2f newCamPos = CameraPosition + CameraVelocity * deltaT.ElapsedRealTime; EnsurePositionRanges(ref newCamPos); CameraPosition = newCamPos; }
public override void DoPostUpdate(JamUtilities.TimeObject time) { // }
public override void DoPostUpdate(JamUtilities.TimeObject time) { _tile.GetTileProperties().TemperatureInKelvin += _summedUpTemperatureFlow; }