using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class FestivalRedpackBehaviour : MonoBehaviour
|
{
|
[SerializeField] Transform m_NormalBottom;
|
[SerializeField] Transform m_BigBottom;
|
[SerializeField] Text m_RedpackName;
|
[SerializeField] Text m_Wish;
|
[SerializeField] Transform m_ContainerPreview;
|
[SerializeField] Text m_Time;
|
[SerializeField] Transform m_ContainerOpen;
|
[SerializeField] Button m_Open;
|
[SerializeField] Transform m_ContainerGot;
|
[SerializeField] Transform m_ContainerEnd;
|
[SerializeField] Transform m_ContainerOverdue;
|
[SerializeField] UIEffect m_Effect;
|
|
int redpackId = 0;
|
int redpackServerId = 0;
|
|
FestivalRedpackModel model { get { return ModelCenter.Instance.GetModel<FestivalRedpackModel>(); } }
|
|
RedEnvelopeModel envelopeModel { get { return ModelCenter.Instance.GetModel<RedEnvelopeModel>(); } }
|
|
private void Awake()
|
{
|
m_Open.onClick.AddListener(Open);
|
}
|
|
public void DisplaySystemRedpack(int id)
|
{
|
redpackId = id;
|
var existServerRedpack = model.IsExistSystemRedpack(id, out redpackServerId);
|
var overdue = model.IsSystemRedpackOverdue(id);
|
m_ContainerPreview.SetActive(!existServerRedpack);
|
m_ContainerOpen.SetActive(false);
|
m_ContainerGot.SetActive(false);
|
m_ContainerEnd.SetActive(false);
|
m_ContainerOverdue.SetActive(false);
|
|
|
m_Effect.StopImediatly();
|
var config = RedPackConfig.Get(id);
|
if (config != null)
|
{
|
m_RedpackName.text = config.content;
|
|
bool requireEffect = false;
|
if (config.RedEnvelopeType == FestivalRedpackModel.FESTIVALSYSTEMREDPACK1)
|
{
|
requireEffect = true;
|
}
|
|
if (requireEffect)
|
{
|
m_Effect.Play();
|
}
|
|
m_NormalBottom.SetActive(config.RedEnvelopeType != FestivalRedpackModel.FESTIVALSYSTEMREDPACK1);
|
m_BigBottom.SetActive(config.RedEnvelopeType == FestivalRedpackModel.FESTIVALSYSTEMREDPACK1);
|
}
|
|
FestivalRedpack festivalRedpack;
|
if (model.TryGetRedpack(id, out festivalRedpack))
|
{
|
m_Time.text = StringUtility.Contact(festivalRedpack.openTime.ToString("HH:mm"), Language.Get("FestivalOpenGrab"));
|
}
|
|
if (existServerRedpack)
|
{
|
DisplayBase(redpackServerId);
|
}
|
else
|
{
|
redpackServerId = 0;
|
m_ContainerOverdue.SetActive(overdue);
|
m_ContainerPreview.SetActive(!overdue);
|
}
|
}
|
|
void DisplayBase(int id)
|
{
|
redpackServerId = id;
|
RedEnvelopeModel.RedEnvelope envelope;
|
if (envelopeModel.TryGetEnvelope(redpackServerId, out envelope))
|
{
|
var overdue = model.IsSystemRedpackOverdue(redpackId);
|
m_ContainerOverdue.SetActive(overdue && envelope.state == 1);
|
m_ContainerOpen.SetActive(envelope.state == 1 && !overdue);
|
m_ContainerGot.SetActive(envelope.state == 2);
|
m_ContainerEnd.SetActive(envelope.state == 3);
|
}
|
}
|
|
private void Open()
|
{
|
if (model.IsSystemRedpackOverdue(redpackId))
|
{
|
SysNotifyMgr.Instance.ShowTip("FestivalSystemOpenOverude");
|
return;
|
}
|
if (redpackServerId == 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("FestivalSystemOpenError");
|
}
|
else
|
{
|
RedEnvelopeModel.RedEnvelope envelope;
|
if (envelopeModel.TryGetEnvelope(redpackServerId, out envelope))
|
{
|
switch (envelope.state)
|
{
|
case 1:
|
RedpackSystemOpenWin.redpackId = redpackId;
|
RedpackSystemOpenWin.redpackServerId = redpackServerId;
|
WindowCenter.Instance.Open<RedpackSystemOpenWin>();
|
break;
|
case 2:
|
case 3:
|
envelopeModel.SendOpenRedpackPackage(redpackServerId, envelope.type);
|
break;
|
}
|
}
|
}
|
}
|
|
}
|
}
|
|