|
- 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<string, object> values)
- {
- base.OnSerialize(values);
- values["happiness"] = this._currentHappiness;
- if (this._happinessWhenDemolishStarted != 0)
- {
- values["happinessWhenDemolishStarted"] = this._happinessWhenDemolishStarted;
- }
- }
-
- protected override void OnDeserialize(Dictionary<string, object> 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;
- }
- }
|