Files
JJBB/Assets/Project/Script/GUI/Activity/ActiveBtns.cs

241 lines
6.5 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Games.LogicObj;
using GCGame.Table;
using Games.GlobeDefine;
public class ActiveBtns : UIControllerBase<ActiveBtns>
{
public GameObject _BtnPanel;
public RectTransform Anchor;
public GameObject CloneBtnGameObj;
private List<ActivityBtn> m_btns = new List<ActivityBtn>();
public void RefreshBtns(int ActivityType)
{
for(int i=0;i< m_btns.Count;i++)
{
if (m_btns[i].Refresh(ActivityType))
return;
}
}
public void InitBtnInfo()
{
List<ActivityDataManager.ActivityData> activityDatas = ActivityDataManager.Instance.GetAllActivityData();
if (activityDatas == null)
return;
int Index = 0;
for (int i = 0; i < activityDatas.Count; i++)
{
if (activityDatas[i] == null
|| activityDatas[i].activityTab == null
|| activityDatas[i].activityTab.Icon == "-1"
|| activityDatas[i].activityState == ActivityDataManager.ActivityState.None
|| activityDatas[i].activityTab.Level > GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level
|| activityDatas[i].BossLeaveCount == 0)
{
continue;
}
if (m_btns.Count<= Index)
{
GameObject obj = GameObject.Instantiate(CloneBtnGameObj);
obj.transform.SetParent(CloneBtnGameObj.transform.parent);
obj.transform.localPosition = Vector3.zero;
obj.transform.localScale = Vector3.one;
m_btns.Add(obj.GetComponent<ActivityBtn>());
}
ActivityBtn btn = m_btns[Index];
if (btn == null)
continue;
Index++;
btn.gameObject.SetActive(true);
btn.Show(activityDatas[i]);
}
for(int i= Index; i< m_btns.Count;i++)
{
m_btns[i].gameObject.SetActive(false);
}
}
void Start()
{
// 强制将ActiveBtns做到一个低层级上有层级管理底层之后再修改为稳定做法
transform.SetAsFirstSibling();
GCGame.Table.Tab_Fuben fuben = GCGame.Table.TableManager.GetFubenByID(GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID, 0);
if (fuben != null)
{
if (fuben.IsShowAct != 0)
{
if (ActiveBtns.Instance())
{
ActiveBtns.Instance().ShowPanel();
}
}
else
{
if (ActiveBtns.Instance())
{
ActiveBtns.Instance().HidePanel();
}
}
}
}
void OnEnable()
{
SetInstance(this);
}
void OnDisable()
{
SetInstance(null);
}
void Update()
{
//UpdateGuanningBtn();
if(_PanelStateChange)
{
AnimatorStateInfo info_BtnRot = _ShowAnimator.GetCurrentAnimatorStateInfo(0);
if (_ShowPanel)
{
if(_ShowAnimator.gameObject.activeSelf && !info_BtnRot.IsName("Show"))
_ShowAnimator.Play("Show", 0, 0);
}
else
{
if (_ShowAnimator.gameObject.activeSelf && !info_BtnRot.IsName("Hide"))
_ShowAnimator.Play("Hide", 0, 0);
}
RefreshBtnEffectState();
_PanelStateChange = false;
}
}
public void RefreshBtnEffectState()
{
for (int i = 0; i < m_btns.Count; i++)
{
m_btns[i].HideEffect(!_ShowPanel);
}
}
public Animator _ShowAnimator;
public bool _ShowPanel;
private bool _PanelStateChange;
public void ShowPanel()
{
GCGame.Table.Tab_Fuben fuben = GCGame.Table.TableManager.GetFubenByID(GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID, 0);
if (fuben != null && fuben.IsShowAct == 0)
{
_BtnPanel.SetActive(false);
}
else
{
_BtnPanel.SetActive(true);
_ShowPanel = true;
_PanelStateChange = true;
}
}
public void HidePanel()
{
GCGame.Table.Tab_Fuben fuben = GCGame.Table.TableManager.GetFubenByID(GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID, 0);
if (fuben != null && fuben.IsShowAct == 0)
{
_BtnPanel.SetActive(false);
return;
}
_ShowPanel = false;
_PanelStateChange = true;
}
#region red Packet
public GameObject _RedPacketBtn;
public GameObject[] _RedpacketBtnTypes;
private GC_GIVE_RED_PACKET_RET _RedPacket = null;
public void ShowRedPacket(GC_GIVE_RED_PACKET_RET packet)
{
_RedPacket = packet;
_RedPacketBtn.SetActive(true);
for (int i = 0; i < _RedpacketBtnTypes.Length; ++i)
{
if (i + 1 == (int)packet.Type)
{
_RedpacketBtnTypes[i].SetActive(true);
}
else
{
_RedpacketBtnTypes[i].SetActive(false);
}
}
CancelInvoke();
Invoke("HideRedPacket", 10);
}
public void HideRedPacket()
{
_RedPacketBtn.SetActive(false);
ChatInfoLogic.ShowRedPacket(false);
}
public void OnRedPacketClick()
{
if(_RedPacket != null)
RedPacket.Instance.PickRedPacket(_RedPacket.RedPacketId, _RedPacket.Type);
HideRedPacket();
}
#endregion
#region VIP
public GameObject _VIPPacketBtn;
public GameObject _VipRedPoint;
public void VIPPacketBtn()
{
//_VIPPacketBtn.SetActive(GameManager.gameManager.PlayerDataPool.OPenServerDays <= 7);
//VipTipRedPoint();
}
public void VipTipRedPoint()
{
if (_VIPPacketBtn == null || _VIPPacketBtn.activeSelf == false)
return;
_VipRedPoint.SetActive(false);
int Count = GameManager.gameManager.PlayerDataPool.VipRewardStates.Count;
for(int i=0;i<Count;i++)
{
if(GameManager.gameManager.PlayerDataPool.VipRewardStates[i]>=1)
{
_VipRedPoint.SetActive(true);
return;
}
}
}
public void VipBtnClick()
{
UIManager.ShowUI(UIInfo.VipRoot);
}
#endregion
}