local UITownTeamGuide = UIViewClass() local TownCartManager = require "Battle/Logic/MainLoop/SyncMoveManager/TownCartManager" local CountryImg = { [1] = "gy_msz_wei.png", [2] = "gy_msz_shu.png", [3] = "gy_msz_wu.png", [4] = "gy_msz_qun.png", } function UITownTeamGuide:OnOpened(context) self:RegistSystemEvent(EventID.UI_Team_CreateTeam, self.RefreshTeamPanel) self:RegistSystemEvent(EventID.UI_Team_TeamInfoChange, self.RefreshTeamPanel) self:RegistSystemEvent(EventID.UI_Team_MemberInfoChange, self.RefreshTeamPanel) self:RegistSystemEvent(EventID.UI_Team_LeaveTeam, self.RefreshTeamPanel) self:RefreshTeamPanel() end function UITownTeamGuide:OnClosed() end function UITownTeamGuide:RefreshTeamPanel() self:RefreshPanelState() self:RefreshAllTeamMember() end function UITownTeamGuide:RefreshAllTeamMember() local memberInfo = MDL.Team.GetAllMembersInfo() for i, v in ipairs(self.group_Teammate) do local memberData = memberInfo[i] if memberData then self:RefreshSingleTeamMember(memberData, v) UIUtils.SetActive(v.btn_PlayerHead, true) UIUtils.SetActive(v.group_Empty, false) else CTL.Character.SetHeadEmpty(v.UIHeroHead95) UIUtils.SetActive(v.btn_PlayerHead, false) UIUtils.SetActive(v.group_Empty, true) end UIUtils.SetActive(v.img_Select, false) end end function UITownTeamGuide:RefreshSingleTeamMember(data, cell) local baseInfo = data.playerShowInfo CTL.Character.SetPortraitAndFrame(cell.UIHeroHead95, baseInfo.PortraitId, baseInfo.FrameId, baseInfo.level) UIUtils.SetCanvasSortingOrderByMainCanvas(cell.UIHeroHead95.effectUpCanvas, cell.UpCanvas, CTL.Character.UpOrder.Common) local isLeader = CTL.Team.IsTeamLeader(data.memberId) UIUtils.SetActive(cell.ico_Leader.gameObject, isLeader) UIUtils.SetActive(cell.ico_Legion.gameObject, false) UIUtils.SetActive(cell.lab_GuildName.gameObject, false) cell.lab_RoleName.text = MDL.Team.GetMemberNameById(data.memberId) local memberState = data.state UIUtils.SetActive(cell.state_Follow.gameObject, not isLeader and memberState == MDL.Team.MemberState.Following) UIUtils.SetActive(cell.img_OffLine.gameObject, memberState == MDL.Team.MemberState.Leave) --国家信息显示 local countryData = data.playerShowInfo.CountryId>0 and DataSheetManager.CountryBase:GetDataByID(data.playerShowInfo.CountryId) or nil if countryData then UIUtils.SetActive(cell.img_CountryBg,true) --国家信息显示 local state = data.playerShowInfo.CountryId - 1 state = state > 0 and state or 0 cell.state_Country:SetState(state) --英语、印尼语显示图 if Localization.IsEnglish() or Localization.IsIndonesian() then UIUtils.SetLocalizationImage(cell.img_Country, CountryImg[data.playerShowInfo.CountryId]) end else UIUtils.SetActive(cell.img_CountryBg,false) end --远离/战斗 local isBattle = data.detailInfo.OfflineBattleMapId > 0 or data.detailInfo.SyncBattleMapId > 0 local isFaraway = CTL.CountryPVP.IsTeammateKeepAwayFrom(data.detailInfo.mapId) if isBattle then --战斗中 UIUtils.SetActive(cell.txt_State,true) UIUtils.SetLabelText(cell.txt_State,Const_IDS.IDS_CountryPVP_Team_Fighting) cell.state_PlayerState:SetState(0) elseif isFaraway then --远离中 UIUtils.SetActive(cell.txt_State,true) UIUtils.SetLabelText(cell.txt_State,Const_IDS.IDS_CountryPVP_Team_Away) cell.state_PlayerState:SetState(1) else UIUtils.SetActive(cell.txt_State,false) end end function UITownTeamGuide:SelectMemberCell(index) for i, v in ipairs(self.group_Teammate) do UIUtils.SetActive(v.img_Select, i == index) end end function UITownTeamGuide:RefreshPanelState() if CTL.Team.IsInTeam() then self.state_TeamGuide:SetState(0) if CTL.Team.IsSelfLeader() then self.state_TeamFunction:SetState(0) else self.state_TeamFunction:SetState(1) local isFollow = MDL.Team.GetSelfMemberInfo().state == MDL.Team.MemberState.Following UIUtils.SetLabelText(self.lab_Follow, Const_IDS["IDS_TeamUI_Fuction_Follow"]) UIUtils.SetLabelText(self.lab_CancelFollow, Const_IDS["IDS_TeamUI_Fuction_CancelFollow"]) UIUtils.SetActive(self.img_Following.gameObject, isFollow) UIUtils.SetActive(self.lab_Follow.gameObject, not isFollow) UIUtils.SetActive(self.lab_CancelFollow.gameObject, isFollow) end else self.state_TeamGuide:SetState(1) end end function UITownTeamGuide:OpenInteractivePanel(index) local memberId = MDL.Team.GetAllMembersInfo()[index].memberId if not CTL.Team.IsSelfMemberById(memberId) then self:SelectMemberCell(index) end CTL.Team.OpenTeamInteractive(memberId, nil, -540, 380) end function UITownTeamGuide:OnButtonClicked(comp) if comp == self.btn_QuickTeam or comp == self.btn_TeamRoom then CTL.Team.OpenTeamPanel() elseif comp == self.btn_Leave then MDL.Team.TeamLeaveReq() elseif comp == self.btn_Follow then local myFollowState = MDL.Team.GetSelfMemberInfo().state if myFollowState ~= MDL.Team.MemberState.Following and SyncMoveManager.HaveNeedFollowNPC() then -- 我有要跟随的NPC,则跟随NPC ,不跟随队长 TownCartManager.BeginFollowCart_MySelf(false) else MDL.Team.TeamFollowReq(myFollowState ~= MDL.Team.MemberState.Following) end elseif comp == self.btn_CallTogether then MDL.Team.TeamCallMemberReq() else for i, v in ipairs(self.group_Teammate) do if comp == v.btn_PlayerHead then self:OpenInteractivePanel(i) return elseif comp == v.btn_Add then CTL.Sound.PlayGameSound("UI_daily") UIManager.OpenView(Const_UI_Lua.UIEnum.UITeamInviteInPanel) return end end end end return UITownTeamGuide