101 lines
2.4 KiB
Plaintext
101 lines
2.4 KiB
Plaintext
BlindMaskView = class("BlindMaskView",ContainerView)
|
|
|
|
BlindMaskView.ViewType = UIViewType.BlindLayer
|
|
|
|
function BlindMaskView:Init()
|
|
self:AddEvts()
|
|
end
|
|
|
|
function BlindMaskView:AddEvts()
|
|
self:AddListenEvt(MyselfEvent.UpdateAttrEffect , self.UpdateAttrEffect)
|
|
end
|
|
|
|
function BlindMaskView:UpdateAttrEffect()
|
|
if Game.Myself.data.attrEffect:BlindnessState() then
|
|
if self.initialized == nil or self.initialized == false then
|
|
self.initialized = self:InitPage()
|
|
end
|
|
|
|
if self.initialized then
|
|
self.tweenAlpha:ResetToBeginning()
|
|
self.tweenAlpha:PlayForward()
|
|
self.timeTick:StartTick()
|
|
end
|
|
else
|
|
if self.initialized then
|
|
self.tweenAlpha.enabled = false
|
|
self.tweenAlpha.value = self.tweenAlpha.from
|
|
self.timeTick:StopTick()
|
|
end
|
|
end
|
|
end
|
|
|
|
-- initialize
|
|
function BlindMaskView:InitPage()
|
|
self:FindObjs()
|
|
self:InitShow()
|
|
|
|
return self:InitMaskTexture()
|
|
end
|
|
|
|
function BlindMaskView:FindObjs()
|
|
self.maskTex = self:FindGO("BlindMask"):GetComponent(UITexture)
|
|
self.tweenAlpha = self.maskTex.gameObject:GetComponent(TweenAlpha)
|
|
end
|
|
|
|
function BlindMaskView:InitShow()
|
|
local offsetTotal = 1
|
|
self.offsetHalf = offsetTotal / 2
|
|
self.size = 1.5
|
|
self.rect = Rect(0,0,1,1)
|
|
|
|
self.timeTick = TimeTickManager.Me():CreateTick(0,33,self.FollowMyself,self)
|
|
end
|
|
|
|
function BlindMaskView:InitMaskTexture()
|
|
|
|
if Game.Myself.assetRole == nil then
|
|
return false
|
|
end
|
|
|
|
if Camera.main == nil then
|
|
return false
|
|
end
|
|
|
|
self.ep = Game.Myself.assetRole:GetCPOrRoot(RoleDefines_CP.Face)
|
|
|
|
local aspectRatio = Screen.width / Screen.height
|
|
local screenPos = Camera.main:WorldToScreenPoint(self.ep.transform.position)
|
|
self:SetMaskPos(screenPos.x , screenPos.y , aspectRatio * self.size , self.size)
|
|
|
|
return true
|
|
end
|
|
|
|
function BlindMaskView:SetMaskRect(x,y,width,height)
|
|
self.rect.x = x
|
|
self.rect.y = y
|
|
self.rect.width = width
|
|
self.rect.height = height
|
|
|
|
self.maskTex.uvRect = self.rect
|
|
end
|
|
|
|
function BlindMaskView:SetMaskPos(posx,posy,width,height)
|
|
if width == nil then
|
|
width = self.maskTex.uvRect.width
|
|
end
|
|
if height == nil then
|
|
height = self.maskTex.uvRect.height
|
|
end
|
|
local x = self.offsetHalf - (posx / Screen.width) * width
|
|
local y = self.offsetHalf - (posy / Screen.height) * height
|
|
|
|
self:SetMaskRect(x, y, width , height )
|
|
end
|
|
|
|
function BlindMaskView:FollowMyself()
|
|
if Camera.main and self.ep then
|
|
local screenPos = Camera.main:WorldToScreenPoint(self.ep.transform.position)
|
|
self:SetMaskPos(screenPos.x , screenPos.y )
|
|
end
|
|
end |