Files
JJBB/Assets/Project/Script/GUI/Interaction/InteractionPanelCtr.cs
2024-08-23 15:49:34 +08:00

283 lines
8.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}