60 lines
1.8 KiB
C#
60 lines
1.8 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
|
|
namespace OCTOPUS_TWIN
|
|
{
|
|
public class ProjectItemView : MonoBehaviour
|
|
{
|
|
[SerializeField] private TextMeshProUGUI textTitle;
|
|
[SerializeField] private TextMeshProUGUI textDesc;
|
|
[SerializeField] private Image imageThumbnail;
|
|
[SerializeField] private GameObject imageLock;
|
|
[SerializeField] private Button btnSelect;
|
|
|
|
private ProjectData myData;
|
|
|
|
// UI 갱신
|
|
private void UpdateUI(ProjectData data)
|
|
{
|
|
myData = data;
|
|
if (textTitle) textTitle.text = data.projectName;
|
|
if (textDesc) textDesc.text = data.description;
|
|
if (imageThumbnail) imageThumbnail.sprite = data.thumbnail;
|
|
}
|
|
|
|
// 클릭 가능한 프로젝트 세팅
|
|
public void Setup(ProjectData data, Action<ProjectData> onClickCallback)
|
|
{
|
|
UpdateUI(data);
|
|
|
|
imageLock.SetActive(false); // 잠금 화면 해제
|
|
|
|
// 재사용될 때를 대비해 버튼을 반드시 다시 켜줘야 함
|
|
btnSelect.enabled = true;
|
|
btnSelect.interactable = true; // 시각적 활성화
|
|
|
|
btnSelect.onClick.RemoveAllListeners();
|
|
btnSelect.onClick.AddListener(() => onClickCallback?.Invoke(myData));
|
|
|
|
}
|
|
|
|
// 열리지 않는 프로젝트 세팅
|
|
public void Setup(ProjectData data, Action onLockedClick)
|
|
{
|
|
UpdateUI(data);
|
|
|
|
// 잠금 화면 설정
|
|
imageLock.SetActive(true);
|
|
|
|
// 버튼 기능 끄지 않음
|
|
btnSelect.enabled = true;
|
|
btnSelect.interactable = true;
|
|
|
|
// 안전을 위해 리스너 제거
|
|
btnSelect.onClick.RemoveAllListeners();
|
|
btnSelect.onClick.AddListener(() => onLockedClick?.Invoke());
|
|
}
|
|
}
|
|
} |