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> menuDict = new Dictionary>(); foreach (var targetTab in targetTabs) { if (!menuDict.ContainsKey(targetTab.ClassName)) { menuDict.Add(targetTab.ClassName, new List()); } 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); } }