local BaseCtrl = require("GameCore.UI.BaseCtrl") local NpcFavorCtrl = class("NpcFavorCtrl", BaseCtrl) NpcFavorCtrl._mapNodeConfig = { txtFavourLevel = { sNodeName = "txtFavourLevel", sComponentName = "TMP_Text" }, transFavourBarCenter = { sNodeName = "FavourBarCenter", sComponentName = "Transform" }, txtFavourNum = {sNodeName = "txtFavour", sComponentName = "TMP_Text"}, txtFavourBubble = { sNodeName = "txtFavourBubble", sComponentName = "TMP_Text" }, imgHeart = {sNodeName = "imgHeart", sComponentName = "Image"}, aniFavour = { sNodeName = "aniFavourRoot", sComponentName = "Animator" } } NpcFavorCtrl._mapEventConfig = { [EventId.AffinityChange] = "OnEvent_AffinityChange" } function NpcFavorCtrl:Awake() end function NpcFavorCtrl:OnEnable() end function NpcFavorCtrl:Refresh(nNpcId) self.curCharId = nNpcId local affinityData = PlayerData.StarTower:GetNpcAffinityData(nNpcId) self.curFavourExp = affinityData.Exp local mapNpc = ConfigTable.GetData("StarTowerNPC", nNpcId) local nGroupId = mapNpc.AffinityGroupId local nId = nGroupId * 100 + affinityData.Level local mapAffinityCfgData = ConfigTable.GetData("NPCAffinityGroup", nId) local data = mapAffinityCfgData local needExp = affinityData.nNeed self.curFavourLevel = data.AffinityLevelStage NovaAPI.SetTMPText(self._mapNode.txtFavourLevel, ConfigTable.GetUIText("Advance_Level_Name") .. affinityData.Level) NovaAPI.SetTMPText(self._mapNode.txtFavourNum, self.curFavourExp .. "/" .. needExp) self._mapNode.txtFavourNum.gameObject:SetActive(needExp ~= 0) NovaAPI.SetTMPText(self._mapNode.txtFavourBubble, data.RelationshipName) if data.AffinityLevelIcon ~= "" then end self._mapNode.aniFavour.gameObject:SetActive(false) self._mapNode.aniFavour.gameObject:SetActive(true) self._mapNode.aniFavour:SetInteger("affinity_lv", self.curFavourLevel) local percent = 0 if needExp ~= 0 then percent = self.curFavourExp / needExp else percent = 1 end self:RefreshProgressBar(percent, 0) end function NpcFavorCtrl:RefreshProgressBar(nPercent, nDuration) self._mapNode.transFavourBarCenter.localEulerAngles = Vector3(0, 0, 0) self._mapNode.transFavourBarCenter:DORotate(Vector3(0, 0, (1 - nPercent) * 102), nDuration, RotateMode.LocalAxisAdd) end function NpcFavorCtrl:ResetData() self._mapNode.transFavourBarCenter.localEulerAngles = Vector3(0, 0, 0) end return NpcFavorCtrl