Project_WL/Assets/Script/UI/Center/Mail/MailUI.cs

100 lines
3.2 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
using System;
using System.Collections.Generic;
using UnityEngine;
2025-04-14 02:34:12 +00:00
public class MailUI : MonoBehaviourSingletonuScrollViewMgr<MailUI>
2024-12-15 01:39:39 +00:00
{
2025-04-14 02:34:12 +00:00
public GameObject[] gos; // 0 child, 1 우편없음
2024-12-15 01:39:39 +00:00
public override void Set()
2024-12-15 01:39:39 +00:00
{
2025-07-29 01:23:52 +00:00
ServerInfo.Ins.Get_MailList(() => { Set_UI(ServerInfo.Ins.m_Mail); });
base.Set();
CardBase_AllOff();
DSUtil.ActivateGameObjects(gos);
2024-12-15 01:39:39 +00:00
}
void Set_UI(SC_Mail mail)
{
if (mail == null || mail.Mail == null || mail.Mail.Count == 0)
{
CardBase_AllOff();
2025-04-14 02:34:12 +00:00
gos[1].SetActive(true);
2025-04-14 04:53:37 +00:00
NewGameUI.Ins.gos_noti[0].SetActive(false);
2024-12-15 01:39:39 +00:00
}
else
{
2025-04-14 02:34:12 +00:00
gos[1].SetActive(false);
2025-04-14 01:50:36 +00:00
Set_ScrollView(mail.Mail);
2025-04-14 04:53:37 +00:00
NewGameUI.Ins.gos_noti[0].SetActive(true);
2024-12-15 01:39:39 +00:00
}
}
public void Del_Mail(ServerMailData _smd)
{
2025-07-29 01:23:52 +00:00
var MailData = ServerInfo.Ins.m_Mail;
2024-12-15 01:39:39 +00:00
if (MailData != null) MailData.Mail.Remove(_smd);
Set_UI(MailData);
}
public void Get_AllMail()
{
2025-07-29 01:23:52 +00:00
var MailData = ServerInfo.Ins.m_Mail;
2024-12-15 01:39:39 +00:00
if (MailData == null || MailData.Mail == null || MailData.Mail.Count <= 0)
return;
ServerInfo.Ins.Get_AllMail(mail =>
{
2025-04-14 04:53:37 +00:00
var obtainlist = new List<ItemSimpleData>();
2024-12-15 01:39:39 +00:00
var sdata = ServerInfo.Ins.m_ServerData;
for (int i = 0; i < mail.Mail.Count; i++)
{
var temp = MailData.Mail.Find(f => DateTime.Compare(f.RemnantTime, mail.Mail[i].RemnantTime) == 0);
if (temp != null)
{
2025-04-14 04:53:37 +00:00
obtainlist.Add(new ItemSimpleData { itemid = temp.ItemID, amount = temp.Amount });
2024-12-15 01:39:39 +00:00
}
}
obtainlist = Get_MailReward(obtainlist);
2025-06-30 01:01:50 +00:00
if (obtainlist.Count > 0) ObtainItemUI.Ins.Set(obtainlist);
MailData = null;
Set_UI(MailData);
2025-08-07 19:39:40 +00:00
NewGameUI.Ins.gos_noti[0].SetActive(false);
2024-12-15 01:39:39 +00:00
});
}
public List<ItemSimpleData> Get_MailReward(List<ItemSimpleData> rewards)
{
var obtainlist = new List<ItemSimpleData>();
for (int i = 0; i < rewards.Count; i++)
{
var temp = rewards[i];
var itemdata = table_itemlist.Ins.Get_Data(temp.itemid);
if (itemdata.e_ItemType == eItem.Shop)
{
var shopdata = table_shopitemlist.Ins.Get_Data(temp.itemid);
var bag = table_randombag.Ins.Get_DataList(shopdata.n_RandomBagID);
for (int j = 0; j < bag.Count; j++)
obtainlist.Add(new ItemSimpleData { itemid = bag[j].n_ItemId, amount = bag[j].n_DropCount });
}
else
obtainlist.Add(new ItemSimpleData { itemid = temp.itemid, amount = temp.amount });
}
var sdata = ServerInfo.Ins.m_ServerData;
for (int i = 0; i < obtainlist.Count; i++)
sdata.Add_Item(obtainlist[i].itemid, obtainlist[i].amount);
return obtainlist;
}
2024-12-15 01:39:39 +00:00
public override void OnClick_Back()
{
2025-07-29 01:23:52 +00:00
var MailData = ServerInfo.Ins.m_Mail;
2025-04-14 04:15:52 +00:00
Del_BackKey();
DSUtil.InActivateGameObjects(gos);
2025-04-14 02:34:12 +00:00
NewGameUI.Ins.gos_noti[0].SetActive(MailData != null && MailData.Mail.Count > 0);
2024-12-15 01:39:39 +00:00
}
}