コード例 #1
0
        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;
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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;
        }
コード例 #6
0
 public override void DoPostUpdate(JamUtilities.TimeObject time)
 {
     //
 }
コード例 #7
0
 public override void DoPostUpdate(JamUtilities.TimeObject time)
 {
     _tile.GetTileProperties().TemperatureInKelvin += _summedUpTemperatureFlow;
 }