|
- using System;
- using Engine.DependencyTree;
- using SUISS.Core;
- using UnityEngine;
- using UnityEngine.UI;
-
- public class DailyQuestButton : MonoBehaviour
- {
- private void OnDestroy()
- {
- if (this._quest != null)
- {
- this._quest.AchievedChangedEvent -= this.OnAchievedChanged;
- this._quest.RewardClaimedEvent -= this.OnRewardClaimed;
- this._quest = null;
- }
- if (this._level != null)
- {
- this._level.AchievedChangedEvent -= this.OnAchievedChanged;
- this._level.ProgressValueChangedEvent -= this.OnProgressChanged;
- this._level = null;
- }
- }
-
- public void Init(Dependency quest)
- {
- if (this._quest != null)
- {
- this._quest.AchievedChangedEvent -= this.OnAchievedChanged;
- this._quest.RewardClaimedEvent -= this.OnRewardClaimed;
- }
- if (this._level != null)
- {
- this._level.AchievedChangedEvent -= this.OnAchievedChanged;
- this._level.ProgressValueChangedEvent -= this.OnProgressChanged;
- }
- this._quest = quest;
- this._quest.AchievedChangedEvent += this.OnAchievedChanged;
- this._quest.RewardClaimedEvent += this.OnRewardClaimed;
- this.FindCurrentLevel();
- }
-
- private void UpdateVisual()
- {
- this._questSprite.sprite = SingletonMonobehaviour<QuestSpriteAssetCollection>.Instance.GetAsset(this._quest.SpriteName);
- this._progressBar.fillAmount = (float)this._level.ProgressValue / (float)this._level.ProgressMaximumValue;
- this._achievedSprite.gameObject.SetActive(this._quest.IsAchieved && !this._quest.RewardClaimed);
- this._collectedSprite.gameObject.SetActive(this._quest.IsAchieved && this._quest.RewardClaimed);
- }
-
- private void FindCurrentLevel()
- {
- if (this._level != null)
- {
- this._level.AchievedChangedEvent -= this.OnAchievedChanged;
- this._level.ProgressValueChangedEvent -= this.OnProgressChanged;
- }
- this._level = this._quest.GetFirstIncompletedChild();
- this._level.AchievedChangedEvent += this.OnAchievedChanged;
- this._level.ProgressValueChangedEvent += this.OnProgressChanged;
- this.UpdateVisual();
- }
-
- private void OnAchievedChanged(Dependency dependency, bool achieved)
- {
- this.UpdateVisual();
- }
-
- private void OnProgressChanged(Dependency dependency, int progress)
- {
- this.UpdateVisual();
- }
-
- private void OnRewardClaimed(Dependency dependency, bool claimed)
- {
- this.UpdateVisual();
- }
-
- [SerializeField]
- private Image _questSprite;
-
- [SerializeField]
- private Image _achievedSprite;
-
- [SerializeField]
- private Image _collectedSprite;
-
- [SerializeField]
- private Image _progressBar;
-
- private Dependency _quest;
-
- private Dependency _level;
- }
|