using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using Games.GlobeDefine; using GCGame; using Module.Log; using GCGame.Table; using System; using Games.Events; public class TeamCreateWindow : MonoBehaviour { public static TeamCreateWindow Instance; public void Awake() { Instance = this; InitSubMenu(); } public void Start() { //InitSubMenu(); } void OnEnable() { Instance = this; Hashtable hash = new Hashtable(); hash["name"] = "TeamCreateWindow"; MessageEventCallBack fun = SelectBtn; hash["callFun"] = fun; EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.SELECTTEAMCREATEWNDITEM, hash); GUIData.delNearbyTeampUpdate += UpdateNearbyTeam; GUIData.delTeamDataUpdate += UpdateTeamInfo; ReqNearbyTeam(_SelectDestIdx); ShowCaptainWelfareMarkIcon(GameManager.gameManager.PlayerDataPool.IsHaveCaptainWelfareRewCanGetted); GuideLogic.OnOpenUIStatic(UIInfo.TeamCreateRoot.name); UpdateAuto(); } public void SelectBtn(Hashtable addparam, Hashtable Sendparam) { int index = (int)Sendparam["index"]; var targetTab = TableManager.GetTeamTargetByID(index, 0); if (targetTab != null) { if(_SubMenu!=null) { _SubMenu.ShowMenu(targetTab, true); } } } void OnDisable() { Instance = null; GUIData.delNearbyTeampUpdate -= UpdateNearbyTeam; GUIData.delTeamDataUpdate -= UpdateTeamInfo; EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.SELECTTEAMCREATEWNDITEM, "TeamCreateWindow"); } #region menu public UISubScollMenu _SubMenu; public UIContainerBase _TeamContainer; public Button _BtnAuto; public Button _BtnCancelAuto; public UIButtonTime _BtnRefresh; private List _TeamList; public List TeamList { get { return _TeamList; } } private int _SelectDestIdx = 0; public void UpdateTeamInfo() { if (GameManager.gameManager.PlayerDataPool.TeamInfo.TeamID != GlobeVar.INVALID_ID) { BtnClose(); UIManager.ShowUI(UIInfo.TeamInfoRoot); return; } } private void InitSubMenu() { //GameManager.gameManager.PlayerDataPool.TeamInfo.AutoTeamTargetDest = -1; _SelectDestIdx = -1; 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); } _SubMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4070}")); foreach (var menu in menuDict) { if (menu.Value.Count == 1) { _SubMenu.PushMenu(menu.Value[0]); } else { _SubMenu.PushMenu(menu.Key, menu.Value.ToArray()); } } _SubMenu.ShowDefaultFirst(); } public void BtnMenu(object menuObj) { if (menuObj is string) { if ((menuObj as string) == StrDictionary.GetClientDictionaryString("#{4070}")) { ReqNearbyTeam(0); } _SelectDestIdx = -1; //_BtnAuto.interactable = false; return; } Tab_TeamTarget menuStr = menuObj as Tab_TeamTarget; LogModule.DebugLog("BtnMenu:" + menuStr); _SelectDestIdx = menuStr.Id; if (_SelectDestIdx > 0) { _BtnAuto.interactable = true; } //else //{ // _BtnAuto.interactable = false; //} if(_SelectDestIdx >= 0) ReqNearbyTeam(_SelectDestIdx); } public void BtnClose() { UIManager.CloseUI(UIInfo.TeamCreateRoot); } public void BtnRefresh() { LogModule.DebugLog("SelectID:" + _SelectDestIdx); ReqNearbyTeam(_SelectDestIdx); _BtnRefresh.SetBtnDisableTime(2); } public void BtnCreateTeam() { if (false == GameManager.gameManager.PlayerDataPool.IsHaveTeam() && null != Singleton.GetInstance().MainPlayer) { var playerLevel = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level; //GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMin = Mathf.Max(playerLevel - 5, 0); //GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMax = playerLevel; TeamTargetRoot.SetDefaultLevel(_SelectDestIdx, playerLevel); GameManager.gameManager.PlayerDataPool.TeamInfo.CreaetTeam(GameManager.gameManager.PlayerDataPool.TeamInfo.AutoTeamTargetDest, GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMin, GameManager.gameManager.PlayerDataPool.TeamInfo.LastTeamLevelMax); } } public void BtnAuto() { if (_SelectDestIdx > 0) { CG_ASK_AUTOTEAM packet = (CG_ASK_AUTOTEAM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_AUTOTEAM); packet.Desid = _SelectDestIdx; packet.SendPacket(); } else { GUIData.AddNotifyData("#{7183}"); return; } GameManager.gameManager.PlayerDataPool.TeamInfo.AutoTeamTargetDest = _SelectDestIdx; _SubMenu.Refresh(); _BtnAuto.gameObject.SetActive(false); _BtnCancelAuto.gameObject.SetActive(true); if (MissionDialogAndLeftTabsLogic.Instance()) { MissionDialogAndLeftTabsLogic.Instance().UpdateAutoTip(); } } public void OnBtnCancelAuto() { GameManager.gameManager.PlayerDataPool.TeamInfo.AutoTeamTargetDest = -1; _SubMenu.Refresh(); CG_ASK_UN_AUTOTEAM packet = (CG_ASK_UN_AUTOTEAM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_UN_AUTOTEAM); packet.None = 0; packet.SendPacket(); _BtnAuto.gameObject.SetActive(true); _BtnCancelAuto.gameObject.SetActive(false); if (MissionDialogAndLeftTabsLogic.Instance()) { MissionDialogAndLeftTabsLogic.Instance().UpdateAutoTip(); } } public void UpdateAuto() { _SubMenu.Refresh(); if (GameManager.gameManager.PlayerDataPool.TeamInfo.IsAutoTeam) { _BtnAuto.gameObject.SetActive(false); _BtnCancelAuto.gameObject.SetActive(true); } else { _BtnAuto.gameObject.SetActive(true); _BtnCancelAuto.gameObject.SetActive(false); } } #endregion #region TeamInfo //请求附近队伍 void ReqNearbyTeam(int destID) { //发送给服务器请求 CG_REQ_NEAR_LIST packet = (CG_REQ_NEAR_LIST)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_NEAR_LIST); if (destID > 0) { packet.IsNearPlayerList = 0; packet.Desid = destID; } else { packet.IsNearPlayerList = 0; packet.Desid = -1; } packet.SendPacket(); _TeamContainer.InitContentItem(null); } //更新附近队伍 public void UpdateNearbyTeam(GC_NEAR_TEAMLIST packet) { LogModule.DebugLog("Update UpdateNearbyTeam"); if (null == packet) { return; } _TeamList = new List(); int idCount = packet.GuidCount; for (int i = 0; i < idCount; i++) { TeamInfo team = new TeamInfo(); team.Guid = packet.GetGuid(i); team.Name = packet.GetName(i); team.Level = packet.GetLevel(i); team.Profession = packet.GetProf(i); team.CombatNum = packet.GetCombatNum(i); team.TeamID = packet.GetTeamID(i); team.DesID = packet.GetDesID(i); team.MemberNum = packet.GetMemberNum(i); _TeamList.Add(team); } _TeamContainer.InitContentItem(_TeamList); } #endregion #region captainWelfare public UnityEngine.UI.Image _redIcon; public void OnCaptainWelfareBtn() { UIManager.ShowUI(UIInfo.CaptainWelfare); } public void ShowCaptainWelfareMarkIcon(bool isShow) { if(_redIcon != null) _redIcon.gameObject.SetActive(isShow); } #endregion }