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

635 lines
23 KiB

  1. BossHomeSubView = BossHomeSubView or BaseClass(BaseItem)
  2. local BossHomeSubView = BossHomeSubView
  3. local ConfigItemMgr = ConfigItemMgr
  4. local Config = Config
  5. local stringtotable = stringtotable
  6. function BossHomeSubView:__init()
  7. self.base_file = "boss"
  8. self.layout_file = "BossHomeSubView"
  9. self.layer_name = "UI"
  10. self.model = BossHomeModel:getInstance()
  11. self.full_screen = true
  12. -- self.ani_right = 400
  13. self.ani_left = -200
  14. -- self.adjust_mid = {left = 370, right = 520}
  15. self.adjust_mid = {left = 370}
  16. self.cur_hor_tab_index = 1
  17. self.cur_select_index = 1
  18. self.select_boss_id = false
  19. self.need_auto_selected = false
  20. self.main_tab_data = {}
  21. self.first_update_maintab = true
  22. self.main_tab_selected_index = 1 -- 区域tab索引
  23. self.guild_exclusive_index = 1--社团归属索引
  24. self.bosshome_area_type = 1 -- 区域类型 1:普通 2:社团专属
  25. self.sort_data_list = nil
  26. self.cache_event_req_list = {} -- 缓存对应区域/层数的协议请求,满足条件则不会在本次打开界面时反复请求协议
  27. self.reward_list = {}
  28. self.main_role = RoleManager.Instance.mainRoleInfo
  29. self:Load()
  30. -- 清除红点
  31. self.model:CheckBossHomeRedByType(BossConst.RedType.ModuleOpen, false)
  32. self.model.boss_home_login_red = false
  33. self.model:CheckBossHomeRedByType(BossConst.RedType.Login)
  34. end
  35. function BossHomeSubView:Load_callback()
  36. self.nodes = {
  37. "bg:raw",
  38. "right", "right/right_bg:raw",
  39. "right/con_model:raw",
  40. -- "right/boss_bg_mask:obj",
  41. "right/boss_bg_mask_new:raw",
  42. "right/scroll_special","right/scroll_special/Viewport/Content_special",
  43. "right/btn_challenge/red_challenge:obj",
  44. "right/btn_challenge:obj:img","right/btn_help:obj",
  45. "right/btn_history:obj",
  46. "left/scroll_tab","left/scroll_tab/Viewport/Content_tab",
  47. "left/tab_con", "left/bg_tab", "left/bg_main_tab",
  48. "right/btn_challenge/lb_btn_challenge:tmp",
  49. "right/costCon:obj", "right/costCon/costNum:tmp", "right/costCon/costImg:img",
  50. "right/costCon/costDes:tmp", "right/block_tips:tmp",
  51. }
  52. self:GetChildren(self.nodes)
  53. self.btn_help_obj:SetActive(false)
  54. self.costDes_tmp.text = "<#f558ff>VIP等级</color><#ffffff>不足可消耗</color>"
  55. -- SetLocalPositionZ(self.boss_bg_mask, -4000)
  56. -- self.boss_bg_mask_canvas = self.boss_bg_mask.gameObject:GetComponent(typeof(UnityEngine.Canvas))
  57. -- self.boss_bg_mask_obj.layer = LayerMask.NameToLayer(self.layer_name)
  58. -- 重新设置RT节点
  59. self.block_tips_tmp.fontSize = 16
  60. SetSizeDelta(self.con_model, 400, 500)
  61. SetAnchoredPosition(self.con_model, -3.5, -30)
  62. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("bosshome_main_bg"))
  63. lua_resM:setOutsideRawImage(self, self.right_bg_raw, GameResPath.GetViewBigBg("bosshome_main_bg2"))
  64. lua_resM:setOutsideRawImage(self, self.boss_bg_mask_new_raw, GameResPath.GetViewBigBg("bosshome_boss_bgmasknew"))
  65. self:AddEvents()
  66. if self.need_refreshData then
  67. self:UpdateView()
  68. end
  69. end
  70. function BossHomeSubView:AddEvents( )
  71. local on_click = function ( click_obj )
  72. if self.btn_challenge_obj == click_obj then
  73. self:DoChallenge()
  74. elseif self.btn_history_obj == click_obj then
  75. if self.select_boss_id and self.select_boss_id > 0 then
  76. BossModel.Instance:Fire(BossConst.OPEN_MONEY_KILL_HISTORY_VIEW,self.select_boss_id)
  77. end
  78. end
  79. end
  80. AddClickEvent(self.btn_challenge_obj, on_click)
  81. AddClickEvent(self.btn_history_obj, on_click)
  82. local function ANS_BOSS_HOME_INFO(bosstype, level, guild_id)
  83. local target_guild_id = 0
  84. if self.main_tab_selected_index ~= 1 then
  85. target_guild_id = self.main_tab_data[self.main_tab_selected_index]
  86. and self.main_tab_data[self.main_tab_selected_index].guild_data
  87. and self.main_tab_data[self.main_tab_selected_index].guild_data.guild_id or 0
  88. end
  89. if bosstype == self.bosshome_area_type and level == self.cur_hor_tab_index and guild_id == target_guild_id then
  90. self:UpdateLeftItemInfo()
  91. end
  92. end
  93. self:BindEvent(self.model, BossHomeConst.ANS_BOSS_HOME_INFO, ANS_BOSS_HOME_INFO)
  94. local function ChangeVisible( flag )
  95. if not flag then
  96. return
  97. end
  98. self:UpdateModelInfo(true)
  99. end
  100. self:BindEvent(GlobalEventSystem, BaseView.ChangeVisible, ChangeVisible)
  101. local function updateGuildExclusiveData()
  102. self:UpdateMainTab()
  103. end
  104. self:BindEvent(self.model, BossHomeConst.UPDATE_GUILD_EXCLUSIVE_DATA, updateGuildExclusiveData)
  105. -- 当玩家所在的社团id变动时,刷新主页签
  106. self.on_guild_id_chagne_id = self.main_role:BindOne("guild_id", updateGuildExclusiveData)
  107. end
  108. function BossHomeSubView:SetData( select_boss_id )
  109. --需要判断下这个bossid是否正确,否则就重置为nil
  110. -- local is_boss_id_true = false
  111. -- for k,v in pairs(Config.Homeboss) do
  112. -- if v.boss_id == select_boss_id and v.sub_module == 1 then
  113. -- is_boss_id_true = true
  114. -- break
  115. -- end
  116. -- end
  117. -- if not is_boss_id_true then
  118. -- select_boss_id = nil
  119. -- end
  120. if select_boss_id then
  121. select_boss_id = nil--先不允许外部传
  122. end
  123. self.select_boss_id = select_boss_id or self.select_boss_id
  124. -------------------------
  125. if self.select_boss_id then
  126. self.need_auto_selected = true
  127. -- local boss_conf = self.model:GetBossHomeCFGById( self.select_boss_id )
  128. -- self:SwitchTab( boss_conf.level )
  129. end
  130. -------------------------
  131. if self.is_loaded then
  132. self.need_refreshData = false
  133. self:UpdateView()
  134. else
  135. self.need_refreshData = true
  136. end
  137. end
  138. function BossHomeSubView:UpdateView( )
  139. self:UpdateMainTab()
  140. end
  141. -- 更新幻魔之家最右侧主tab:区域tab
  142. function BossHomeSubView:UpdateMainTab( )
  143. self.main_tab_data = {}
  144. local guild_exclusive_data = self.model:GetBossHomeGuildExclusiveData()
  145. -- 插入公共区域的配置
  146. self.main_tab_data[#self.main_tab_data+1] = {
  147. type = BossHomeConst.BossHomeType.Normal,
  148. }
  149. -- 插入社团专属区域的信息
  150. self.guild_exclusive_index = 1
  151. local temp_ex_data
  152. for i = 1, 3 do
  153. temp_ex_data = guild_exclusive_data[i]
  154. self.main_tab_data[#self.main_tab_data+1] = {
  155. type = BossHomeConst.BossHomeType.Guild,
  156. -- 没有社团信息到时候要做空表现处理
  157. guild_data = temp_ex_data or nil
  158. }
  159. if temp_ex_data and temp_ex_data.guild_id == self.main_role.guild_id then
  160. self.guild_exclusive_index = i + 1
  161. end
  162. end
  163. -- 选中回调,选中后需要同步更新左侧层数,boss页签和最右侧的boss模型等内容和奖励
  164. local function select_callback(index, type)
  165. self.main_tab_selected_index = index
  166. self.bosshome_area_type = type
  167. self.maintab_item_creator:IterateItems(function ( item, i )
  168. item:SetSelected(index)
  169. end)
  170. -- 更新这个区域的页签数据信息
  171. self:SetTabData()
  172. -- 更新boss模型
  173. self:UpdateModelInfo()
  174. -- 更新奖励
  175. self:UpdateAwardInfo()
  176. end
  177. self.maintab_item_creator = self.maintab_item_creator or self:AddUIComponent(UI.ItemListCreator)
  178. local data = {
  179. data_list = self.main_tab_data,
  180. scroll_view = self.bg_main_tab,
  181. item_con = self.bg_main_tab,
  182. item_class = BossHomeMainTabItem,
  183. item_height = 151,
  184. start_x = 11.5,
  185. start_y = -6,
  186. space_y = 6,
  187. on_update_item = function(item, i, v)
  188. item:SetData(v, i, select_callback)
  189. item:SetSelected(self.main_tab_selected_index)
  190. end,
  191. }
  192. self.maintab_item_creator:UpdateItems(data)
  193. -- 首次打开需要自动定位
  194. -- 若存在外部传入的bossid,则需要定位到对应的区域/层数和位置
  195. -- 而不存在外部传入的bossid,且存在自己所在的社团专属区域,则自动定位到该index,否则默认第一位
  196. if self.first_update_maintab then
  197. -- if self.need_auto_selected then
  198. -- local boss_conf = self.model:GetBossHomeCFGById(self.select_boss_id)
  199. -- if boss_conf then -- 在公共区域,则需要强制切换到公共区域
  200. -- self.guild_exclusive_index = 1
  201. -- else
  202. -- -- 是专属区域的boss,则不要变动self.guild_exclusive_index,但固定层数索引
  203. -- boss_conf = self.model:GetGuildBossHomeCFGById(self.select_boss_id)
  204. -- end
  205. -- -- 确定外部传入的bossid对应的层数,后面的逻辑跳过对这个值的更新
  206. -- self.cur_hor_tab_index = boss_conf.level
  207. -- end
  208. -- select_callback(self.guild_exclusive_index, self.main_tab_data[self.guild_exclusive_index].type)
  209. select_callback(1, self.main_tab_data[1].type)
  210. else
  211. select_callback(self.main_tab_selected_index, self.main_tab_data[self.main_tab_selected_index].type)
  212. end
  213. self.first_update_maintab = false
  214. end
  215. function BossHomeSubView:SetTabData()
  216. -- 需根据区域是否属于公共区域划分不同的配置,后同
  217. local cfg = self.bosshome_area_type == BossHomeConst.BossHomeType.Normal
  218. and self.model:GetBossHomeLevelCFG() or self.model:GetGuildBossHomeLevelCFG()
  219. local open_count = 0
  220. self.menu_list = {}
  221. local tab = 1
  222. for i,v in ipairs(cfg) do
  223. if v.enter_lv <= self.main_role.level then
  224. table.insert(self.menu_list, string.format("第%s层", v.level))
  225. open_count = i -- 标记开放的个数
  226. tab = i -- 计算顶部页签
  227. else
  228. if i == open_count + 1 then
  229. local str = string.format("%s级开放", v.enter_lv)
  230. table.insert(self.menu_list, {text = str, enter_lv = v.enter_lv, show_lock = true})
  231. end
  232. end
  233. end
  234. local call_back = function (index)
  235. if index <= open_count then
  236. self:SwitchTab(index or 1)
  237. else
  238. local temp_cfg = self.menu_list[index]
  239. Message.show(string.format("%s级开放该层幻魔之家!", temp_cfg.enter_lv), "fault")
  240. if self.tabBar then
  241. self.tabBar:SetSelectTab(self.cur_hor_tab_index)
  242. end
  243. self:SwitchTab(self.cur_hor_tab_index)
  244. end
  245. end
  246. -- 在没有指定bossid跳转的前提下,才可以确定当前等级最高可以挑战的boss索引index
  247. if not self.need_auto_selected then
  248. self.cur_hor_tab_index = tab
  249. end
  250. SetSizeDeltaX(self.bg_tab.transform, 125.7 * (#self.menu_list))
  251. if not self.tabBar then
  252. self.tabBar = self:CreateItem(UIHorTabBar, self.tab_con, self.layer_name)
  253. end
  254. self.tabBar:SetData(self.menu_list, call_back)
  255. -- self.tabBar:SetBtnLabelColor(ColorUtil:ConvertHexToRGBColor("#9eb3cf"), ColorUtil:ConvertHexToRGBColor("#ffffff"))
  256. self.tabBar:SetSize(130,45)
  257. self.tabBar:SetPosition(-1,-2)
  258. self.tabBar:SetBtnRes("alphaCommon_asset", "tyui_btn1_3", "tyui_btn1_1")
  259. self.tabBar:SetSpacing(-6, 0)
  260. local offset = -math.min(124*(self.cur_hor_tab_index - 1),814)
  261. self.tabBar:SetScrollConPos(offset,0)
  262. -- -- 若需要选中外部传入的bossid对应的层数
  263. -- if self.need_auto_selected then
  264. -- local boss_conf = self.model:GetBossHomeCFGById( self.select_boss_id )
  265. -- -- 确定外部传入的bossid对应的层数
  266. -- self.cur_hor_tab_index = boss_conf.level
  267. -- end
  268. -- if self.select_boss_id then
  269. -- self.need_auto_selected = true
  270. -- end
  271. self.sort_data_list = self.bosshome_area_type == BossHomeConst.BossHomeType.Normal
  272. and self.model:GetBossHomeCFG(self.cur_hor_tab_index) or self.model:GetGuildBossHomeCFG(self.cur_hor_tab_index)
  273. local monster_cfg
  274. for i,v in ipairs(self.sort_data_list) do
  275. monster_cfg = ConfigItemMgr.Instance:GetMonsterDataItem(v.boss_id)
  276. if monster_cfg then
  277. if monster_cfg.lv <= self.main_role.level then
  278. self.cur_select_index = i
  279. end
  280. end
  281. end
  282. -- 选中顶部层数页签,更新boss列表和其他内容
  283. self.tabBar:SetSelectTab(self.cur_hor_tab_index)
  284. call_back(self.cur_hor_tab_index)
  285. end
  286. function BossHomeSubView:SwitchTab( index )
  287. self.cur_hor_tab_index = index
  288. -- 请求boss信息列表
  289. self:RequestBossData()
  290. end
  291. function BossHomeSubView:RequestBossData( )
  292. local target_guild_id = 0
  293. if self.main_tab_selected_index ~= 1 then
  294. target_guild_id = self.main_tab_data[self.main_tab_selected_index]
  295. and self.main_tab_data[self.main_tab_selected_index].guild_data
  296. and self.main_tab_data[self.main_tab_selected_index].guild_data.guild_id or 0
  297. end
  298. -- 请求boss信息列表
  299. -- local key = self.bosshome_area_type .. "@" .. self.cur_hor_tab_index .. "@" .. target_guild_id
  300. -- if self.cache_event_req_list[key] then -- 已经请求过数据的不再请求,直接加载
  301. -- self:UpdateLeftItemInfo()
  302. -- else
  303. self.model:Fire(BossHomeConst.REQUEST_CCMD_EVENT, 46201, self.bosshome_area_type, self.cur_hor_tab_index, target_guild_id)
  304. -- end
  305. -- 追加缓存,后续避开协议请求
  306. -- self.cache_event_req_list[key] = true
  307. end
  308. function BossHomeSubView:CheckSelectId( )
  309. --检查默认选中的Id
  310. if (not self.select_boss_id) or (self.select_boss_id == 0) then
  311. --默认选择
  312. self.select_boss_id = self.sort_data_list[1].boss_id
  313. end
  314. end
  315. function BossHomeSubView:UpdateLeftItemInfo()
  316. -------------------------
  317. local function select_call( index,boss_id,data )
  318. if boss_id and boss_id > 0 then
  319. self:SetSelectItem(index, boss_id, data)
  320. end
  321. end
  322. -------------------------
  323. self.sort_data_list = self.bosshome_area_type == BossHomeConst.BossHomeType.Normal
  324. and self.model:GetBossHomeCFG(self.cur_hor_tab_index) or self.model:GetGuildBossHomeCFG(self.cur_hor_tab_index)
  325. self:CheckSelectId()
  326. local show_data = self.sort_data_list
  327. local server_data = self.model:GetBossHomeInfo()
  328. self.tab_item_list = self.tab_item_list or self:AddUIComponent(UI.ItemListCreator)
  329. local data = {
  330. data_list = show_data or {},
  331. item_con = self.Content_tab,
  332. item_class = BossHomeTabItem,
  333. item_width = BossHomeTabItem.Width,
  334. item_height = BossHomeTabItem.Height-3.2,
  335. space_y = 2.5,
  336. start_x = 8.5-6,
  337. start_y = -5.5+6,
  338. scroll_view = self.scroll_tab,
  339. on_update_item = function(item, i, v)
  340. item:SetData(i,v,select_call, server_data[v.boss_id], "boss_home")
  341. item:SetSelect(self.select_boss_id)
  342. end,
  343. }
  344. self.tab_item_list:UpdateItems(data)
  345. if self.need_auto_selected then
  346. for k,v in pairs(show_data) do
  347. if v.boss_id == self.select_boss_id then
  348. self.cur_select_index = k
  349. end
  350. end
  351. self.need_auto_selected = false
  352. end
  353. -------------------------
  354. self.cur_select_index = show_data[self.cur_select_index] and self.cur_select_index or 1
  355. local data = show_data[self.cur_select_index]
  356. self:SetSelectItem(self.cur_select_index, data.boss_id, data)
  357. self.tab_item_list:ScrollToItem(self.cur_select_index)
  358. end
  359. function BossHomeSubView:SetSelectItem( index, boss_id,data )
  360. self.cur_select_index = index
  361. self.select_boss_id = boss_id
  362. self.select_data = data
  363. self.tab_item_list:IterateItems(function ( item )
  364. item:SetSelect(self.select_boss_id)
  365. end)
  366. self:UpdateModelInfo(true)
  367. self:UpdateAwardInfo()
  368. self:UpdateChallengeBtnState()
  369. end
  370. function BossHomeSubView:UpdateModelInfo( force )
  371. --Boss形象
  372. local monster = ConfigItemMgr.Instance:GetMonsterDataItem(self.select_boss_id)
  373. if not monster then
  374. print("HWR:BossDesertedSubView [234]no boss cfg: ",self.select_boss_id)
  375. return
  376. end
  377. -------------------------
  378. --BOSS展示的时候的第一次播放的动作
  379. -- print("Saber:BossHomeSubView [371] monster.icon: ",monster.icon)
  380. local aciton_list = {"show", idle_name="show",loopList=false}
  381. local pos = Config.ConfigBoss.ModelPos[monster.icon] or {0,0}
  382. if not self.last_boss_id or self.last_boss_id~=self.select_boss_id or force then
  383. local function delay( )
  384. if self._use_delete_method then return end
  385. local res_data = {
  386. clothe_res_id = monster.icon,
  387. --weapon_res_id = monster.weapon_id,
  388. type = SceneBaseType.Monster,
  389. action_name_list = aciton_list,
  390. layer_name = self.layer_name,
  391. father_node = self,
  392. transform = self.con_model,
  393. rotate = Vector3(15,180,0),
  394. fashion_type = FuncOpenModel.TypeId.Monster,
  395. size = {x = 600, y = 500},
  396. -- position = Vector3(pos[1], 20 + pos[2], -1000),
  397. position = Vector3(pos[1], 100 + pos[2], 0),
  398. -- scale = 70,
  399. scale = 30,
  400. can_rotate = false;
  401. -- ui_model_type = UIModelCommon.ModelType.Model,
  402. ui_model_type = UIModelCommon.ModelType.RT,
  403. show_shadow = false,
  404. }
  405. FuncOpenModel:getInstance():SetModelRes(res_data)
  406. end
  407. setTimeout(delay,0.05)
  408. end
  409. self.last_boss_id = self.select_boss_id
  410. -- self.boss_bg_mask_canvas.sortingOrder = self:GetCurrLayerDepth(self.layer_name) + 1
  411. end
  412. function BossHomeSubView:UpdateAwardInfo( )
  413. local conf = self.select_data
  414. if not conf or not conf.drop_show then return end
  415. -------------------------
  416. local base_conf = stringtotable(conf.drop_show)
  417. local function GetShowList( data )
  418. local result = {}
  419. if data then
  420. for k,v in pairs(data) do
  421. if self.main_role.career == tonumber(v[1]) or tonumber(v[1]) == 0 then
  422. table.insert(result,v)
  423. end
  424. end
  425. end
  426. return result
  427. end
  428. base_conf = GetShowList(base_conf)
  429. -------------------------
  430. for k, v in ipairs(base_conf) do
  431. if k > 12 then return end -- 至多显示12个道具
  432. self.reward_list[k] = self.reward_list[k] or UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.Content_special)
  433. -- 使用了组件自动对准位置
  434. -- self.reward_list[k]:SetAnchoredPosition((k - 1) * 96 + offset_x, 0)
  435. self.reward_list[k]:SetItemSize(78, 78)
  436. self.reward_list[k]:SetVisible(true, nil, true)
  437. self.reward_list[k]:SetDataWithMapId(v[3], v[4], v[2])
  438. local goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(v[3])
  439. if goods_vo.type == 4 and goods_vo.subtype >= 6 and goods_vo.subtype <= 9 then--珍宝要显示概率UP
  440. self.reward_list[k]:SetNumLimitVisible(true,33)
  441. else
  442. self.reward_list[k]:SetNumLimitVisible(false)
  443. end
  444. end
  445. if #base_conf < #self.reward_list then
  446. for i = #base_conf + 1, #self.reward_list do
  447. self.reward_list[i]:SetVisible(false, nil, true)
  448. end
  449. end
  450. end
  451. -- 点击挑战按钮回调
  452. function BossHomeSubView:DoChallenge( )
  453. if self.select_boss_id and self.select_boss_id > 0 then
  454. --场景内寻路
  455. local scene_id = self.model:GetBossHomeSceneById(self.select_boss_id)
  456. local cur_scene_id = SceneManager.Instance:GetSceneId()
  457. if cur_scene_id == scene_id then
  458. local cfg = Config.Homeboss[self.bosshome_area_type .. "@" .. self.select_boss_id]
  459. local pos = stringtotable(cfg.born_pos)
  460. local function call_back( ... )
  461. GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT)
  462. end
  463. local findVo = FindVo.New()
  464. findVo.sceneId = SceneManager.Instance:GetSceneId()
  465. findVo.type = FindVo.POINT
  466. findVo.x = pos[1]/ SceneObj.LogicRealRatio.x
  467. findVo.y = pos[2]/ SceneObj.LogicRealRatio.y
  468. findVo.call_back = call_back
  469. GlobalEventSystem:Fire(EventName.FIND,findVo)
  470. BossModel.Instance:Fire(BossConst.CLOSE_BOSS_BASE_VIEW)
  471. else
  472. --如果是在boss之家场景中,但是点了其他场景中的boss,飘字提示不允许这样做
  473. if SceneManager.Instance:IsBossHomeScene() then
  474. Message.show("当前场景不能直接进入!","fault")
  475. return
  476. end
  477. local is_in_common = self.main_tab_selected_index == 1
  478. local is_in_guild = self.guild_exclusive_index == self.main_tab_selected_index and self.guild_exclusive_index ~= 1
  479. if not is_in_common and not is_in_guild then
  480. Message.show("无法进入其他社团的幻魔之家", "fault")
  481. return
  482. end
  483. --场景外先判断vip够不够,不够要提醒花钱买门票
  484. local ok_enter = function()
  485. self.model:Fire(BossHomeConst.REQUEST_CCMD_EVENT, 46204, self.bosshome_area_type, self.select_boss_id)
  486. self.model:SetNeedFindBoss(self.select_boss_id)
  487. end
  488. local vip_condition = stringtotable(Config.Homebosslevel[self.bosshome_area_type .. "@" .. self.cur_hor_tab_index].condition)[1][2]
  489. if self.main_role.vip_flag >= vip_condition then
  490. ok_enter()
  491. else
  492. local cost = stringtotable(Config.Homebosslevel[self.bosshome_area_type .. "@" .. self.cur_hor_tab_index].cost)
  493. if cost[1] then
  494. local function ok1( ... )
  495. if RoleManager.Instance.mainRoleInfo.jinLock>=cost[1][3] then--够钱直接买
  496. ok_enter()
  497. else
  498. local function use_function( toggle_tip_data,call_fun_sum )
  499. GlobalEventSystem:Fire(EventName.OPEN_COM_TOGGLE_TIP_VIEW, toggle_tip_data)
  500. end
  501. local function recharge_open_call_back( )
  502. self:Close()
  503. end
  504. local buy_tip_data = {
  505. gold_type = cost[1][1],--货币类型
  506. cost_price = cost[1][3],--消耗金额
  507. ok_callback = ok_enter,--成功
  508. no_need_toggle = true,
  509. -- toggle_function = toggle_function,--多选
  510. -- recharge_open_call_back = recharge_open_call_back,
  511. togglePriceStr = string.format("<color=#fdffc2>%s</color> 抵扣VIP条件进入?",cost[1][3]),--提示语
  512. use_function = use_function,--最终调用
  513. }
  514. CustomActivityModel:getInstance():BuyTips(buy_tip_data)
  515. end
  516. end
  517. local function ok2( ... )
  518. OpenFun.Open(158,0)
  519. end
  520. local ask_str = string.format("您的<#f558ff>VIP</color>等级不满足,是否消耗 %s<#fdffc2>%s</color> 进入?", WordManager:GetMoneyFaceStr(cost[1][1]),cost[1][3])
  521. Alert.show(ask_str,Alert.Type.Two,ok1,ok2,"确定","提升VIP")
  522. else
  523. -- Message.show(string.format("需达到VIP%s方可进入", vip_condition), "fault")
  524. local function ok3( ... )
  525. OpenFun.Open(158,0)
  526. end
  527. local ask_str = "您的<#f558ff>VIP</color>等级不足,\n提升<#f558ff>VIP</color>可进入幻魔之家无限刷BOSS哦!"
  528. Alert.show(ask_str,Alert.Type.One,ok3,nil,"提升VIP")
  529. end
  530. end
  531. end
  532. self.model.boss_home_scene_boss = self.select_boss_id
  533. end
  534. end
  535. --刷新挑战按钮vip进入显示条件
  536. function BossHomeSubView:UpdateChallengeBtnState( )
  537. local level_cfg = self.bosshome_area_type == BossHomeConst.BossHomeType.Normal
  538. and self.model:GetBossHomeLevelCFG(self.cur_hor_tab_index) or self.model:GetGuildBossHomeLevelCFG(self.cur_hor_tab_index)
  539. if level_cfg then
  540. local vip_condition = stringtotable(level_cfg.condition)[1][2]
  541. self.lb_btn_challenge_tmp.text = string.format("VIP%s直接进入", vip_condition)
  542. local cost = stringtotable(level_cfg.cost)
  543. local can_use_money = false
  544. local cost_money = 0
  545. if cost[1] then
  546. can_use_money = true
  547. cost_money = cost[1][3]
  548. end
  549. local is_in_common = self.main_tab_selected_index == 1
  550. local is_in_guild = self.guild_exclusive_index == self.main_tab_selected_index and self.guild_exclusive_index ~= 1
  551. local vip_enough = self.main_role.vip_flag >= vip_condition
  552. local is_need_set_gray = false
  553. if is_in_common then--公共情况下,不能花钱进且vip不够的时候置灰
  554. if vip_enough or (not vip_enough and can_use_money) then--亮
  555. is_need_set_gray = false
  556. else--置灰
  557. is_need_set_gray = true
  558. end
  559. else
  560. if is_in_guild then
  561. if vip_enough or (not vip_enough and can_use_money) then--亮
  562. is_need_set_gray = false
  563. else--置灰
  564. is_need_set_gray = true
  565. end
  566. else--置灰
  567. is_need_set_gray = true
  568. end
  569. end
  570. if is_need_set_gray then
  571. SetImageGray(self.btn_challenge_img,true)
  572. SetTMPSharedMaterial(self.lb_btn_challenge_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  573. else
  574. SetImageGray(self.btn_challenge_img,false)
  575. SetTMPSharedMaterial(self.lb_btn_challenge_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  576. end
  577. self.block_tips_tmp.text = (is_in_guild or is_in_common) and "" or "无法进入其他社团的幻魔之家"
  578. if (is_in_common and not vip_enough and can_use_money) or (is_in_guild and not vip_enough and can_use_money) then
  579. self.costCon_obj:SetActive(true)
  580. self.costNum_tmp.text = string.format("<#fdffc2>%s</color><#ffffff> 进入</color>",cost_money)
  581. else
  582. self.costCon_obj:SetActive(false)
  583. end
  584. end
  585. end
  586. function BossHomeSubView:__delete( )
  587. for k,v in pairs(self.reward_list) do
  588. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
  589. v = nil
  590. end
  591. self.reward_list = {}
  592. if self.on_guild_id_chagne_id then
  593. self.main_role:UnBind(self.on_guild_id_chagne_id)
  594. self.on_guild_id_chagne_id = nil
  595. end
  596. end