UIPrivateChatBtnView.lua 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. local UIPrivateChatBtnView = require("UIChat/UIPrivateChatBtnView_Generate")
  2. local updateBeat
  3. local isDragging = false
  4. local tmpPos = Vector3.zero
  5. local pos = Vector2.zero
  6. local edgeX = Vector2.zero
  7. local edgeY = Vector2.zero
  8. local UIClickSound
  9. function UIPrivateChatBtnView:OnAwake(data)
  10. self.controller = require("UIChat/UIPrivateChatBtnCtr")
  11. self.controller:Init(self)
  12. self.controller:SetData(data)
  13. end
  14. function UIPrivateChatBtnView:AddEventListener()
  15. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PRIVATER_CHAT_BTN_DISPLAY,self,self.PrivateBtnDisplay);
  16. end
  17. function UIPrivateChatBtnView:FillContent(data, uiBase)
  18. self.uiBase = uiBase
  19. local gameObject = self.uiBase:GetRoot()
  20. if gameObject ~= nil then
  21. self.gameObject = gameObject
  22. self.transform = gameObject.transform
  23. end
  24. self:InitGenerate(self.transform, data)
  25. self:Init()
  26. end
  27. function UIPrivateChatBtnView:Init()
  28. UIClickSound = GlobalConfig.Instance:GetConfigStrValue(176)
  29. if not updateBeat then
  30. updateBeat = UpdateBeat:CreateListener(self.Update, self)
  31. end
  32. local sizeDelta = self.btnEmoji.rectTransform.sizeDelta
  33. edgeX.x = sizeDelta.x/2 - self.rectTransform.rect.size.x
  34. edgeX.y = -sizeDelta.x/2
  35. edgeY.x = sizeDelta.y/2
  36. edgeY.y = self.rectTransform.rect.size.y - sizeDelta.y/2
  37. UpdateBeat:AddListener(updateBeat)
  38. self:GetBtnPosRecord()
  39. end
  40. function UIPrivateChatBtnView:RemoveEventListener()
  41. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  42. end
  43. function UIPrivateChatBtnView:OnPrivateChatOpen()
  44. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChatPrivate)
  45. end
  46. function UIPrivateChatBtnView:Update()
  47. if not isDragging then return end
  48. local position = self.btnEmoji.uIEventTriggerListener.currentEventData.position
  49. tmpPos = ManagerContainer.LuaUIMgr:ScreenPointToLocalPointInRectangle(self.rectTransform, position)
  50. tmpPos.x = tmpPos.x - self.rectTransform.rect.size.x*0.5
  51. tmpPos.y = tmpPos.y + self.rectTransform.rect.size.y*0.5
  52. tmpPos.x = CommonUtil.Clamp(edgeX.x, edgeX.y, tmpPos.x)
  53. tmpPos.y = CommonUtil.Clamp(edgeY.x, edgeY.y, tmpPos.y)
  54. self.btnEmoji.rectTransform.anchoredPosition = tmpPos
  55. end
  56. function UIPrivateChatBtnView:PrivateBtnDisplay(state)
  57. self.btnEmoji:SetActive(state)
  58. end
  59. --function UIPrivateChatBtnView:OnBtnDragging()
  60. -- local position = self.btnEmoji.uIEventTriggerListener.currentEventData.position
  61. -- local sizeDelta = self.btnEmoji.rectTransform.sizeDelta
  62. --
  63. -- local result = CommonUtil.IsScreenUIMoveLimit(position, sizeDelta)
  64. -- if not result then return end
  65. --
  66. -- self.btnEmoji.rectTransform.anchoredPosition3D = CommonUtil.ConvertScreenPos2UIPos(position)
  67. --end
  68. function UIPrivateChatBtnView:AddUIEventListener()
  69. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  70. --self.uiBase:AddButtonEventListener(self.btnEmoji.button, self, self.OnPrivateChatOpen)
  71. self.btnEmoji.uIEventTriggerListener.onClick = function()
  72. MusicMgr.Instance:PlayUISound(UIClickSound, false)
  73. self:OnPrivateChatOpen()
  74. end
  75. self.btnEmoji.uIEventTriggerListener.onPointerDown = function()
  76. isDragging = true
  77. end
  78. self.btnEmoji.uIEventTriggerListener.onPointerUp = function()
  79. isDragging = false
  80. self:SaveBtnPosRecord()
  81. end
  82. --self.btnEmoji.uIEventTriggerListener.onPointerExit = function()
  83. -- isDragging = false
  84. --end
  85. --self.btnEmoji.uIEventTriggerListener.onDrag = function()
  86. -- self:OnBtnDragging()
  87. --end
  88. end
  89. function UIPrivateChatBtnView:SaveBtnPosRecord()
  90. local uid = ManagerContainer.DataMgr.UserData:GetUserId()
  91. local pos = self.btnEmoji.rectTransform.anchoredPosition
  92. local json = {pos.x, pos.y}
  93. UnityEngine.PlayerPrefs.SetString(tostring(uid).."PrivateBtnPos", JSON:encode(json))
  94. end
  95. function UIPrivateChatBtnView:GetBtnPosRecord()
  96. local uid = ManagerContainer.DataMgr.UserData:GetUserId()
  97. local str = UnityEngine.PlayerPrefs.GetString(tostring(uid).."PrivateBtnPos")
  98. if str ~= nil and str ~= "" then
  99. local json = JSON:decode(str)
  100. self.btnEmoji.rectTransform.anchoredPosition = Vector2(json[1], json[2])
  101. end
  102. end
  103. function UIPrivateChatBtnView:OnHide()
  104. end
  105. function UIPrivateChatBtnView:OnShow(data)
  106. self.controller:SetData(data)
  107. self:Init()
  108. end
  109. function UIPrivateChatBtnView:OnClose()
  110. end
  111. function UIPrivateChatBtnView:OnDispose()
  112. if updateBeat ~= nil then
  113. UpdateBeat:RemoveListener(updateBeat)
  114. updateBeat = nil
  115. end
  116. self.btnEmoji.uIEventTriggerListener.onClick = nil
  117. self.btnEmoji.uIEventTriggerListener.onPointerDown = nil
  118. self.btnEmoji.uIEventTriggerListener.onPointerUp = nil
  119. end
  120. return UIPrivateChatBtnView