2025-03-17 07:34:17 +00:00
|
|
|
using TMPro;
|
2025-03-19 00:49:50 +00:00
|
|
|
using UnityEngine;
|
2025-03-17 07:34:17 +00:00
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
|
|
|
|
public class MissionCard : CardBase
|
|
|
|
|
{
|
|
|
|
|
public Image[] images; // 0 보상 아이콘, 1 보상 버튼
|
|
|
|
|
public TextMeshProUGUI[] texts; // 0 조건, 1 보상수량, 2 진행상황
|
|
|
|
|
public Slider slider_proc;
|
2025-03-19 00:49:50 +00:00
|
|
|
public GameObject[] gos; // 0 완료
|
2025-03-17 07:34:17 +00:00
|
|
|
|
|
|
|
|
MissionListTableData m_Data;
|
|
|
|
|
|
|
|
|
|
public override void Set<T>(T _base)
|
|
|
|
|
{
|
|
|
|
|
base.Set(_base);
|
|
|
|
|
m_Data = _base as MissionListTableData;
|
|
|
|
|
|
2025-03-21 22:13:24 +00:00
|
|
|
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;
|
2025-03-23 22:38:28 +00:00
|
|
|
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)
|
2025-03-21 23:21:42 +00:00
|
|
|
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;
|
2025-03-23 22:38:28 +00:00
|
|
|
else if (m_Data.e_LinkedQuestType == eLinkedQuestType.First)
|
2025-03-21 22:13:24 +00:00
|
|
|
return sdata.Get_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex) == 0;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Set_Text()
|
|
|
|
|
{
|
2025-03-18 04:09:31 +00:00
|
|
|
switch (m_Data.e_MissionConditionType)
|
|
|
|
|
{
|
|
|
|
|
case ePurpose.KILL_MONSTER:
|
|
|
|
|
var mob = table_monsterlist.Ins.Get_Data_orNull(m_Data.n_MissionConditionValue);
|
2025-03-19 04:20:05 +00:00
|
|
|
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;
|
|
|
|
|
}
|
2025-03-18 04:09:31 +00:00
|
|
|
break;
|
|
|
|
|
case ePurpose.TAKE_GOODS:
|
2025-03-19 04:45:25 +00:00
|
|
|
case ePurpose.TAKE_GOODS_ACC:
|
|
|
|
|
case ePurpose.TAKE_GOODS_LIMIT:
|
2025-03-18 04:09:31 +00:00
|
|
|
case ePurpose.CONSUME_GOODS:
|
2025-03-19 04:45:25 +00:00
|
|
|
case ePurpose.CONSUME_GOODS_ACC:
|
2025-03-21 21:37:48 +00:00
|
|
|
case ePurpose.EAT_FRUIT_TYPE_ACC:
|
2025-03-19 22:38:36 +00:00
|
|
|
{
|
|
|
|
|
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());
|
|
|
|
|
}
|
2025-03-18 04:09:31 +00:00
|
|
|
break;
|
2025-03-19 01:39:10 +00:00
|
|
|
case ePurpose.ARRIVAL_MAP_LIMIT:
|
2025-03-18 04:09:31 +00:00
|
|
|
var map = table_battlemapconfig.Ins.Get_Data(m_Data.n_MissionConditionValue);
|
|
|
|
|
texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, map.Get_Name());
|
|
|
|
|
break;
|
2025-03-19 06:05:57 +00:00
|
|
|
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;
|
|
|
|
|
//}
|
2025-03-21 22:13:24 +00:00
|
|
|
texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount,
|
2025-03-19 06:05:57 +00:00
|
|
|
(eBattleType)m_Data.n_MissionConditionValue);
|
|
|
|
|
break;
|
2025-03-19 06:32:57 +00:00
|
|
|
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;
|
2025-03-19 06:56:28 +00:00
|
|
|
case ePurpose.HERO_AWAKEN_ACC:
|
2025-03-20 06:36:59 +00:00
|
|
|
case ePurpose.HERO_BASE_STAT_LIMIT:
|
2025-03-19 06:56:28 +00:00
|
|
|
texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount,
|
|
|
|
|
(eMainStatType)(m_Data.n_MissionConditionValue - 1));
|
|
|
|
|
break;
|
2025-03-19 22:38:36 +00:00
|
|
|
case ePurpose.GET_EQUIP_ITEM_GRADE_ACC:
|
2025-03-20 21:45:21 +00:00
|
|
|
case ePurpose.PLANTING_CROPS_GRADE_ACC:
|
2025-03-19 22:38:36 +00:00
|
|
|
texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount,
|
|
|
|
|
MyText.Get_GradeName(m_Data.n_MissionConditionValue));
|
|
|
|
|
break;
|
2025-03-20 00:21:10 +00:00
|
|
|
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;
|
2025-03-20 01:48:31 +00:00
|
|
|
case ePurpose.TAKE_RELIC_GRADE_ACC:
|
|
|
|
|
texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount, m_Data.n_MissionConditionValue);
|
|
|
|
|
break;
|
2025-03-18 04:25:43 +00:00
|
|
|
case ePurpose.SKILL_UPGRADE_LIMIT:
|
2025-03-20 06:22:03 +00:00
|
|
|
texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.n_MissionConditionValue);
|
2025-03-18 04:25:43 +00:00
|
|
|
break;
|
2025-03-19 00:49:50 +00:00
|
|
|
case ePurpose.CONTENTS_CLEAR:
|
|
|
|
|
switch (m_Data.n_MissionConditionValue)
|
|
|
|
|
{
|
2025-03-20 06:48:41 +00:00
|
|
|
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;
|
2025-03-19 00:49:50 +00:00
|
|
|
}
|
|
|
|
|
break;
|
2025-03-20 07:17:10 +00:00
|
|
|
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;
|
2025-03-18 04:09:31 +00:00
|
|
|
default:
|
2025-03-19 04:20:05 +00:00
|
|
|
texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, m_Data.l_MissionConditionCount);
|
2025-03-18 04:09:31 +00:00
|
|
|
break;
|
|
|
|
|
}
|
2025-03-21 22:13:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Set_Proc()
|
|
|
|
|
{
|
|
|
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
|
|
|
var amount = sdata.Get_MissionCount(m_Data.n_MissionGroupId, m_Data.n_MissionIndex);
|
2025-03-17 07:34:17 +00:00
|
|
|
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);
|
2025-03-19 00:49:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Set_Complete()
|
|
|
|
|
{
|
|
|
|
|
gos[0].SetActive(ServerInfo.Ins.m_ServerData.Get_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex) > 0);
|
2025-03-17 07:34:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual void OnClick_GetReward()
|
|
|
|
|
{
|
2025-03-17 23:31:46 +00:00
|
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
2025-03-23 05:56:01 +00:00
|
|
|
if (sdata.Get_MissionReward(m_Data))
|
2025-03-17 23:31:46 +00:00
|
|
|
{
|
2025-03-21 23:21:42 +00:00
|
|
|
NewGameUI.Ins.m_MissionUI.Set_UI();
|
2025-03-19 00:49:50 +00:00
|
|
|
Set_Complete();
|
2025-03-17 23:31:46 +00:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
Popup.Ins.Set(ePopupType.One, 174, null, null, "미션 보상 받을 수 없음");
|
2025-03-17 07:34:17 +00:00
|
|
|
}
|
|
|
|
|
}
|