/// <summary> /// Increases the favor value for the specified <see cref = "FavorComponent"/> by the specified amount for the specified number of rounds. /// </summary> public void IncreaseFavorForRounds(FavorComponent favorComponent, float amount, int rounds) { if (rounds < 1) { this.Log($"Favor for {favorComponent} cannot be increased for {rounds} rounds: rounds are less than 1", LogType.Warning); return; } IncreaseFavor(favorComponent, amount); var delayedFavorChange = new DelayedFavorChange(rounds, favorComponent, amount); DelayedFavorChanges.Add(delayedFavorChange); }
void OnYearTicked(object sender, TimeComponent.TimeEventArgs e) { foreach (var delayedFavorChange in DelayedFavorChanges) { delayedFavorChange.Rounds -= 1; if (delayedFavorChange.Rounds > 0) { continue; } DecreaseFavor(delayedFavorChange.FavorComponent, delayedFavorChange.Amount); } DelayedFavorChanges.RemoveAll(delayedFavorChange => delayedFavorChange.Rounds <= 0); }