Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

89 wiersze
2.5 KiB

  1. using System;
  2. using CIG.Translation;
  3. using SUISS.Core;
  4. using Tweening;
  5. using UnityEngine;
  6. namespace CIG
  7. {
  8. public class CraneBar : TweenHelper
  9. {
  10. private void OnEnable()
  11. {
  12. CIGBuilderManager instance = SingletonMonobehaviour<CIGBuilderManager>.Instance;
  13. instance.BuildCountChangedEvent += this.OnBuildCountChanged;
  14. SingletonMonobehaviour<CIGGameState>.Instance.ValueChangedEvent += this.OnValueChanged;
  15. if (instance.HasDeserialized)
  16. {
  17. this._endValue = instance.MaxBuildCount;
  18. this.UpdateValue(this._endValue);
  19. }
  20. else
  21. {
  22. instance.HasDeserializedEvent += this.OnBuilderHasDeserialized;
  23. }
  24. }
  25. private void OnDisable()
  26. {
  27. if (SingletonMonobehaviour<CIGBuilderManager>.IsAvailable)
  28. {
  29. CIGBuilderManager instance = SingletonMonobehaviour<CIGBuilderManager>.Instance;
  30. instance.BuildCountChangedEvent -= this.OnBuildCountChanged;
  31. instance.HasDeserializedEvent -= this.OnBuilderHasDeserialized;
  32. }
  33. if (SingletonMonobehaviour<CIGGameState>.IsAvailable)
  34. {
  35. SingletonMonobehaviour<CIGGameState>.Instance.ValueChangedEvent -= this.OnValueChanged;
  36. }
  37. }
  38. protected override void UpdateValue(decimal value)
  39. {
  40. this._currentValue = value;
  41. decimal m = Math.Max(this._currentValue - SingletonMonobehaviour<CIGBuilderManager>.Instance.CurrentBuildCount, 0m);
  42. this._currencyLabel.LocalizedString = Localization.Format(Localization.Key("progress"), new ILocalizedString[]
  43. {
  44. Localization.Integer(m),
  45. Localization.Integer(this._currentValue)
  46. });
  47. if (this._iconTweener.IsPlaying)
  48. {
  49. this._iconTweener.Stop();
  50. }
  51. this._iconTweener.Play();
  52. }
  53. private void OnBuildCountChanged(int used, int total)
  54. {
  55. this.UpdateValue(this._currentValue);
  56. }
  57. private void OnBuilderHasDeserialized()
  58. {
  59. CIGBuilderManager instance = SingletonMonobehaviour<CIGBuilderManager>.Instance;
  60. instance.HasDeserializedEvent -= this.OnBuilderHasDeserialized;
  61. this._endValue = instance.MaxBuildCount;
  62. this.UpdateValue(this._endValue);
  63. }
  64. private void OnValueChanged(string key, object oldValue, object newValue)
  65. {
  66. if (key.Equals("craneCount"))
  67. {
  68. this.UpdateValue(SingletonMonobehaviour<CIGBuilderManager>.Instance.MaxBuildCount);
  69. }
  70. }
  71. [SerializeField]
  72. private Tweener _iconTweener;
  73. [SerializeField]
  74. private LocalizedText _currencyLabel;
  75. private decimal _currentValue;
  76. private decimal _endValue;
  77. }
  78. }