源战役客户端
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.3 KiB

  1. EquipGetWayTipsView = EquipGetWayTipsView or BaseClass(BaseView)
  2. function EquipGetWayTipsView:__init()
  3. self.base_file = "bag"
  4. self.layout_file = "GetWayTipsView"
  5. self.layer_name = "Top"
  6. self.use_background = true
  7. self.blur_activity_bg = true
  8. self.use_show_anim = true
  9. self.use_hide_anim = true
  10. self.open_guide_close = true
  11. self.is_set_zdepth = true
  12. self.go_to = false
  13. self.cfg = false
  14. self.get_way_item_list = {}
  15. self.load_callback = function ()
  16. self:LocalSuccess()
  17. end
  18. self.open_callback = function ()
  19. self:SetData(self.cfg)
  20. end
  21. self.destroy_callback = function ()
  22. self:Remove()
  23. end
  24. end
  25. function EquipGetWayTipsView:Remove()
  26. for k,v in pairs(self.get_way_item_list) do
  27. v:DeleteMe()
  28. end
  29. self.get_way_item_list = {}
  30. end
  31. function EquipGetWayTipsView:LocalSuccess()
  32. self.transform.sizeDelta = Vector2(ScreenWidth,ScreenHeight)
  33. self.bg = self:GetChild("bg").gameObject
  34. self.desc_bg_img = self:GetChild("layout/desc_bg"):GetComponent("Image")
  35. self.layout = self:GetChild("layout")
  36. self.Content = self:GetChild("layout/ScrollView/Viewport/Content")
  37. self.title_text_tmp = self:GetChild("layout/text"):GetComponent("TMP_Text")
  38. lua_resM:setOutsideImageSprite(self,self.desc_bg_img,GameResPath.GetViewBigBg("goods_tool_tip_bg"),false)
  39. self:InitEvent()
  40. end
  41. function EquipGetWayTipsView:InitEvent()
  42. local function onBtnClickHandler(target)
  43. if target == self.bg then
  44. self:Close()
  45. end
  46. end
  47. AddClickEvent(self.bg,onBtnClickHandler)
  48. end
  49. function EquipGetWayTipsView:Open(cfg,x,y,view_type)
  50. self.cfg = cfg
  51. self.pos_x = x
  52. self.pos_y = y
  53. self.view_type = view_type
  54. BaseView.Open(self)
  55. end
  56. function EquipGetWayTipsView:SetData(cfg)
  57. if not self.cfg then return end
  58. -- if self.pos_x and self.pos_y then
  59. -- local x,y = ScreenToViewportPoint(self.pos_x,self.pos_y)
  60. -- y = y - 80
  61. -- if y < 360 then
  62. -- y = 360
  63. -- end
  64. -- self.layout.anchoredPosition = Vector3(x+20,y ,0)
  65. -- end
  66. if self.view_type == "equipCollect" then
  67. self.title_text_tmp.text = "装备获取"
  68. else
  69. self.title_text_tmp.text = "装备推荐"
  70. end
  71. local getway = {}
  72. getway = ErlangParser:GetInstance():Parse( self.cfg.get_way)
  73. self:SortGetWayData(getway)
  74. local function callback( )
  75. self:Close()
  76. end
  77. for i,v in ipairs(getway) do
  78. local item = self.get_way_item_list[i]
  79. if not item then
  80. item = GetGoodsItem.New(self.Content)
  81. self.get_way_item_list[i] = item
  82. item:SetPosition(0, -90 * (i - 1))
  83. end
  84. item:SetVisible(true)
  85. local show_type = v[3] or "normal"
  86. local str_list = Split(show_type, "_")
  87. local type_id = 100003 --默认,如果没有typeid,就随便给一个
  88. if #str_list > 1 then
  89. type_id = tonumber(str_list[2])
  90. end
  91. v[3] = str_list[1]
  92. item:SetData(v, type_id, callback)
  93. end
  94. SetSizeDeltaY(self.Content, #getway * 92)
  95. end
  96. -- 根据查看类型排序获取途径的信息 排序权重为第7个字段
  97. function EquipGetWayTipsView:SortGetWayData(getway)
  98. -- if self.view_type == "equipCollect" then
  99. for k, v in ipairs(getway) do
  100. local left_time = -1 -- 剩余次数,-1代表次数不限
  101. local weight_offset = 1 -- 排序权重offset
  102. local module_id, module_sub = tonumber(v[1]), tonumber(v[2])
  103. if module_id == 215 and module_sub == 1 then -- 装备副本
  104. local cursade_info = DunManyModel:getInstance():GetCrusadeInfo()
  105. left_time = cursade_info and cursade_info.rest_count or 0
  106. weight_offset = left_time <= 0 and 100 or 1
  107. elseif module_id == 460 and module_sub == 1 then -- 专属幻魔
  108. left_time = BossModel:GetInstance():GetPersonBossLeftCount() or 0
  109. weight_offset = left_time <= 0 and 100 or 1
  110. elseif module_id == 460 and module_sub == 3 then -- 赏金幻魔
  111. left_time = BossModel:GetInstance():GetMoneyLeftCount() or 0
  112. weight_offset = left_time <= 0 and 100 or 1
  113. elseif module_id == 155 and module_sub == 1 then -- 拍卖
  114. left_time = -1
  115. end
  116. v[7] = k * weight_offset
  117. v[8] = left_time
  118. end
  119. -- 排序
  120. local sort_func = function ( a, b )
  121. return a[7] < b[7]
  122. end
  123. table.sort(getway, sort_func)
  124. -- end
  125. end