PGRData/Script/matrix/xui/xuitheatre/recruit/XUiTheatreRoleDetails.lua

154 lines
No EOL
5.5 KiB
Lua

local XUiGridEquipOther = require("XUi/XUiPlayerInfo/XUiGridEquipOther")
local AWARENESS_COUNT = 6 --意识最大数量
--招募界面:成员详情弹窗
local XUiTheatreRoleDetails = XLuaUiManager.Register(XLuaUi, "UiTheatreRoleDetails")
function XUiTheatreRoleDetails:OnAwake()
self:AddListener()
self.WearingAwarenessGrids = {}
self.WeaponGrid = XUiGridEquipOther.New(self.GridWeapon, {Parent = self}, handler(self, self.ClickWeaponCallback))
self.GridAwareness.gameObject:SetActiveEx(false)
self.RImgIconLevelUp:SetRawImage(XTheatreConfigs.GetRoleDetailLevelIcon())
end
function XUiTheatreRoleDetails:OnStart(adventureRole, isRecruitRole, closeCb)
self.AdventureRole = adventureRole
self.IsRecruitRole = isRecruitRole --是否已招募的角色
self.CloseCallback = closeCb
local robotObj = adventureRole:GetRawData()
self.RobotCfg = robotObj:GetConfig()
end
function XUiTheatreRoleDetails:OnEnable()
self:Refresh()
end
function XUiTheatreRoleDetails:OnDestroy()
if self.CloseCallback then
self.CloseCallback()
end
end
function XUiTheatreRoleDetails:ClickWeaponCallback()
local adventureRole = self.AdventureRole
local weaponEquip = adventureRole:GetWeaponEquip()
XLuaUiManager.Open("UiEquipDetailOther", weaponEquip, adventureRole:GetCharacterViewModel())
end
function XUiTheatreRoleDetails:ClickAwarenessCallback()
end
function XUiTheatreRoleDetails:Refresh()
local adventureRole = self.AdventureRole
local characterId = adventureRole:GetCharacterId()
local charConfig = XCharacterConfigs.GetCharacterTemplate(characterId)
--角色名
self.TxtName.text = charConfig.Name
--型号
self.TxtNameOther.text = charConfig.TradeName
--职业类型
local jobType = adventureRole:GetCareerType()
self.RImgTypeIcon:SetRawImage(XCharacterConfigs.GetNpcTypeIcon(jobType))
--战力
self.TxtLv.text = math.ceil(adventureRole:GetAbility())
self.BtnRecruit.gameObject:SetActiveEx(not self.IsRecruitRole)
self:UpdateWeapon()
self:UpdateAwareness()
self:UpdateElement()
end
--刷新能量(属性)
function XUiTheatreRoleDetails:UpdateElement()
local elementList = self.AdventureRole:GetElementList()
for i = 1, 3 do
local rImg = self["RImgCharElement" .. i]
if elementList[i] then
rImg.gameObject:SetActive(true)
local elementConfig = XExpeditionConfig.GetCharacterElementById(elementList[i])
rImg:SetRawImage(elementConfig.Icon)
else
rImg.gameObject:SetActive(false)
end
end
end
--刷新意识
function XUiTheatreRoleDetails:UpdateAwareness()
local robotConfig = self.RobotCfg
for i = 1, AWARENESS_COUNT do
local equip = self.AdventureRole:GetWearingEquipBySite(i)
self.WearingAwarenessGrids[i] = self.WearingAwarenessGrids[i] or
XUiGridEquipOther.New(CS.UnityEngine.Object.Instantiate(self.GridAwareness), {Parent = self}, function()
XLuaUiManager.Open("UiEquipDetailOther", equip, self.AdventureRole:GetCharacterViewModel())
end)
self.WearingAwarenessGrids[i].Transform:SetParent(self["PanelAwareness" .. i], false)
if not equip then
self.WearingAwarenessGrids[i].GameObject:SetActive(false)
else
self.WearingAwarenessGrids[i].GameObject:SetActive(true)
self["BtnAwarenessReplace" .. i].transform:SetAsLastSibling()
self.WearingAwarenessGrids[i]:Refresh(equip)
end
end
end
--刷新武器
function XUiTheatreRoleDetails:UpdateWeapon()
self.WeaponGrid:Refresh(self.AdventureRole:GetWeaponEquip())
end
function XUiTheatreRoleDetails:AddListener()
self:RegisterClickEvent(self.BtnClose, self.Close)
self:RegisterClickEvent(self.BtnRecruit, self.OnBtnRecruitClick)
self:RegisterClickEvent(self.BtnCareerTips, self.OnBtnCareerTipsClick)
self:RegisterClickEvent(self.BtnElementDetail, self.OnBtnElementDetailClick)
self:RegisterClickEvent(self.BtnWeaponClick, self.OnBtnWeaponClick)
for i = 1, AWARENESS_COUNT do
local index = i
self:RegisterClickEvent(self["BtnAwarenessReplace" .. i], function()
self:OnAwarenessClick(index)
end)
end
end
function XUiTheatreRoleDetails:OnBtnWeaponClick()
XDataCenter.TheatreManager.SetSceneActive(false)
local adventureRole = self.AdventureRole
local weaponEquip = adventureRole:GetWeaponEquip()
XLuaUiManager.Open("UiEquipDetailOther", weaponEquip, adventureRole:GetCharacterViewModel())
end
function XUiTheatreRoleDetails:OnAwarenessClick(site)
local adventureRole = self.AdventureRole
local equip = adventureRole:GetWearingEquipBySite(site)
if not equip then
return
end
XDataCenter.TheatreManager.SetSceneActive(false)
XLuaUiManager.Open("UiEquipDetailOther", equip, adventureRole:GetCharacterViewModel())
end
function XUiTheatreRoleDetails:OnBtnElementDetailClick()
XLuaUiManager.Open("UiCharacterElementDetail", self.AdventureRole:GetCharacterId())
end
function XUiTheatreRoleDetails:OnBtnCareerTipsClick()
XLuaUiManager.Open("UiCharacterCarerrTips", self.AdventureRole:GetCharacterId())
end
function XUiTheatreRoleDetails:OnBtnRecruitClick()
local adventureManager = XDataCenter.TheatreManager.GetCurrentAdventureManager()
local adventureChapter = adventureManager:GetCurrentChapter()
local reqCallback = function()
self:Close()
end
adventureChapter:RequestRecruitRole(self.AdventureRole:GetId(), reqCallback)
end