KLUISystemLeftPanel.lua 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. ---@class KLUISystemLeftPanel:UIKmlLuaPanelBase
  2. ---@field view KLUISystemLeftPanelView
  3. ---@field mountPanelItem KLUISystemItem
  4. local KLUISystemLeftPanel = class(UIKmlLuaPanelBase)
  5. local this =KLUISystemLeftPanel
  6. local ESystemType = {
  7. NoShow = enum(0),
  8. ShowRight = enum(1),
  9. ShowTop = enum(2),
  10. }
  11. local ETopSystemType = {
  12. None = enum(0),
  13. Show = enum(1),
  14. }
  15. ---创建时调用一次
  16. function this:Init()
  17. self.systemTemplateList = {}
  18. GUI:setVisible(self.view.maxBagTips, false)
  19. end
  20. ---创建或者刷新界面数据时调用
  21. function this:Refresh()
  22. self:Clear()
  23. PrivilegeCardManager.onHookType = EOnHookType.Situ
  24. PrivilegeCardManager.StopPatrolOnHook()
  25. self.systemType = ESystemType.ShowRight
  26. self.topSystemType = ETopSystemType.None
  27. self:RefreshSystemMenu()
  28. local onHookState = SL:GetMetaValue(EMetaVarGetKey.GET_ONHOOK_STATE)
  29. self:SetOnHookIcon(onHookState)
  30. if not SL:GetIsExpandSystemFunction() then
  31. GUI:UIPanel_Open("dev/ui/MainUI/Panel/KLMainAttack/KLMainAttackPanel")
  32. end
  33. SL:RefreshPanelALLRedPoint("KLUISystemLeftPanel")
  34. self:OnClickShapeShiftBtn(_, true)
  35. end
  36. function this:RefreshSystemMenu()
  37. self:Clear()
  38. local tbl = SL:GetConfigTable("cfg_MainPanelUI")
  39. local data = {}
  40. ---@param v cfg_MainPanelUI_column
  41. for i, v in pairs(tbl) do
  42. if v.displayLocation == self.systemType then
  43. table.insert(data,v)
  44. end
  45. if v.systemId == "背包" then
  46. GUI:setPosition(self.view.bagBtn,v.positionOffset[1] or 25,v.positionOffset[2] or -74)
  47. self:ChangeBagIcon()
  48. end
  49. if v.systemId == "变身卡牌变身" and v.displayLocation == 0 then
  50. GUI:setPosition(self.view.shapeShiftRoot,v.positionOffset[1] or 25,v.positionOffset[2] or -74)
  51. end
  52. end
  53. table.sort(data,function(a, b)
  54. if a.id < b.id then
  55. return true
  56. end
  57. return false
  58. end)
  59. ---@param v cfg_MainPanelUI_column
  60. for i, v in pairs(data) do
  61. ---@type KLUISystemItem
  62. local systemPanelItem = GUI:UIPanel_Open("dev/ui/MainUI/Item/KLUISystem/KLUISystemItem",self.view.systemMenu,self,v,true)
  63. table.insert(self.systemTemplateList,systemPanelItem)
  64. GUI:SetID(systemPanelItem.view.root,v.btnName)
  65. SL:AddRedPoint(systemPanelItem)
  66. local isMeet = SL:GetMetaValue(EMetaVarGetKey.IS_OPEN_SYSTEMFUNCTION,v.systemId)
  67. if v.dec == "坐骑" then
  68. self.mountPanelItem = systemPanelItem
  69. GUI:setVisible(self.mountPanelItem.view.root,InfoManager.mountInfo.isHasOwnerMount)
  70. else
  71. GUI:setVisible(systemPanelItem.view.root,isMeet)
  72. end
  73. end
  74. end
  75. function this:ChangeBagIcon()
  76. local is_empty = SL:GetMetaValue(EMetaVarGetKey.BAG_REMAIN_COUNT)
  77. if is_empty then
  78. GUI:Image_loadTexture(self.view.bagBtn,"btn_beibao", "Atlas/UIMainPanel.spriteatlas")
  79. GUI:setVisible(self.view.maxBagTips, false)
  80. else
  81. GUI:Image_loadTexture(self.view.bagBtn,"bag_btn_full", "Atlas/UIMainPanel.spriteatlas")
  82. local show = SL:GetLocalString("showMaxBagTips", "true")
  83. if show=="true" then
  84. GUI:setVisible(self.view.maxBagTips, true)
  85. end
  86. end
  87. end
  88. ---注册UI事件和服务器消息
  89. function this:RegistEvents()
  90. GUI:AddOnClickEvent(self.view.expandBtn,self,self.OnClicksysExpandBtn)
  91. GUI:AddOnClickEvent(self.view.foldBtn,self,self.OnClicksysFoldBtn)
  92. GUI:AddOnClickEvent(self.view.bagBtn,self,self.OnClickBagBtn)
  93. GUI:AddOnClickEvent(self.view.hookBtn,self,self.OnClickHookBtn)
  94. GUI:AddOnClickEvent(self.view.autoHookIconContainer,self,self.OnClickAutoHookIconContainerBtn)
  95. GUI:AddOnClickEvent(self.view.autoHookIconContainer_2,self,self.OnClickAutoHookIconContainerBtn_2)
  96. GUI:AddOnClickEvent(self.view.btn_hook_out, self, self.OnClickHootOutBtn)
  97. GUI:AddOnClickEvent(self.view.img_auto_2_close, self, self.OnClickHootInBtn)
  98. GUI:AddOnClickEvent(self.view.btn_hook_in, self, self.OnClickHootInBtn)
  99. GUI:AddOnClickEvent(self.view.btn_patrol, self, self.OnClickPatrolBtn)
  100. GUI:AddOnClickEvent(self.view.btn_situ, self, self.OnClickSituBtn)
  101. GUI:AddOnClickEvent(self.view.btn_offline, self, self.OnClickOffLineBtn)
  102. GUI:AddOnClickEvent(self.view.btn_shift, self, self.OnClickShapeShiftBtn)
  103. GUI:AddOnClickEvent(self.view.btn_shift_cancel, self, self.OnClickShapeShiftCancelBtn)
  104. GUI:AddOnClickEvent(self.view.maxTipsCloseBtn, self, self.maxTipsCloseBtn)
  105. GUI:AddOnClickEvent(self.view.equipRecycleBtn, self, self.equipRecycleBtn)
  106. GUI:AddOnClickEvent(self.view.autoRecycleBtn, self, self.autoRecycleBtn)
  107. for i = 1, 3 do
  108. GUI:AddOnClickEvent(self.view["btn_shift_" .. i], self, self.OnClickEachShapeShiftBtn, i)
  109. end
  110. SL:RegisterLUAEvent(LUA_EVENT_ONHOOK_STATE_CHANGE,self.LUA_EVENT_ONHOOK_STATE_CHANGE,self)
  111. SL:RegisterLUAEvent(LUA_EVENT_BAG_CHANGE_AFTER,self.LUA_EVENT_BAG_CHANGE_AFTER,self)
  112. SL:RegisterLUAEvent(LUA_EVENT_SHAPE_SHIFT_CARD_SKILL_CHANGE,self.RefreshShapeShiftCardBtn,self)
  113. SL:RegisterLUAEvent(LUA_EVENT_ROLE_PROPERTY_CHANGE,self.LUA_EVENT_ROLE_PROPERTY_CHANGE,self)
  114. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_MOUNT_LOGO,self.RES_MOUNT_LOGO,self)
  115. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_TRANSFER_CARD_CD,self.RES_TRANSFER_CARD_CD,self)
  116. --SL:RegisterLUAEvent(LUA_EVENT_ROLE_TRANSFER, self.RoleTransfer, self)
  117. GUI:SetToggleOnValueChange(self.view.notNoticeToggle, self, self.notNoticeToggleChange)
  118. end
  119. function this:notNoticeToggleChange(_, customData, eventData)
  120. if eventData[1] then
  121. SL:SetLocalString("showMaxBagTips", "false")
  122. else
  123. SL:SetLocalString("showMaxBagTips", "true")
  124. end
  125. end
  126. function this:autoRecycleBtn()
  127. ---@param panel KLRecoverPanel
  128. GUI:UIPanel_Open("dev/ui/Recover/Panel/KLRecover/KLRecoverPanel",nil,nil,nil,false,function(panel)
  129. panel:SetAutoRecover(true)
  130. end)
  131. end
  132. function this:equipRecycleBtn()
  133. GUI:UIPanel_Open("dev/ui/Recover/Panel/KLRecover/KLRecoverPanel")
  134. end
  135. function this:maxTipsCloseBtn()
  136. GUI:setVisible(self.view.maxBagTips, false)
  137. end
  138. ---人物属性改变时(刷新红点)
  139. function this:LUA_EVENT_ROLE_PROPERTY_CHANGE()
  140. SL:RefreshPanelALLRedPoint("KLUISystemLeftPanel")
  141. end
  142. function this:LUA_EVENT_BAG_CHANGE_AFTER()
  143. self:ChangeBagIcon()
  144. end
  145. function this:RES_MOUNT_LOGO(id,message)
  146. if self.mountPanelItem then
  147. GUI:setVisible(self.mountPanelItem.view.root,message.logo == 1)
  148. end
  149. end
  150. function this:OnClicksysExpandBtn()
  151. GUI:setVisible(self.view.expandBtn,false)
  152. GUI:setVisible(self.view.foldBtn,true)
  153. GUI:setVisible(self.view.systemArea,false)
  154. GUI:UIPanel_Open("dev/ui/MainUI/Panel/KLMainAttack/KLMainAttackPanel")
  155. SL:onLUAEvent(LUA_EVENT_EXPAND_RIGHTSYSTEMFUNCTION,false)
  156. end
  157. function this:OnClicksysFoldBtn()
  158. GUI:setVisible(self.view.expandBtn,true)
  159. GUI:setVisible(self.view.foldBtn,false)
  160. GUI:setVisible(self.view.systemArea,true)
  161. GUI:UIPanel_Close("dev/ui/MainUI/Panel/KLMainAttack/KLMainAttackPanel")
  162. SL:onLUAEvent(LUA_EVENT_EXPAND_RIGHTSYSTEMFUNCTION,true)
  163. end
  164. function this:OnClickBagBtn()
  165. ---@type cfg_MainPanelUI_column
  166. local tbl = SL:GetConfig("cfg_MainPanelUI",107,"id")
  167. SL:onLUAEvent(LUA_EVENT_OPENMAINSYSTEMFUNCTION, tbl and tbl.systemId or "背包")
  168. --EventManager.Dispatch(LUA_EVENT_OPENMAINSYSTEMFUNCTION,tbl and tbl.systemId or "背包")
  169. end
  170. function this:OnClickHookBtn()
  171. local onHookState = SL:GetMetaValue(EMetaVarGetKey.GET_ONHOOK_STATE)
  172. if onHookState == EAutoOnHookStatus.PauseOnHook then
  173. SL:StopOnHook(true)
  174. PrivilegeCardManager.StopPatrolOnHook()
  175. elseif onHookState == EAutoOnHookStatus.StopOnHook then
  176. if PrivilegeCardManager.onHookType == EOnHookType.Situ then
  177. if SL:GetMetaValue(EMetaVarGetKey.GET_IS_SAFEAREA) then
  178. return
  179. end
  180. SL:StartOnHook(true,true)
  181. elseif PrivilegeCardManager.onHookType == EOnHookType.Patrol then
  182. self:OnClickPatrolBtn()
  183. end
  184. end
  185. end
  186. function this:OnClickAutoHookIconContainerBtn()
  187. local onHookState = SL:GetMetaValue(EMetaVarGetKey.GET_ONHOOK_STATE)
  188. if onHookState == EAutoOnHookStatus.OnHooking then
  189. SL:StopOnHook(true)
  190. end
  191. if PrivilegeCardManager.onHookType == EOnHookType.Patrol then
  192. --巡逻刷新状态与主界面挂机图标
  193. PrivilegeCardManager.StopPatrolOnHook()
  194. self:RefreshAutoOnHookIcon_2State(true)
  195. self:SetOnHookIcon()
  196. end
  197. end
  198. ---挂机新界面自动按钮
  199. function this:OnClickAutoHookIconContainerBtn_2()
  200. if SL:GetMetaValue(EMetaVarGetKey.GET_IS_SAFEAREA) then
  201. return
  202. end
  203. --local errorCode = AutoFightManager.CheckAutoFight()
  204. --if errorCode ~= EAutoFightErrorTip.OK then
  205. -- SL:TipMessage(errorCode, 1, NoticeType.NoticeMid)
  206. -- return
  207. --end
  208. ---挂机状态是原地
  209. if PrivilegeCardManager.onHookType == EOnHookType.Situ then
  210. if self.autoIcon_2State then
  211. SL:StartOnHook(true, true)
  212. self:RefreshAutoOnHookIcon_2State(false)
  213. else
  214. SL:StopOnHook(true)
  215. self:RefreshAutoOnHookIcon_2State(true)
  216. end
  217. end
  218. ---挂机状态是巡逻
  219. if PrivilegeCardManager.onHookType == EOnHookType.Patrol then
  220. if self.autoIcon_2State then
  221. self:OnClickPatrolBtn()
  222. else
  223. local onHookState = SL:GetMetaValue(EMetaVarGetKey.GET_ONHOOK_STATE)
  224. if onHookState == EAutoOnHookStatus.OnHooking then
  225. SL:StopOnHook(true)
  226. end
  227. --巡逻刷新状态与主界面挂机图标
  228. PrivilegeCardManager.StopPatrolOnHook()
  229. self:RefreshAutoOnHookIcon_2State(true)
  230. end
  231. self:SetOnHookIcon()
  232. end
  233. self:RefreshOnHookIconType(PrivilegeCardManager.onHookType)
  234. end
  235. ---打开挂机新界面
  236. function this:OnClickHootOutBtn()
  237. GUI:setVisible(self.view.img_new_hook, true)
  238. self:RefreshOnHookIconType(PrivilegeCardManager.onHookType)
  239. if PrivilegeCardManager.onHookType == EOnHookType.Patrol then
  240. self:RefreshAutoOnHookIcon_2State(not PrivilegeCardManager.patrolOnHookState)
  241. else
  242. self:RefreshAutoOnHookIcon_2State(not self.animationStart)
  243. end
  244. end
  245. ---刷新挂机新界面自动按钮动画
  246. function this:RefreshAutoOnHookIcon_2State(state)
  247. GUI:SetControlAnimation_stop(self.view.autoMaxIcon_2,state)
  248. GUI:SetControlAnimation_stop(self.view.autoMinIcon_2,state)
  249. self.autoIcon_2State = state
  250. end
  251. ---隐藏挂机新界面
  252. function this:OnClickHootInBtn()
  253. GUI:setVisible(self.view.img_new_hook, false)
  254. end
  255. ---点击巡逻按钮
  256. function this:OnClickPatrolBtn()
  257. ---如果之前再挂机则暂停
  258. local onHookState = SL:GetMetaValue(EMetaVarGetKey.GET_ONHOOK_STATE)
  259. if onHookState == EAutoOnHookStatus.OnHooking then
  260. SL:StopOnHook(true)
  261. end
  262. ---判断激活特权是否能巡逻
  263. if PrivilegeCardManager.isAutoPatrolOnHook() then
  264. if PrivilegeCardManager.StartPatrolOnHook() then
  265. if SL:GetMetaValue(EMetaVarGetKey.GET_IS_SAFEAREA) then
  266. return
  267. end
  268. ---找直线距离最近的黄金boss
  269. if not PrivilegeCardManager:GetThisMapGoldBossAttack() then
  270. self:RefreshOnHookIconType(EOnHookType.Patrol)
  271. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SET_PATROL, EOnHookType.Patrol)
  272. PrivilegeCardManager.onHookType = EOnHookType.Patrol
  273. self:RefreshAutoOnHookIcon_2State(false)
  274. self:SetOnHookIcon()
  275. end
  276. end
  277. else
  278. SL:CommonTipsMessage({ stringTblID = 481, ui = self, sureBtnText = "确定", cancelBtnText = "取消",
  279. callback = self.OpenFirsh })
  280. end
  281. end
  282. function this:OpenFirsh()
  283. --[[ if InfoManager.monthCardInfo:IsHaveMonthCardRights("privilege") then
  284. GUI:UIPanel_Open("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel", nil, nil, { type = "privilege" })
  285. else
  286. GUI:UIPanel_Open("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel")
  287. end]]
  288. GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLShopMain/KLShopMainPanel",nil,nil,{2})
  289. end
  290. ---点击挂机新界面原地挂机按钮
  291. function this:OnClickSituBtn()
  292. if SL:GetMetaValue(EMetaVarGetKey.GET_IS_SAFEAREA) then
  293. return
  294. end
  295. ---刷新挂机按钮状态
  296. if PrivilegeCardManager.IsCanOnHookCheck() then
  297. self:RefreshAutoOnHookIcon_2State(false)
  298. self:RefreshOnHookIconType(EOnHookType.Situ)
  299. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_SET_PATROL, EOnHookType.Situ)
  300. PrivilegeCardManager.onHookType = EOnHookType.Situ
  301. ---停止巡逻挂机
  302. if PrivilegeCardManager.patrolOnHookState then
  303. PrivilegeCardManager.StopPatrolOnHook()
  304. end
  305. SL:StartOnHook(true,true)
  306. end
  307. end
  308. ---离线挂机,退出游戏
  309. function this:OnClickOffLineBtn()
  310. SL:CommonTipsMessage({ stringTblID = 448, callback = function()
  311. if SL.LoginInfo:IsOutSDK() then
  312. MuInterface.Instance:LogoutAccount()
  313. end
  314. SL:QuitGame()
  315. end })
  316. end
  317. ---刷新挂机新界面挂机状态图标
  318. function this:RefreshOnHookIconType(type)
  319. local patrol = "icon_patrol"
  320. local situ = "icon_situ"
  321. local offline = "icon_offline"
  322. if EOnHookType.No == type then
  323. situ = situ .. "_no"
  324. offline = offline .. "_no"
  325. patrol = patrol .. "_no"
  326. elseif type == EOnHookType.Patrol then
  327. situ = situ .. "_no"
  328. offline = offline .. "_no"
  329. elseif type == EOnHookType.Situ then
  330. patrol = patrol .. "_no"
  331. offline = offline .. "_no"
  332. elseif type == EOnHookType.OffLine then
  333. situ = situ .. "_no"
  334. patrol = patrol .. "_no"
  335. end
  336. GUI:Image_loadTexture(self.view.btn_patrol, patrol, "Atlas/KLUIPrivilegePanel.spriteatlas")
  337. GUI:Image_loadTexture(self.view.btn_situ, situ, "Atlas/KLUIPrivilegePanel.spriteatlas")
  338. GUI:Image_loadTexture(self.view.btn_offline, offline, "Atlas/KLUIPrivilegePanel.spriteatlas")
  339. end
  340. ---@param onHookState EAutoOnHookStatus
  341. function this:LUA_EVENT_ONHOOK_STATE_CHANGE(_,onHookState)
  342. self:SetOnHookIcon(onHookState)
  343. end
  344. function this:SetOnHookIcon(onHookState)
  345. if PrivilegeCardManager.onHookType == EOnHookType.Situ then
  346. if onHookState == EAutoOnHookStatus.OnHooking then
  347. GUI:setVisible(self.view.hookBtn,false)
  348. GUI:setVisible(self.view.autoHookIconContainer,true)
  349. GUI:SetControlAnimation_stop(self.view.autoMaxIcon,false)
  350. GUI:SetControlAnimation_stop(self.view.autoMinIcon,false)
  351. self.animationStart = true
  352. elseif onHookState == EAutoOnHookStatus.PauseOnHook then
  353. GUI:setVisible(self.view.hookBtn,true)
  354. GUI:setVisible(self.view.autoHookIconContainer,false)
  355. GUI:SetControlAnimation_stop(self.view.autoMaxIcon,true)
  356. GUI:SetControlAnimation_stop(self.view.autoMinIcon,true)
  357. self.animationStart = false
  358. GUI:Image_loadTexture(self.view.hookBtn,"button_main_pause","Atlas/UIMainPanel.spriteatlas")
  359. elseif onHookState == EAutoOnHookStatus.StopOnHook then
  360. GUI:setVisible(self.view.hookBtn,true)
  361. GUI:setVisible(self.view.autoHookIconContainer,false)
  362. GUI:SetControlAnimation_stop(self.view.autoMaxIcon,true)
  363. GUI:SetControlAnimation_stop(self.view.autoMinIcon,true)
  364. self.animationStart = false
  365. GUI:Image_loadTexture(self.view.hookBtn,"button_main_notclicked","Atlas/UIMainPanel.spriteatlas")
  366. end
  367. elseif PrivilegeCardManager.onHookType == EOnHookType.Patrol then
  368. ---巡逻挂机走另一断逻辑
  369. if PrivilegeCardManager.patrolOnHookState then
  370. GUI:setVisible(self.view.hookBtn,false)
  371. GUI:setVisible(self.view.autoHookIconContainer,true)
  372. GUI:SetControlAnimation_stop(self.view.autoMaxIcon,false)
  373. GUI:SetControlAnimation_stop(self.view.autoMinIcon,false)
  374. self.animationStart = true
  375. else
  376. GUI:setVisible(self.view.hookBtn,true)
  377. GUI:setVisible(self.view.autoHookIconContainer,false)
  378. GUI:SetControlAnimation_stop(self.view.autoMaxIcon,true)
  379. GUI:SetControlAnimation_stop(self.view.autoMinIcon,true)
  380. self.animationStart = false
  381. end
  382. end
  383. end
  384. function this:RefreshShapeShiftCardBtn()
  385. self:ShapeShiftStateChangeRefreshUI()
  386. local info = InfoManager.shapeShiftCardInfo.shiftSkill
  387. self.btnInfo = {}
  388. local index = 1
  389. for i, v in pairs(info) do
  390. GUI:setVisible(self.view["btn_shift_" .. index], true)
  391. local icon = InfoManager.shapeShiftCardInfo:GetMonsterIcon(i)
  392. GUI:Image_loadTexture(self.view["img_shift_icon_" .. index], icon, "Atlas/UIbianshentb.spriteatlas")
  393. self.btnInfo[index] = v
  394. index = index + 1
  395. end
  396. if index <= 3 then
  397. for i = index, 3 do
  398. GUI:setVisible(self.view["btn_shift_" .. index], false)
  399. end
  400. end
  401. if self.allSkillCDTbl then
  402. self:RES_TRANSFER_CARD_CD(_, self.allSkillCDTbl)
  403. end
  404. end
  405. function this:OnClickShapeShiftBtn(_, isHide)
  406. if isHide then
  407. self.shiftShow = not isHide
  408. else
  409. self.shiftShow = not self.shiftShow
  410. end
  411. GUI:setVisible(self.view.img_shift_bg, self.shiftShow)
  412. end
  413. function this:OnClickShapeShiftCancelBtn()
  414. self:OnClickAutoHookIconContainerBtn()
  415. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_TRANSFORMATION, 0)
  416. end
  417. function this:OnClickEachShapeShiftBtn(_, eventData)
  418. if self.btnInfo[eventData].group ~= InfoManager.shapeShiftCardInfo.shiftMonsterGroup then
  419. if self.shiftSkillCDTbl and self.shiftSkillCDTbl[self.btnInfo[eventData].group] then
  420. local time = Time.GetServerTime()
  421. local time2 = self.shiftSkillCDTbl[self.btnInfo[eventData].group]
  422. if time < time2 then
  423. return
  424. end
  425. end
  426. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_TRANSFORMATION, self.btnInfo[eventData].group)
  427. end
  428. end
  429. function this:ShapeShiftStateChangeRefreshUI()
  430. ---@type cfg_system_switch_column
  431. local cfg = SL:GetConfig("cfg_system_switch", 113)
  432. if cfg.needLevel > SL:GetMetaValue("LEVEL") or cfg.needDay > SL:GetOpenServerDay() then
  433. GUI:setVisible(self.view.shapeShiftRoot, false)
  434. return
  435. end
  436. local info = InfoManager.shapeShiftCardInfo.shiftSkill
  437. if table.count(info) > 0 then
  438. GUI:setVisible(self.view.shapeShiftRoot, true)
  439. else
  440. GUI:setVisible(self.view.shapeShiftRoot, false)
  441. return
  442. end
  443. if InfoManager.shapeShiftCardInfo:isShiftMonster() then
  444. GUI:setVisible(self.view.btn_shift_cancel, true)
  445. GUI:setVisible(self.view.btn_shift, false)
  446. self:OnClickShapeShiftBtn(nil, true)
  447. else
  448. GUI:setVisible(self.view.btn_shift_cancel, false)
  449. GUI:setVisible(self.view.btn_shift, true)
  450. end
  451. end
  452. function this:RES_TRANSFER_CARD_CD(_, message)
  453. if not self.shiftSkillCDTbl then
  454. self.shiftSkillCDTbl = {}
  455. end
  456. for j, k in pairs(self.btnInfo) do
  457. local isRefresh = false
  458. for i, v in pairs(message) do
  459. if tonumber(i) == k.group then
  460. isRefresh = true
  461. local time = (v - Time.GetServerTime()) / 1000
  462. if time < 0 then
  463. GUI:SetCirclebar_startper(self.view["Img_cdTime_" .. j], 0)
  464. else
  465. GUI:SetCirclebar_startper(self.view["Img_cdTime_" .. j], 100)
  466. GUI:SetCirclebar_time(self.view["Img_cdTime_" .. j], time)
  467. end
  468. self.shiftSkillCDTbl[k.group] = v
  469. end
  470. end
  471. if not isRefresh then
  472. GUI:SetCirclebar_startper(self.view["Img_cdTime_" .. j], 0)
  473. end
  474. end
  475. self:ShapeShiftStateChangeRefreshUI()
  476. self.allSkillCDTbl = message
  477. end
  478. function this:RoleTransfer()
  479. if PrivilegeCardManager.onHookType == EOnHookType.Patrol then
  480. PrivilegeCardManager.StopPatrolOnHook()
  481. local onHookState = SL:GetMetaValue(EMetaVarGetKey.GET_ONHOOK_STATE)
  482. if onHookState ~= EAutoOnHookStatus.OnHooking then
  483. SL:StartOnHook(true,true)
  484. --self:RefreshAutoOnHookIcon_2State(false)
  485. end
  486. PrivilegeCardManager.onHookType = EOnHookType.Situ
  487. self:RefreshOnHookIconType(EOnHookType.Situ)
  488. --self:RefreshAutoOnHookIcon_2State(true)
  489. --self:SetOnHookIcon()
  490. end
  491. end
  492. function this:RefreshTransferDurationCD(duration)
  493. local time = (duration - Time.GetServerTime()) / 1000
  494. if time <= 0 then
  495. GUI:SetCirclebar_startper(self.view.circlebar_cancel, 0)
  496. else
  497. GUI:SetCirclebar_startper(self.view.circlebar_cancel, 100)
  498. GUI:SetCirclebar_time(self.view.circlebar_cancel, time)
  499. end
  500. end
  501. ---清除数据
  502. function this:Clear()
  503. ---@param systemItem KLUISystemItem
  504. for i, systemItem in pairs(self.systemTemplateList) do
  505. GUI:UIPanel_Close(nil,systemItem)
  506. end
  507. self.systemTemplateList = {}
  508. self.shiftSkillCDTbl = {}
  509. self.allSkillCDTbl = nil
  510. end
  511. function this:Close()
  512. self.systemTemplateList = {}
  513. self.shiftSkillCDTbl = {}
  514. self.allSkillCDTbl = nil
  515. end
  516. return this