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

764 lines
21 KiB
C#
Raw Permalink Normal View History

2024-08-23 15:49:34 +08:00

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using GCGame.Table;
using Games.Mission;
using Games.Events;
using Games.LogicObj;
using Module.Log;
using GCGame;
using Games.GlobeDefine;
using UnityEngine.UI;
public class MissionDialogAndLeftTabsLogic : MonoBehaviour
{
//private void Awake()
//{
// var windowSign = this.gameObject.GetComponent<WindowSign>();
// if (windowSign == null)
// windowSign = this.gameObject.AddComponent<WindowSign>();
// windowSign.Init((int)UIInfo.MissionDialogAndLeftTabsRoot.uiType);
//}
private static MissionDialogAndLeftTabsLogic m_Instance = null;
public static MissionDialogAndLeftTabsLogic Instance()
{
return m_Instance;
}
public static UIPathData m_SwitchIndex = null;
public static void SetSwitch(UIPathData data)
{
m_SwitchIndex = data;
}
public int CurGoingMissionType = -1;
public GameObject m_Anchor;
public void HideMissionDialog(bool state)
{
m_Anchor.SetActive(state);
if (state)
{
ShowDefaultToggle(_IsShowFirst);
GameManager.gameManager.MissionManager.NotifyMissionUI(-1, null);
}
}
public bool _IsShowFirst = true;
public void SetSwitchBtn(bool state = true)
{
GuildWarInfoBtn.gameObject.SetActive(state);
if (!state)
{
_IsShowFirst = true;
if (m_SwitchIndex != null)
UIManager.CloseUI(m_SwitchIndex);
m_SwitchIndex = null;
HideMissionDialog(true);
}
else
{
_IsShowFirst = false;
ShowDefaultToggle(_IsShowFirst);
}
}
void OnEnable()
{
if (m_SwitchIndex != null)
{
HideMissionDialog(false);
}
else
{
HideMissionDialog(true);
}
m_Instance = this;
GuildWarInfoBtn.gameObject.SetActive(false);
StartCoroutine(InitMissionTips());
_BtnHide.SetActive(true);
ShowFuncPreview();
ShowDefaultToggle(_IsShowFirst);
ShowCaptainRewDot(GameManager.gameManager.PlayerDataPool.IsHaveCaptainWelfareRewCanGetted);
ShowTeamRedIcon(false); //默认不显示
}
public void ShowDefaultToggle(bool state = true)
{
_TagPanel._Tags[0].isOn = state;
_TagPanel._Tags[1].isOn = (!state);
}
public void ShowFuncPreview()
{
if (FunctionPreviewCtr.Instance)
{
FunctionPreviewCtr.Instance.GetLastCompleteMainMissionId();
FunctionPreviewCtr.Instance.OnMissionComplteOver();
}
}
void OnDisable()
{
m_Instance = null;
m_SwitchIndex = null;
}
void Start()
{
InitMissionFollow();
}
private void Update()
{
//UpdateTeamFriendTip();
}
public void Click_ShowGuildWar()
{
UIManager.ShowUI(m_SwitchIndex);
}
public void OnTagPage(int page)
{
if (page == 0)
{
_MissionLogBtn.SetActive(true);
_TeamInfoBtn.SetActive(false);
InitMissionFollow();
titleList[0].text = StrDictionary.GetClientDictionaryString("#{42506}"); //"<color=#17292a>任务</color>";
titleList[1].text = StrDictionary.GetClientDictionaryString("#{42507}"); //"<color=#ffffff>组队</color>";
}
else
{
_MissionLogBtn.SetActive(false);
_TeamInfoBtn.SetActive(true);
titleList[0].text = StrDictionary.GetClientDictionaryString("#{42508}"); //"<color=#ffffff>任务</color>";
titleList[1].text = StrDictionary.GetClientDictionaryString("#{42509}"); //"<color=#17292a>组队</color>";
UpdateTeamInfo();
_TeamSpeakPanel.SetActive(false);
}
}
private int CurGoingMissionId = -1; //用于指引 支线可以同时存在多个相同类型的任务
public void OnMissionItemClick(int missionId)
{
var missionBase = TableManager.GetMissionBaseByID(missionId, 0);
if (missionBase == null)
return;
if(CurGoingMissionType == (int)MISSIONTYPE.MISSION_GUIDE)
{
CurGoingMissionId = missionId;
}else
{
CurGoingMissionType = missionBase.MissionType; //点击的时候记录一次当前正在进行的类型,在切换场景之后可以选中
}
_MissionContainer.ForeachActiveItem<MissionItemLogic>(missionItem => {
missionItem.ShowEffect(missionItem.MissionID == missionId);
});
}
#region mission
public GameObject GuildWarInfoBtn;
public UITagPanel _TagPanel;
public GameObject _MissionLogBtn;
public GameObject _TeamInfoBtn;
public List<Text> titleList;
public UIContainerBase _MissionContainer;
// 更新所有任务UI
public void InitMissionFollow()
{
//UIManager.LoadItem(UIInfo.MissionItem, OnLoadMissionItem);
if (_MissionContainer.gameObject.activeInHierarchy)
{
//特殊场景:关宁
if (GameManager.gameManager.RunningScene == (int)GameDefine_Globe.SCENE_DEFINE.SCENE_GUANNING)
{
RefreshMissionInBattleField();
}
else
{
RefreshMissionOther();
}
}
}
public void RefreshMissionInBattleField()
{
var missionItems = GameManager.gameManager.MissionManager.GetClassifyMission();
if (missionItems.ContainsKey(MISSIONTYPE.MISSION_BATTLE))
{
_MissionContainer.InitContentItem(missionItems[MISSIONTYPE.MISSION_BATTLE]);
}
else
{
_MissionContainer.InitContentItem(null);
}
}
public void ClickOneMissionItem(int missionId)
{
_MissionContainer.ForeachActiveItem<MissionItemLogic>(item =>
{
item.ClickItem(item.MissionID == missionId);
});
}
public void RefreshMissionOther()
{
//InitMissionFollow();
var missionList = GameManager.gameManager.MissionManager.GetAllMissionID();
List<int> initMissionList = new List<int>();
for (int i = 0; i < missionList.Count; ++i)
{
var missionTab = TableManager.GetMissionBaseByID(missionList[i], 0);
if (missionTab.MissionType == (int)MISSIONTYPE.MISSION_BATTLE)
continue;
initMissionList.Add(missionList[i]);
}
_MissionContainer.InitContentItem(initMissionList);
if (CurGoingMissionId != -1)
{
_MissionContainer.ForeachActiveItem<MissionItemLogic>(item =>
{
item.ShowEffect(item.MissionID == CurGoingMissionId);
});
}
else if (CurGoingMissionType != -1
&& CurGoingMissionType != (int)MISSIONTYPE.MISSION_GUIDE
&& CurGoingMissionType != (int)MISSIONTYPE.MISSION_BRANCH)
{
_MissionContainer.ForeachActiveItem<MissionItemLogic>(item =>
{
var missionBase = TableManager.GetMissionBaseByID(item.MissionID, 0);
if (missionBase == null)
{
item.ShowEffect(false);
}
else
{
item.ShowEffect(missionBase.MissionType == CurGoingMissionType
&& missionBase.MissionType != (int)MISSIONTYPE.MISSION_GUIDE);
}
});
}
else
{
_MissionContainer.ForeachActiveItem<MissionItemLogic>(item =>
{
item.ShowEffect(false);
});
}
//ID只属于那种支线任务刷新的时候不跑特效也可以
CurGoingMissionId = -1; //Id要置空
}
bool UpdateMissionItem(int nMissionID)
{
InitMissionFollow();
return true;
}
// 更新任务信息UI操作
public void UpDateMissionFollow(int nMissionID, string strOpt)
{
InitMissionFollow();
}
public void CloseMissionInfoRoot()
{
UIManager.CloseUI(UIInfo.MissionInfoController);
}
public void PlayTween(bool isIn)
{
gameObject.SetActive(!isIn);
}
public void OnBtnMissionLog()
{
UIManager.ShowUI(UIInfo.MissionLogRoot);
}
public void DisableMissionTag()
{
_TagPanel.ShowPage(1);
_TagPanel._Tags[0].interactable = false;
}
public void EnableMissionTag()
{
_TagPanel._Tags[0].interactable = true;
}
#endregion
#region Hide anim
private static Vector2 _ShowPos = new Vector2(0, 0);
private static Vector2 _HidePos = new Vector2(-335, 0);
public RectTransform _AnimPanel;
public GameObject _BtnHide;
//和帮战联赛的界面互斥
public void OpenGuildWar_Click()
{
UIManager.CloseUI(UIInfo.MissionDialogAndLeftTabsRoot);
UIManager.ShowUI(UIInfo.GuildWarLeftTab);
}
public void Init()
{
ShowPanel();
}
public Animator _ShowPanelAnim;
public Animator _ShowBtnAnim;
private bool _IsShowPanel = true;
public bool IsShowPanel
{
get
{
return _IsShowPanel;
}
}
public void OnBtnShow()
{
if (_IsShowPanel)
{
HidePanel();
}
else
{
ShowPanel();
}
}
public void ShowPanel()
{
_ShowPanelAnim.Play("Show");
_ShowBtnAnim.Play("Show");
_IsShowPanel = true;
}
public void HidePanel()
{
_ShowPanelAnim.Play("Hide");
_ShowBtnAnim.Play("Hide");
_IsShowPanel = false;
}
#endregion
#region team
public GameObject m_TeamButton;
public GameObject _AutoTeamTip;
public GameObject _TeamLeaderBtns;
public GameObject _TeamMemberBtns;
public GameObject _TeamMemberEnterFollow;
public GameObject _TeamMemberLeaveFollow;
public GameObject _TeamTarButtons;
public GameObject _TeamSpeakPanel;
public GameObject _TeamBtnAuto;
public GameObject _TeamBtnCancelAuto;
public void OnBtnTeamInfo()
{
if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID >= 0)
{
UIManager.ShowUI(UIInfo.TeamInfoRoot);
}
else
{
UIManager.ShowUI(UIInfo.TeamCreateRoot);
}
}
public void BtnCreateTeam()
{
if (false == GameManager.gameManager.PlayerDataPool.IsHaveTeam() &&
null != Singleton<ObjManager>.GetInstance().MainPlayer)
{
GameManager.gameManager.PlayerDataPool.TeamInfo.CreaetTeam(-1, -1, -1);
UIManager.ShowUI(UIInfo.TeamInfoRoot);
}
}
public void OpenTeamWindow()
{
//RelationLogic.OpenTeamWindow(RelationTeamWindow.TeamTab.TeamTab_NearPlayer);
UIManager.ShowUI(UIInfo.TeamCreateRoot);
}
public void UpdateTeamInfo()
{
_TeamTarButtons.SetActive(false);
if (m_TeamButton != null)
{
if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID >= 0)
{
m_TeamButton.SetActive(false);
if (GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain())
{
_TeamLeaderBtns.SetActive(true);
_TeamMemberBtns.SetActive(false);
if (GameManager.gameManager.PlayerDataPool.TeamInfo.GetTeamMemberCount() != GlobeVar.MAX_TEAM_MEMBER)
{
_TeamTarButtons.SetActive(true);
//if (GameManager.gameManager.PlayerDataPool.TeamInfo.IsAutoTeam)
//{
// _TeamBtnAuto.gameObject.SetActive(false);
// _TeamBtnCancelAuto.gameObject.SetActive(true);
//}
//else
//{
// _TeamBtnAuto.gameObject.SetActive(true);
// _TeamBtnCancelAuto.gameObject.SetActive(false);
//}
}
}
else
{
_TeamLeaderBtns.SetActive(false);
_TeamMemberBtns.SetActive(true);
if (GameManager.gameManager.PlayerDataPool.IsFollowTeam)
{
_TeamMemberEnterFollow.SetActive(false);
_TeamMemberLeaveFollow.SetActive(true);
}
else
{
_TeamMemberEnterFollow.SetActive(true);
_TeamMemberLeaveFollow.SetActive(false);
}
}
}
else
{
m_TeamButton.SetActive(true);
_TeamLeaderBtns.SetActive(false);
_TeamMemberBtns.SetActive(false);
}
}
UpdateAutoTip();
}
public void UpdateAutoTip()
{
if (Singleton<ObjManager>.GetInstance().MainPlayer == null)
return;
if (GameManager.gameManager.PlayerDataPool.TeamInfo.IsAutoTeam)
{
_AutoTeamTip.SetActive(true);
_TeamBtnAuto.gameObject.SetActive(false);
_TeamBtnCancelAuto.gameObject.SetActive(true);
}
else
{
_AutoTeamTip.SetActive(false);
_TeamBtnAuto.gameObject.SetActive(true);
_TeamBtnCancelAuto.gameObject.SetActive(false);
}
}
void LeaveTeamOnClick()
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{3181}"), "", LeaveTeamOK);
}
void LeaveTeamOK()
{
if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID != GlobeVar.INVALID_ID)
{
if (null != Singleton<ObjManager>.GetInstance().MainPlayer)
{
Singleton<ObjManager>.GetInstance().MainPlayer.ReqLeaveTeam();
}
}
}
public void BtnShowTeamInfo()
{
UIManager.ShowUI(UIInfo.TeamInfoRoot);
}
public void HandleSyncTeamInfo()
{
if (m_TeamButton != null)
{
if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID >= 0)
{
m_TeamButton.SetActive(false);
UpdateTeamInfo();
}
else
{
m_TeamButton.SetActive(true);
_TeamLeaderBtns.SetActive(false);
_TeamMemberBtns.SetActive(false);
}
}
}
public void BtnEnterTeamFollow()
{
Singleton<ObjManager>.GetInstance().MainPlayer.EnterTeamFollow();
}
public void BtnLeaveTeamFollow()
{
Singleton<ObjManager>.GetInstance().MainPlayer.LeaveTeamFollow();
}
public void OnBtnShowSpeakPanel()
{
if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID < 0)
return;
if (GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamDest > 0)
{
var teamTarget = TableManager.GetTeamTargetByID(GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamDest, 0);
if (teamTarget == null)
{
Debug.LogError("teamTarget IS NULL ID : " + GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamDest);
return;
}
if (teamTarget.TalkType == 2)
{
if (!GameManager.gameManager.PlayerDataPool.IsHaveGuild())
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{2941}"));
return;
}
GameManager.gameManager.PlayerDataPool.TeamInfo.SendTeamChat(GC_CHAT.CHATTYPE.CHAT_TYPE_GUILD);
return;
}
GameManager.gameManager.PlayerDataPool.TeamInfo.SendTeamChat(GC_CHAT.CHATTYPE.CHAT_TYPE_TEAM_INVITE);
}
else
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5147}"));
UIManager.ShowUI(UIInfo.TeamInfoRoot, (sucessed, param) =>
{
TeamInfoWindow.Instance().OnBtnModifyTarget();
});
return;
}
}
public void OnHideShowSpeakPanel()
{
_TeamSpeakPanel.SetActive(false);
}
public void OnBtnSpeakGuide()
{
if (GameManager.gameManager.PlayerDataPool.GuildInfo.GuildGuid == GlobeVar.INVALID_GUID)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{2941}"));
return;
}
GameManager.gameManager.PlayerDataPool.TeamInfo.SendTeamChat(GC_CHAT.CHATTYPE.CHAT_TYPE_GUILD);
OnHideShowSpeakPanel();
}
public void OnBtnSpeakWorld()
{
GameManager.gameManager.PlayerDataPool.TeamInfo.SendTeamChat(GC_CHAT.CHATTYPE.CHAT_TYPE_WORLD);
OnHideShowSpeakPanel();
}
public void OnBtnAuto()
{
if (GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamDest > 0)
{
GameManager.gameManager.PlayerDataPool.TeamInfo.SetAutoTeam(true);
}
else
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5147}"));
UIManager.ShowUI(UIInfo.TeamInfoRoot, (sucessed, param) =>
{
TeamInfoWindow.Instance().OnBtnModifyTarget();
});
return;
}
//_TeamBtnAuto.gameObject.SetActive(false);
//_TeamBtnCancelAuto.gameObject.SetActive(true);
}
public void OnBtnCancelAuto()
{
GameManager.gameManager.PlayerDataPool.TeamInfo.SetAutoTeam(false);
//_TeamBtnAuto.gameObject.SetActive(true);
//_TeamBtnCancelAuto.gameObject.SetActive(false);
}
//申请队长
public void OnBtnApplyLeader()
{
if (null == Singleton<ObjManager>.GetInstance().MainPlayer)
{
return;
}
CG_REQ_BECOME_TEAM_LEADER packet = (CG_REQ_BECOME_TEAM_LEADER)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_BECOME_TEAM_LEADER);
packet.Nilparam = 1;
packet.SendPacket();
}
#region captainwelfare
public Image _captainRewDot;
public void OnBtnCaptainWelfare()
{
UIManager.ShowUI(UIInfo.CaptainWelfare);
}
public void ShowCaptainRewDot(bool isShow)
{
_captainRewDot.gameObject.SetActive(false);
}
#endregion
#region team leader friend
public static int _TipSec = 300;
public float _StartTipCount;
public int _TipLastSec = -1;
public void UpdateTeamFriendTip()
{
if (Singleton<ObjManager>.Instance.MainPlayer == null)
return;
if (_StartTipCount > 0)
{
var lastTime = Time.time - _StartTipCount;
if (lastTime > _TipSec)
{
ShowAddFriendTip();
}
}
else
{
ShowAddFriendTip();
}
}
public void ShowAddFriendTip()
{
if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID < 0)
return;
if (GameManager.gameManager.PlayerDataPool.TeamInfo.IsCaptain())
return;
if (GameManager.gameManager.PlayerDataPool.FriendList.IsExist(GameManager.gameManager.PlayerDataPool.TeamInfo.teamMember[0].Guid))
return;
string tips = GCGame.Table.StrDictionary.GetClientDictionaryString("#{5157}", GameManager.gameManager.PlayerDataPool.TeamInfo.teamMember[0].MemberName);
_StartTipCount = Time.time;
object[] param = new object[] { GameManager.gameManager.PlayerDataPool.TeamInfo.teamMember[0].Guid };
MessageTips.OpenOKCancelBox((int)MessageTips.MsgType.Team, tips,true,
delegate (object[] objParam)
{
if (Singleton<ObjManager>.Instance.MainPlayer == null)
{
return;
}
AgreeFriend(objParam);
},
delegate (object[] objParam)
{
DisagreeFriend(objParam);
}
,
delegate (object[] objParam)
{
DisagreeFriend(objParam);
}
, param);
}
public void AgreeFriend(object[] objParam)
{
if (objParam.Length < 1)
return;
Singleton<ObjManager>.Instance.MainPlayer.ReqAddFriend((ulong)objParam[0]);
//_StartTipCount = -1;
}
public void TimeOutFriend(object[] objParam)
{
}
public void DisagreeFriend(object[] objParam)
{
}
#endregion
#endregion
#region mission check tips
public GameObject _RedDotTips;
public void UpdateRedDotTips()
{
_RedDotTips.SetActive(false);
//if (!GameManager.gameManager.MissionManager.IsMissionChecked())
//{
// _RedDotTips.SetActive(true);
//}
//else
//{
// _RedDotTips.SetActive(false);
//}
}
public IEnumerator InitMissionTips()
{
yield return new WaitForSeconds(5);
GameManager.gameManager.MissionManager.GetClassifyCanAcceptMission();
UpdateRedDotTips();
}
#endregion
#region
public GameObject _teamRedIcon;
public void ShowTeamRedIcon(bool isShow)
{
_teamRedIcon.SetActive(isShow);
}
#endregion
}