源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

97 行
2.9 KiB

  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 圣物系统奖励预览界面
  4. -- *>
  5. PsionicDrawPreviewView = PsionicDrawPreviewView or BaseClass(BaseView)
  6. local PsionicDrawPreviewView = PsionicDrawPreviewView
  7. local PsionicConst = PsionicConst
  8. function PsionicDrawPreviewView:__init()
  9. self.base_file = "psionic"
  10. self.layout_file = "PsionicDrawPreviewView"
  11. self.layer_name = "Activity"
  12. self.destroy_imm = true
  13. self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
  14. self.append_to_ctl_queue = false
  15. self.is_set_zdepth = true
  16. self:AddPreLoadList("psionic", {"PsionicDrawPreviewItem"})
  17. self.model = PsionicModel:getInstance()
  18. self.item_list = {}
  19. self.load_callback = function ()
  20. self:LoadSuccess()
  21. self:AddEvent()
  22. end
  23. self.open_callback = function ( )
  24. self:UpdateView()
  25. end
  26. self.destroy_callback = function ( )
  27. self:DestroySuccess()
  28. end
  29. end
  30. function PsionicDrawPreviewView:Open(pool_type)
  31. self.pool_type = pool_type or PsionicConst.DrawPoolType.Normal
  32. BaseView.Open(self)
  33. end
  34. function PsionicDrawPreviewView:LoadSuccess()
  35. local nodes = {
  36. "bg:raw", "close:obj",
  37. "info_scroll",
  38. "info_scroll/Viewport/info_con",
  39. }
  40. self:GetChildren(nodes)
  41. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("tips_comm_bg6"))
  42. end
  43. function PsionicDrawPreviewView:AddEvent()
  44. local function click_event(target)
  45. if target == self.close_obj then
  46. self:Close()
  47. end
  48. end
  49. AddClickEvent(self.close_obj, click_event)
  50. end
  51. function PsionicDrawPreviewView:UpdateView()
  52. -- 获取奖池类型
  53. local pool_data = self.model:GetPsionicDrawPoolPecData(self.pool_type)
  54. local data = {}
  55. for i = 6, 1, -1 do -- 按颜色品质反向遍历
  56. if pool_data.data[i] then -- 存在这个颜色品质的奖励
  57. data[#data+1] = {
  58. title = string.format("有<color=#fdffc2>%.2f%%</color>的概率获得%s",
  59. (pool_data.color_weight[i] or 0) / pool_data.total_weight * 100,
  60. PsionicConst.DrawPreviewQuality[i])
  61. }
  62. local type_reward_list = {}
  63. for k, v in pairs(pool_data.data[i]) do
  64. type_reward_list[#type_reward_list+1] = v.awards[1]
  65. end
  66. data[#data+1] = {reward = type_reward_list}
  67. end
  68. end
  69. local height = 0
  70. local item = nil
  71. for k, v in ipairs(data) do
  72. item = self.item_list[k]
  73. if not item then
  74. item = PsionicDrawPreviewItem.New(self.info_con)
  75. self.item_list[k] = item
  76. end
  77. item:SetAnchoredPosition(0, -height)
  78. height = height + item:SetData(v)
  79. end
  80. SetSizeDeltaY(self.info_con, height + 10)
  81. end
  82. function PsionicDrawPreviewView:DestroySuccess( )
  83. for k, v in ipairs(self.item_list) do
  84. v:DeleteMe()
  85. end
  86. self.item_list = nil
  87. end