Files
Endfield-Data/LuaScripts/UI/Widgets/ItemAdventureReward.lua
2025-12-02 20:37:18 +07:00

159 lines
4.5 KiB
Lua

local Item = require_ex('UI/Widgets/Item')
ItemAdventureReward = HL.Class('ItemAdventureReward', Item)
ItemAdventureReward._OnFirstTimeInit = HL.Override() << function(self)
end
ItemAdventureReward.m_rewardInfo = HL.Field(HL.Table)
ItemAdventureReward.InitItemAdventureReward = HL.Method(HL.Table) << function(self, rewardInfo)
self:_FirstTimeInit()
self.m_rewardInfo = rewardInfo
self.view.icon:SetAlpha(UIConst.ITEM_EXIST_TRANSPARENCY)
self.view.rewardedCover.gameObject:SetActiveIfNecessary(rewardInfo.gained)
self:_UpdateBaseItem()
self:_UpdateCornerMark()
end
ItemAdventureReward._UpdateBaseItem = HL.Method() << function(self)
local rewardInfo = self.m_rewardInfo
self.extraInfo = {}
if self.view.config.SHOW_ITEM_TIPS_ON_R3 then
self:AddHoverBinding("show_item_tips", function()
self:ShowTips()
end)
end
if self.id ~= rewardInfo.id then
self.id = rewardInfo.id
self:SetSelected(false)
end
if self.instId ~= rewardInfo.instId then
if rewardInfo.instId and rewardInfo.instId > 0 then
self.instId = rewardInfo.instId
else
self.instId = nil
end
self:SetSelected(false)
end
local data = Tables.itemTable:GetValue(rewardInfo.id)
self:_UpdateRewardIcon(data)
self:_UpdateRewardWeaponAddon(rewardInfo)
self.view.button.onClick:RemoveAllListeners()
self.view.button.onClick:AddListener(function()
local posInfo
if DeviceInfo.usingController then
posInfo = {
tipsPosType = UIConst.UI_TIPS_POS_TYPE.RightDown,
tipsPosTransform = self.transform,
isSideTips = true,
}
end
self:ShowTips(posInfo)
end)
self:SetExtraInfo(({ isSideTips = DeviceInfo.usingController }))
self.view.button.clickHintTextId = "virtual_mouse_hint_item_tips"
self.view.button.onHoverChange:RemoveAllListeners()
if self.view.config.SHOW_HOVER_TIP then
self.view.button.onHoverChange:AddListener(function(isHover)
if isHover and not self.m_isSelected then
Notify(MessageConst.SHOW_COMMON_HOVER_TIP, {
itemId = rewardInfo.id,
delay = self.view.config.HOVER_TIP_DELAY,
})
self.m_showingHover = true
else
Notify(MessageConst.HIDE_COMMON_HOVER_TIP)
end
end)
end
end
ItemAdventureReward._UpdateCornerMark = HL.Method() << function(self)
local rewardInfo = self.m_rewardInfo
if rewardInfo.gained then
self.view.rewardCornerMarkState:SetState("NoMark")
else
if rewardInfo.isFirst then
self.view.rewardCornerMarkState:SetState("FirstMark")
elseif rewardInfo.isExtra then
self.view.rewardCornerMarkState:SetState("ChallengeMark")
else
self.view.rewardCornerMarkState:SetState("NoMark")
end
end
end
ItemAdventureReward._UpdateRewardIcon = HL.Method(HL.Any) << function(self, data)
self.view.icon:InitItemIcon(data.id, self.view.config.USE_BIG_ICON)
if self.view.compositeIconBG then
self.view.compositeIconBG.gameObject:SetActive(not self.view.icon.showRarity)
end
local showRarity = self.view.icon.showRarity and not self.view.config.FORCE_NO_RARITY
if showRarity then
local isMaxRarity = data.rarity == UIConst.ITEM_MAX_RARITY
self.view.simpleStateController:SetState(isMaxRarity and "6Star" or "Normal")
if self.view.rarityLight then
local rarityColor = UIUtils.getItemRarityColor(data.rarity)
self.view.rarityLine.color = rarityColor
if not isMaxRarity then
self.view.rarityLight.color = rarityColor
end
end
else
self.view.simpleStateController:SetState("NoRarity")
end
end
ItemAdventureReward._UpdateRewardWeaponAddon = HL.Method(HL.Any) << function(self, data)
local itemCfg = Tables.itemTable:GetValue(data.id)
local itemType = itemCfg.type
local isWeapon = itemType == GEnums.ItemType.Weapon
self.view.potentialStar.gameObject:SetActive(isWeapon)
if not isWeapon then
return
end
local weaponInstData = data.instId and CharInfoUtils.getWeaponByInstId(data.instId) or nil
self.view.potentialStar:InitWeaponPotentialStar(weaponInstData and weaponInstData.refineLv or 0)
end
HL.Commit(ItemAdventureReward)
return ItemAdventureReward