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 _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(); }); } } }