源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

456 行
15 KiB

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