protected override void OnUnregister() { ReputationUpdater.Instance.Unregister(this); // Check for a deactivation if (!Parent.IsActive && reputationGiven > 0.01) { float clawbackAmount = 0.0f; // Check for an upgrade/downgrade IEnumerable <ReputationTicker> activeEffects = StrategySystem.Instance.Strategies.Where(s => s.IsActive && s != Parent).SelectMany(s => s.Effects).OfType <ReputationTicker>(); if (activeEffects.Any()) { // Found another active effect, should only be one ReputationTicker otherEffect = activeEffects.First(); // Set the current reputation given otherEffect.reputationGiven = Math.Min(reputationGiven, otherEffect.reputationLimit); if (reputationGiven > otherEffect.reputationLimit) { clawbackAmount = otherEffect.reputationLimit - reputationGiven; } } else { clawbackAmount = -reputationGiven; } // Clawback of reputation if (clawbackAmount != 0.0f) { Reputation.Instance.addReputation_discrete(clawbackAmount, TransactionReasons.Strategies); CurrencyPopup.Instance.AddPopup(Currency.Reputation, clawbackAmount, TransactionReasons.Strategies, Parent.Config.Title + " cancellation", false); } } }
public void Unregister(ReputationTicker effect) { effects.Remove(effect); }
public void Register(ReputationTicker effect) { effects.AddUnique(effect); }