forked from endernon/PGRData
160 lines
No EOL
6.6 KiB
Lua
160 lines
No EOL
6.6 KiB
Lua
local XUiGridDetailDormCharacter = require("XUi/XUiDormCharacterDetail/XUiGridDetailDormCharacter")
|
|
local XUiDormCharacterDetail = XLuaUiManager.Register(XLuaUi, "UiDormCharacterDetail")
|
|
|
|
function XUiDormCharacterDetail:OnAwake()
|
|
self:AddListener()
|
|
|
|
XUiHelper.SetSceneType(CS.XSceneType.Ui)
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_CHARACTER_MOOD_CHANGED, self.UpdateMoodInfo, self)
|
|
XEventManager.AddEventListener(XEventId.EVENT_CHARACTER_VITALITY_CHANGED, self.UpdateVitalityInfo, self)
|
|
|
|
--这里处理一下场景类型
|
|
end
|
|
|
|
function XUiDormCharacterDetail:OnDisable()
|
|
XHomeDormManager.ShowOrHideBuilding(true)
|
|
XUiHelper.SetSceneType(CS.XSceneType.Dormitory)
|
|
end
|
|
|
|
|
|
function XUiDormCharacterDetail:OnDestroy()
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_CHARACTER_MOOD_CHANGED, self.UpdateMoodInfo, self)
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_CHARACTER_VITALITY_CHANGED, self.UpdateVitalityInfo, self)
|
|
|
|
if self.Resource then
|
|
self.Resource:Release()
|
|
end
|
|
|
|
if self.Model then
|
|
CS.UnityEngine.Object.Destroy(self.Model)
|
|
end
|
|
end
|
|
|
|
function XUiDormCharacterDetail:OnStart(characterId, fromDorm)
|
|
XHomeDormManager.ShowOrHideBuilding(false)
|
|
self.CharacterId = characterId
|
|
self.FromDorm = fromDorm
|
|
XHomeCharManager.HideAllCharacter()
|
|
self:InitStyleInfo()
|
|
self:InitModelInfo()
|
|
self:InitExpInfo()
|
|
|
|
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.DormCoin, XDataCenter.ItemManager.ItemId.FurnitureCoin)
|
|
end
|
|
|
|
function XUiDormCharacterDetail:AddListener()
|
|
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
|
|
self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick)
|
|
self:RegisterClickEvent(self.BtnLikeInfo, self.OnBtnLikeInfoClick)
|
|
self:RegisterClickEvent(self.BtnFriendInfo, self.OnBtnFriendInfoClick)
|
|
end
|
|
|
|
function XUiDormCharacterDetail:OnBtnMainUiClick()
|
|
XHomeCharManager.ShowAllCharacter()
|
|
XHomeDormManager.SetIllumination()
|
|
XLuaUiManager.RunMain()
|
|
end
|
|
|
|
function XUiDormCharacterDetail:OnBtnBackClick()
|
|
XHomeCharManager.ShowAllCharacter()
|
|
if self.FromDorm then
|
|
XHomeDormManager.SetIllumination()
|
|
end
|
|
self:Close()
|
|
end
|
|
|
|
function XUiDormCharacterDetail:OnBtnLikeInfoClick()
|
|
XLuaUiManager.Open("UiDormCharacterLikeInfo", self.CharacterId)
|
|
end
|
|
|
|
function XUiDormCharacterDetail:OnBtnFriendInfoClick()
|
|
-- 暂未开放
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("ComingSoon"), XUiManager.UiTipType.Tip)
|
|
end
|
|
|
|
function XUiDormCharacterDetail:InitStyleInfo()
|
|
self.GridHostelCharacter.gameObject:SetActive(false)
|
|
local charStyleConfig = XDormConfig.GetCharacterStyleConfigById(self.CharacterId)
|
|
local loveTypeConfig = XFurnitureConfigs.GetDormFurnitureType(charStyleConfig.LoveType)
|
|
local likeTypeConfig = XFurnitureConfigs.GetDormFurnitureType(charStyleConfig.LikeType)
|
|
|
|
self.TxtName.text = charStyleConfig.NameFrist
|
|
self.TxtLastName.text = charStyleConfig.NameLast
|
|
self:SetUiSprite(self.ImgLove, loveTypeConfig.TypeIcon)
|
|
self:SetUiSprite(self.ImgLike, likeTypeConfig.TypeIcon)
|
|
|
|
self.TxtLove.text = CS.XTextManager.GetText("DormHight", loveTypeConfig.Color, loveTypeConfig.TypeName)
|
|
self.TxtLike.text = CS.XTextManager.GetText("DormMiddle", likeTypeConfig.Color, likeTypeConfig.TypeName)
|
|
|
|
for i = 1, #charStyleConfig.LikeCharIds do
|
|
local grid = CS.UnityEngine.Object.Instantiate(self.GridHostelCharacter)
|
|
local gridDormCharacter = XUiGridDetailDormCharacter.New(grid)
|
|
gridDormCharacter:Refresh(charStyleConfig.LikeCharIds[i], true)
|
|
grid.transform:SetParent(self.PanelLikeConent, false)
|
|
gridDormCharacter.GameObject:SetActive(true)
|
|
end
|
|
|
|
for i = 1, #charStyleConfig.HateCharIds do
|
|
local grid = CS.UnityEngine.Object.Instantiate(self.GridHostelCharacter)
|
|
local gridDormCharacter = XUiGridDetailDormCharacter.New(grid)
|
|
gridDormCharacter:Refresh(charStyleConfig.HateCharIds[i], false)
|
|
grid.transform:SetParent(self.PanelHateConent, false)
|
|
gridDormCharacter.GameObject:SetActive(true)
|
|
end
|
|
end
|
|
|
|
function XUiDormCharacterDetail:InitModelInfo()
|
|
local charStyleConfig = XDormConfig.GetCharacterStyleConfigById(self.CharacterId)
|
|
local root = self.UiModelGo.transform
|
|
local target = root:FindTransform("PanelRoleModel")
|
|
|
|
self.Resource = CS.XResourceManager.Load(charStyleConfig.Model)
|
|
self.Model = CS.UnityEngine.Object.Instantiate(self.Resource.Asset)
|
|
self.Model.transform:SetParent(target, false)
|
|
self.Model.gameObject:SetLayerRecursively(target.gameObject.layer)
|
|
self.PanelDrag.Target = self.Model.transform
|
|
CS.XShadowHelper.AddShadow(self.Model, true)
|
|
|
|
local animator = self.Model:GetComponent("Animator")
|
|
animator:SetInteger("State", 1)
|
|
end
|
|
|
|
function XUiDormCharacterDetail:InitExpInfo()
|
|
local characterData = XDataCenter.DormManager.GetCharacterDataByCharId(self.CharacterId)
|
|
|
|
self.ImgHpExp.fillAmount = characterData.Vitality / XDormConfig.DORM_VITALITY_MAX_VALUE
|
|
self.ImgMoodExp.fillAmount = characterData.Mood / XDormConfig.DORM_MOOD_MAX_VALUE
|
|
self.TxtHpCount.text = CS.XTextManager.GetText("DormCharacterHpLeft", characterData.Vitality, XDormConfig.DORM_VITALITY_MAX_VALUE)
|
|
|
|
self.TxtMoodState.text = XDormConfig.GetMoodStateDesc(characterData.Mood)
|
|
self.ImgMoodExp.color = XDormConfig.GetMoodStateColor(characterData.Mood)
|
|
|
|
XDataCenter.DormManager.GetDormitoryRecoverSpeed(self.CharacterId, function(moodSpeed, vitalitySpeed)
|
|
self.TxtMoodRecover.text = CS.XTextManager.GetText("DormCharacterMoodSpeed", moodSpeed)
|
|
self.TxtHpRecover.text = CS.XTextManager.GetText("DormCharacterHpSpeed", vitalitySpeed)
|
|
end)
|
|
end
|
|
|
|
function XUiDormCharacterDetail:UpdateMoodInfo(characterId)
|
|
if not self.CharacterId or self.CharacterId ~= characterId then
|
|
return
|
|
end
|
|
|
|
local characterData = XDataCenter.DormManager.GetCharacterDataByCharId(self.CharacterId)
|
|
|
|
self.ImgMoodExp.fillAmount = characterData.Mood / XDormConfig.DORM_MOOD_MAX_VALUE
|
|
self.TxtMoodState.text = XDormConfig.GetMoodStateDesc(characterData.Mood)
|
|
self.ImgMoodExp.color = XDormConfig.GetMoodStateColor(characterData.Mood)
|
|
end
|
|
|
|
function XUiDormCharacterDetail:UpdateVitalityInfo(characterId)
|
|
if not self.CharacterId or self.CharacterId ~= characterId then
|
|
return
|
|
end
|
|
|
|
local characterData = XDataCenter.DormManager.GetCharacterDataByCharId(self.CharacterId)
|
|
|
|
self.ImgHpExp.fillAmount = characterData.Vitality / XDormConfig.DORM_VITALITY_MAX_VALUE
|
|
self.TxtHpCount.text = CS.XTextManager.GetText("DormCharacterHpLeft", characterData.Vitality, XDormConfig.DORM_VITALITY_MAX_VALUE)
|
|
end |