KLUIMyTeamPanel.lua 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. ---@class KLUIMyTeamPanel:UIKmlLuaPanelBase
  2. ---@field view KLUIMyTeamPanelView
  3. ---@field ActiveLvDataList table<number,cfg_rep_column> @组队等级信息
  4. local KLUIMyTeamPanel = class(UIKmlLuaPanelBase)
  5. local this =KLUIMyTeamPanel
  6. ---创建时调用一次
  7. function this:Init()
  8. self:GetActiveAndLvInfo()
  9. ---选择的活动id
  10. self.selectActiveId = 0
  11. ---选择的组队等级id
  12. self.selectActiveLvId = 0
  13. self.ActiveLvDataList = {}
  14. self.maxTeamNum = SL:GetMetaValue(EMetaVarGetKey.TEAM_MAC_COUNT) or 5
  15. GUI:DataListInitData( self.view.team_datalist,function()
  16. return self:ListItemCountFunc()
  17. end,function(realIndex)
  18. return self:ListItemGetFunc(realIndex)
  19. end,function(realIndex, kmlcontrol)
  20. return self:ListItemInitFunc(realIndex, kmlcontrol)
  21. end, function(realIndex, kmlcontrol)
  22. return self:ListItemUpdateFunc(realIndex, kmlcontrol)
  23. end)
  24. GUI:DataListInitData( self.view.ActivityDataList,function()
  25. return self:ActivityDataListItemCountFunc()
  26. end,function(realIndex)
  27. return self:ActivityDataListItemGetFunc(realIndex)
  28. end,function(realIndex, kmlcontrol)
  29. return self:ActivityDataListItemInitFunc(realIndex, kmlcontrol)
  30. end, function(realIndex, kmlcontrol)
  31. return self:ActivityDataListItemUpdateFunc(realIndex, kmlcontrol)
  32. end)
  33. GUI:DataListInitData(self.view.TeamLvDataList,function()
  34. return self:TeamLvDataListItemCountFunc()
  35. end,function(realIndex)
  36. return self:TeamLvDataListItemGetFunc(realIndex)
  37. end,function(realIndex, kmlcontrol)
  38. return self:TeamLvDataListItemInitFunc(realIndex, kmlcontrol)
  39. end, function(realIndex, kmlcontrol)
  40. return self:TeamLvDataListItemUpdateFunc(realIndex, kmlcontrol)
  41. end)
  42. end
  43. function this:GetActiveAndLvInfo()
  44. ---@type cfg_global_column
  45. local activeCfgStr = SL:GetConfig("cfg_global",49)
  46. ---活动id列表
  47. self.ActiveIDList = {}
  48. table.insert(self.ActiveIDList,0)
  49. local idStrList = string.split(activeCfgStr.value,'#')
  50. for i, v in ipairs(idStrList) do
  51. if SL:HasConfig("cfg_activity_rule",tonumber(v)) then
  52. table.insert(self.ActiveIDList,tonumber(v))
  53. end
  54. end
  55. end
  56. function this:ListItemCountFunc()
  57. if self.teamInfo and self.teamInfo.teamId > 0 and self.teamInfo.leaderId ~= SL:GetMetaValue(EMetaVarGetKey.UID) then
  58. return #self.teamInfo.teamMember
  59. else
  60. return self.maxTeamNum
  61. end
  62. end
  63. function this:ListItemGetFunc(realIndex)
  64. end
  65. function this:ListItemInitFunc(realIndex, kmlcontrol)
  66. end
  67. function this:ListItemUpdateFunc(realIndex, kmlcontrol)
  68. local player_btn = GUI:GetChildControl(self.view.team_datalist,realIndex,'player_btn')
  69. local team_none_btn = GUI:GetChildControl(self.view.team_datalist,realIndex,'team_none_btn')
  70. if self.teamInfo then
  71. local teamMember = self.teamInfo.teamMember[realIndex + 1]
  72. if teamMember then
  73. GUI:SetActive(player_btn, true)
  74. GUI:SetActive(team_none_btn, false)
  75. local leader_img = GUI:GetChildControl(self.view.team_datalist,realIndex,'leader_img')
  76. local player_name = GUI:GetChildControl(self.view.team_datalist,realIndex,'player_name')
  77. local player_level = GUI:GetChildControl(self.view.team_datalist,realIndex,'player_level')
  78. local player_map_line = GUI:GetChildControl(self.view.team_datalist,realIndex,'player_map_line')
  79. local player_role = GUI:GetChildControl(self.view.team_datalist,realIndex,'player_role')
  80. if self.teamInfo.leaderId == teamMember.roleInfo.rid then
  81. GUI:SetActive(leader_img, true)
  82. else
  83. GUI:SetActive(leader_img, false)
  84. end
  85. GUI:Text_setString(player_name, teamMember.roleInfo.name)
  86. GUI:Text_setString(player_level, "Lv." .. tostring(teamMember.roleInfo.level))
  87. ---@type cfg_map_info_column
  88. local mapInfo = SL:GetConfig("cfg_map_info", teamMember.mapId)
  89. GUI:Text_setString(player_map_line, mapInfo.mapname .. "-" .. teamMember.mapLine .. "线")
  90. local model_list, equip_list = self:GetPlayerRoleInfo(teamMember.roleInfo)
  91. GUI:SetPlayerRoleInfo(player_role, model_list, equip_list)
  92. GUI:AddOnClickEvent(player_btn, self, self.ShowPlayerInfo, { onClickData = teamMember, teamId = self.teamInfo.teamId, leaderId = self.teamInfo.leaderId })
  93. else
  94. GUI:SetActive(player_btn, false)
  95. GUI:SetActive(team_none_btn, true)
  96. GUI:AddOnClickEvent(team_none_btn, self, self.OpenKLUINearPlayerPanel, self.args.basePanel)
  97. end
  98. else
  99. GUI:SetActive(player_btn, false)
  100. GUI:SetActive(team_none_btn, true)
  101. GUI:AddOnClickEvent(team_none_btn, self, self.OpenKLUINearPlayerPanel, self.args.basePanel)
  102. end
  103. end
  104. ------------------------------------------参与活动----------------------------------------------------------
  105. function this:ActivityDataListItemCountFunc()
  106. return #self.ActiveIDList
  107. end
  108. function this:ActivityDataListItemGetFunc(realIndex)
  109. end
  110. function this:ActivityDataListItemInitFunc(realIndex, kmlcontrol)
  111. end
  112. function this:ActivityDataListItemUpdateFunc(realIndex, kmlcontrol)
  113. local activeId = self.ActiveIDList[realIndex + 1]
  114. local _btn = GUI:GetChildControl(self.view.ActivityDataList,realIndex,'ActivityData_Item')
  115. local btnStr = "无"
  116. if activeId > 0 then
  117. ---@type cfg_activity_rule_column
  118. local cfg = SL:GetConfig("cfg_activity_rule",activeId)
  119. btnStr = cfg.name
  120. end
  121. GUI:Button_setTitleText(_btn,btnStr)
  122. self:SetImgSelectTexture(_btn,activeId == self.selectActiveId)
  123. if activeId == self.selectActiveId then
  124. self.selectActiveItem = _btn
  125. GUI:Text_setString(self.view.Activity_Text,btnStr)
  126. self:GetNowLvCopyLvData()
  127. end
  128. GUI:AddOnClickEvent(_btn, self, self.OnClickActiveID,{activeId,btnStr,_btn})
  129. end
  130. ------------------------------------------------------------------------------------------------
  131. ------------------------------------------组队等级----------------------------------------------------------
  132. function this:TeamLvDataListItemCountFunc()
  133. return #self.ActiveLvDataList
  134. end
  135. function this:TeamLvDataListItemGetFunc(realIndex)
  136. end
  137. function this:TeamLvDataListItemInitFunc(realIndex, kmlcontrol)
  138. end
  139. function this:TeamLvDataListItemUpdateFunc(realIndex, kmlcontrol)
  140. local data = self.ActiveLvDataList[realIndex + 1]
  141. local _btn = GUI:GetChildControl(self.view.TeamLvDataList,realIndex,'TeamLvData_Item')
  142. local btnName = self:GetCopyLvName(data)
  143. GUI:Button_setTitleText(_btn,btnName)
  144. self:SetImgSelectTexture(_btn,data.id == self.selectActiveLvId)
  145. if data.id == self.selectActiveLvId then
  146. self.selectActiveLvItem = _btn
  147. GUI:Text_setString(self.view.TeamLv_Text,btnName)
  148. end
  149. GUI:AddOnClickEvent(_btn, self, self.OnClickActiveLv,{data.id,btnName,_btn})
  150. end
  151. ------------------------------------------------------------------------------------------------
  152. ---选择活动id
  153. function this:OnClickActiveID(_, eventData)
  154. self:CloseGridViewUI()
  155. if not self.teamInfo then
  156. if eventData[1] ~= 0 then
  157. SL:TipMessage(SL:GetConfig('cfg_string',459).text, 1, NoticeType.NoticeMid )--"请先创建队伍",
  158. end
  159. return
  160. end
  161. if not self.isMyLeader then
  162. if eventData[1] ~= 0 then
  163. SL:TipMessage(SL:GetConfig('cfg_string',460).text, 1, NoticeType.NoticeMid )--"仅队长可进行喊话",
  164. end
  165. return
  166. end
  167. if self.selectActiveId == eventData[1] then
  168. return
  169. end
  170. if self.selectActiveItem then
  171. self:SetImgSelectTexture(self.selectActiveItem,false)
  172. self.selectActiveItem = nil
  173. end
  174. self.selectActiveItem = eventData[3]
  175. self.selectActiveId = eventData[1]
  176. self:SetImgSelectTexture(self.selectActiveItem,true)
  177. GUI:Text_setString(self.view.Activity_Text,eventData[2])
  178. self.selectActiveLvId = 0
  179. self:GetNowLvCopyLvData()
  180. end
  181. ---选择活动等级
  182. function this:OnClickActiveLv(_, eventData)
  183. self:CloseGridViewUI()
  184. if not self.isMyLeader then
  185. if eventData[1] ~= 0 then
  186. SL:TipMessage(SL:GetConfig('cfg_string',460).text, 1, NoticeType.NoticeMid )--"仅队长可进行喊话",
  187. end
  188. return
  189. end
  190. if self.selectActiveLvId == eventData[1] then
  191. return
  192. end
  193. if self.selectActiveLvItem then
  194. self:SetImgSelectTexture(self.selectActiveLvItem,false)
  195. self.selectActiveLvItem = nil
  196. end
  197. self.selectActiveLvItem = eventData[3]
  198. self.selectActiveLvId = eventData[1]
  199. self:SetImgSelectTexture(self.selectActiveLvItem,true)
  200. GUI:Text_setString(self.view.TeamLv_Text,eventData[2])
  201. end
  202. ---设置选择图片Texture
  203. function this:SetImgSelectTexture(Control,isSelect)
  204. if isSelect then
  205. GUI:Button_loadTextureNormal(Control,"bg_holidayDraw","Atlas/UITeamMainInfoPanel_Out.spriteatlas")
  206. else
  207. GUI:Button_loadTextureNormal(Control,"img_mainRBbg","Atlas/UITeamMainInfoPanel_Out.spriteatlas")
  208. end
  209. end
  210. ---获取当前等级的副本等级数据
  211. function this:GetNowLvCopyLvData()
  212. self.ActiveLvDataList = {}
  213. --self.selectActiveLvId = 0
  214. table.insert(self.ActiveLvDataList,{id = 0})
  215. if self.selectActiveId > 0 then
  216. local myLv = SL:MeData_GetLevel()
  217. local cfg = SL:GetConfigTable("cfg_rep")
  218. local oldCfgData = nil
  219. ---@param v cfg_rep_column
  220. for i, v in pairs(cfg) do
  221. if v.type == self.selectActiveId then
  222. if self.copyMinLevel and self.copyMinLevel > 0
  223. and self.copyMaxLevel and self.copyMaxLevel > 0
  224. and self.copyMinLevel == v.level[1] and self.copyMaxLevel == v.level[2] then
  225. --self.selectActiveLvId = v.id
  226. table.insert(self.ActiveLvDataList,v)
  227. break
  228. end
  229. if self.isMyLeader and v.level[1] <= myLv and v.level[2] >= myLv then
  230. --[[if oldCfgData then
  231. table.insert(self.ActiveLvDataList,oldCfgData)
  232. end--]]
  233. table.insert(self.ActiveLvDataList,v)
  234. end
  235. --oldCfgData = v
  236. end
  237. end
  238. table.sort(self.ActiveLvDataList,function(a, b)
  239. return a.id < b.id
  240. end)
  241. end
  242. if #self.ActiveLvDataList > 0 then
  243. if self.selectActiveLvId == 0 then
  244. self.selectActiveLvId = self.ActiveLvDataList[1].id
  245. end
  246. GUI:DataListUpdateData(self.view.TeamLvDataList)
  247. end
  248. end
  249. ---获取副本等级名字
  250. ---@param cfg cfg_rep_column
  251. function this:GetCopyLvName(cfg)
  252. if cfg.id == 0 then
  253. return "无"
  254. end
  255. return cfg.name[1]
  256. end
  257. function this:ShowPlayerInfo(_, eventData)
  258. GUI:UIPanel_Open("dev/ui/FriendSys/Panel/KLFriendOperate/KLFriendOperatePanel", nil, nil, {rid = eventData.onClickData.roleInfo.rid, roleInfo = eventData.onClickData.roleInfo, uiType = 2})
  259. end
  260. function this:OpenKLUINearPlayerPanel(_, eventData)
  261. if SL:TeamInfo_GetTeamId() > 0 then
  262. ---@class KLUITeamMainPanel
  263. eventData:TeamToggleChange(nil, 3)
  264. eventData:SetToggleDefault(3)
  265. else
  266. SL:TipMessage(SL:GetConfig('cfg_string',22).text,1,NoticeType.NoticeMid)--请先创建队伍
  267. end
  268. end
  269. ---创建或者刷新界面数据时调用
  270. function this:Refresh()
  271. SL:ReqTeamInfo()
  272. end
  273. ---注册UI事件和服务器消息
  274. function this:RegistEvents()
  275. --SL:RegisterLuaNetMsg(MessageDef.ResTeamInfoMessage, self.ResTeamInfoMessage, self)
  276. SL:RegisterLUAEvent(LUA_EVENT_TEAM_INFO_CHANGE, self.LUA_EVENT_TEAM_INFO_CHANGE, self)
  277. GUI:AddOnClickEvent(self.view.createteambtn, self, self.CreateTeam)
  278. GUI:AddOnClickEvent(self.view.leaveteambtn, self, self.LeaveTeam)
  279. GUI:AddOnClickEvent(self.view.Activity_Button, self, self.ShowActiveSelectUI)
  280. GUI:AddOnClickEvent(self.view.Activity_Button2, self, self.ShowActiveSelectUI)
  281. GUI:AddOnClickEvent(self.view.TeamLv_Button, self, self.ShowTeamLvSelectUI)
  282. GUI:AddOnClickEvent(self.view.TeamLv_Button2, self, self.ShowTeamLvSelectUI)
  283. GUI:AddOnClickEvent(self.view.closeGridviewButton, self, self.CloseGridViewUI)
  284. GUI:AddOnClickEvent(self.view.ShoutingButton, self, self.OnClickShouting)
  285. --SL:RegisterLuaNetMsg(2000015,self.CopyInfoChange,self)
  286. --SL:RegisterLuaNetMsg(1000010,self.CopyInfoChange,self)
  287. SL:RegisterLuaNetMsg(LuaMessageIdToClient.TEAM_RECRUIT_CHANGE,self.CopyInfoChange,self)
  288. end
  289. ---一键喊话
  290. function this:OnClickShouting()
  291. --[[if self.selectActiveId == 0 then
  292. SL:TipMessage({"未选择参与活动",1,NoticeType.NoticeMid})
  293. return
  294. end
  295. if self.selectActiveId > 0 and self.selectActiveLvId == 0 then
  296. SL:TipMessage({"未选择组队等级",1,NoticeType.NoticeMid})
  297. return
  298. end
  299. --local cfg = SL:GetConfig("cfg_rep",self.selectActiveLvId)
  300. --]]
  301. SL:SendLuaNetMsg(LuaMessageIdToSever.RECRUIT_INFO_REQ, {id=self.selectActiveLvId,channel=5})
  302. end
  303. ---关闭所有下拉框
  304. function this:CloseGridViewUI()
  305. GUI:SetActive(self.view.closeGridviewButton,false)
  306. GUI:SetActive(self.view.Activity_Gridview,false)
  307. GUI:SetActive(self.view.TeamLv_Gridview,false)
  308. end
  309. ---活动下拉框显示
  310. function this:ShowActiveSelectUI()
  311. if GUI:getVisible(self.view.TeamLv_Gridview) then
  312. GUI:SetActive(self.view.TeamLv_Gridview,false)
  313. end
  314. GUI:SetActive(self.view.closeGridviewButton,not GUI:getVisible(self.view.Activity_Gridview))
  315. GUI:SetActive(self.view.Activity_Gridview,not GUI:getVisible(self.view.Activity_Gridview))
  316. end
  317. ---组队等级下拉框显示
  318. function this:ShowTeamLvSelectUI()
  319. if GUI:getVisible(self.view.Activity_Gridview) then
  320. GUI:SetActive(self.view.Activity_Gridview,false)
  321. end
  322. if not self.ActiveLvDataList or #self.ActiveLvDataList == 0 then
  323. return
  324. end
  325. GUI:SetActive(self.view.closeGridviewButton,not GUI:getVisible(self.view.TeamLv_Gridview))
  326. GUI:SetActive(self.view.TeamLv_Gridview,not GUI:getVisible(self.view.TeamLv_Gridview))
  327. end
  328. function this:CreateTeam()
  329. SL:RequestCreateTeam()
  330. end
  331. function this:LeaveTeam()
  332. SL:DelBubbleTips(15)
  333. SL:ReqQuitTeam()
  334. end
  335. ---副本信息改变
  336. function this:CopyInfoChange(_,message)
  337. self.selectActiveId = 0
  338. self.copyMinLevel = 0
  339. self.copyMaxLevel = 0
  340. if message then
  341. if message["activeid"] and message["activeid"] > 0 then
  342. ---@type cfg_rep_column
  343. self.selectActiveId = SL:GetConfig("cfg_rep",message["activeid"]).type
  344. self.selectActiveLvId = message["activeid"]
  345. end
  346. self.copyMinLevel = message["lowerlevel"] and message["lowerlevel"] or 0
  347. self.copyMaxLevel = message["upperlevel"] and message["upperlevel"] or 0
  348. end
  349. GUI:DataListUpdateData(self.view.ActivityDataList)
  350. end
  351. ---@param message TeamProto.TeamInfo
  352. function this:LUA_EVENT_TEAM_INFO_CHANGE(_, message)
  353. self.teamInfo = nil
  354. if message and message.teamId > 0 then
  355. self.teamInfo = message
  356. end
  357. if self.teamInfo and self.teamInfo.teamId > 0 then
  358. GUI:SetActive(self.view.createteambtn,false)
  359. GUI:SetActive(self.view.leaveteambtn,true)
  360. --SL:SendLuaNetMsg(2000015)
  361. SL:SendLuaNetMsg(LuaMessageIdToSever.GET_TEAM_RECRUIT)
  362. else
  363. GUI:SetActive(self.view.createteambtn,true)
  364. GUI:SetActive(self.view.leaveteambtn,false)
  365. self:CopyInfoChange()
  366. end
  367. ---玩家自己是否是队长
  368. self.isMyLeader = message and message.teamId > 0 and message.leaderId == SL:GetMetaValue(EMetaVarGetKey.UID)
  369. GUI:SetActive(self.view.ShoutingButton,self.isMyLeader)
  370. GUI:DataListUpdateData(self.view.team_datalist)
  371. end
  372. ---@param data UserProtos.RoleInfo
  373. function this:GetPlayerRoleInfo(data)
  374. local role_param = { "body", "head", "armor", "hand", "pants", "boot" }
  375. local wear_list_str = ""
  376. local model_list_str = ""
  377. local equipInfo = data.roleInfoExt.equip
  378. if equipInfo then
  379. local default_tbl = SL:GetConfig("cfg_model_default", data.career.baseCareer)
  380. local model_list = {}
  381. for _, v in pairs(role_param) do
  382. model_list[v] = default_tbl[v]
  383. end
  384. for _, v in ipairs(equipInfo) do
  385. ---@type cfg_item_column
  386. local itemInfo = SL:GetConfig("cfg_item", v.cfgId)
  387. local wearBar, pos = SL:GetWearBarAndPosBaseEquipIndex(v.index)
  388. if itemInfo and itemInfo.type == 2 then
  389. if itemInfo.subType == 1 then
  390. if wear_list_str == "" then
  391. wear_list_str = "WeaponRspineParent#" .. itemInfo.field[1]
  392. else
  393. wear_list_str = wear_list_str .. ",WeaponRspineParent#" .. itemInfo.field[1]
  394. end
  395. elseif itemInfo.subType == 2 then
  396. if wear_list_str == "" then
  397. wear_list_str = "WeaponLspineParent#" .. itemInfo.field[1]
  398. else
  399. wear_list_str = wear_list_str .. ",WeaponLspineParent#" .. itemInfo.field[1]
  400. end
  401. elseif itemInfo.subType == 3 then
  402. if pos == 2 then
  403. if wear_list_str == "" then
  404. wear_list_str = "WeaponLspineParent#" .. itemInfo.field[1]
  405. else
  406. wear_list_str = wear_list_str .. ",WeaponLspineParent#" .. itemInfo.field[1]
  407. end
  408. else
  409. if wear_list_str == "" then
  410. wear_list_str = "WeaponRspineParent#" .. itemInfo.field[1]
  411. else
  412. wear_list_str = wear_list_str .. ",WeaponRspineParent#" .. itemInfo.field[1]
  413. end
  414. end
  415. elseif itemInfo.subType == 13 then
  416. if wear_list_str == "" then
  417. wear_list_str = "Wing#" .. itemInfo.field[1]
  418. else
  419. wear_list_str = wear_list_str .. ",Wing#" .. itemInfo.field[1]
  420. end
  421. elseif itemInfo.subType == 30 then
  422. if wear_list_str == "" then
  423. wear_list_str = "BuffspineParent#" .. itemInfo.field[1]
  424. else
  425. wear_list_str = wear_list_str .. ",BuffspineParent#" .. itemInfo.field[1]
  426. end
  427. else
  428. local point = ""
  429. ---@type cfg_model_charactor_column
  430. local model_tbl = SL:GetConfig("cfg_model_charactor", itemInfo.field[1])
  431. if model_tbl then
  432. if model_tbl.part == 23 then
  433. point = "body"
  434. elseif model_tbl.part == 11 then
  435. point = "head"
  436. elseif model_tbl.part == 2 then
  437. point = "armor"
  438. elseif model_tbl.part == 9 then
  439. point = "hand"
  440. elseif model_tbl.part == 15 then
  441. point = "pants"
  442. elseif model_tbl.part == 5 then
  443. point = "boot"
  444. end
  445. if point ~= "" then
  446. model_list[point] = itemInfo.field[1]
  447. end
  448. end
  449. end
  450. end
  451. end
  452. for _, v in pairs(model_list) do
  453. if model_list_str == "" then
  454. model_list_str = v
  455. else
  456. model_list_str = model_list_str .. "#" .. v
  457. end
  458. end
  459. end
  460. return model_list_str, wear_list_str
  461. end
  462. function this:Close()
  463. end
  464. return this