miduo_client/Assets/ManagedResources/~Lua/View/RoleItemView.lua

127 lines
4.6 KiB
Lua

RoleItemView = {}
local this = RoleItemView
function RoleItemView:New(gameObject)
local b = {}
b.gameObject = gameObject
b.transform = gameObject.transform
setmetatable(b, { __index = RoleItemView })
return b
end
--初始化组件(用于子类重写)
function RoleItemView:InitComponent()
this.spLoader = SpriteLoader.New()
self.EffectOrginLayer = -10
self.frame = Util.GetGameObject(self.gameObject, "frame")
self.icon = Util.GetGameObject(self.gameObject, "iconMask/icon"):GetComponent("Image")
self.heroStageImage = Util.GetGameObject(self.gameObject, "heroStageImage"):GetComponent("Image")
self.lv = Util.GetGameObject(self.gameObject, "lv/Text"):GetComponent("Text")
-- self.pos = Util.GetGameObject(self.gameObject, "pos/icon"):GetComponent("Image")
self.pro = Util.GetGameObject(self.gameObject, "pro/Image"):GetComponent("Image")
self.starGrid = Util.GetGameObject(self.gameObject, "star")
self.starPre = Util.GetGameObject(self.gameObject, "starPre")
self.heroNameGo = Util.GetGameObject(self.gameObject, "name")
self.heroNameText = Util.GetGameObject(self.gameObject, "name/Text"):GetComponent("Text")
self.heroHpGo = Util.GetGameObject(self.gameObject, "hp")
self.heroHp = Util.GetGameObject(self.gameObject, "hp/fill"):GetComponent("Image")
self.roleEffect = Util.GetGameObject(self.gameObject, "effect")
end
--绑定事件(用于子类重写)
function RoleItemView:BindEvent()
end
--添加事件监听(用于子类重写)
function RoleItemView:AddListener()
end
--移除事件监听(用于子类重写)
function RoleItemView:RemoveListener()
end
--界面打开时调用(用于子类重写)
function RoleItemView:OnOpen(_heroDId, _isShowHeroName, _isShowHeroHp, _hpVal, _effectLayer)
if _heroDId == nil then
return
end
self.heroData = HeroManager.GetSingleHeroData(_heroDId)
_isShowHeroName = _isShowHeroName or false
_effectLayer = _effectLayer or 0
self.isShowHeroHp = _isShowHeroHp or false
self.hpVal = _hpVal
self.heroNameGo:SetActive(_isShowHeroName)
self.heroHpGo:SetActive(self.isShowHeroHp)
if self.heroData then
self:OnShowHeroData(_effectLayer)
end
end
function RoleItemView:OnShowHeroData(effectLayer)
local star, starType = self.heroData.GetStar(1) or self.heroData.heroConfig.Star
local starSize = Vector2.New(32, 32)
local starScale = -10
if starType == 3 then
starSize = Vector2.New(1, -15.6)
starScale = -13
elseif starType == 2 then
starSize = Vector2.New(60, 57)
end
SetHeroBg(this.spLoader, Util.GetGameObject(self.gameObject, "iconMask"), self.frame, star,
self.heroData.heroConfig.Quality)
self.icon.sprite = this.spLoader:LoadSprite(self.heroData.painting)
--SetHEeroLiveToward(self.icon.gameObject,self.heroData.heroConfig.Toward )
self.lv.text = self.heroData.lv
-- self.pos.sprite=this.spLoader:LoadSprite(self.heroData.professionIcon)
self.pro.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(self.heroData.changeProId))
self.heroStageImage.sprite = this.spLoader:LoadSprite(HeroStageSprite[self.heroData.heroConfig.HeroStage])
self.roleEffect:SetActive(self.heroData.star >= 5) --
Util.AddParticleSortLayer(self.roleEffect, effectLayer - self.EffectOrginLayer)
self.EffectOrginLayer = effectLayer
SetHeroStars(this.spLoader, self.starGrid, star, starType, starSize, starScale)
Util.SetParticleSortLayer(self.starGrid, effectLayer + 1)
self.heroNameText.text = GetLanguageStrById(self.heroData.heroConfig.ReadingName)
if self.hpVal and self.isShowHeroHp then
self.hpVal = self.hpVal <= 0 and 0 or self.hpVal
Log("self.hpVal " .. self.hpVal)
self.heroHp.fillAmount = self.hpVal
Util.SetGray(self.gameObject, self.hpVal <= 0)
end
Util.AddOnceClick(self.frame, function()
UIManager.OpenPanel(UIName.RoleGetInfoPopup, true, self.heroData.heroBackData)
end)
end
function RoleItemView:AddClick(clickFun)
Util.AddOnceClick(self.frame, function()
if clickFun then
clickFun()
else
UIManager.OpenPanel(UIName.RoleGetInfoPopup, true, self.heroData.heroBackData)
end
end)
end
function RoleItemView:SetEffectLayer(effectLayer)
Util.AddParticleSortLayer(self.roleEffect, effectLayer - self.EffectOrginLayer)
self.EffectOrginLayer = effectLayer
end
--界面关闭时调用(用于子类重写)
function RoleItemView:OnClose()
this.spLoader:Destroy()
end
--界面销毁时调用(用于子类重写)
function RoleItemView:OnDestroy()
end
return RoleItemView