源战役客户端
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.
 
 
 
 
 

362 rivejä
9.6 KiB

GuideMasktView = GuideMasktView or BaseClass(BaseView)
GuideMasktView.FORCE_MASK_HELP_STEP = 7 --=强制黑色遮罩提示,所有的强制遮罩都做一起
function GuideMasktView:__init()
self.base_file = "guide"
self.layout_file = "GuideMasktView"
self.layer_name = "Activity"
self.destroy_imm = true
self.hide_maincancas = false
self.model = GuideModel:getInstance()
self.arrow_component = nil --箭头组件
self.change_scene_close = true
self.append_to_ctl_queue = true
self.time_diff = 10
self.load_callback = function ()
self:LoadSuccess()
self:InitEvent()
end
self.open_callback = function ()
GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK)
self:ShowPrompt()
end
self.close_callback = function ()
GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK)
end
self.destroy_callback = function ()
self:Clear()
end
self.x = 0
self.y = 0
self.w = 0
self.h = 0
--黑幕的alpha值
self.alpha_value = 0.5
self.ref_tar = nil
self.prompt_type = nil
end
function GuideMasktView:Open(ref_tar,prompt_type)
self.ref_tar = ref_tar
self.prompt_type = prompt_type
BaseView.Open(self)
end
function GuideMasktView:ShowPrompt()
local prompt_type = self.prompt_type
if prompt_type == GuideMasktView.FORCE_MASK_HELP_STEP then
self:ForceMaskHelpPrompt_1()
end
self:SetSkipBtnEvent()
end
function GuideMasktView:SetSkipBtnEvent()
local function onBtnClickHandler(target)
if target == self.skip_btn then
local prompt_type = self.prompt_type
if prompt_type == GuideMasktView.FORCE_MASK_HELP_STEP then
local helpVo = GuideModel:getInstance():GetCurHelpVo()
if helpVo then
GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
end
ItemUseModel:getInstance():ShowItemUseView()
GuideModel:getInstance():ShowUILayUI()
end
self:Close()
end
end
AddClickEvent(self.skip_btn,onBtnClickHandler)
end
function GuideMasktView:Clear()
if self.delay_timer then
GlobalTimerQuest:CancelQuest(self.delay_timer)
self.delay_timer = nil
end
if self.trigger_skill_id then
GlobalEventSystem:UnBind(self.trigger_skill_id)
self.trigger_skill_id = nil
end
if self.arrow_component then
self.arrow_component:DeleteMe()
self.arrow_component = nil
end
ItemUseModel:getInstance():ShowItemUseView()
GuideModel:getInstance():ShowUILayUI()
self:CancelTimer()
end
function GuideMasktView:Close()
BaseView.Close(self)
end
function GuideMasktView:LoadSuccess()
--左上
self.C2 = UiFactory.createChild(self.transform,UIType.ImageExtend,"C2")
self.C2.transform.pivot = Vector2(0,1)
self.C2.transform:SetAsFirstSibling()
self.C2_Image = self.C2:GetComponent("ImageExtend")
self.C2_Image.color = Color(0,0,0,self.alpha_value)
--左下
self.C4 = UiFactory.createChild(self.transform,UIType.ImageExtend,"C4")
self.C4.transform.pivot = Vector2(0,0)
self.C4.transform:SetAsFirstSibling()
self.C4_Image = self.C4:GetComponent("ImageExtend")
self.C4_Image.color = Color(0,0,0,self.alpha_value)
--右上
self.C6 = UiFactory.createChild(self.transform,UIType.ImageExtend,"C6")
self.C6.transform.pivot = Vector2(1,1)
self.C6.transform:SetAsFirstSibling()
self.C6_Image = self.C6:GetComponent("ImageExtend")
self.C6_Image.color = Color(0,0,0,self.alpha_value)
--右下
self.C8 = UiFactory.createChild(self.transform,UIType.ImageExtend,"C8")
self.C8.transform.pivot = Vector2(1,0)
self.C8.transform:SetAsFirstSibling()
self.C8_Image = self.C8:GetComponent("ImageExtend")
self.C8_Image.color = Color(0,0,0,self.alpha_value)
self.mask_btn = self:GetChild("MaskBtn").gameObject
self.mask_image = self:GetChild("MaskBtn")
self.mask_image.sizeDelta = Vector3(ScreenWidth,ScreenHeight,0)
self.focus_point = self:GetChild("FocusPoint")
self.skip_btn = self:GetChild("SkipBtn").gameObject
self.skip_btn_txt = self:GetChild("SkipBtn/Text"):GetComponent("Text")
self.skip_btn.transform.localPosition = Vector3(ScreenWidth/2 - 90 ,ScreenHeight/2 - 50,0)
self.image_btn = self:GetChild("Image").gameObject
self.image_btn_dot = self:GetChild("Image/Dot").gameObject
end
function GuideMasktView:InitEvent()
local function onTriggerSkillForceHelp()
if self.prompt_type == GuideMasktView.FORCE_MASK_HELP_STEP then
ItemUseModel:getInstance():ShowItemUseView()
GuideModel:getInstance():ShowUILayUI()
self:Close()
end
end
self.trigger_skill_id = GlobalEventSystem:Bind(EventName.FINISH_FORCE_MASK_HELPER,onTriggerSkillForceHelp)
end
-- 是否显示黑屏
function GuideMasktView:ScreenVisible(b)
self.C2:SetActive(b)
self.C4:SetActive(b)
self.C6:SetActive(b)
self.C8:SetActive(b)
end
-- 黑屏透明度
function GuideMasktView:ScreenAlpha(b)
local alpha_value = b or self.alpha_value
self.C2_Image.alpha = alpha_value
self.C4_Image.alpha = alpha_value
self.C6_Image.alpha = alpha_value
self.C8_Image.alpha = alpha_value
end
--设置矩形遮罩的位置
function GuideMasktView:UpdateRectMask(x,y,w,h)
local width,height = nil
self.C2.transform.localPosition = Vector3(-ScreenWidth/2,ScreenHeight/2,0)
width = ScreenWidth/2 + x - w / 2
height = ScreenHeight / 2 - y + h / 2
self.C2.transform.sizeDelta = Vector2(width,height)
self.C4.transform.localPosition = Vector3(-ScreenWidth/2,-ScreenHeight/2,0)
width = ScreenWidth/2 + x + w / 2
height = ScreenHeight / 2 + y - h/2
self.C4.transform.sizeDelta = Vector2(width,height)
self.C6.transform.localPosition = Vector3(ScreenWidth/2,ScreenHeight/2,0)
width = ScreenWidth/2 - x + w / 2
height = ScreenHeight / 2 - y - h/2
self.C6.transform.sizeDelta = Vector2(width,height)
self.C8.transform.localPosition = Vector3(ScreenWidth/2,-ScreenHeight/2,0)
width = ScreenWidth/2 - x - w / 2
height = ScreenHeight / 2 + y + h/2
self.C8.transform.sizeDelta = Vector2(width,height)
end
--获取聚焦点的信息
function GuideMasktView:SetFocusPointMsg(mount_point,w,h,x_offset,y_offset)
self.focus_point:SetParent(mount_point)
self.focus_point.localPosition = Vector3(0,0,0)
self.focus_point:SetParent(self.transform)
self.x = self.focus_point.localPosition.x + (x_offset or 0)
self.y = self.focus_point.localPosition.y + (y_offset or 0)
local sizeDelta = mount_point.sizeDelta
self.w = w or sizeDelta.x
self.h = h or sizeDelta.y
end
function GuideMasktView:SetDefaultFocusPoint()
self.x = 0
self.y = 0
self.w = 0
self.h = 0
end
function GuideMasktView:ForceMaskHelpPrompt_1()
self:ScreenAlpha(0)
self:ScreenVisible(true)
self.skip_btn:SetActive(false)
self.mask_btn:SetActive(true)
local function callback( )
self:ScreenAlpha()
self.mask_btn:SetActive(false)
self.skip_btn:SetActive(true)
local helpVo = GuideModel:getInstance():GetCurHelpVo()
if helpVo then
local param = tonumber(helpVo.param)
self.model.force_mask_index = param
local btn
if param == 1 then
if self.ref_tar and self.ref_tar.icon_list and self.ref_tar.icon_list[157] then
btn = self.ref_tar.icon_list[157]
end
elseif param == 2 then
if self.ref_tar and self.ref_tar.icon_list and self.ref_tar.icon_list[416] then
btn = self.ref_tar.icon_list[416]
self:SetImagefor_416()
end
end
if btn then
if self.model:IsBottomForceMask() then
self:SetFocusPointMsg(btn.transform)
elseif self.model:IsTopForceMask() then
self:SetFocusPointMsg(btn.transform,80,80,0,9)
end
--mask 是为了 changehide的时候不让玩家点击
self.mask_btn:SetActive(false)
else
self:SetDefaultFocusPoint()
self.mask_btn:SetActive(true)
end
end
if not self.arrow_component then
self.arrow_component = ArrowComponent.New(self.transform)
end
self.arrow_component:ShowArrow(1,co.TableXY(self.x - 90 ,self.y),310)
self:UpdateRectMask(self.x,self.y,self.w,self.h)
local function click_func()
self:Close()
end
AddClickEvent(self.mask_btn,click_func)
if helpVo then
GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
end
self:CancelTimer()
self:StartTimer()
end
--如果是隐藏则执行动画 在执行引导,如果不是则马上执行引导
if self.model:IsBottomForceMask() then
if self.ref_tar and self.ref_tar.ShowShortCutList then
if self.ref_tar.show_skill_icon and not self.model:IsBagForceMask() then
self.ref_tar:ShowShortCutList(false)
else
callback()
return
end
end
elseif self.model:IsTopForceMask() then
if self.ref_tar and self.ref_tar.ChangeHide then
if self.ref_tar.is_hide then
self.ref_tar:ChangeHide(false)
else
callback()
return
end
end
end
if self.delay_timer == nil then
local function delay_callback( )
callback()
end
self.delay_timer = GlobalTimerQuest:AddDelayQuest(delay_callback,0.6)
end
end
function GuideMasktView:StartTimer()
local function onTimer()
if self.time_diff > 0 then
self.skip_btn_txt.text = "跳过(<color=#73ac44>" ..self.time_diff .."秒</color>)"
self.time_diff = self.time_diff - 1
else
self:CancelTimer()
self:Close()
end
end
self.timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
onTimer()
end
function GuideMasktView:CancelTimer()
if self.timer_id then
GlobalTimerQuest:CancelQuest(self.timer_id)
self.timer_id = nil
end
end
function GuideMasktView:SetImagefor_416()
self.image_btn_dot:SetActive(true)
lua_resM:setImageSprite(self,self.image_btn:GetComponent("Image"),"mainUI_asset",416,true)
if self.ref_tar then
local pos = self.ref_tar:GetFuncIconPos(416)
self.image_btn.transform.localPosition = pos
end
local function onBtnClickHandler(target)
if target == self.image_btn then
GlobalEventSystem:Fire(EventName.FINISH_FORCE_MASK_HELPER)
GlobalEventSystem:Fire(EventName.OPEN_SEVEN_DAYS_VIEW)
end
end
AddClickEvent(self.image_btn, onBtnClickHandler,LuaSoundManager.SOUND_UI.SWITCH)
end