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

528 lines
16 KiB
C#
Raw Permalink 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 UnityEngine;
using UnityEngine.UI;
using System.Collections;
using GCGame;
using System.Collections.Generic;
using Module.Log;
using Games.LogicObj;
using Games.GlobeDefine;
using GCGame.Table;
using Games.UserCommonData;
using Games.Events;
using Games.Mission;
using Games.Item;
public class FunctionExLogic : UIControllerBase<FunctionExLogic>
{
public GameObject _DetailPanle;
public GameObject _OpenBtn;
public GameObject _CloseBtn;
public Animator _OpenBtnAnimator;
public BtnList _BtnList;
public Animator _GridPanel;
public bool _IsBtnShow = false;
public Transform _backTransform; //背包位置
public void OnEnable()
{
SetInstance(this);
UpdateRedTips();
}
//private void Update()
//{
// if(Input.GetKeyDown(KeyCode.V))
// {
// LogModule.ErrorLog("Test !!!");
// AdvanceBase.ReqAllAdvanceInfo();
// }
//}
public void OnDisable()
{
SetInstance(null);
}
public void Start()
{
ShowDetail(false);
}
public void OnBtnShow()
{
if (_IsBtnShow)
{
ShowDetail(false);
}
else
{
ShowDetail(true);
}
}
public void ShowDetail(bool show)
{
if (show)
{
if (_OpenBtnAnimator.gameObject.activeSelf)
_OpenBtnAnimator.Play("Show");
//_BtnList.ShowBtns();
if (_GridPanel.gameObject.activeSelf)
_GridPanel.Play("ShowLeft");
if (_GridPanel.GetComponent<CanvasGroup>() != null)
{
_GridPanel.GetComponent<CanvasGroup>().interactable = true;
}
if (SkillBarLogic.Instance())
{
SkillBarLogic.Instance().HideSkillBar();
}
//if (_BtnList._IsBtnTooMuch)
//{
// if (ChatFrameLogic.Instance())
// {
// ChatFrameLogic.Instance().HideChatFrame();
// }
// if (ExtraFunTipRoot.Instance())
// {
// ExtraFunTipRoot.Instance().HideBtnTips();
// }
//}
}
else
{
if (_OpenBtnAnimator.gameObject.activeSelf)
_OpenBtnAnimator.Play("Hide");
//_BtnList.ShowBtns();
if (_GridPanel.gameObject.activeSelf)
_GridPanel.Play("HideLeft");
if (SkillBarLogic.Instance())
{
SkillBarLogic.Instance().ShowSkillBar();
}
if (_GridPanel.GetComponent<CanvasGroup>() != null)
{
_GridPanel.GetComponent<CanvasGroup>().interactable = false;
}
//if (_BtnList._IsBtnTooMuch)
//{
// if (ChatFrameLogic.Instance())
// {
// ChatFrameLogic.Instance().ShowChatFrame();
// }
// if (ExtraFunTipRoot.Instance())
// {
// ExtraFunTipRoot.Instance().ShowBtnTips();
// }
//}
}
_IsBtnShow = show;
EventDelayOperation();
}
//处理一些收到协议的时候还没有打开UI的问题
//使用在GlobalData中缓存的数据进行刷新
void EventDelayOperation()
{
ShowRedIcon(FUNCTIONTYPE.CHILD, GameManager.gameManager.PlayerDataPool.ChildData._IsShowIconRedState);
}
public GameObject GetBtn(string name, bool isGetHide = false)
{
if (_IsBtnShow || isGetHide)
{
foreach (var btn in _BtnList._Btns)
{
if(btn.gameObject.name.Equals(name))
{
return btn.gameObject;
}
}
}
return null;
}
public void OnBackPackClick()
{
UIManager.ShowUI(UIInfo.BackPackRoot);
}
public void OnSoulClick()
{
UIManager.ShowUI(UIInfo.MeridiaSoulWnd);
}
public void OnRankClick()
{
UIManager.ShowUI(UIInfo.RankRoot);
}
public void OnChildClick()
{
UIManager.ShowUI(UIInfo.ChildPanel);
}
public void OnPetClick()
{
UIManager.ShowUI(UIInfo.PetMainWndPath, delegate (bool bSuccess, object param)
{
if (bSuccess && PetMainWnd.Instance != null)
{
PetMainWnd.Instance.ShowPage(0, 0);
}
});
}
public void OnMagicClick()
{
UIManager.ShowUI(UIInfo.MagicWndPath);
}
public void OnSkillClick()
{
UIManager.ShowUI(UIInfo.SkillInfo);
}
public void OnAdvanceBtnClick(int type)
{
if (!AdvanceCanadvanceCtr.GetInstance().IsAdvanceFuncOpen(type))
{
//CG_REQ_ADVANCE req = (CG_REQ_ADVANCE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE);
//req.SetOptionType((int)AdvanceBase.ReqType.ADVANCE_OPTION);
//req.SetType((int)type);
//req.SetParam1(1); //自动购买
//req.SetParam2(0);
//req.SendPacket();
}
UIManager.ShowUI(UIInfo.AdvanceMountPanel, delegate (bool bSucess, object param)
{
if (bSucess)
{
AdvanceMountPanelCtr.Instance.SetAdvanceType(type);
}
});
}
public void OnGodWeaponClick()
{
UIManager.ShowUI(UIInfo.AdvanceMountPanel, delegate (bool bSucess, object param)
{
if (bSucess)
{
AdvanceMountPanelCtr.Instance.SetAdvanceType((int)AdvanceBase.AdvanceType.Piano);
}
});
}
//打开帮会窗口
public void OnGuildClick()
{
if (GameManager.gameManager.PlayerDataPool.IsHaveGuild() == true)
{
UIManager.ShowUI(UIInfo.GuildMainInfoWnd);
}
else
{
UIManager.ShowUI(UIInfo.GuildMainWnd);
}
}
public void OnActivityCick()
{
UIManager.ShowUI(UIInfo.Activity);
}
public void OnEquipClick()
{
UIManager.ShowUI(UIInfo.EquipEnhance);
}
public void OnBtnMarryClick()
{
UIManager.ShowUI(UIInfo.MarryRoot);
}
#region
public enum RedType //对应FunctionOpen
{
Equip = 1, // 锻造
Skill, // 技能
Pet, //宠物
GuildRed, // 帮派
Marry, // 婚姻
MeridiaSoul, // 境界
Magic, // 法宝
Ride, //坐骑
Piano, // 竖琴
Wing, // 翅膀
Qilinbi, //麒麟臂
Soul, // 魂器
Mask, // 面具
Huopao, //火炮
}
//public GameObject[] RedTipPoints;
public List<BtnFunc> _BtnFuncList;
public GameObject _RedTipTotal;
/// <summary>
/// 设置左侧菜单红点信息
/// </summary>
/// <param name="redType"></param>
/// <param name="state"></param>
public void SetRedTipState(RedType redType, bool state)
{
int index = (int)redType - 1;
if (_BtnFuncList.Count <= index)
return;
if (_BtnFuncList[index] == null)
return;
BtnFunc itemFunc = null;
for (int _Index = 0; _Index < _BtnFuncList.Count; _Index++)
{
if (_BtnFuncList[_Index]._functionOpenId == (int)redType)
{
itemFunc = _BtnFuncList[_Index];
break;
}
}
if (itemFunc == null)
return;
switch (redType)
{
case RedType.GuildRed:
{
bool canShowRedPoint = false;
// 职位是否可以接收红点
GameDefine_Globe.GUILD_JOB myJob = (GameDefine_Globe.GUILD_JOB)GameManager.gameManager.PlayerDataPool.GuildInfo.GuildJob;
if (myJob == GameDefine_Globe.GUILD_JOB.CHIEF
|| myJob == GameDefine_Globe.GUILD_JOB.VICE_CHIEF
|| myJob == GameDefine_Globe.GUILD_JOB.TANGZHU
|| myJob == GameDefine_Globe.GUILD_JOB.XIANGZHU)
{
canShowRedPoint = true;
}
bool hasApply = GameManager.gameManager.PlayerDataPool.GuildInfo.GuildApplyList.Count > 0 ? true : false;
itemFunc.ShowRedIcon(hasApply && canShowRedPoint);
}
break;
default:
if (itemFunc.IsBtnOpen())
{
itemFunc.ShowRedIcon(state);
}
else
{
if (redType >= RedType.Ride && redType <= RedType.Huopao)
{
var functioniOpenTab = TableManager.GetFunctionOpenByID((int)redType, 0);
if (functioniOpenTab.OpenLevel != 0)
{
if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= functioniOpenTab.OpenLevel
&& (GameManager.gameManager.PlayerDataPool.FunctionOpenState.ContainsKey((int)redType)
&& GameManager.gameManager.PlayerDataPool.FunctionOpenState[(int)redType])
&& GameManager.gameManager.PlayerDataPool.m_AdvanceData.GetAdvanceLevel((int)redType - 8) == 0)
{
itemFunc.ShowRedIcon(true);
}
else
itemFunc.ShowRedIcon(false);
}
else
{
if (Guide.Instance._FinishGuideID >= functioniOpenTab.ShowGUIDId
&& (GameManager.gameManager.PlayerDataPool.FunctionOpenState.ContainsKey((int)redType)
&& GameManager.gameManager.PlayerDataPool.FunctionOpenState[(int)redType])
&& GameManager.gameManager.PlayerDataPool.m_AdvanceData.GetAdvanceLevel((int)redType - 8) == 0)
{
itemFunc.ShowRedIcon(true);
}
else
itemFunc.ShowRedIcon(false);
}
}
else
itemFunc.ShowRedIcon(false);
}
break;
}
for(int _btnFuncItemIndex = 0; _btnFuncItemIndex <_BtnFuncList.Count; _btnFuncItemIndex++)
{
if(_BtnFuncList[_btnFuncItemIndex]._RedIcon
&&_BtnFuncList[_btnFuncItemIndex]._RedIcon.activeSelf)
{
_RedTipTotal.SetActive(true);
return;
}
}
_RedTipTotal.SetActive(false);
}
//单独状态控制(这边忽略了功能是否开启以及是否完成了对应指引任务)
//例如子女,只有有了子女才有状态,有状态的时候一定是开启的
public void ShowRedIcon(FUNCTIONTYPE type, bool isShow)
{
var funcId = (int)type;
if(BtnList.Instance)
{
for(int index = 0; index < BtnList.Instance._Btns.Length; index++)
{
if(BtnList.Instance._Btns[index]._functionOpenId == funcId)
{
BtnList.Instance._Btns[index].ShowRedIcon(isShow);
return;
}
}
}
}
/// <summary>
/// 设置进阶项Icon红点状态
/// </summary>
/// <param name="advanceType">进阶类型AdvanceBase.AdvanceType</param>
/// <param name="state">状态</param>
public void SetAdvanceRedTipState(AdvanceBase.AdvanceType advanceType, bool state)
{
int realType = -1;
switch (advanceType)
{
case AdvanceBase.AdvanceType.Ride: realType = (int)RedType.Ride; break;
case AdvanceBase.AdvanceType.Piano: realType = (int)RedType.Piano; break;
case AdvanceBase.AdvanceType.Wing: realType = (int)RedType.Wing; break;
case AdvanceBase.AdvanceType.Qilinbi: realType = (int)RedType.Qilinbi; break;
case AdvanceBase.AdvanceType.Soul: realType = (int)RedType.Soul; break;
case AdvanceBase.AdvanceType.Mask: realType = (int)RedType.Mask; break;
case AdvanceBase.AdvanceType.Huopao: realType = (int)RedType.Huopao; break;
}
if (realType != -1)
{
SetRedTipState((RedType)realType, state);
}
}
public void UpdateRedTips()
{
EquipEnhanceRoot.UpdateFucntionPanel();
}
public GameObject _BackPackFullTip1;
public GameObject _BackPackFullTip2;
public void UpdateBackPackFull()
{
GameItemContainer BackPack = GameManager.gameManager.PlayerDataPool.BackPack;
if (BackPack.GetCanContainerSize() == 0)
{
_BackPackFullTip1.SetActive(true);
_BackPackFullTip2.SetActive(true);
}
else
{
_BackPackFullTip1.SetActive(false);
_BackPackFullTip2.SetActive(false);
}
}
public void OnSettingBtnClick()
{
UIManager.ShowUI(UIInfo.SystemAndAutoFight);
}
#endregion
#region funOpen
public BtnFunc _EquipFunc;
#endregion
#region OnFunctionbtnClick
public enum FUNCTIONTYPE
{
EQUIP = 1,
SKILL,
PET,
GUILD,
MARRY,
SOUL,
FABAO,
ADVANCEMOUNT, // 坐骑
ADVANCEGODWEAPON, // 神石 -> 竖琴
ADVANCEWING, // 翅膀
ADVANCERING, // 神环 -> 神戒
ADVANCESOUL, // 王冠 -> 魂器
ADVANCEMASK, // 面具
ADVANCEHUOPAO, // 战旗 -> 火炮
RANK,
CHILD = 20, //子女养成
}
public void OnFunctionBtnClick(int functionOpenTabId)
{
StartCoroutine(ShowFunctionPanel(functionOpenTabId));
}
IEnumerator ShowFunctionPanel(int functionOpenTabId)
{
yield return new WaitForEndOfFrame();
switch (functionOpenTabId)
{
case (int)FUNCTIONTYPE.EQUIP:
OnEquipClick();
break;
case (int)FUNCTIONTYPE.SKILL:
OnSkillClick();
break;
case (int)FUNCTIONTYPE.PET:
OnPetClick();
break;
case (int)FUNCTIONTYPE.GUILD:
OnGuildClick();
break;
case (int)FUNCTIONTYPE.MARRY:
OnBtnMarryClick();
break;
case (int)FUNCTIONTYPE.SOUL:
OnSoulClick();
break;
case (int)FUNCTIONTYPE.FABAO:
OnMagicClick();
break;
case (int)FUNCTIONTYPE.ADVANCEMOUNT:
case (int)FUNCTIONTYPE.ADVANCEWING:
case (int)FUNCTIONTYPE.ADVANCEMASK:
case (int)FUNCTIONTYPE.ADVANCEGODWEAPON:
case (int)FUNCTIONTYPE.ADVANCERING:
case (int)FUNCTIONTYPE.ADVANCEHUOPAO:
case (int)FUNCTIONTYPE.ADVANCESOUL:
{
OnAdvanceBtnClick(functionOpenTabId - 8);
}
break;
case (int)FUNCTIONTYPE.RANK:
OnRankClick();
break;
case (int)FUNCTIONTYPE.CHILD:
OnChildClick();
break;
}
yield break;
}
#endregion
}