Project_WL/Assets/Script/UI/Mission/MissionCard.cs

90 lines
4.3 KiB
C#
Raw Normal View History

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);
var sdata = ServerInfo.Ins.m_ServerData;
m_Data = _base as MissionListTableData;
var amount = sdata.Get_MissionCount(m_Data.n_MissionGroupId, m_Data.n_MissionIndex);
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(m_Data.n_RewardValue);
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-18 04:09:31 +00:00
var item = table_itemlist.Ins.Get_Data(m_Data.n_MissionConditionValue);
2025-03-19 04:45:25 +00:00
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;
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-18 04:25:43 +00:00
case ePurpose.SKILL_UPGRADE_LIMIT:
var skill = table_skilllist.Ins.Get_Data_orNull(m_Data.n_MissionConditionValue);
texts[0].text = DSUtil.Format(m_Data.n_MissionDesc, skill.Get_Name());
break;
2025-03-19 00:49:50 +00:00
case ePurpose.CONTENTS_CLEAR:
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;
}
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-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
Set_Complete();
}
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;
if (sdata.CanGet_Mission(m_Data.n_MissionGroupId, m_Data.n_MissionIndex))
{
2025-03-19 00:49:50 +00:00
sdata.Add_Item(m_Data.n_RewardValue, m_Data.n_RewardCount);
sdata.Add_MissionLv(m_Data.n_MissionGroupId, m_Data.n_MissionIndex);
sdata.Add_MissionCompletCount(m_Data.n_MissionGroupId);
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
}
}