using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
namespace vnxbqy.UI
|
{
|
public class FurnacesAchievement : MonoBehaviour
|
{
|
[SerializeField] Image m_Icon;
|
[SerializeField] Text m_TaskName;
|
[SerializeField] Text m_Description;
|
[SerializeField] Text m_Progress;
|
[SerializeField] RectTransform m_Complete;
|
[SerializeField] RectTransform m_Processing;
|
[SerializeField] RectTransform m_UnStart;
|
[SerializeField] CanvasGroup m_CanvaGroup;
|
|
private int achievementId = 0;
|
|
Achievement achievement;
|
|
AchievementModel achievementModel
|
{
|
get
|
{
|
return ModelCenter.Instance.GetModel<AchievementModel>();
|
}
|
}
|
|
TreasureModel model { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
|
|
TaskModel task { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
|
|
public void Display(int _id)
|
{
|
achievementId = _id;
|
achievementModel.TryGetAchievement(_id, out achievement);
|
if (achievement != null)
|
{
|
Display();
|
achievementModel.achievementCompletedEvent -= AchievementCompletedEvent;
|
achievementModel.achievementCompletedEvent += AchievementCompletedEvent;
|
achievementModel.achievementProgressUpdateEvent -= AchievementProgressUpdateEvent;
|
achievementModel.achievementProgressUpdateEvent += AchievementProgressUpdateEvent;
|
}
|
}
|
|
private void Display()
|
{
|
var config = SuccessConfig.Get(achievementId);
|
var taskId = config.Condition[0];
|
var taskConfig = PyTaskConfig.Get(taskId);
|
var taskInfo = TASKINFOConfig.Get(taskConfig.name);
|
m_TaskName.text = taskInfo.show_writing;
|
var taskDescKey = StringUtility.Contact("m_info_", taskId, "_0_1_0_msg");
|
taskInfo = TASKINFOConfig.Get(taskDescKey);
|
m_Description.text = WordAnalysis.Space_Regex.Replace(taskInfo.show_writing, string.Empty);
|
m_Complete.SetActive(achievement.completed);
|
|
var _beforeId = GetBeforeAchievement();
|
Achievement _beforeAchievement;
|
bool _beforeComplete = true;
|
if (achievementModel.TryGetAchievement(_beforeId, out _beforeAchievement))
|
{
|
_beforeComplete = _beforeAchievement.completed;
|
}
|
var _taskState = task.GetQuestState(taskId);
|
var _processing = !achievement.completed && _beforeComplete;
|
m_Processing.SetActive(_processing);
|
m_CanvaGroup.alpha = (achievement.completed || _processing) ? 1 : 0.6f;
|
m_UnStart.SetActive(m_CanvaGroup.alpha < 1f);
|
m_Progress.text = StringUtility.Contact(achievement.completed ? config.NeedCnt : Mathf.Clamp(achievement.progress, 0, config.NeedCnt), "/", config.NeedCnt);
|
}
|
|
public void Dispose()
|
{
|
achievementModel.achievementProgressUpdateEvent -= AchievementProgressUpdateEvent;
|
achievementModel.achievementCompletedEvent -= AchievementCompletedEvent;
|
}
|
|
private void AchievementCompletedEvent(int _id)
|
{
|
if (model.GetFurnacesAchievements().Contains(_id))
|
{
|
Display();
|
}
|
}
|
|
public int GetBeforeAchievement()
|
{
|
var _list = model.GetFurnacesAchievements();
|
var _id = 0;
|
for (int i = 0; i < _list.Count; i++)
|
{
|
if (_list[i] == achievementId)
|
{
|
return _id;
|
}
|
_id = _list[i];
|
}
|
return 0;
|
}
|
|
private void AchievementProgressUpdateEvent(int _id)
|
{
|
if (achievementId == _id)
|
{
|
var config = SuccessConfig.Get(achievementId);
|
m_Progress.text = StringUtility.Contact(achievement.completed ? config.NeedCnt : Mathf.Clamp(achievement.progress, 0, config.NeedCnt), "/", config.NeedCnt);
|
}
|
}
|
}
|
}
|
|