77 lines
2.6 KiB
C#
77 lines
2.6 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class MissionCard : CardBase
|
|
{
|
|
public Image[] images; // 0 보상 아이콘, 1 보상 버튼
|
|
public TextMeshProUGUI[] texts; // 0 조건, 1 보상수량, 2 진행상황
|
|
public Slider slider_proc;
|
|
public GameObject[] gos; // 0 보상 버튼, 1 완료
|
|
|
|
MissionListTableData m_Data;
|
|
|
|
public override void Set<T>(T _base)
|
|
{
|
|
base.Set(_base);
|
|
m_Data = _base as MissionListTableData;
|
|
|
|
bool active = isProceesing();
|
|
|
|
if (active)
|
|
{
|
|
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(m_Data.n_RewardValue);
|
|
texts[0].text = m_Data.Get_Desc();
|
|
Set_Proc();
|
|
Set_Complete();
|
|
}
|
|
else
|
|
gameObject.SetActive(false);
|
|
}
|
|
|
|
bool isProceesing()
|
|
{
|
|
if (m_Data.e_LinkedQuestType == eLinkedQuestType.None) return true;
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
if (m_Data.e_LinkedQuestType == eLinkedQuestType.Last)
|
|
{
|
|
if (sdata.Get_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex - 1) > 0)
|
|
return true;
|
|
}
|
|
else if (m_Data.e_LinkedQuestType == eLinkedQuestType.Ing)
|
|
return sdata.Get_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex - 1) > 0 &&
|
|
sdata.Get_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex) == 0;
|
|
else if (m_Data.e_LinkedQuestType == eLinkedQuestType.First)
|
|
return sdata.Get_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex) == 0;
|
|
return false;
|
|
}
|
|
|
|
void Set_Proc()
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
var amount = sdata.Get_MissionCount(m_Data.n_MissionGroupId, m_Data.n_MissionIndex);
|
|
texts[1].text = m_Data.n_RewardCount.ToString();
|
|
texts[2].text = $"{amount}/{m_Data.l_MissionConditionCount}";
|
|
slider_proc.value = DSUtil.Get_SliderValue(amount / (float)m_Data.l_MissionConditionCount);
|
|
}
|
|
|
|
void Set_Complete()
|
|
{
|
|
var index = ServerInfo.Ins.m_ServerData.Get_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex) > 0 ? 1 : 0;
|
|
DSUtil.InActivateGameObjects(gos, index);
|
|
}
|
|
|
|
public virtual void OnClick_GetReward()
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
if (sdata.CanGet_Mission(m_Data.n_MissionGroupId, m_Data.n_MissionIndex))
|
|
{
|
|
ServerInfo.Ins.Save_Mission(m_Data.n_MissionGroupId, m_Data.n_MissionIndex, () =>
|
|
{
|
|
sdata.Get_MissionReward(m_Data);
|
|
NewGameUI.Ins.m_MissionUI.Set_UI();
|
|
Set_Complete();
|
|
});
|
|
}
|
|
}
|
|
} |