133 lines
4.5 KiB
C#
133 lines
4.5 KiB
C#
using asap.core;
|
|
using GameCore;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
[RequireComponent(typeof(Button))]
|
|
public class EventPartnerStatueSlotView : MonoBehaviour
|
|
{
|
|
[SerializeField] private Head head;
|
|
[SerializeField] private TMP_Text textDisplayName, textAddScore;
|
|
[SerializeField] private Image progressBar;
|
|
[SerializeField] private RewardItemNew rewardItem;
|
|
[SerializeField] private GameObject goGreatReward, goEmpty, goPlayer, goAddScore, goInvitationRedPoint, goFinished;
|
|
[SerializeField] private Button btnStatue;
|
|
[SerializeField] private Image statueMask;
|
|
private int _stage, _idx;
|
|
private bool _isEmpty;
|
|
|
|
private void Start()
|
|
{
|
|
btnStatue.onClick.AddListener(OnClickBtnStatue);
|
|
}
|
|
|
|
public void Init(EventPartnerStatueSlotViewData data)
|
|
{
|
|
_isEmpty = data.IsEmpty;
|
|
_idx = data.Index;
|
|
if (data.IsEmpty)
|
|
{
|
|
goEmpty.SetActive(true);
|
|
goPlayer.SetActive(false);
|
|
goInvitationRedPoint.SetActive(data.HasInvitation);
|
|
goFinished.SetActive(false);
|
|
return;
|
|
}
|
|
|
|
if (data.IsClaimed)
|
|
{
|
|
goEmpty.SetActive(false);
|
|
goPlayer.SetActive(false);
|
|
goInvitationRedPoint.SetActive(false);
|
|
goFinished.SetActive(true);
|
|
SetStatueState(99);
|
|
return;
|
|
}
|
|
|
|
goEmpty.SetActive(false);
|
|
goPlayer.SetActive(true);
|
|
goInvitationRedPoint.SetActive(false);
|
|
goFinished.SetActive(false);
|
|
head.SetData(data.Info.AvatarUrl);
|
|
textDisplayName.text = data.Info.DisplayName;
|
|
_stage = data.Stage;
|
|
progressBar.fillAmount = data.Progress;
|
|
if (data.Reward == null)
|
|
{
|
|
goGreatReward.SetActive(true);
|
|
rewardItem.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
goGreatReward.SetActive(false);
|
|
rewardItem.gameObject.SetActive(true);
|
|
rewardItem.SetData(data.Reward);
|
|
}
|
|
SetStatueState(_stage);
|
|
if (data.ScoreToAdd > 0)
|
|
{
|
|
goAddScore.SetActive(true);
|
|
textAddScore.text = "+" + data.ScoreToAdd.ToString();
|
|
}
|
|
else
|
|
{
|
|
goAddScore.SetActive(false);
|
|
}
|
|
}
|
|
|
|
private void Reset()
|
|
{
|
|
goEmpty = transform.Find("empty").gameObject;
|
|
goInvitationRedPoint = transform.Find("empty/redpoints").gameObject;
|
|
goPlayer = transform.Find("player").gameObject;
|
|
head = transform.Find("player/head").GetComponent<Head>();
|
|
textDisplayName = transform.Find("player/head/text_player_name").GetComponent<TMP_Text>();
|
|
progressBar = transform.Find("player/head/bg_bar/bar").GetComponent<Image>();
|
|
rewardItem = transform.Find("player/head/bg_bar/reward").GetComponent<RewardItemNew>();
|
|
goGreatReward = transform.Find("player/head/bg_bar/icon_grand_reward").gameObject;
|
|
btnStatue = GetComponent<Button>();
|
|
statueMask = transform.Find("mask").GetComponent<Image>();
|
|
goAddScore = transform.Find("player/head/add").gameObject;
|
|
textAddScore = transform.Find("player/head/add/text_add").GetComponent<TMP_Text>();
|
|
goFinished = transform.Find("finished").gameObject;
|
|
}
|
|
|
|
private async void OnClickBtnStatue()
|
|
{
|
|
var arc = GContext.container.Resolve<EventPartnerStatueArc>();
|
|
GameObject panelGo;
|
|
// # if UNITY_EDITOR
|
|
// if (_idx == 0)
|
|
// arc.EventAggregator.Publish(new EventPartnerStatueEnterBuild{SlotIdx = _idx});
|
|
// else
|
|
// panelGo = await UIManager.Instance.ShowUINotLoading(UITypes.EventPartnerStatueInvitationPanel);
|
|
// return;
|
|
// #endif
|
|
if (_isEmpty)
|
|
{
|
|
panelGo = await UIManager.Instance.ShowUINotLoading(UITypes.EventPartnerStatueInvitationPanel);
|
|
}
|
|
else
|
|
{
|
|
// Debug.Log($"<color=cyan>[EventPartnerStatue]Enter build {_idx}!</color>");
|
|
arc.EventAggregator.Publish(new EventPartnerStatueEnterBuild{SlotIdx = _idx});
|
|
}
|
|
}
|
|
|
|
private async void SetStatueState(int stage)
|
|
{
|
|
var arc = GContext.container.Resolve<EventPartnerStatueArc>();
|
|
var maskList = arc.TableContext.GetMaskUrlList(_idx);
|
|
if (stage >= maskList.Count)
|
|
{
|
|
statueMask.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
statueMask.gameObject.SetActive(true);
|
|
await GContext.container.Resolve<IUIService>().SetImageSprite(statueMask, maskList[maskList.Count - 1 - stage]);
|
|
}
|
|
}
|
|
}
|