PGRData/Script/matrix/xui/xuinier/xuicharacter/XUiPanelNierCharacterFoster.lua
2024-09-01 22:49:41 +02:00

126 lines
No EOL
5.4 KiB
Lua

local XUiPanelNierCharacterFoster = XClass(nil, "XUiPanelNierCharacterFoster")
local XUiGrideNieRCharacterFoster = require("XUi/XUiNieR/XUiCharacter/XUiGrideNieRCharacterFoster")
function XUiPanelNierCharacterFoster:Ctor(ui, parent)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RootUi = parent
XTool.InitUiObject(self)
self.BtnTcanchaungBlue.CallBack = function() self:OnBtnGoToUpAbilityClick() end
self.BtnBuyJump1.CallBack = function() self:OnBtnUpLevelMatClick() end
self.DynamicTable = XDynamicTableNormal.New(self.PanelItemList)
self.DynamicTable:SetProxy(XUiGrideNieRCharacterFoster)
self.DynamicTable:SetDelegate(self)
end
function XUiPanelNierCharacterFoster:InitAllData()
local characterData = XDataCenter.NieRManager.GetSelNieRCharacter()
self.CharacterData = characterData
self:UpdateLevelPanel(characterData)
self.AbilityList = characterData:GetAbilityList()
self.DynamicTable:SetDataSource(self.AbilityList)
self.DynamicTable:ReloadDataASync()
end
function XUiPanelNierCharacterFoster:UpdateLevelPanel(characterData)
self.LevelLable.text = characterData:GetNieRCharacterLevel()
local exp = characterData:GetNieRCharacterExp()
local maxExp = characterData:GetNieRCharacterMaxExp()
if characterData:CheckNieRCharacterMaxLevel() then
self.LevelMAX.gameObject:SetActiveEx(true)
else
self.LevelMAX.gameObject:SetActiveEx(false)
end
self.TxtExpNum.text = string.format( "<color=#62BAFF><size=32>%s</size></color>/%s", exp , maxExp)
self.ImgProgress.fillAmount = exp / maxExp
local attribs = characterData:GetAttribs()
self.DamageNumLable.text = FixToInt(attribs[XNpcAttribType.AttackNormal])
self.HealthNumLable.text = FixToInt(attribs[XNpcAttribType.Life])
self.DefenseNumLable.text = FixToInt(attribs[XNpcAttribType.DefenseNormal])
self.CritNumLable.text = FixToInt(attribs[XNpcAttribType.Crit])
local abilityNum = characterData:GetAbilityNum()
self.FightNum.text = abilityNum
self.UpLevelItemId = characterData:GetNieRCharacterUpLevelItemId()
self.ImgNormal:SetSprite(XDataCenter.ItemManager.GetItemIcon(self.UpLevelItemId))
self.ImgPress:SetSprite(XDataCenter.ItemManager.GetItemIcon(self.UpLevelItemId))
local detailConfig = XCharacterConfigs.GetCharDetailTemplate(characterData:GetRobotCharacterId())
local elementList = detailConfig.ObtainElementList
for i = 1, 2 do
local rImg = self["ProfessionIcon" .. i]
if elementList[i] then
rImg.gameObject:SetActiveEx(true)
local elementConfig = XCharacterConfigs.GetCharElement(elementList[i])
rImg:SetRawImage(elementConfig.Icon2)
else
rImg.gameObject:SetActiveEx(false)
end
end
end
function XUiPanelNierCharacterFoster:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:Init(self)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:ResetData(self.AbilityList[index], index)
end
end
function XUiPanelNierCharacterFoster:OnDynamicGridClick(index)
local data = self.AbilityList[index]
local config = XNieRConfigs.GetAbilityGroupConfigById(data.ConfigId)
local condit, desc = XConditionManager.CheckCondition(config.Condition)
if XConditionManager.CheckCondition(config.Condition) then
if data.Type == XNieRConfigs.AbilityType.Skill then
local skillId = config.SkillId
local skillLevel = config.SkillLevel
local skillInfo = XCharacterConfigs.GetSkillGradeDesConfig(skillId, skillLevel)
XUiManager.DialogDragTip(skillInfo.Name, skillInfo.Intro, XUiManager.DialogType.NoBtn, nil, nil)
elseif data.Type == XNieRConfigs.AbilityType.Fashion then
XLuaUiManager.Open("UiFashion", self.CharacterData:GetRobotCharacterId(), true, true, XUiConfigs.OpenUiType.NieRCharacterUI)
elseif data.Type == XNieRConfigs.AbilityType.Weapon then
local equipId = config.WeaponId
XMVCA:GetAgency(ModuleId.XEquip):OpenUiEquipDetail(equipId, true, nil, nil, nil, XUiConfigs.OpenUiType.NieRCharacterUI)
elseif data.Type == XNieRConfigs.AbilityType.FourWafer then
local equipId = config.WaferId[1]
XMVCA:GetAgency(ModuleId.XEquip):OpenUiEquipDetail(equipId, true, nil, nil, nil, XUiConfigs.OpenUiType.NieRCharacterUI)
elseif data.Type == XNieRConfigs.AbilityType.TwoWafer then
local equipId = config.WaferId[1]
XMVCA:GetAgency(ModuleId.XEquip):OpenUiEquipDetail(equipId, true, nil, nil, nil, XUiConfigs.OpenUiType.NieRCharacterUI)
end
else
XUiManager.TipMsg(desc)
end
end
function XUiPanelNierCharacterFoster:ShowPanel(isPlayAnimation)
self.IsPlayAnimation = isPlayAnimation
self.GameObject:SetActiveEx(true)
end
function XUiPanelNierCharacterFoster:HidePanel()
self.IsPlayAnimation = false
self.GameObject:SetActiveEx(false)
end
function XUiPanelNierCharacterFoster:OnBtnGoToUpAbilityClick()
XFunctionManager.SkipInterface(self.CharacterData:GetNieRClientSkipId())
end
function XUiPanelNierCharacterFoster:OnBtnUpLevelMatClick()
local item = XDataCenter.ItemManager.GetItem(self.UpLevelItemId)
local data = {
Id = item.Id,
Count = item ~= nil and tostring(item.Count) or "0"
}
XLuaUiManager.Open("UiTip", data)
end
return XUiPanelNierCharacterFoster