using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class AlchemyDrugProgressBehaviour : MonoBehaviour
|
{
|
[SerializeField] AlchemyType m_AlchemyType;
|
[SerializeField] Image m_Progress;
|
[SerializeField] Button m_Goto;
|
|
int alchemyId = 0;
|
|
AlchemyModel model { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
|
|
private void Awake()
|
{
|
m_Goto.AddListener(Goto);
|
}
|
|
public void Initialize()
|
{
|
model.alchemyStateRefresh -= AlchemyStateRefresh;
|
model.alchemyStateRefresh += AlchemyStateRefresh;
|
|
Display();
|
}
|
|
private void AlchemyStateRefresh()
|
{
|
Display();
|
}
|
|
void Display()
|
{
|
var isAlcheming = false;
|
|
alchemyId = 0;
|
|
if (model.IsStoveAlcheming(m_AlchemyType, out alchemyId))
|
{
|
isAlcheming = model.GetStoveState(alchemyId) == 1;
|
}
|
|
this.gameObject.SetActive(isAlcheming);
|
|
if (isAlcheming)
|
{
|
DisplayProgress();
|
}
|
}
|
|
void DisplayProgress()
|
{
|
AlchemyTime alchemyTime;
|
if (model.TryGetAlchemyStartTime(alchemyId, out alchemyTime))
|
{
|
var config = AlchemyConfig.Get(alchemyId);
|
var startTime = TimeUtility.GetTime(alchemyTime.startTick);
|
var seconds = (float)(TimeUtility.ServerNow - startTime).TotalSeconds;
|
m_Progress.fillAmount = 1 - Mathf.Clamp01(seconds / (config.NeedTime * alchemyTime.count));
|
}
|
}
|
|
private void LateUpdate()
|
{
|
if (alchemyId != 0)
|
{
|
if (model.GetStoveState(alchemyId) != 1)
|
{
|
alchemyId = 0;
|
this.gameObject.SetActive(false);
|
return;
|
}
|
DisplayProgress();
|
}
|
}
|
|
private void Goto()
|
{
|
switch (m_AlchemyType)
|
{
|
case AlchemyType.Normal:
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.AlchemyNormal);
|
break;
|
case AlchemyType.Fairy:
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.AlchemyFairy);
|
break;
|
}
|
}
|
|
public void UnInitialize()
|
{
|
model.alchemyStateRefresh -= AlchemyStateRefresh;
|
}
|
}
|
}
|