Files
back_cantanBuilding/Assets/Scripts/UI/Setting/SignupDayItem.cs
2026-05-26 16:15:54 +08:00

132 lines
4.0 KiB
C#

using asap.core;
using cfg;
using GameCore;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SignupDayItem : MonoBehaviour
{
GameObject received;
GameObject bg;
GameObject claim_notice;
GameObject bg_today;
Button claim_btn;
Animation ani;
[NonSerialized]
public Animation icon_done;
RewardItemNew[] rewardItems;
int index;
SigninData signupData;
Tables tables;
List<ItemData> itemDatas;
int ID;
int DropID;
private void Awake()
{
received = transform.Find("received").gameObject;
bg = transform.Find("bg").gameObject;
claim_notice = transform.Find("claim_notice").gameObject;
bg_today = transform.Find("bg_today").gameObject;
claim_btn = GetComponent<Button>();
ani = GetComponent<Animation>();
icon_done = transform.Find("received/icon_done").GetComponent<Animation>();
rewardItems = transform.GetComponentsInChildren<RewardItemNew>();
signupData = GContext.container.Resolve<SigninData>();
tables = GContext.container.Resolve<Tables>();
}
private void Start()
{
claim_btn.onClick.AddListener(OnClaimBtnClick);
}
public void ShowData(int index, int DropID, int ID, int Multiplier = 1)
{
this.index = index;
this.ID = ID;
this.DropID = DropID;
DailySignEvent dailySignEvent;
itemDatas = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(DropID);
if (ID > 0)
{
dailySignEvent = signupData.newSignEvent;
if (index == 6 && Multiplier > 1)
{
for (int i = 0; i < itemDatas.Count; i++)
{
itemDatas[i].count *= Multiplier;
}
}
}
else
{
dailySignEvent = signupData.dailySignEvent;
}
received.SetActive(index < dailySignEvent.index);
int count = Math.Min(itemDatas.Count, rewardItems.Length);
for (int i = 0; i < count; i++)
{
rewardItems[i].SetData(itemDatas[i]);
}
for (int i = 0; i < rewardItems.Length; i++)
{
rewardItems[i].gameObject.SetActive(i < count);
rewardItems[i].SetReceived(index < dailySignEvent.index);
}
if (dailySignEvent.lastID != ZZTimeHelper.UtcNow().UtcNowOffset().DayOfYear)
{
bg.SetActive(dailySignEvent.index != index);
bg_today.SetActive(dailySignEvent.index == index);
if (dailySignEvent.index == index)
ani.Play();
}
else
{
bg.SetActive(dailySignEvent.index - 1 != index);
bg_today.SetActive(dailySignEvent.index - 1 == index);
}
claim_notice.SetActive(dailySignEvent.index == index && dailySignEvent.lastID != ZZTimeHelper.UtcNow().UtcNowOffset().DayOfYear);
}
public void SetMultiplier(int Multiplier)
{
itemDatas = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(DropID);
for (int i = 0; i < itemDatas.Count; i++)
{
itemDatas[i].count *= Multiplier;
}
int count = Math.Min(itemDatas.Count, rewardItems.Length);
for (int i = 0; i < count; i++)
{
rewardItems[i].SetData(itemDatas[i]);
}
}
public void OnClaimBtnClick()
{
claim_btn.enabled = false;
bool isSign;
if (ID > 0)
{
isSign = signupData.OnSpecialSign(ID, index, DropID);
}
else
{
isSign = signupData.OnDailySign(index, DropID);
}
if (isSign)
{
received.SetActive(true);
icon_done.Play();
ani.Stop();
claim_notice.SetActive(false);
for (int i = 0; i < rewardItems.Length; i++)
{
rewardItems[i].SetReceived(true);
rewardItems[i].ParticleAttractor();
}
}
claim_btn.enabled = true;
}
}