using System; using System.Collections.Generic; namespace SUISSEngine { public class HappinessBuilding : ActivatableBuilding { public virtual int Happiness { get { return this._currentHappiness; } protected set { this._currentHappiness = value; } } public virtual int UpgradeHappiness(int toLevel) { if (base.GetMaxLevel() == 0) { return 0; } int num = Math.Max(0, toLevel - base.CurrentLevel); int val = this.baseHappinessValue + toLevel * this.baseHappinessValue / base.GetMaxLevel() - this.Happiness; if (this.baseHappinessValue < 0) { return Math.Min(-num, val); } return Math.Max(num, val); } protected override void OnConstructionCompleted() { base.OnConstructionCompleted(); this.Happiness = ((!this.activatable) ? this.baseHappinessValue : 0); } protected override void OnDemolishStarted() { base.OnDemolishStarted(); this._happinessWhenDemolishStarted = this.Happiness; this.Happiness = 0; } protected override void OnDemolishCancelled() { base.OnDemolishCancelled(); this.Happiness = this._happinessWhenDemolishStarted; this._happinessWhenDemolishStarted = 0; } protected override void OnUpgradeCompleted(double upgradedTime) { base.OnUpgradeCompleted(upgradedTime); this.Happiness += this.UpgradeHappiness(base.CurrentLevel); } protected override void OnSerialize(Dictionary values) { base.OnSerialize(values); values["happiness"] = this._currentHappiness; if (this._happinessWhenDemolishStarted != 0) { values["happinessWhenDemolishStarted"] = this._happinessWhenDemolishStarted; } } protected override void OnDeserialize(Dictionary values) { base.OnDeserialize(values); if (this.Activated) { if (values.ContainsKey("happiness")) { this._currentHappiness = (int)values["happiness"]; } if (values.ContainsKey("happinessWhenDemolishStarted")) { this._happinessWhenDemolishStarted = (int)values["happinessWhenDemolishStarted"]; } } else { this._currentHappiness = 0; this._happinessWhenDemolishStarted = 0; } } public int baseHappinessValue; private int _currentHappiness; private int _happinessWhenDemolishStarted; } }