Exemple #1
0
        public void Receive(WeatherChange weatherChange)
        {
            Weather previousWeather = CurrentWeather;

            if (SurroundingWeather == weatherChange.Weather)
            {
                if (CurrentWeather != SurroundingWeather)
                {
                    ChangeWeatherEventArgs changeWeatherEventArgs = new ChangeWeatherEventArgs(this, weatherChange);
                    OnChangeWeather?.Invoke(this, changeWeatherEventArgs);

                    CurrentWeather = SurroundingWeather;

                    WeatherChangedEventArgs weatherChangedEventArgs = new WeatherChangedEventArgs(this, previousWeather, CurrentWeather);
                    OnWeatherChanged?.Invoke(this, weatherChangedEventArgs);
                }
            }

            bool change = CurrentWeather == weatherChange.Weather;


            if (change)
            {
                ChangeWeatherEventArgs changeWeatherEventArgs = new ChangeWeatherEventArgs(this, weatherChange);
                OnChangeWeather?.Invoke(this, changeWeatherEventArgs);
            }

            CurrentWeather.Reset(weatherChange.TurnCount);

            if (change)
            {
                WeatherChangedEventArgs weatherChangedEventArgs = new WeatherChangedEventArgs(this, previousWeather, CurrentWeather);
                OnWeatherChanged?.Invoke(this, weatherChangedEventArgs);
            }
        }
Exemple #2
0
 protected virtual void OnWeatherChange(WeatherChangeEventArgs args)
 {
     WeatherChange?.Invoke(this, args);
 }
Exemple #3
0
 /// <summary>
 /// Raises the <see cref="E:WeatherChange" /> event.
 /// </summary>
 /// <param name="info">The <see cref="WeatherInfoEventArgs"/> instance containing the event data.</param>
 protected virtual void OnWeatherChange(WeatherInfoEventArgs info) => WeatherChange?.Invoke(this, info);
 public ChangeWeatherEventArgs(IBattle battle, WeatherChange action) : base(battle)
 {
     Action = action;
 }