源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

174 lines
5.9 KiB

  1. PetBaseView = PetBaseView or BaseClass(BaseView)
  2. local PetBaseView = PetBaseView
  3. PetBaseView.TabData = {
  4. {id = PetConst.ModuleId.Training, name = "培养", module_id = 163, sub_id = 1, abName = "pet_asset", light_res = "pet_ui_tab_1_1", dark_res = "pet_ui_tab_1_2", },
  5. {id = PetConst.ModuleId.Support, name = "出战", module_id = 163, sub_id = 3, abName = "pet_asset", light_res = "pet_ui_tab_2_1", dark_res = "pet_ui_tab_2_2", },
  6. {id = PetConst.ModuleId.Collection, name = "图鉴", module_id = 163, sub_id = 2, abName = "pet_asset", light_res = "pet_ui_tab_3_1", dark_res = "pet_ui_tab_3_2", },
  7. {id = PetConst.ModuleId.Awake, name = "觉醒", module_id = 163, sub_id = 4, abName = "pet_asset", light_res = "pet_ui_tab_4_1", dark_res = "pet_ui_tab_4_2", },
  8. }
  9. function PetBaseView:__init()
  10. self.base_file = "pet"
  11. self.layout_file = "PetBaseView"
  12. self.layer_name = "UI"
  13. self.destroy_imm = true
  14. self.use_background = G_USING_BG
  15. self.hide_maincancas = true
  16. self.change_scene_close = true
  17. self.append_to_ctl_queue = true --是否要添加进界面堆栈
  18. self.need_show_money = true --是否要显示顶部的金钱栏
  19. -- self.is_set_zdepth = true
  20. self.close_fog = true
  21. self.model_activity_bg = true
  22. self.model_activity_bg_pos = Vector2(-294,160)
  23. self.model_activity_bg_type = 4
  24. self.model = PetModel:getInstance()
  25. self.current_index = nil
  26. self.load_callback = function ()
  27. self:LoadSuccess()
  28. self:AddEvent()
  29. end
  30. self.open_callback = function ( )
  31. self:OpenSuccess()
  32. self:ShowTabRedPointState()
  33. end
  34. self.switch_callback = function(index)
  35. self:SwitchTab(index)
  36. end
  37. self.close_win_callback = function ( )
  38. self:Close()
  39. end
  40. self.destroy_callback = function ( )
  41. self:DestroySuccess()
  42. end
  43. end
  44. function PetBaseView:Open(index,right_tab_index)
  45. self.current_index = index or 1
  46. self.right_tab_index = right_tab_index or 1
  47. BaseView.Open(self)
  48. end
  49. function PetBaseView:LoadSuccess()
  50. local nodes = {
  51. "winCon",
  52. }
  53. self:GetChildren(nodes)
  54. self.tabWindowComponent = UITabWindow.New(self.transform,PetBaseView.TabData,self.switch_callback,
  55. self.close_win_callback,self.background_wnd,false, UITabWindow.SizeLarge, false,nil,true)
  56. self.tabWindowComponent:SetTitleText("宠物")
  57. self.tabWindowComponent:SetUIBack({target = self, bg1 = GameResPath.GetViewBigBg("default_bg_2")})
  58. end
  59. function PetBaseView:AddEvent()
  60. local function on_ans_update_red_dot()
  61. self:ShowTabRedPointState()
  62. end
  63. self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, on_ans_update_red_dot)
  64. end
  65. function PetBaseView:OpenSuccess()
  66. -- self:SwitchTab(self.current_index or 1)
  67. local list = self.model.pet_list
  68. if not list or TableSize(list) <= 0 then
  69. self.current_index = 3
  70. end
  71. self.tabWindowComponent:SetTabBarIndex(self.current_index or 1)
  72. end
  73. function PetBaseView:SwitchTab( index )
  74. if index == 1 or index == 2 or index == 4 then
  75. local list = self.model.pet_list
  76. if not list or TableSize(list) <= 0 then
  77. Message.show("需要激活至少1只宠物哦!","fault")
  78. self.tabWindowComponent:SetTabBarIndex(PetConst.ModuleId.Collection,false,true)
  79. return
  80. end
  81. end
  82. --切换页签时候,用于防止重复点击item的标识也要重置
  83. self.model.select_collect_item_id = 0
  84. self.model.select_item_id = 0
  85. self.current_index = index
  86. if index == 1 then--宠物培养界面(主界面)
  87. if self.pet_training_view == nil then
  88. self.pet_training_view = PetTrainingView.New(self.winCon)
  89. end
  90. self.pet_training_view:SetData(self.right_tab_index)
  91. self:PopUpChild(self.pet_training_view)
  92. elseif index == 3 then--宠物图鉴界面(宠物收集)
  93. if self.pet_collection_view == nil then
  94. self.pet_collection_view = PetCollectionView.New(self.winCon)
  95. end
  96. self.pet_collection_view:SetData()
  97. self:PopUpChild(self.pet_collection_view)
  98. self.right_tab_index = 1
  99. elseif index == 2 then--宠物声援界面
  100. if self.pet_support_view == nil then
  101. self.pet_support_view = PetSupportView.New(self.winCon)
  102. end
  103. self.pet_support_view:SetData()
  104. self:PopUpChild(self.pet_support_view)
  105. self.right_tab_index = 1
  106. elseif index == 4 then--宠物觉醒界面
  107. if self.pet_awake_view == nil then
  108. self.pet_awake_view = PetAwakeView.New(self.winCon)
  109. end
  110. self.pet_awake_view:SetData()
  111. self:PopUpChild(self.pet_awake_view)
  112. self.right_tab_index = 1
  113. end
  114. end
  115. function PetBaseView:DestroySuccess( )
  116. if self.tabWindowComponent then
  117. self.tabWindowComponent:DeleteMe()
  118. end
  119. self.tabWindowComponent = nil
  120. if self.pet_training_view then
  121. self.pet_training_view:DeleteMe()
  122. end
  123. self.pet_training_view = nil
  124. if self.pet_collection_view then
  125. self.pet_collection_view:DeleteMe()
  126. end
  127. self.pet_collection_view = nil
  128. if self.pet_support_view then
  129. self.pet_support_view:DeleteMe()
  130. end
  131. self.pet_support_view = nil
  132. if self.pet_awake_view then
  133. self.pet_awake_view:DeleteMe()
  134. end
  135. self.pet_awake_view = nil
  136. -- 复原绿屏
  137. CheatModel:getInstance():DisabledGreenScreenEffect()
  138. end
  139. function PetBaseView:ShowTabRedPointState()
  140. local red_info = self.model:GetAllRedDot()
  141. local bool_1 = red_info[PetConst.RED_DOT_TYPE.Feed] or red_info[PetConst.RED_DOT_TYPE.Evolve] or red_info[PetConst.RED_DOT_TYPE.Diamond] or red_info[PetConst.RED_DOT_TYPE.DiamondCompose]
  142. self.tabWindowComponent:ShowRedPoint(PetConst.ModuleId.Training, bool_1)
  143. local bool_2 = red_info[PetConst.RED_DOT_TYPE.Active]
  144. self.tabWindowComponent:ShowRedPoint(PetConst.ModuleId.Collection, bool_2)
  145. local bool_3 = red_info[PetConst.RED_DOT_TYPE.Reward] or red_info[PetConst.RED_DOT_TYPE.Vote]
  146. self.tabWindowComponent:ShowRedPoint(PetConst.ModuleId.Support, bool_3)
  147. local bool_4 = red_info[PetConst.RED_DOT_TYPE.Awake]
  148. self.tabWindowComponent:ShowRedPoint(PetConst.ModuleId.Awake, bool_4)
  149. end