示例#1
0
        private void ProcessUpcomingWeather()
        {
            WeatherMetadata wm = CurrentWeatherList[0];
            CurrentWeatherList.RemoveAt(0);

            DisturbWind();

            if (wm.Weather == WeatherType.Wind) ChangeWind();
            //else if (wm.Weather == WeatherType.Protection) ApplyProtection();
        }
示例#2
0
        private void EnqueueNextWeather()
        {
            int val = NetworkObjectParameters.Random.Next(0, map.WeatherPreset.Sum());

            WeatherMetadata weatherMetadata = new WeatherMetadata();

            if ((val -= map.Force) < 0) weatherMetadata.Weather = WeatherType.Force;
            else if ((val -= map.Tornado) < 0) weatherMetadata.Weather = WeatherType.Tornado;
            else if ((val -= map.Electricity) < 0) weatherMetadata.Weather = WeatherType.Electricity;
            else if ((val -= map.Wind) < 0) weatherMetadata.Weather = WeatherType.Wind;
            else if ((val -= map.Weakness) < 0) weatherMetadata.Weather = WeatherType.Weakness;
            else if ((val -= map.Protection) < 0) weatherMetadata.Weather = WeatherType.Protection;
            else if ((val -= map.Ignorance) < 0) weatherMetadata.Weather = WeatherType.Ignorance;
            else if ((val -= map.Thor) < 0) weatherMetadata.Weather = WeatherType.Thor;
            else if ((val -= map.Mirror) < 0) weatherMetadata.Weather = WeatherType.Mirror;
            else weatherMetadata.Weather = WeatherType.Random;

            CurrentWeatherList.Add(weatherMetadata);
            IncomingWeatherList.Add(weatherMetadata);

            //Generate extra information (if necessary)
            if (NetworkObjectParameters.ActiveWeatherEffectList.Contains(weatherMetadata.Weather))
            {
                CalculateRandomPosition(weatherMetadata);

                if (weatherMetadata.Weather == WeatherType.Random)
                    RandomizeExtraWeather(weatherMetadata);

                if (weatherMetadata.Weather == WeatherType.Thor)
                {
                    //Force thor to spawn in the upper side of the screen from
                    //x ranging from 0.1f to 0.9f and
                    //y ranging from 0.3f to 0.9f
                    weatherMetadata.Position[0] = NetworkObjectParameters.WeatherThorMinimumOffsetX + weatherMetadata.Position[0] * NetworkObjectParameters.WeatherThorMaximumOffsetX;
                    weatherMetadata.Position[1] = 1 - (NetworkObjectParameters.WeatherThorMinimumOffsetY + weatherMetadata.Position[1] * NetworkObjectParameters.WeatherThorMaximumOffsetY);
                }
            }
        }
示例#3
0
 private void CalculateRandomPosition(WeatherMetadata weatherMetadata)
 {
     weatherMetadata.Position = new float[] { (float)NetworkObjectParameters.Random.NextDouble(), (float)NetworkObjectParameters.Random.NextDouble() };
 }
示例#4
0
 private void RandomizeExtraWeather(WeatherMetadata weatherMetadata)
 {
     weatherMetadata.ExtraWeather = NetworkObjectParameters.RandomizableWeatherEffectList[NetworkObjectParameters.Random.Next(0, NetworkObjectParameters.RandomizableWeatherEffectList.Count())];
 }