using System; using CIG.Translation; using SUISS.Core; using Tweening; using UnityEngine; namespace CIG { public class CraneBar : TweenHelper { private void OnEnable() { CIGBuilderManager instance = SingletonMonobehaviour.Instance; instance.BuildCountChangedEvent += this.OnBuildCountChanged; SingletonMonobehaviour.Instance.ValueChangedEvent += this.OnValueChanged; if (instance.HasDeserialized) { this._endValue = instance.MaxBuildCount; this.UpdateValue(this._endValue); } else { instance.HasDeserializedEvent += this.OnBuilderHasDeserialized; } } private void OnDisable() { if (SingletonMonobehaviour.IsAvailable) { CIGBuilderManager instance = SingletonMonobehaviour.Instance; instance.BuildCountChangedEvent -= this.OnBuildCountChanged; instance.HasDeserializedEvent -= this.OnBuilderHasDeserialized; } if (SingletonMonobehaviour.IsAvailable) { SingletonMonobehaviour.Instance.ValueChangedEvent -= this.OnValueChanged; } } protected override void UpdateValue(decimal value) { this._currentValue = value; decimal m = Math.Max(this._currentValue - SingletonMonobehaviour.Instance.CurrentBuildCount, 0m); this._currencyLabel.LocalizedString = Localization.Format(Localization.Key("progress"), new ILocalizedString[] { Localization.Integer(m), Localization.Integer(this._currentValue) }); if (this._iconTweener.IsPlaying) { this._iconTweener.Stop(); } this._iconTweener.Play(); } private void OnBuildCountChanged(int used, int total) { this.UpdateValue(this._currentValue); } private void OnBuilderHasDeserialized() { CIGBuilderManager instance = SingletonMonobehaviour.Instance; instance.HasDeserializedEvent -= this.OnBuilderHasDeserialized; this._endValue = instance.MaxBuildCount; this.UpdateValue(this._endValue); } private void OnValueChanged(string key, object oldValue, object newValue) { if (key.Equals("craneCount")) { this.UpdateValue(SingletonMonobehaviour.Instance.MaxBuildCount); } } [SerializeField] private Tweener _iconTweener; [SerializeField] private LocalizedText _currencyLabel; private decimal _currentValue; private decimal _endValue; } }