Files
JJBB/Assets/Project/Script/GUI/Other/FunctionExLogic.cs

528 lines
16 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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
}