Files
JJBB/Assets/Project/Script/GUI/Team/TeamTargetRoot.cs

208 lines
6.0 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using GCGame.Table;
public class TeamTargetRoot : MonoBehaviour
{
#region static call
private static TeamTargetRoot m_Instance;
public static TeamTargetRoot Instance()
{
return m_Instance;
}
public void Awake()
{
m_Instance = this;
}
public static void ShowTeamTarget(SelectTeamTarget selectTeamTarget)
{
Hashtable hash = new Hashtable();
hash.Add("SelectTeamTarget", selectTeamTarget);
UIManager.ShowUI(UIInfo.TeamTargetRoot, ShowUIOver, hash);
}
public static void ShowUIOver(bool sucess, object param)
{
Hashtable hash = param as Hashtable;
if (param == null)
return;
SelectTeamTarget selectTeamTarget = (SelectTeamTarget)hash["SelectTeamTarget"];
TeamTargetRoot.Instance().ShowUI(selectTeamTarget);
}
public static void SetDefaultLevel(int targetID, int level)
{
var levelMin = level - 10;
var levelMax = level + 10;
var targetTabs = TableManager.GetTeamTargetByID(targetID, 0);
if (targetTabs == null || level < targetTabs.MinLV)
{
GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMin = 0;
GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMax = 0;
GameManager.gameManager.PlayerDataPool.TeamInfo.AutoTeamTargetDest = -1;
if (targetTabs != null)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5169}"));
}
return;
}
levelMin = Mathf.Max(targetTabs.MinLV, levelMin);
levelMax = Mathf.Min(targetTabs.MaxLv, levelMax);
GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMin = levelMin;
GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMax = levelMax;
GameManager.gameManager.PlayerDataPool.TeamInfo.AutoTeamTargetDest = targetID;
}
#endregion
public delegate void SelectTeamTarget(Tab_TeamTarget target, int levelMin, int levelMax);
private SelectTeamTarget _SelectTeamTarget;
public UISubScollMenu _SubMenu;
public UIDialPanel _LevelMin;
public UIDialPanel _LevelMax;
private bool _InitUI = false;
private int _SelectMin = 0;
private int _SelectMax = 0;
public void ShowUI(SelectTeamTarget selectTeamTarget)
{
_SelectMin = GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMin;
_SelectMax = GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMax;
if (_SelectMin < 0)
{
_SelectMin = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level - 10;
}
if (_SelectMax < 0)
{
_SelectMax = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level + 10;
}
if (_InitUI)
{
_SubMenu.Refresh();
_LevelMin.SetSelectNum(_SelectMin);
_LevelMax.SetSelectNum(_SelectMax);
return;
}
_InitUI = true;
_SelectTeamTarget = selectTeamTarget;
var targetTabs = TableManager.GetTeamTarget().Values;
Dictionary<string, List<Tab_TeamTarget>> menuDict = new Dictionary<string, List<Tab_TeamTarget>>();
foreach (var targetTab in targetTabs)
{
if (!menuDict.ContainsKey(targetTab.ClassName))
{
menuDict.Add(targetTab.ClassName, new List<Tab_TeamTarget>());
}
menuDict[targetTab.ClassName].Add(targetTab);
}
foreach (var menu in menuDict)
{
if (menu.Value.Count == 1)
{
_SubMenu.PushMenu(menu.Value[0]);
}
else
{
_SubMenu.PushMenu(menu.Key, menu.Value.ToArray());
}
}
Tab_TeamTarget tartTab = TableManager.GetTeamTargetByID(GameManager.gameManager.PlayerDataPool.TeamInfo.AutoTeamTargetDest, 0);
if (tartTab == null)
{
_SubMenu.ShowDefaultFirst();
}
else
{
if (menuDict.ContainsKey(tartTab.ClassName))
{
if (menuDict[tartTab.ClassName].Count == 1)
{
_SubMenu.ShowMenu(tartTab);
}
else
{
_SubMenu.ShowMenu(tartTab.ClassName, tartTab);
}
}
else
{
_SubMenu.ShowDefaultFirst();
}
}
}
public void BtnMenu(object menuObj)
{
Tab_TeamTarget menuStr = menuObj as Tab_TeamTarget;
if (menuStr == null)
return;
_LevelMin.InitNum(menuStr.MinLV, menuStr.MaxLv);
_LevelMax.InitNum(menuStr.MinLV, menuStr.MaxLv);
int levelMin = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level - 10;
int levelMax = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level + 10;
_LevelMin.SetSelectNum(Mathf.Max(menuStr.MinLV, levelMin));
_LevelMax.SetSelectNum(Mathf.Min(menuStr.MaxLv, levelMax));
}
public void OnBtnEnsure()
{
_SelectMin = _LevelMin.GetSelectedNum();
_SelectMax = _LevelMax.GetSelectedNum();
var target1 = _SubMenu.SelectedSub1;
var target2 = _SubMenu.SelectedSub2;
Tab_TeamTarget target;
if (target2 != null)
{
target = target2 as Tab_TeamTarget;
}
else
{
target = target1 as Tab_TeamTarget;
}
_SelectTeamTarget(target, _SelectMin, _SelectMax);
UIManager.CloseUI(UIInfo.TeamTargetRoot);
// 在确认完毕后需要自动点击“自动匹配”
TeamInfoWindow.Instance().EnsureAutoTeam();
}
public void OnBtnClose()
{
UIManager.CloseUI(UIInfo.TeamTargetRoot);
}
public void OnHelp()
{
MessageHelpLogic.ShowHelpMessage(11);
}
}