Files
StellaSora_DataLua/lua/game/ui/phone/gift/giftcharitemctrl.lua
T
SL1900 eafd8f4088 Update - 1.9.0.107
EN: 1.9.0.107
CN: 1.9.0.108
JP: 1.9.0.112
KR: 1.9.0.112
2026-05-14 16:00:00 +09:00

96 lines
3.7 KiB
Lua

local GiftCharItemCtrl = class("GiftCharItemCtrl", BaseCtrl)
local LayoutRebuilder = CS.UnityEngine.UI.LayoutRebuilder
GiftCharItemCtrl._mapNodeConfig = {
imgBg = {},
imgSelectBg = {},
imgHeadIcon = {sComponentName = "Image"},
txtCharName = {sComponentName = "TMP_Text", nCount = 2},
txtSign = {sComponentName = "TMP_Text", nCount = 2},
goAffinity = {},
imgProgressBg = {},
rectProgress = {
sNodeName = "imgProgress",
sComponentName = "RectTransform"
},
txtProgress = {sComponentName = "TMP_Text"},
imgAffinityLv = {sComponentName = "Image"},
txtLevel = {sComponentName = "TMP_Text"},
imgOnline = {}
}
GiftCharItemCtrl._mapEventConfig = {}
local nSignTextMaxHeight = 65
function GiftCharItemCtrl:SetSelect(bSelect)
self._mapNode.imgBg.gameObject:SetActive(not bSelect)
self._mapNode.imgSelectBg.gameObject:SetActive(bSelect)
self._mapNode.imgOnline.gameObject:SetActive(bSelect)
end
function GiftCharItemCtrl:SetGiftCharItem(nCharId)
if self.signTextAnimTimer ~= nil then
self.signTextAnimTimer:Cancel()
self.signTextAnimTimer = nil
end
self.nCharId = nCharId
local mapCharacter = ConfigTable.GetData_Character(nCharId)
if mapCharacter ~= nil then
local nSkinId = mapCharacter.DefaultSkinId
local mapSkin = ConfigTable.GetData_CharacterSkin(nSkinId)
if mapSkin ~= nil then
self:SetPngSprite(self._mapNode.imgHeadIcon, mapSkin.Icon, AllEnum.CharHeadIconSurfix.S)
end
NovaAPI.SetTMPText(self._mapNode.txtCharName[1], mapCharacter.Name)
NovaAPI.SetTMPText(self._mapNode.txtCharName[2], mapCharacter.Name)
end
local cfgData = PlayerData.Phone:GetAvgContactsData(self.nCharId)
for _, v in ipairs(self._mapNode.txtSign) do
v.gameObject:SetActive(cfgData ~= nil)
if cfgData ~= nil then
NovaAPI.SetTMPText(v, cfgData.landmark)
end
end
self:RefreshGiftLevel()
self:SetSelect(false)
end
function GiftCharItemCtrl:RefreshGiftLevel()
local affinityData = PlayerData.Char:GetCharAffinityData(self.nCharId)
local curFavourLevel = affinityData.Level
local curFavourExp = affinityData.Exp
NovaAPI.SetTMPText(self._mapNode.txtLevel, curFavourLevel)
local mapCharAffinity = ConfigTable.GetData("CharAffinityTemplate", self.nCharId)
if mapCharAffinity == nil then
return
end
local templateId = mapCharAffinity.TemplateId
local maxAffinityLevel = PlayerData.Char:GetMaxAffinityLevel(templateId)
local level = curFavourLevel >= maxAffinityLevel and maxAffinityLevel or curFavourLevel + 1
local data = CacheTable.GetData("_AffinityLevel", templateId)[level]
local nPercent = 0
if curFavourLevel >= maxAffinityLevel then
nPercent = 1
else
nPercent = curFavourExp / data.NeedExp
end
local sizeDelta = self._mapNode.rectProgress.sizeDelta
sizeDelta.x = self.progressBarWidth * nPercent < self.progressBarMinWidth and self.progressBarMinWidth or self.progressBarWidth * nPercent
self._mapNode.rectProgress.sizeDelta = sizeDelta
if curFavourLevel >= maxAffinityLevel then
NovaAPI.SetTMPText(self._mapNode.txtProgress, ConfigTable.GetUIText("Phone_Gift_Affinity_Max_Level"))
else
NovaAPI.SetTMPText(self._mapNode.txtProgress, string.format("%d/%d", curFavourExp, data.NeedExp))
end
local nCurLevel = curFavourLevel >= maxAffinityLevel and maxAffinityLevel or curFavourLevel
data = CacheTable.GetData("_AffinityLevel", templateId)[nCurLevel]
self:SetPngSprite(self._mapNode.imgAffinityLv, data.AffinityLevelIcon .. "_s")
self._mapNode.rectProgress.gameObject:SetActive(0 < curFavourExp or curFavourLevel >= maxAffinityLevel)
end
function GiftCharItemCtrl:Awake()
self.progressBarWidth = 253
self.progressBarMinWidth = 0
end
function GiftCharItemCtrl:OnEnable()
end
function GiftCharItemCtrl:OnDisable()
end
function GiftCharItemCtrl:OnDestroy()
end
return GiftCharItemCtrl