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 완료 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); Set_Text(); 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_Text() { switch (m_Data.e_MissionConditionType) { case ePurpose.KILL_MONSTER: var mob = table_monsterlist.Ins.Get_Data_orNull(m_Data.n_MissionConditionValue); texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, mob.Get_Name()); break; case ePurpose.KILL_MONSTER_GRADE: case ePurpose.KILL_MONSTER_GRADE_ACC: switch (m_Data.n_MissionConditionValue) { case 1: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, table_localtext.Ins.Get_Text(297)); break; case 2: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, table_localtext.Ins.Get_Text(298)); break; case 3: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, table_localtext.Ins.Get_Text(299)); break; } break; case ePurpose.TAKE_GOODS: case ePurpose.TAKE_GOODS_ACC: case ePurpose.TAKE_GOODS_LIMIT: case ePurpose.CONSUME_GOODS: case ePurpose.CONSUME_GOODS_ACC: case ePurpose.EAT_FRUIT_TYPE_ACC: { var item = table_itemlist.Ins.Get_Data(m_Data.n_MissionConditionValue); texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, item.Get_Name()); } break; case ePurpose.ARRIVAL_MAP_LIMIT: var map = table_battlemapconfig.Ins.Get_Data(m_Data.n_MissionConditionValue); texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, map.Get_Name()); break; case ePurpose.HERO_ABILITY_UPGRADE_CLASS_LIMIT: //switch (m_Data.n_MissionConditionValue) //{ // case 1: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, table_localtext.Ins.Get_Text(1001)); break; // case 2: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, table_localtext.Ins.Get_Text(1011)); break; // case 3: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, table_localtext.Ins.Get_Text(1021)); break; // case 4: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, table_localtext.Ins.Get_Text(1031)); break; // case 5: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, table_localtext.Ins.Get_Text(1021)); break; // case 6: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, table_localtext.Ins.Get_Text(1031)); break; //} texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, (eBattleType)m_Data.n_MissionConditionValue); break; case ePurpose.CLASS_OPEN_LIMIT: var classData = table_classopencondition.Ins.Get_MissionData(m_Data.n_MissionConditionValue); texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, classData.Get_Name()); break; case ePurpose.HERO_AWAKEN_ACC: case ePurpose.HERO_BASE_STAT_LIMIT: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, (eMainStatType)(m_Data.n_MissionConditionValue - 1)); break; case ePurpose.GET_EQUIP_ITEM_GRADE_ACC: case ePurpose.PLANTING_CROPS_GRADE_ACC: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, MyText.Get_GradeName(m_Data.n_MissionConditionValue)); break; case ePurpose.EQUIP_ITEM_MOUNT_PARTS_LIMIT: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, table_localtext.Ins.Get_Text(30100 + m_Data.n_MissionConditionValue)); break; case ePurpose.TAKE_RELIC_GRADE_ACC: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, m_Data.n_MissionConditionValue); break; case ePurpose.SKILL_UPGRADE_LIMIT: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.n_MissionConditionValue); break; case ePurpose.CONTENTS_CLEAR: switch (m_Data.n_MissionConditionValue) { case 1: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, table_localtext.Ins.Get_Text(1001)); break; case 2: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, table_localtext.Ins.Get_Text(1011)); break; case 3: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, table_localtext.Ins.Get_Text(1021)); break; case 4: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, table_localtext.Ins.Get_Text(1031)); break; } break; case ePurpose.GET_ESSENCE_GRADE_ACC: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, table_localtext.Ins.Get_Text(3340 + m_Data.n_MissionConditionValue)); break; default: texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount); break; } } 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() { gos[0].SetActive(ServerInfo.Ins.m_ServerData.Get_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex) > 0); } public virtual void OnClick_GetReward() { var sdata = ServerInfo.Ins.m_ServerData; if (sdata.Get_MissionReward(m_Data)) { NewGameUI.Ins.m_MissionUI.Set_UI(); Set_Complete(); } else Popup.Ins.Set(ePopupType.One, 174, null, null, "미션 보상 받을 수 없음"); } }