|
- using System;
- using CIG.Translation;
- using SUISS.Core;
- using Tweening;
- using UnityEngine;
-
- namespace CIG
- {
- public class CraneBar : TweenHelper
- {
- private void OnEnable()
- {
- CIGBuilderManager instance = SingletonMonobehaviour<CIGBuilderManager>.Instance;
- instance.BuildCountChangedEvent += this.OnBuildCountChanged;
- SingletonMonobehaviour<CIGGameState>.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<CIGBuilderManager>.IsAvailable)
- {
- CIGBuilderManager instance = SingletonMonobehaviour<CIGBuilderManager>.Instance;
- instance.BuildCountChangedEvent -= this.OnBuildCountChanged;
- instance.HasDeserializedEvent -= this.OnBuilderHasDeserialized;
- }
- if (SingletonMonobehaviour<CIGGameState>.IsAvailable)
- {
- SingletonMonobehaviour<CIGGameState>.Instance.ValueChangedEvent -= this.OnValueChanged;
- }
- }
-
- protected override void UpdateValue(decimal value)
- {
- this._currentValue = value;
- decimal m = Math.Max(this._currentValue - SingletonMonobehaviour<CIGBuilderManager>.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<CIGBuilderManager>.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<CIGBuilderManager>.Instance.MaxBuildCount);
- }
- }
-
- [SerializeField]
- private Tweener _iconTweener;
-
- [SerializeField]
- private LocalizedText _currencyLabel;
-
- private decimal _currentValue;
-
- private decimal _endValue;
- }
- }
|