|
--新复活界面(把以前的全部删除)
|
|
--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
|