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

764 lines
21 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 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
}