|
|
- --新复活界面(把以前的全部删除)
- --20004
- --1元宝复活
- --2绑定元宝复活
- --3回城复活
- --4根据参数staus复活
- --5原地满血复活
- --6客户端请求变成幽灵
- --7暂无
- --8挂机自动复活
- --9通用副本复活
-
- ReliveView = ReliveView or BaseClass(BaseView)
- local ReliveView = ReliveView
- local SceneManager = SceneManager
- function ReliveView:__init()
- self.base_file = "relive"
- self.layout_file = "ReliveView"
- self.layer_name = "Main"
- self.destroy_imm = true
- self.use_background = false
- self.change_scene_close = true
- self.cost = 0
- self.is_set_zdepth = true
- self.delay_time = 15
- self.is_guardian_three_cd = false
- self.cancelBtnText_str = "安全区复活"
- self.sceneMgr = SceneManager:getInstance()
- self.relive_cost = 20 --默认复活20彩钻
- self.is_first_open = true
- self.is_set_zdepth = true
-
- self.item_list = {}
- self.load_callback = function ()
- self:LoadSuccess()
- end
- self.close_callback = function ()
- self:Remove()
- end
- end
-
- function ReliveView:Remove()
- if self.cd_timer_id then
- GlobalTimerQuest:CancelQuest(self.cd_timer_id)
- self.cd_timer_id = nil
- end
-
- if self.timer_id then
- GlobalTimerQuest:CancelQuest(self.timer_id)
- self.timer_id = nil
- end
-
- if self.next_relive_time_id then
- self.sceneMgr:UnBind(self.next_relive_time_id)
- self.next_relive_time_id = nil
- end
-
- if self.main_role_ghost_mode_id then
- RoleManager.Instance.mainRoleInfo:UnBind(self.main_role_ghost_mode_id)
- self.main_role_ghost_mode_id = nil
- end
- self:StopGuardianThreeTime()
-
- for k,v in pairs(self.item_list) do
- v:DeleteMe()
- end
- end
-
- function ReliveView:Open( )
- BaseView.Open(self)
- end
-
-
- function ReliveView:LoadSuccess()
- local nodes = {
- "reliveCon/Window:raw","reliveCon/contenText:tmp","reliveCon/cancelBtn/cancelBtnText:tmp","reliveCon/Window/windowCloseBtn:obj","reliveCon/contenText2:tmp"
- ,"reliveCon/confirmBtn/confirmBtnText:tmp","reliveCon/lb1:tmp","reliveCon/can_use_time:tmp"
- ,"reliveCon/cancelBtn:obj:img","reliveCon/confirmBtn:obj","reliveCon:obj","reliveCon/gold:img:obj","reliveCon/price:tmp:obj",
- "reliveCon/btnScroll/Viewport/btnCon", "reliveCon/btnScroll", "reliveCon/contenText3:tmp", "reliveCon/left_live_times:tmp",
- "back_bg",
- "reliveCon/title_img:img",
- }
- self:GetChildren(nodes)
- self:InitEvent()
- self.back_bg.transform.sizeDelta = Vector2(SrcScreenWidth * 1.2 , ScreenHeight * 1.2)
-
- lua_resM:setOutsideRawImage(self, self.Window_raw, GameResPath.GetViewBigBg("relive_view_bg_707_265"), false)
- --self.windowTitleText_tmp.text = "复活"
- if SceneManager.Instance:IsBabyScene() then -- 宝宝副本内修改描述
- lua_resM:setImageSprite(self, self.title_img_img, "relive_asset", "relive_img_4", true)
- end
- if SceneManager.Instance:IsGuardianThreeDun() then
- BaseDungeonModel:getInstance():Fire(BaseDungeonModel.REQUEST_CCMD_EVENT, 61031)
- self.is_guardian_three_view = true
- end
-
- local goods_num = GoodsModel:getInstance():GetTypeGoodsNum( 102000 )
- self.ticket_count = goods_num or 0
- if goods_num > 0 and not self.is_guardian_three_view and not SceneManager:getInstance():IsBossDesertedScene() and not SceneManager.Instance:IsBossHomeScene() then -- 复活券
- self.price_tmp.text = string.format('%s/%s', HtmlColorTxt( 1, ColorUtil.GREEN_DARK),goods_num)
- lua_resM:setImageSprite(self,self.gold_img,"uiComponent_asset", "ui_momey_icon_102000", true)
- SetLocalScale(self.gold, 0.35, 0.35, 0.3)
- else -- 彩钻
- self.price_tmp.text = self.relive_cost
- lua_resM:setImageSprite(self,self.gold_img,"uiComponent_asset", "ui_momey_icon_1", true)
- SetLocalScale(self.gold, 1, 1,10)
- end
-
- if SceneManager.Instance:IsWastelandScene() then -- 废土战场改为10秒复活
- self.delay_time = 11
- self.cancelBtn_img.gray = true
- SetTMPSharedMaterial(self.cancelBtnText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
- self.cancelBtnText_str = "免费复活"
- end
-
- self:ResetViewUIZDepth(self:GetCurrLayerDepth(self.layer_name))
-
- self:SetReliveInfo()
- self:UpdateLeftLiveTimes()
- end
-
- function ReliveView:UpdateLeftLiveTimes( )
- self.gold_obj:SetActive(true)
- self.price_obj:SetActive(true)
-
- if SceneManager.Instance:IsPetDungeon() then--宠物副本
- local dun_pet_left_live_times = BaseDungeonModel:GetInstance():GetDunPetReliveTimes()
- local color = dun_pet_left_live_times > 0 and "#2CF86F" or "#ff203a"
- SetAnchoredPosition(self.left_live_times,0,-70)
- self.left_live_times_tmp.text = string.format("剩余复活次数 <%s>%s</color>", color, dun_pet_left_live_times)
- elseif SceneManager.Instance:IsBossDesertedScene() then--混乱星域
- local left_deserted_boss_free_times = BossModel:GetInstance():GetLeftDesertedBossFreeReliveTimes()
- if left_deserted_boss_free_times > 0 then
- SetAnchoredPosition(self.left_live_times,201,-70)
- self.left_live_times_tmp.text = string.format("<color=#2CF86F>本次免费复活 剩余次数:%s</color>",left_deserted_boss_free_times)
- self.gold_obj:SetActive(false)
- self.price_obj:SetActive(false)
- else
- SetAnchoredPosition(self.left_live_times,0,-70)
- self.left_live_times_tmp.text = ""
- end
- else
- SetAnchoredPosition(self.left_live_times,0,-70)
- self.left_live_times_tmp.text = ""
- end
- end
-
- function ReliveView:InitEvent()
- local function onClickHandler(target)
- if self.confirmBtn_obj == target then--花钱原地复活
- if self.is_guardian_three_view then -- 绝地守卫
- if self.is_enough_cost then
- self:RequestGoldRelive()
- else
- Message.show("您当前彩钻不足,无法使用原地复活")
- end
- elseif SceneManager.Instance:IsBossDesertedScene() or SceneManager.Instance:IsBossHomeScene() then
- GlobalEventSystem:Fire(EventName.RELIVEBYTYPE,1)
- else
- if self.ticket_count and self.ticket_count > 0 then
- self:RequestTicketRelive()
- elseif GoodsModel:getInstance():IsJinEnough( self.relive_cost ) then
- self:RequestGoldRelive()
- else
- Message.show("您当前彩钻不足,无法使用原地复活")
- end
- end
- elseif self.cancelBtn_obj == target then
- if self.is_guardian_three_view then
- if self.is_guardian_three_cd then
- Message.show("安全区复活CD中")
- end
- else
- if self.safe_relive_is_cd == false then
- Message.show("安全区复活CD中")
- return
- end
- self:RequestFreeRelive()
- end
- elseif self.windowCloseBtn_obj == target then
- self:RequestFreeRelive()
- end
- end
- AddClickEvent(self.confirmBtn_obj,onClickHandler,1)
- AddClickEvent(self.cancelBtn_obj,onClickHandler,1)
- AddClickEvent(self.windowCloseBtn_obj,onClickHandler,1)
-
- -- local function onNextReliveTimeHandler()
- -- self:SetReliveInfo()
- -- end
- -- self.next_relive_time_id = self.sceneMgr:BindOne("next_relive_time", onNextReliveTimeHandler)
-
- -- local function onMainRoleGhostModeChangeHandler()
- -- self:SetReliveInfo()
- -- end
- -- self.main_role_ghost_mode_id = RoleManager.Instance.mainRoleInfo:BindOne("ghost_mode", onMainRoleGhostModeChangeHandler)
- -- self.be_kill_info_id = GlobalEventSystem:Bind(EventName.UPDATE_BE_KILL_INFO, onMainRoleGhostModeChangeHandler)
- local function update_guardian_three_info( ... )
- self:UpdateGuardianThreeReliveInfo()
- end
- self:BindEvent(DunManyModel:getInstance(), DunManyModel.UPDATE_GUARDIAN_THREE_RELIVE_INFO, update_guardian_three_info)
- end
-
- function ReliveView:SetReliveInfo()
- local desc_str = "您已被击败,是否立刻复活?"
- local confirmBtnText_str = "原地复活"
- local scene_mgr = SceneManager.Instance
- local beKillInfo = FightManager:getInstance():GetBeKillInfo()
- if beKillInfo and beKillInfo.be_kill_type then
- if beKillInfo.be_kill_type==1 then
- desc_str = string.format("您已被 <color=%s>%s(%d级)</color> 击败!", ColorUtil.GREEN_DARK, beKillInfo.name, beKillInfo.level)
- else
- desc_str = string.format("您已被 <color=%s>%s(%s)</color> 击败!", ColorUtil.GREEN_DARK, beKillInfo.name,
- WordManager:GetRoleLevel2(beKillInfo.level, beKillInfo.turn, true,true))
- end
- end
- if SceneManager.Instance:IsBabyScene() then -- 宝宝副本内修改描述
- self.cancelBtnText_str = "安全区痊愈"
- confirmBtnText_str = "原地痊愈"
- end
- self.cancelBtnText_tmp.text = self.cancelBtnText_str
- self.confirmBtnText_tmp.text = confirmBtnText_str
- self.contenText_tmp.text = desc_str
- if SceneManager.Instance:IsBossMoneyScene( ) then
- self.contenText2_tmp.text = string.format("(有损复活将会%s您已造成的累计伤害)", HtmlColorTxt( "损失20%" , '#fa1022'))
- self.confirmBtnText_tmp.text = "无损复活"
- self.cancelBtnText_tmp.text = "有损复活"
- else
- self.contenText2_tmp.text = ""
- end
- if self.is_guardian_three_view then
- self:UpdateGuardianThreeReliveInfo()
- else
- self:UpdateTime()
- self:NeedCdFunc()
- end
- self:UpdateStrengthenBtn( )
- end
-
- function ReliveView:NeedCdFunc( )--判断是否需要免费复活Cd
- --副本不需要再判断冷却cd了
- -- if SceneManager:getInstance():IsDungeonScene() then
- -- local dun_id = SceneManager:getInstance():GetCurrDunId()
- -- if Config.Dungeoncfg[dun_id] then
- -- -- self.cd_time = self.sceneMgr.next_relive_time - TimeUtil:getServerTime()--服务端发的下一次强制复活时间
- -- self.cd_time = Config.Dungeoncfg[dun_id].revive_time
- -- self:UpdateCd()
- -- end
- -- else
- -- -- self.cancelBtnText_shadow.enabled = true
- -- -- self.cancelBtn_img.gray = false
- -- self.can_use_time_tmp.text = ""
- -- end
- self.can_use_time_tmp.text = ""
- end
-
- function ReliveView:UpdateCd( )--更新冷却时间
- if not self.is_loaded then return end
- if self.cd_time > 0 then
- self.safe_relive_is_cd = false
- --self.cancelBtnText_shadow.enabled = false
- self.cancelBtn_img.gray = true
- SetTMPSharedMaterial(self.cancelBtnText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
- else
- self.can_use_time_tmp.text = ""
- return
- end
- local time = self.cd_time
- local function countDown()
- time = time - 1
- self.can_use_time_tmp.text = string.format("等待时间: <color=%s>%s</color> 秒",ColorUtil.GREEN_DARK,time)
- if time <= 0 then
- self.safe_relive_is_cd = true
- --self.cancelBtnText_shadow.enabled = true
- self.cancelBtn_img.gray = false
- SetTMPSharedMaterial(self.cancelBtnText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn)
- if self.cd_timer_id then
- GlobalTimerQuest:CancelQuest(self.cd_timer_id)
- self.cd_timer_id = nil
- end
- self.can_use_time_tmp.text = ""
- end
- end
- if not self.cd_timer_id then
- countDown()
- self.cd_timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,1)
- end
- end
-
- function ReliveView:UpdateTime( )--更新倒计时
- if not self.is_loaded or self.delay_time <= 0 then return end
- local time = self.delay_time
- local function countDown()
- time = time - 1
- if SceneManager.Instance:IsEndlessScene() then--无尽领域复活提示
- self.lb1_tmp.text = string.format("<color=%s>%s</color> 秒后安全区复活<color=%s>(概率掉层)</color>",ColorUtil.GREEN_DARK,time,ColorUtil.RED_DARK)
- else
- self.lb1_tmp.text = string.format("<color=%s>%s</color> 秒后安全区复活",ColorUtil.GREEN_DARK,time)
- end
-
- -- if lua_settingM:GetAutoRebornSet() then --勾选了自动买活
- -- if time <= 10 then
- -- if GoodsModel:getInstance():IsJinEnough( self.relive_cost ) then
- -- self:RequestGoldRelive()
- -- if self.timer_id then
- -- GlobalTimerQuest:CancelQuest(self.timer_id)
- -- self.timer_id = nil
- -- end
- -- return
- -- end
- -- end
- -- end
-
-
- if time <= 0 then
- self:RequestFreeRelive(true)
- if self.timer_id then
- GlobalTimerQuest:CancelQuest(self.timer_id)
- self.timer_id = nil
- end
- end
- end
- if not self.timer_id then
- countDown()
- self.timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,1)
- end
- end
-
- function ReliveView:RequestGoldRelive()--彩钻复活
- MainUIModel:getInstance():MinReliveTimes()--先加上
- if SceneManager.Instance:IsEndlessScene() then--无尽领域走自己的复活协议
- EndlessModel:getInstance():Fire(EndlessConst.REQ_ENDLESS_SCMD, 60008, 1)
- else
- GlobalEventSystem:Fire(EventName.RELIVEBYTYPE,1)
- end
- end
-
- function ReliveView:RequestTicketRelive()--复活券复活
- MainUIModel:getInstance():MinReliveTimes()--先加上
- -- if SceneManager.Instance:IsEndlessScene() then--无尽领域走自己的复活协议
- -- EndlessModel:getInstance():Fire(EndlessConst.REQ_ENDLESS_SCMD, 60008, 1)
- -- else
- GlobalEventSystem:Fire(EventName.RELIVEBYTYPE, 16)
- -- end
- end
-
- function ReliveView:RequestFreeRelive(is_force)--免费复活
- MainUIModel:getInstance():MinReliveTimes()--先加上
- --GlobalEventSystem:Fire(EventName.RELIVEBYTYPE,3)
- local temp = 3
- if SceneManager.Instance:IsDungeonScene() then
- temp = 9
- end
- if SceneManager.Instance:IsEndlessScene() then--无尽领域走自己的复活协议
- EndlessModel:getInstance():Fire(EndlessConst.REQ_ENDLESS_SCMD, 60008, 3)
- else
- GlobalEventSystem:Fire(EventName.RELIVEBYTYPE, temp, is_force)
- end
- end
-
- function ReliveView:UpdateGuardianThreeReliveInfo( )
- local cfg = Config.Dunguardrevive
- local data = DunManyModel:getInstance():GetGuardianThreeReliveInfo()
- if TableSize(data) > 0 then
- for i,v in ipairs(data.revive_list) do
- if v.type == 9 then
- self:UpdateGuardianThreeTime(v.next_time)
- elseif v.type == 1 then
- if cfg[v.revive_count] then
- self.price_tmp.text = cfg[v.revive_count].cost
- self.is_enough_cost = GoodsModel:getInstance():IsJinEnough(cfg[v.revive_count].cost)
- else
- self.price_tmp.text = cfg[TableSize(cfg)].cost
- self.is_enough_cost = GoodsModel:getInstance():IsJinEnough(cfg[#cfg].cost)
- end
- end
- end
- end
- end
-
-
- function ReliveView:UpdateGuardianThreeTime( time )--更新绝地守卫倒计时
- if not self.is_loaded then return end
- self:StopGuardianThreeTime()
- self.relive_time = time
- local function countDown()
- local left_time = self.relive_time - TimeUtil:getServerTime( )
- self.lb1_tmp.text = string.format("<color=%s>%s</color> 秒后安全区复活",ColorUtil.GREEN_DARK,left_time)
- if left_time <= 0 then
- self.is_guardian_three_cd = false
- self:StopGuardianThreeTime()
- self:Close()
- else
- self.is_guardian_three_cd = true
- end
- end
- if not self.timer_id2 then
- self.timer_id2 = GlobalTimerQuest:AddPeriodQuest(countDown,0.8)
- end
- end
-
- function ReliveView:StopGuardianThreeTime( )
- if self.timer_id2 then
- GlobalTimerQuest:CancelQuest(self.timer_id2)
- self.timer_id2 = nil
- end
- end
-
- --更新强化按钮
- function ReliveView:UpdateStrengthenBtn( )
- self:HideAllItem()
- local streng_cfg = StrengthModel:getInstance():GetStrongWayCfg()
- local data = streng_cfg or {}
- local show_max_btn = 4
- local show_count = 0
- for i = 1, show_max_btn do
- if data[i] then
- local cfg = OpenFun.LinkWin[data[i].module_id.."@"..data[i].sub_id]
- if cfg then
- self.item_list[i] = self.item_list[i] or ReliveStrengthenItem.New(self.btnCon)
- local item = self.item_list[i]
-
- local on_click = function ( )
- --self:Close()
- OpenFun.Open(data[i].module_id,data[i].sub_id)
- end
-
- item:SetData(cfg, on_click)
- item:SetVisible(true)
- show_count = show_count + 1
- else
- print("死亡强化配置不存在", data[i].module_id,data[i].sub_id)
- end
- end
- end
- if show_count > 0 then
- self.contenText3_tmp.text = "可以按照以下方式提升自己战斗力"
- if self.contenText2_tmp.text == "" then
- SetAnchoredPositionY(self.contenText3, 57)
- else
- SetAnchoredPositionY(self.contenText3, 41)
- end
- else
- self.contenText3_tmp.text = ""
- end
- end
-
- function ReliveView:HideAllItem( )
- for k,v in pairs(self.item_list) do
- v:SetVisible(false)
- end
- end
-
- function ReliveView:ResetViewUIZDepth(layer_count)
- UIDepth.SetUIDepth(self.gameObject,true, layer_count + 5)
- end
|