KLTaskGuidePanel.lua 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. ---@class KLTaskGuidePanel:UIKmlLuaPanelBase
  2. ---@field view KLTaskGuidePanelView
  3. local KLTaskGuidePanel = class(UIKmlLuaPanelBase)
  4. local this =KLTaskGuidePanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.goalId = self.args.goalId
  8. self.args.position.z = 100 --Canvas Plane Distance
  9. GUI:SetWorldPosition(self.view.root, self.args.position.x, self.args.position.y, self.args.position.z)
  10. --self.view.root.rectTransform.position = self.args.position
  11. --GUI:setAnchorPoint(self.view.root, localPoint.x, localPoint.y)
  12. ---@type cfg_task_target_column
  13. self.cfg = SL:GetConfig('cfg_task_target', self.goalId)
  14. GUI:DataListInitData(self.view.task_guide_list, function(realIndex)
  15. return #self.cfg.instruction
  16. end, function(realIndex)
  17. end, function(realIndex, kmlcontrol)
  18. local guide_name = self.cfg.extraControlName[realIndex+1]
  19. local guide_text = GUI:GetChildControl(self.view.task_guide_list, realIndex, 'guide_text')
  20. GUI:Text_setString(guide_text, guide_name)
  21. local guide_button = GUI:GetChildControl(self.view.task_guide_list, realIndex, 'guide_button')
  22. GUI:AddOnClickEvent(guide_button, self, function()
  23. local instruction = self.cfg.instruction[realIndex+1]
  24. local autoFight = self.cfg.autoFight
  25. local autoTask = self.cfg.autoTask
  26. local moveToArriveCallBack
  27. if autoFight == EAutoFight.AutoFight and string.contains(instruction[1],"transfer") then
  28. if not SL:GetMetaValue(EMetaVarGetKey.GET_IS_SAFEAREA) then
  29. SL:SetBattleState(true)
  30. end
  31. elseif autoFight == EAutoFight.AutoFight and string.contains(instruction[1],"moveTo") then
  32. SL:SetBattleState(false)
  33. moveToArriveCallBack = function()
  34. if not SL:GetMetaValue(EMetaVarGetKey.GET_IS_SAFEAREA) then
  35. SL:SetBattleState(true)
  36. end
  37. end
  38. end
  39. if autoTask == EAutoTalk.AutoTalk and string.contains(instruction[1],"moveToNPC") then
  40. SL:SetBattleState(false)
  41. moveToArriveCallBack = function()
  42. SL:TalkToNpc(tonumber(instruction[2]), true)
  43. end
  44. end
  45. --ShortcutMgr.Do(instruction,nil,nil,moveToArriveCallBack)
  46. SL:ShortcutDO(instruction,nil,nil,moveToArriveCallBack)
  47. self:ClosePanel()
  48. end)
  49. end, function(realIndex, kmlcontrol)
  50. -- self:SetTaskState(realIndex)
  51. end)
  52. GUI:DataListUpdateData(self.view.task_guide_list)
  53. end
  54. ---创建或者刷新界面数据时调用
  55. function this:Refresh()
  56. end
  57. ---注册UI事件和服务器消息
  58. function this:RegistEvents()
  59. GUI:AddOnClickEvent(self.view.closeMask, self, self.ClosePanel)
  60. end
  61. function this:ClosePanel()
  62. GUI:UIPanel_Close("dev/ui/Task/Panel/KLTaskGuide/KLTaskGuidePanel")
  63. end
  64. function this:Close()
  65. end
  66. return this