private void ProcessUpcomingWeather() { WeatherMetadata wm = CurrentWeatherList[0]; CurrentWeatherList.RemoveAt(0); DisturbWind(); if (wm.Weather == WeatherType.Wind) ChangeWind(); //else if (wm.Weather == WeatherType.Protection) ApplyProtection(); }
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); } } }
private void CalculateRandomPosition(WeatherMetadata weatherMetadata) { weatherMetadata.Position = new float[] { (float)NetworkObjectParameters.Random.NextDouble(), (float)NetworkObjectParameters.Random.NextDouble() }; }
private void RandomizeExtraWeather(WeatherMetadata weatherMetadata) { weatherMetadata.ExtraWeather = NetworkObjectParameters.RandomizableWeatherEffectList[NetworkObjectParameters.Random.Next(0, NetworkObjectParameters.RandomizableWeatherEffectList.Count())]; }