Files
JJBB/Assets/Project/Script/GUI/Interaction/InteractionPanelCtr.cs

283 lines
8.1 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GCGame.Table;
public class InteractionPanelCtr : MonoBehaviour {
public static InteractionPanelCtr Instance;
private void Awake()
{
Instance = this;
}
private void OnEnable()
{
ShowDefaultFirst();
}
void ShowDefaultFirst()
{
OnMenuItemClick(1);
}
private void OnDestroy()
{
Instance = null;
}
public Image _bgIcon; //根据类型分类s
public List<Sprite> _bgIconlist;
public List<GameObject> _titleIconlist;
public List<GameObject> _markIconList;
public UIContainerBase _nodeItemContainer;
public UIContainerBase _finalRewContainer;
public Text _finalRewDesc;
public List<GameObject> _bigBGList;
public List<GameObject> _subBGList;
public List<GameObject> _btnList;
public List<Text> _btnDesc;
public List<GameObject> _menuItemRedIconList = new List<GameObject>();
public GameObject _finalRewRedIcon;
private int _CurSelectType = -1; //默认值
public void OnMenuItemClick(int _Index)
{
if(_Index == 1)
{
_bigBGList[0].SetActive(true);
_bigBGList[1].SetActive(false);
_subBGList[0].SetActive(false);
_subBGList[1].SetActive(false);
}
else
{
_bigBGList[0].SetActive(false);
_bigBGList[1].SetActive(true);
_subBGList[0].SetActive(false);
_subBGList[1].SetActive(true);
}
for(int index = 0; index < _titleIconlist.Count; index++)
{
_titleIconlist[index].SetActive(index + 1 == _Index);
}
if (_CurSelectType == _Index)
return;
_CurSelectType = _Index; //服务器要从1开始这边用来做下标要-1
for(int index = 0; index < _markIconList.Count; index++)
{
_markIconList[index].SetActive(index + 1 == _Index);
}
if (_Index != 1)
{
_bgIcon.overrideSprite = _bgIconlist[_CurSelectType - 1];
StartCoroutine(ShowPage());
}
}
private int _clickWait;
IEnumerator ShowPage()
{
yield return new WaitForEndOfFrame();
var _typeDic = TableManager.GetInteractionNode();
//初始化Item
Tab_InteractionNode node;
if (_typeDic.TryGetValue(_CurSelectType, out node))
{
var array = new[]{ node };
_nodeItemContainer.InitContentItem(array);
}
var interactionSummaryTab = TableManager.GetInteractionSummaryByID(_CurSelectType, 0);
if (interactionSummaryTab == null)
yield break;
_clickWait = interactionSummaryTab.CD;
_finalRewDesc.text = interactionSummaryTab.Title;
List<InteractionRewItem.InteractionRewItemData> _finalRewList = new List<InteractionRewItem.InteractionRewItemData>();
for (int index = 0; index < interactionSummaryTab.getRewardCount(); index++)
{
_finalRewList.Add(new InteractionRewItem.InteractionRewItemData(
interactionSummaryTab.GetRewardbyIndex(index), interactionSummaryTab.GetNumbyIndex(index)));
}
_finalRewContainer.InitContentItem(_finalRewList);
for(int index = 0; index < interactionSummaryTab.getInteractionBtnCount(); index++)
{
_btnList[index].SetActive(!interactionSummaryTab.GetInteractionBtnbyIndex(index).Equals("-1"));
_btnDesc[index].text = interactionSummaryTab.GetInteractionBtnbyIndex(index);
}
ReqInteractionState();
yield break;
}
public void OnIneractionBtnClick(int index)
{
if (GlobalData._InteractionLastMessageTime == 0) //第一次点击
{
GlobalData._InteractionLastMessageTime = Time.realtimeSinceStartup;
}
else //第二次判断时差
{
if(Time.realtimeSinceStartup - GlobalData._InteractionLastMessageTime >= _clickWait)
{
GlobalData._InteractionLastMessageTime = Time.realtimeSinceStartup;
}
else
{
GUIData.AddNotifyData("#{1076}");
return;
}
}
ReqInteractionPublishInfo req = new ReqInteractionPublishInfo();
req._type = _CurSelectType;
req._strIndex = index + 1;
req.SendMsg();
//打开对应界面
StartCoroutine(ShowFunctionPage());
}
IEnumerator ShowFunctionPage()
{
yield return new WaitForEndOfFrame();
switch (_CurSelectType - 1)
{
case 0:
UIManager.ShowUI(UIInfo.MarryRoot);
break;
case 1: //师徒
StopAllCoroutines();
StartCoroutine(ShowFunction(1));
break;
case 2://结义
StopAllCoroutines();
StartCoroutine(ShowFunction(2));
break;
}
yield break;
}
IEnumerator ShowFunction(int index)
{
yield return new WaitForEndOfFrame();
switch(index)
{
case 1: //师徒
UIManager.ShowUI(UIInfo.FriendAndMail, delegate (bool bSucess, object param) {
FriendAndMailRoot.Instance()._TagPanel.ShowPage(2); //师徒
});
break;
case 2://结义
UIManager.ShowUI(UIInfo.FriendAndMail, delegate (bool bSucess, object param) {
FriendAndMailRoot.Instance()._TagPanel.ShowPage(1); //结义
});
break;
}
yield break;
}
public void ReqInteractionState()
{
ReqInteraction req = new ReqInteraction();
req._type = _CurSelectType;
req.SendMsg();
}
private RetInteractionState _nodeItemSatePacket;
private Dictionary<int, int> _nodeItemStateDic = new Dictionary<int, int>();
public void OnStatePacket(RetInteractionState packet)
{
_nodeItemSatePacket = packet;
RefreshMenuitemRedIconState();
if(packet._type == 1)
{
if (MarryInteractionPanelCtr.Instance)
MarryInteractionPanelCtr.Instance.OnPacket(packet);
return;
}
RefreshFinalRewState();
for (int index = 0; index < packet._itemStateList.Count; index++)
{
if (_nodeItemStateDic.ContainsKey(packet._itemStateList[index]._nodeId))
{
_nodeItemStateDic[packet._itemStateList[index]._nodeId] = packet._itemStateList[index]._state;
}
else
{
_nodeItemStateDic.Add(packet._itemStateList[index]._nodeId, packet._itemStateList[index]._state);
}
}
var dictionary = TableManager.GetInteractionNode();
Tab_InteractionNode node;
if (dictionary.TryGetValue(_CurSelectType, out node))
{
var array = new[] { node };
_nodeItemContainer.InitContentItem(array);
}
_nodeItemContainer.ForeachActiveItem<InteractionItem>((item) => {
for (int index = 0; index < packet._itemStateList.Count; index++)
{
if (item._interactionNodeId == packet._itemStateList[index]._nodeId)
{
item.InitState(packet._itemStateList[index]._state);
}
}
});
}
public void RefreshFinalRewState()
{
_finalRewRedIcon.SetActive(_nodeItemSatePacket._extraRewState == 1);
}
public void RefreshMenuitemRedIconState()
{
for(int index = 0; index < _nodeItemSatePacket._pageState.Count; index++)
{
_menuItemRedIconList[index].SetActive(_nodeItemSatePacket._pageState[index] == 1);
}
}
public void OnFinalRewGetBtnClick()
{
ReqGetInteractionRew req = new ReqGetInteractionRew();
req._type = _CurSelectType;
req._nodeId = 0; //特殊值
req.SendMsg();
}
public void OnCloseBtnClick()
{
UIManager.CloseUI(UIInfo.InteractionPanel);
}
}