Files
StellaSora_DataLua/lua/game/ui/activity/goldenspy/goldenspynormalitem.lua
T
SL1900 e0549005e1 Update - 1.9.0.103
EN: 1.9.0.103
CN: 1.9.0.104
JP: 1.9.0.106
KR: 1.9.0.108
2026-04-18 00:15:00 +09:00

101 lines
3.3 KiB
Lua

local GoldenSpyBaseItem = require("Game.UI.Activity.GoldenSpy.GoldenSpyBaseItem")
local GoldenSpyNormalItem = class("GoldenSpyNormalItem", GoldenSpyBaseItem)
GoldenSpyNormalItem._mapNodeConfig = {
HitArea = {
sNodeName = "HitArea",
sComponentName = "RectTransform"
},
flash = {}
}
GoldenSpyNormalItem._mapEventConfig = {
GM_GoldenSpy_Show = "OnEvent_GM_GoldenSpy_Show",
GoldenSpy_ItemUpdateScore = "OnEvent_GoldenSpy_ItemUpdateScore"
}
GoldenSpyNormalItem._mapRedDotConfig = {}
function GoldenSpyNormalItem:InitData()
local nScore = self.itemCfg.Score
for _, v in ipairs(self.floorCtrl.levelCtrl.GoldenSpyLevelData:GetBuffData()) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == self.itemCfg.ItemType and self:IsBuffActive(v) then
nScore = nScore + buffCfg.Params[2]
end
end
self:InitFlash(nScore)
end
function GoldenSpyNormalItem:InitFlash(nScore)
if self.itemCfg.NeedShowFlash == false then
return
end
self._mapNode.flash:SetActive(nScore >= self.commonCfg.HighValueEffect)
end
function GoldenSpyNormalItem:GetHitArea()
local tr = self.gameObject:GetComponent("RectTransform")
local hitArea = {
nType = self.nHitAreaType,
center = self._mapNode.HitArea.anchoredPosition + tr.anchoredPosition,
width = self._mapNode.HitArea.sizeDelta.x,
height = self._mapNode.HitArea.sizeDelta.y
}
return hitArea
end
function GoldenSpyNormalItem:IsBuffActive(buffData)
local bResult = false
local nCurFloor = self.floorCtrl.levelCtrl.GoldenSpyLevelData:GetCurFloor()
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", buffData.buffId)
if buffCfg == nil then
return false
end
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if buffData.bActive and table.indexof(buffData.tbActiveFloor, nCurFloor) > 0 then
bResult = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if buffData.bActive and table.indexof(buffData.tbActiveFloor, nCurFloor) > 0 then
bResult = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if buffData.bActive then
bResult = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
return bResult
end
function GoldenSpyNormalItem:OnSkill_InVision()
self.floorCtrl:RemoveItem(self)
self.gameObject:SetActive(false)
end
function GoldenSpyNormalItem:OnSkill_Boom(callback)
if callback then
callback()
end
if self.gameObject then
self.gameObject:SetActive(false)
end
end
function GoldenSpyNormalItem:OnSkill_Frozen(callback)
if callback then
callback()
end
end
function GoldenSpyNormalItem:OnEvent_GoldenSpy_ItemUpdateScore(tbBuff)
if self.gameObject.activeSelf == false then
return
end
local nScore = self.itemCfg.Score
for _, v in ipairs(tbBuff) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == self.itemCfg.ItemType and self:IsBuffActive(v) then
nScore = nScore + buffCfg.Params[2]
end
end
self:InitFlash(nScore)
end
function GoldenSpyNormalItem:OnEvent_GM_GoldenSpy_Show()
local img = self._mapNode.HitArea:GetComponent("Image")
if img then
img.enabled = true
end
end
return GoldenSpyNormalItem