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

309 lines
8.6 KiB
C#

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<TeamInfo> _TeamList;
public List<TeamInfo> 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<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);
}
_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<ObjManager>.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<TeamInfo>();
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
}