Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
local BaseCtrl = require("GameCore.UI.BaseCtrl")
|
||||
local CharacterFavourCtrl = class("CharacterFavourCtrl", BaseCtrl)
|
||||
CharacterFavourCtrl._mapNodeConfig = {
|
||||
txtFavourLevel = {
|
||||
sNodeName = "txtFavourLevel",
|
||||
sComponentName = "TMP_Text"
|
||||
},
|
||||
transFavourBarCenter = {
|
||||
sNodeName = "FavourBarCenter",
|
||||
sComponentName = "Transform"
|
||||
},
|
||||
txtFavourNum = {sNodeName = "txtFavour", sComponentName = "TMP_Text"},
|
||||
txtFavourBubble = {
|
||||
sNodeName = "txtFavourBubble",
|
||||
sComponentName = "TMP_Text"
|
||||
},
|
||||
btnFavourTask = {
|
||||
sNodeName = "btnFavourTask",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtn_ClickOpenTask"
|
||||
},
|
||||
txtFavourTask = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "CharacterRelation_Favour_Task"
|
||||
},
|
||||
btnFavourReward = {
|
||||
sNodeName = "btnFavourReward",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtn_ClickOpenRewardPreview"
|
||||
},
|
||||
txtFavourReward = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "CharacterRelation_Favour_Reward"
|
||||
},
|
||||
btnFavourGift = {
|
||||
sNodeName = "btnFavourGift",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtn_ClickOpenGiftPanel"
|
||||
},
|
||||
imgHeart = {sNodeName = "imgHeart", sComponentName = "Image"},
|
||||
aniFavour = {
|
||||
sNodeName = "aniFavourRoot",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
rectImgFavourBar = {
|
||||
sNodeName = "imgFavourBar",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
txtFavourTitle = {
|
||||
sNodeName = "txtFavourTitle",
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "CharacterRelation_Favour_Title"
|
||||
}
|
||||
}
|
||||
CharacterFavourCtrl._mapEventConfig = {
|
||||
[EventId.AffinityChange] = "OnEvent_AffinityChange"
|
||||
}
|
||||
function CharacterFavourCtrl:Awake()
|
||||
self.progressBarWidth = 162
|
||||
self.progressBarMinWidth = 0
|
||||
end
|
||||
function CharacterFavourCtrl:OnEnable()
|
||||
end
|
||||
function CharacterFavourCtrl:OnBtn_ClickOpenTask()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharFavourTask, self.curCharId)
|
||||
end
|
||||
function CharacterFavourCtrl:OnBtn_ClickOpenRewardPreview()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharFavourReward, self.curCharId)
|
||||
end
|
||||
function CharacterFavourCtrl:OnBtn_ClickOpenGiftPanel()
|
||||
EventManager.Hit(EventId.CharRelatePanelOpen, PanelId.CharFavourGift, self.curCharId)
|
||||
end
|
||||
function CharacterFavourCtrl:Refresh(nCharId)
|
||||
self.curCharId = nCharId
|
||||
local affinityData = PlayerData.Char:GetCharAffinityData(nCharId)
|
||||
self.curFavourLevel = affinityData.Level
|
||||
self.curFavourExp = affinityData.Exp
|
||||
local data = {}
|
||||
local needExp = 0
|
||||
local forEachAffinityLevel = function(mapData)
|
||||
if mapData.AffinityLevel == self.curFavourLevel then
|
||||
data = mapData
|
||||
elseif mapData.AffinityLevel == self.curFavourLevel + 1 then
|
||||
needExp = mapData.NeedExp
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.AffinityLevel, forEachAffinityLevel)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtFavourLevel, self.curFavourLevel)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtFavourNum, self.curFavourExp .. "/" .. needExp)
|
||||
self._mapNode.txtFavourNum.gameObject:SetActive(needExp ~= 0)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtFavourBubble, data.AffinityLevelName)
|
||||
if data.AffinityLevelIcon ~= "" then
|
||||
end
|
||||
self._mapNode.aniFavour.gameObject:SetActive(false)
|
||||
self._mapNode.aniFavour.gameObject:SetActive(true)
|
||||
self._mapNode.aniFavour:SetInteger("affinity_lv", data.AffinityLevelStage)
|
||||
local percent = 0
|
||||
if needExp ~= 0 then
|
||||
percent = self.curFavourExp / needExp
|
||||
else
|
||||
percent = 1
|
||||
end
|
||||
self:RefreshProgressBar(percent, 0)
|
||||
end
|
||||
function CharacterFavourCtrl:RefreshProgressBar(nPercent, nDuration)
|
||||
local sizeDelta = self._mapNode.rectImgFavourBar.sizeDelta
|
||||
local nWidth = self.progressBarWidth * nPercent < self.progressBarMinWidth and self.progressBarMinWidth or self.progressBarWidth * nPercent
|
||||
self._mapNode.rectImgFavourBar.sizeDelta = Vector2(nWidth, sizeDelta.y)
|
||||
end
|
||||
function CharacterFavourCtrl:ResetData()
|
||||
self._mapNode.transFavourBarCenter.localEulerAngles = Vector3(0, 0, 0)
|
||||
end
|
||||
function CharacterFavourCtrl:OnEvent_AffinityChange(charId, curLevel, lastFavourLevel, curExp, lastExp)
|
||||
if self._panel.nPanelId == PanelId.CharacterRelation then
|
||||
self:Refresh(self.curCharId)
|
||||
if lastFavourLevel < curLevel and charId == self.curCharId then
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharFavourLevelUp, charId, curLevel, lastFavourLevel, curExp, lastExp)
|
||||
end
|
||||
end
|
||||
end
|
||||
return CharacterFavourCtrl
|
||||
Reference in New Issue
Block a user