You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

99 lines
2.3 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. namespace SUISSEngine
  4. {
  5. public class HappinessBuilding : ActivatableBuilding
  6. {
  7. public virtual int Happiness
  8. {
  9. get
  10. {
  11. return this._currentHappiness;
  12. }
  13. protected set
  14. {
  15. this._currentHappiness = value;
  16. }
  17. }
  18. public virtual int UpgradeHappiness(int toLevel)
  19. {
  20. if (base.GetMaxLevel() == 0)
  21. {
  22. return 0;
  23. }
  24. int num = Math.Max(0, toLevel - base.CurrentLevel);
  25. int val = this.baseHappinessValue + toLevel * this.baseHappinessValue / base.GetMaxLevel() - this.Happiness;
  26. if (this.baseHappinessValue < 0)
  27. {
  28. return Math.Min(-num, val);
  29. }
  30. return Math.Max(num, val);
  31. }
  32. protected override void OnConstructionCompleted()
  33. {
  34. base.OnConstructionCompleted();
  35. this.Happiness = ((!this.activatable) ? this.baseHappinessValue : 0);
  36. }
  37. protected override void OnDemolishStarted()
  38. {
  39. base.OnDemolishStarted();
  40. this._happinessWhenDemolishStarted = this.Happiness;
  41. this.Happiness = 0;
  42. }
  43. protected override void OnDemolishCancelled()
  44. {
  45. base.OnDemolishCancelled();
  46. this.Happiness = this._happinessWhenDemolishStarted;
  47. this._happinessWhenDemolishStarted = 0;
  48. }
  49. protected override void OnUpgradeCompleted(double upgradedTime)
  50. {
  51. base.OnUpgradeCompleted(upgradedTime);
  52. this.Happiness += this.UpgradeHappiness(base.CurrentLevel);
  53. }
  54. protected override void OnSerialize(Dictionary<string, object> values)
  55. {
  56. base.OnSerialize(values);
  57. values["happiness"] = this._currentHappiness;
  58. if (this._happinessWhenDemolishStarted != 0)
  59. {
  60. values["happinessWhenDemolishStarted"] = this._happinessWhenDemolishStarted;
  61. }
  62. }
  63. protected override void OnDeserialize(Dictionary<string, object> values)
  64. {
  65. base.OnDeserialize(values);
  66. if (this.Activated)
  67. {
  68. if (values.ContainsKey("happiness"))
  69. {
  70. this._currentHappiness = (int)values["happiness"];
  71. }
  72. if (values.ContainsKey("happinessWhenDemolishStarted"))
  73. {
  74. this._happinessWhenDemolishStarted = (int)values["happinessWhenDemolishStarted"];
  75. }
  76. }
  77. else
  78. {
  79. this._currentHappiness = 0;
  80. this._happinessWhenDemolishStarted = 0;
  81. }
  82. }
  83. public int baseHappinessValue;
  84. private int _currentHappiness;
  85. private int _happinessWhenDemolishStarted;
  86. }
  87. }