2025-06-04 05:02:57 +08:00

212 lines
5.7 KiB
Plaintext

local BaseCell = autoImport("BaseCell");
BossCell = class("BossCell", BaseCell)
BossIconType = {
Mvp = "map_mvpboss",
Mini = "map_miniboss",
Dead = ""
}
local leftColor = LuaColor.New(161/255, 175/255, 225/255, 1)
local rightColor = LuaColor.New(234/255, 245/255, 254/255, 1)
function BossCell:Init()
self:FindObjs();
self:AddEvts();
end
function BossCell:FindObjs()
self.icon = self:FindGO("icon"):GetComponent(UISprite);
self.level = self:FindGO("level"):GetComponent(UILabel);
self.time = self:FindGO("time"):GetComponent(UILabel);
self.btnKiller = self:FindGO("btnKiller")
self.killer = self:FindGO("killer", self.btnKiller):GetComponent(UILabel);
self.map = self:FindComponent("map", UILabel);
self.icontype = self:FindComponent("icontype", UIMultiSprite);
self.chooseSymbol = self:FindGO("ChooseSymbol"):GetComponent(UIMultiSprite)
self.bgSprite = self:FindGO("bg"):GetComponent(GradientUISprite)
self.bg2 = self:FindGO("bg2"):GetComponent(UISprite)
self.content = self:FindGO("Content");
self.deadicon = self:FindGO("deadIcon")
end
function BossCell:AddEvts()
self:AddCellClickEvent();
self:AddClickEvent(self.btnKiller, function() self:OnClickKillerName() end)
end
function BossCell:SetView(bossView)
self.bossView = bossView
end
function BossCell:SetData(data)
self.data = data;
if(data)then
self.lv = data.lv
self.content:SetActive(true);
self.bosstype = data.bosstype
local monster = Table_Monster[data.id];
self:UpdateInfo(monster);
local validID = false
local collider = self.btnKiller:GetComponent(BoxCollider);
if (data.killerID and 0 ~= data.killerID and Game.Myself.data.id ~= data.killerID) then
self.killerID = data.killerID
collider.enabled = true
validID = true
else
self.killerID = nil
collider.enabled = false
end
local killerName = data.killer and data.killer ~= "" and data.killer or "--"
self.killer.text = validID and string.format("[u]%s[/u]", killerName) or killerName
if (validID) then
local size = self.killer.printedSize
local vec = collider.size
vec.x = size.x
vec.y = size.y
collider.size = vec
vec = collider.center
vec.x = size.x / 2
collider.center = vec
end
if self.data.listtype ~= 2 then
self:UpdateTime(data.time)
self.dietime = data.dietime
end
self.setTime = data.settime
local mapid = data.mapid or data.staticData.Map[1];
if(mapid)then
local mapdata = Table_Map[mapid];
if(mapdata)then
self.map.text = mapdata.CallZh;
UIUtil.WrapLabel (self.map)
end
end
-- 1 mvp 2 mini 3 death
if self.data.listtype == 1 then
self.bgSprite.gameObject:SetActive(true)
self.bg2.gameObject:SetActive(false)
self:UpdateDeadBossTime()
if self.bosstype == 1 then
self.icontype.CurrentState = 0
self.bgSprite.gradientTop = LuaColor.white
self.bgSprite.gradientBottom = LuaColor.white
elseif self.bosstype == 2 then
self.icontype.CurrentState = 1
self.bgSprite.gradientTop = LuaColor.white
self.bgSprite.gradientBottom = LuaColor.white
elseif self.bosstype == 3 then
self.icontype.CurrentState = 2
self.bgSprite.gradientTop = leftColor
self.bgSprite.gradientBottom = rightColor
-- if self.setTime == 0 then
-- self.time.text = ZhString.BossCell_ToSet
-- else
-- self.time.text = ZhString.BossCell_Set
-- end
end
elseif self.data.listtype == 2 then
self.icontype.CurrentState = 2
self.bgSprite.gameObject:SetActive(false)
self.bg2.gameObject:SetActive(true)
self.deadicon:SetActive(false)
if self.setTime == 0 then
self.time.text = ZhString.BossCell_ToSet
else
self.time.text = ZhString.BossCell_Set
end
end
self.icontype.width = 30
self.icontype.height = 30
self:UpdateChoose();
else
self.content:SetActive(false);
end
end
function BossCell:UpdateInfo(monsterData)
IconManager:SetFaceIcon(monsterData.Icon, self.icon);
if self.data.lv then
self.level.text = "Lv."..self.data.lv
else
self.level.text = "Lv."..monsterData.Level;
end
end
function BossCell:UpdateTime(time)
self.refreshTime = time;
if self.data.listtype == 2 then
return
end
self:RemoveUpdateTime();
if(self.timeTick == nil)then
self.timeTick = TimeTickManager.Me():CreateTick(0, 1000, self._UpdateTime, self, 1)
end
end
function BossCell:_UpdateTime()
if self.data.listtype == 2 then
return
end
local time = self.refreshTime;
if(time == nil)then
self:RemoveUpdateTime();
return;
end
local deltaTime = ServerTime.ServerDeltaSecondTime(time*1000);
if(deltaTime <= 0)then
self.time.text = ZhString.Boss_Show
else
self.time.text = string.format(ZhString.Boss_RefreshTimeM, math.max(1, math.ceil(deltaTime/60)));
end
end
function BossCell:RemoveUpdateTime()
if(self.timeTick ~= nil)then
TimeTickManager.Me():ClearTick(self, 1)
self.timeTick = nil;
end
end
function BossCell:SetChoose(chooseId, chooseMap)
self.chooseId = chooseId;
self.chooseMap = chooseMap;
self:UpdateChoose();
end
function BossCell:UpdateChoose()
if self.data and self.chooseId and self.data.id == self.chooseId and self.chooseMap and self.data.mapid == self.chooseMap then
if self.bosstype == 1 or self.bosstype == 2 then
self.chooseSymbol.CurrentState = 0
elseif self.bosstype == 3 then
self.chooseSymbol.CurrentState = 1
end
self.chooseSymbol.gameObject:SetActive(true);
else
self.chooseSymbol.gameObject:SetActive(false);
end
end
function BossCell:OnClickKillerName()
if (self.bossView) then
self.bossView:OnClickCellKillerName(self)
end
end
function BossCell:UpdateDeadBossTime()
if self.setTime == 0 or self.bosstype == 2 then
self.deadicon:SetActive(false)
return
end
local delta = ServerTime.ServerDeltaSecondTime(self.refreshTime*1000);
self.deadicon:SetActive(delta <= 0 and self.data.summontime > self.data.dietime)
end