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); } }
protected virtual void OnWeatherChange(WeatherChangeEventArgs args) { WeatherChange?.Invoke(this, args); }
/// <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; }