nightward/Assets/Scripts/UI/ProfileCard.cs

127 lines
3.8 KiB
C#

using TMPro;
using UnityEngine;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.UI;
public class ProfileCard : MonoBehaviour
{
public Image i_girl, i_openbtn;
public TextMeshProUGUI[] texts; // 0 이름, 1 카운트
public GameObject go_openbtn, go_viewbtn, go_albumbtn, go_chatbtn, go_changegirl, go_openeffect;
public RectTransform rect;
public Material mat_Gray;
girltabledata m_Data;
AsyncOperationHandle m_Handle;
private void Awake()
{
rect = GetComponent<RectTransform>();
}
public void Set(int girlid)
{
if (girlid < 1) girlid = 8;
else if (girlid > 8) girlid = 1;
m_Data = table_girl.Ins.Get_Data(girlid);
i_girl.enabled = false;
AddrResourceMgr.Ins.Relese(m_Handle);
AddrResourceMgr.Ins.LoadObject<Sprite>(m_Data.s_ProfileImage, handle =>
{
m_Handle = handle;
i_girl.enabled = true;
i_girl.sprite = handle.Result;
});
Set_UI();
}
void Set_UI()
{
var count = SaveMgr.Ins.Get_ImageCount(m_Data.n_GirlID);
var maxcount = table_album.Ins.Get_DataList(m_Data.n_GirlID).Count;
texts[0].text = m_Data.s_Name;
texts[1].text = $"{count}/{maxcount}";
i_girl.material = count == 0 ? mat_Gray : null;
go_openbtn.SetActive(count == 0);
i_openbtn.sprite = UIAtlasMgr.Ins.Get_Sprite(CanOpen() ? "Yellow btn" : "gray btn");
go_openeffect.SetActive(CanOpen());
go_viewbtn.SetActive(count == 0);
go_albumbtn.SetActive(count > 0);
go_chatbtn.SetActive(count > 0);
go_changegirl.SetActive(false);
if (SaveMgr.Ins.IsObtainGirl(2))
{ // 획득한 캐릭터 2종 이상
if (SaveMgr.Ins.Get_SelectGirlID() != m_Data.n_GirlID)
go_changegirl.SetActive(count > 0); // 선택된 캐릭터가 아니며 획득한 캐릭인 경우
}
}
bool CanOpen()
{
var pregirl = m_Data.n_GirlID - 1;
if (pregirl > 0)
{
var lst = table_album.Ins.Get_DataList(pregirl);
return (lst.Count == SaveMgr.Ins.Get_ImageCount(pregirl) && SaveMgr.Ins.Get_ImageCount(m_Data.n_GirlID) == 0);
}
return false;
}
public void OnClick_Profile()
{
if (m_Data != null)
LobbyUI.Ins.Show_Profile(m_Data.n_GirlID);
}
public void OnClick_Chat()
{
if (m_Data != null)
LobbyUI.Ins.m_ChatUI.Set(m_Data);
}
public void OnClick_Preview()
{ // 훔쳐보기
if (SaveMgr.Ins.CanShowPreviewAD())
ADInfo.Ins.Show_AD(false, () =>
{
var lst = table_album.Ins.Get_DataList(m_Data.n_GirlID).FindAll(f=>!f.s_Image.Contains("Heart"));
var rdnData = lst[Random.Range(0, lst.Count)];
ShowAlbum.Ins.Show(rdnData, true);
SaveMgr.Ins.Add_PreviewADTime(table_GlobalValue.Ins.Get_Int("PreviewADTime"));
});
}
public void OnClick_Open()
{
var pregirl = m_Data.n_GirlID - 1;
if (pregirl > 0)
{
if (CanOpen())
{ // 열 수 있음
SaveMgr.Ins.Open_Album(table_album.Ins.Get_DataList()[0]); // 최초 한 장 공짜 지급
SaveMgr.Ins.Save();
Set_UI();
}
else
{
var pregirldata = table_girl.Ins.Get_Data(pregirl);
LobbyUI.Ins.m_ToastUI.Set($"{pregirldata.s_Name}의 앨범을 모두 오픈해 주세요.");
}
}
}
public void OnClick_ChangeGirl()
{
LobbyUI.Ins.m_ChangeGirlUI.Set();
}
public void OnClick_Album()
{
if (m_Data != null)
LobbyUI.Ins.Go_Album(m_Data.n_GirlID);
}
}