2023-07-14 19:35:33 +00:00
|
|
|
local XUiGridSuitPrefab = require("XUi/XUiEquipAwarenessReplace/XUiGridSuitPrefab")
|
|
|
|
local XUiGridEquip = require("XUi/XUiEquipAwarenessReplace/XUiGridEquip")
|
|
|
|
local XUiGridResonanceSkill = require("XUi/XUiEquipResonanceSkill/XUiGridResonanceSkill")
|
|
|
|
local XUiGridDoubleResonanceSkill = require("XUi/XUiEquipResonanceSkill/XUiGridDoubleResonanceSkill")
|
|
|
|
|
|
|
|
local tableInsert = table.insert
|
|
|
|
local tableSort = table.sort
|
|
|
|
local CSXTextManagerGetText = CS.XTextManager.GetText
|
|
|
|
local CSUnityEngineObjectInstantiate = CS.UnityEngine.Object.Instantiate
|
|
|
|
|
|
|
|
local CUR_SUIT_PREFAB_INDEX = 0
|
|
|
|
local MAX_MERGE_ATTR_COUNT = 4
|
|
|
|
local MAX_RESONANCE_SKILL_COUNT = 6
|
2024-09-01 20:49:41 +00:00
|
|
|
local MAX_SUIT_SKILL_COUNT = 4
|
2023-07-14 19:35:33 +00:00
|
|
|
local ShowPropertyIndex = {
|
|
|
|
Attr = 1,
|
|
|
|
SuitSkill = 2,
|
|
|
|
ResonanceSkill = 3,
|
|
|
|
}
|
|
|
|
local TAB_TYPE = {
|
|
|
|
ALL = 1, --通用
|
|
|
|
ONE = 2, --专属
|
|
|
|
}
|
|
|
|
|
|
|
|
local XUiEquipAwarenessSuitPrefab = XLuaUiManager.Register(XLuaUi, "UiEquipAwarenessSuitPrefab")
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnAwake()
|
|
|
|
self:AutoAddListener()
|
|
|
|
self.GridSuitPrefab.gameObject:SetActiveEx(false)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnStart(characterId)
|
|
|
|
self.CharacterId = characterId
|
|
|
|
self.CurPrefabIndex = CUR_SUIT_PREFAB_INDEX
|
|
|
|
self.SelectShowProperty = ShowPropertyIndex.Attr
|
|
|
|
self.GridDoubleResonanceSkills = {}
|
|
|
|
self.GridDoubleResonanceSkill.gameObject:SetActiveEx(false)
|
|
|
|
|
|
|
|
self:InitDynamicTable()
|
|
|
|
self:InitCurEquipGrids()
|
|
|
|
self:InitPropertyBtnGroup()
|
|
|
|
self:InitTabGroup()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnEnable()
|
|
|
|
-- 获取是否有专属意识组合数据
|
|
|
|
local oneSuitPrefabIndexs = self:GetSuitPrefabIndexList(TAB_TYPE.ONE)
|
|
|
|
-- 如果已经有专属意识组合,直接切换专属
|
|
|
|
if #oneSuitPrefabIndexs > 1 then
|
|
|
|
self.TabGroup:SelectIndex(TAB_TYPE.ONE)
|
|
|
|
-- 默认切换通用
|
|
|
|
else
|
|
|
|
self.TabGroup:SelectIndex(TAB_TYPE.ALL)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnGetEvents()
|
|
|
|
return {
|
|
|
|
XEventId.EVENT_EQUIP_SUIT_PREFAB_DATA_UPDATE_NOTIFY
|
|
|
|
, XEventId.EVENT_EQUIP_DATA_LIST_UPDATE_NOTYFY
|
|
|
|
, XEventId.EVENT_EQUIP_PUTON_NOTYFY
|
|
|
|
, XEventId.EVENT_EQUIP_TAKEOFF_NOTYFY
|
|
|
|
, XEventId.EVENT_EQUIPLIST_TAKEOFF_NOTYFY
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnNotify(evt)
|
|
|
|
if evt == XEventId.EVENT_EQUIP_SUIT_PREFAB_DATA_UPDATE_NOTIFY
|
|
|
|
or evt == XEventId.EVENT_EQUIP_DATA_LIST_UPDATE_NOTYFY
|
|
|
|
or evt == XEventId.EVENT_EQUIP_PUTON_NOTYFY
|
|
|
|
or evt == XEventId.EVENT_EQUIPLIST_TAKEOFF_NOTYFY
|
|
|
|
or evt == XEventId.EVENT_EQUIP_TAKEOFF_NOTYFY then
|
|
|
|
self:Refresh(nil, true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
--@region 点击事件
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:AutoAddListener()
|
|
|
|
self.BtnTanchuangClose.CallBack = function() self:OnBtnTanchuangClose() end
|
|
|
|
self.BtnClosePopup.CallBack = function() self:ClosePopup() end
|
|
|
|
self.BtnSetName.CallBack = function() self:OnBtnSetName() end
|
|
|
|
self.BtnSave.CallBack = function() self:OnBtnSave() end
|
|
|
|
self.BtnEquip.CallBack = function() self:OnBtnEquip() end
|
|
|
|
self.BtnChangeName.CallBack = function() self:OnBtnChangeName() end
|
|
|
|
self.BtnDelete.CallBack = function() self:OnBtnDelete() end
|
|
|
|
self:RegisterClickEvent(self.BtnPos1, function() self:OnSelectEquipSite(XEquipConfig.EquipSite.Awareness.One) end)
|
|
|
|
self:RegisterClickEvent(self.BtnPos2, function() self:OnSelectEquipSite(XEquipConfig.EquipSite.Awareness.Two) end)
|
|
|
|
self:RegisterClickEvent(self.BtnPos3, function() self:OnSelectEquipSite(XEquipConfig.EquipSite.Awareness.Three) end)
|
|
|
|
self:RegisterClickEvent(self.BtnPos4, function() self:OnSelectEquipSite(XEquipConfig.EquipSite.Awareness.Four) end)
|
|
|
|
self:RegisterClickEvent(self.BtnPos5, function() self:OnSelectEquipSite(XEquipConfig.EquipSite.Awareness.Five) end)
|
|
|
|
self:RegisterClickEvent(self.BtnPos6, function() self:OnSelectEquipSite(XEquipConfig.EquipSite.Awareness.Six) end)
|
|
|
|
self:RegisterClickEvent(self.PanelDynamicTable, self.OnPanelDynamicTable)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnSelectType(index)
|
|
|
|
if self.TabType ~= index then
|
|
|
|
self.TabType = index
|
|
|
|
self.CurPrefabIndex = CUR_SUIT_PREFAB_INDEX
|
|
|
|
|
|
|
|
self:Refresh()
|
2024-09-01 20:49:41 +00:00
|
|
|
self:PlayAnimation("QieHuan")
|
2023-07-14 19:35:33 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnBtnTanchuangClose()
|
|
|
|
self:ClosePopup()
|
|
|
|
self:Close()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnPanelDynamicTable()
|
|
|
|
self:ClosePopup()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnBtnSetName()
|
|
|
|
self:ClosePopup()
|
|
|
|
XLuaUiManager.Open("UiEquipSuitPrefabRename", function(newName)
|
|
|
|
self.UnSavedPrefabInfo:SetName(newName)
|
|
|
|
self:Refresh(true)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnBtnSave()
|
|
|
|
local num = #self.SuitPrefabInfoList-1
|
|
|
|
local maxNum
|
|
|
|
|
|
|
|
if self.TabType == TAB_TYPE.ALL then
|
|
|
|
maxNum = XDataCenter.EquipManager.GetSuitPrefabNumMax()
|
|
|
|
elseif self.TabType == TAB_TYPE.ONE then
|
|
|
|
maxNum = XDataCenter.EquipManager.GetEquipSuitCharacterPrefabMaxNum()
|
|
|
|
end
|
|
|
|
|
|
|
|
if num >= maxNum then
|
|
|
|
XUiManager.TipText("EquipSuitPrefabSaveOverMaxNum")
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
if self.TabType == TAB_TYPE.ALL then
|
|
|
|
XDataCenter.EquipManager.EquipSuitPrefabSave(self.UnSavedPrefabInfo, 0)
|
|
|
|
elseif self.TabType == TAB_TYPE.ONE then
|
|
|
|
XDataCenter.EquipManager.EquipSuitPrefabSave(self.UnSavedPrefabInfo, self.CharacterId)
|
|
|
|
end
|
|
|
|
|
|
|
|
self:ClosePopup()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnBtnEquip()
|
|
|
|
self:ClosePopup()
|
|
|
|
|
|
|
|
local characterType = XCharacterConfigs.GetCharacterType(self.CharacterId)
|
|
|
|
local conflictInfoList = {}
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo()
|
|
|
|
local equipIds = suitPrefabInfo:GetEquipIds()
|
|
|
|
for _, equipId in pairs(equipIds) do
|
|
|
|
if not XDataCenter.EquipManager.IsCharacterTypeFit(equipId, characterType) then
|
|
|
|
XUiManager.TipText("EquipAwarenessSuitPrefabCharacterTypeWrong")
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
local characterId = XDataCenter.EquipManager.GetEquipWearingCharacterId(equipId)
|
|
|
|
if characterId and characterId ~= self.CharacterId then
|
|
|
|
local conflictInfo = {
|
|
|
|
EquipId = equipId,
|
|
|
|
CharacterId = characterId,
|
|
|
|
}
|
|
|
|
tableInsert(conflictInfoList, conflictInfo)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
tableSort(conflictInfoList, function(a, b)
|
|
|
|
return XDataCenter.EquipManager.GetEquipSite(a.EquipId) < XDataCenter.EquipManager.GetEquipSite(b.EquipId)
|
|
|
|
end)
|
|
|
|
|
|
|
|
local equipFunc = function()
|
2024-09-01 20:49:41 +00:00
|
|
|
XMVCA:GetAgency(ModuleId.XEquip):EquipSuitPrefabEquip(self.CurPrefabIndex, self.CharacterId, function()
|
2023-07-14 19:35:33 +00:00
|
|
|
self.CurPrefabIndex = CUR_SUIT_PREFAB_INDEX
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
if not next(conflictInfoList) then
|
|
|
|
equipFunc()
|
|
|
|
else
|
|
|
|
XLuaUiManager.Open("UiEquipSuitPrefabConflict", conflictInfoList, equipFunc)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnBtnChangeName()
|
|
|
|
self:ClosePopup()
|
|
|
|
XLuaUiManager.Open("UiEquipSuitPrefabRename", function(newName)
|
|
|
|
XDataCenter.EquipManager.EquipSuitPrefabRename(self.CurPrefabIndex, newName)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnBtnDelete()
|
|
|
|
self:ClosePopup()
|
|
|
|
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo()
|
|
|
|
local content = suitPrefabInfo:GetName()
|
|
|
|
XLuaUiManager.Open("UiEquipSuitPrefabConfirm", content, function()
|
|
|
|
local prefabIndex = self.CurPrefabIndex
|
|
|
|
self.CurPrefabIndex = CUR_SUIT_PREFAB_INDEX
|
|
|
|
XDataCenter.EquipManager.EquipSuitPrefabDelete(prefabIndex)
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
--@endregion
|
|
|
|
|
|
|
|
--@region 初始化函数
|
|
|
|
function XUiEquipAwarenessSuitPrefab:InitDynamicTable()
|
|
|
|
self.DynamicTable = XDynamicTableNormal.New(self.PanelDynamicTable)
|
|
|
|
self.DynamicTable:SetProxy(XUiGridSuitPrefab)
|
|
|
|
self.DynamicTable:SetDelegate(self)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:InitCurEquipGrids()
|
|
|
|
local clickCb = function(equipId)
|
|
|
|
self:OnSelectEquip(equipId)
|
|
|
|
end
|
|
|
|
|
|
|
|
self.CurEquipGirds = {}
|
|
|
|
self.GridCurAwareness.gameObject:SetActiveEx(false)
|
|
|
|
for _, equipSite in pairs(XEquipConfig.EquipSite.Awareness) do
|
|
|
|
local item = CS.UnityEngine.Object.Instantiate(self.GridCurAwareness)
|
2024-09-01 20:49:41 +00:00
|
|
|
self.CurEquipGirds[equipSite] = XUiGridEquip.New(item, self, clickCb, true)
|
2023-07-14 19:35:33 +00:00
|
|
|
self.CurEquipGirds[equipSite]:InitRootUi(self)
|
|
|
|
self.CurEquipGirds[equipSite].Transform:SetParent(self["PanelPos" .. equipSite], false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:InitTabGroup()
|
|
|
|
local tabBtns = { self.BtnTabAll, self.BtnTabOne }
|
|
|
|
|
|
|
|
self.TabGroup:Init(tabBtns, function(index) self:OnSelectType(index) end)
|
|
|
|
self.RImgRole:SetRawImage(XDataCenter.CharacterManager.GetCharSmallHeadIcon(self.CharacterId))
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:InitPropertyBtnGroup()
|
|
|
|
self.EquipBtnGroup:Init({
|
|
|
|
self.BtnEquipProperty,
|
|
|
|
self.BtnEquipSkill,
|
|
|
|
self.BtnEquipResonance,
|
|
|
|
}, function(tabIndex) self:OnSelectShowProperty(tabIndex) end)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnSelectShowProperty(selectShowProperty)
|
|
|
|
self.SelectShowProperty = selectShowProperty
|
|
|
|
|
|
|
|
if selectShowProperty == ShowPropertyIndex.Attr then
|
|
|
|
self:UpdateCurEquipAttr()
|
|
|
|
self.PanelAttrParent.gameObject:SetActiveEx(true)
|
|
|
|
self.PanelSuitSkill.gameObject:SetActiveEx(false)
|
|
|
|
self.PanelResonanceSkill.gameObject:SetActiveEx(false)
|
|
|
|
elseif selectShowProperty == ShowPropertyIndex.SuitSkill then
|
|
|
|
self:UpdateCurEquipSkill()
|
|
|
|
self.PanelAttrParent.gameObject:SetActiveEx(false)
|
|
|
|
self.PanelSuitSkill.gameObject:SetActiveEx(true)
|
|
|
|
self.PanelResonanceSkill.gameObject:SetActiveEx(false)
|
|
|
|
elseif selectShowProperty == ShowPropertyIndex.ResonanceSkill then
|
|
|
|
self:UpdateCurEquipResonanceSkill()
|
|
|
|
self.PanelAttrParent.gameObject:SetActiveEx(false)
|
|
|
|
self.PanelSuitSkill.gameObject:SetActiveEx(false)
|
|
|
|
self.PanelResonanceSkill.gameObject:SetActiveEx(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
self:ClosePopup()
|
|
|
|
end
|
|
|
|
--@endregion
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:Refresh(doNotResetUnsaved, resetScroll)
|
|
|
|
local characterId = self.CharacterId
|
|
|
|
self.UnSavedPrefabInfo = not doNotResetUnsaved and XDataCenter.EquipManager.GetUnSavedSuitPrefabInfo(characterId) or self.UnSavedPrefabInfo
|
|
|
|
self.SuitPrefabInfoList = self:GetSuitPrefabIndexList()
|
|
|
|
|
|
|
|
self:UpdateDynamicTable(resetScroll)
|
|
|
|
self:UpdateCurEquipGrids(self.CurPrefabIndex)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:UpdateCurEquipAttr()
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo()
|
|
|
|
local attrMap = XDataCenter.EquipManager.GetAwarenessMergeAttrMap(suitPrefabInfo:GetEquipIds())
|
|
|
|
local attrCount = 0
|
|
|
|
|
|
|
|
for _, attr in pairs(attrMap) do
|
|
|
|
attrCount = attrCount + 1
|
|
|
|
if attrCount > MAX_MERGE_ATTR_COUNT then
|
|
|
|
break
|
|
|
|
end
|
|
|
|
self["TxtName" .. attrCount].text = attr.Name
|
|
|
|
self["TxtAttr" .. attrCount].text = attr.Value
|
|
|
|
self["PanelAttr" .. attrCount].gameObject:SetActiveEx(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
for i = attrCount + 1, MAX_MERGE_ATTR_COUNT do
|
|
|
|
self["PanelAttr" .. i].gameObject:SetActiveEx(false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:UpdateCurEquipSkill()
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo()
|
2024-09-01 20:49:41 +00:00
|
|
|
local activeSkillDesInfoList = XDataCenter.EquipManager.GetSuitMergeActiveSkillDesInfoList(suitPrefabInfo:GetEquipIds(), self.CharacterId)
|
2023-07-14 19:35:33 +00:00
|
|
|
local skillCount = 0
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
for i = 1, MAX_SUIT_SKILL_COUNT do
|
2023-07-14 19:35:33 +00:00
|
|
|
if not activeSkillDesInfoList[i] then
|
|
|
|
self["TxtSkillDes" .. i].gameObject:SetActiveEx(false)
|
|
|
|
else
|
|
|
|
self["TxtPos" .. i].text = activeSkillDesInfoList[i].PosDes
|
|
|
|
self["TxtSkillDes" .. i].text = activeSkillDesInfoList[i].SkillDes
|
|
|
|
self["TxtSkillDes" .. i].gameObject:SetActiveEx(true)
|
|
|
|
skillCount = skillCount + 1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if skillCount == 0 then
|
|
|
|
self.PanelNoSkill.gameObject:SetActiveEx(true)
|
|
|
|
else
|
|
|
|
self.PanelNoSkill.gameObject:SetActiveEx(false)
|
|
|
|
end
|
|
|
|
|
|
|
|
CS.UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self["TxtSkillDes1"].transform.parent)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:UpdateCurEquipResonanceSkill()
|
|
|
|
local skillCount = 0
|
|
|
|
|
|
|
|
for equipSite = 1, MAX_RESONANCE_SKILL_COUNT do
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo()
|
|
|
|
local equipId = suitPrefabInfo:GetEquipId(equipSite)
|
|
|
|
|
|
|
|
local grid = self.GridDoubleResonanceSkills[equipSite]
|
|
|
|
if not grid then
|
|
|
|
local go = CSUnityEngineObjectInstantiate(self.GridDoubleResonanceSkill, self.PanelResonanceSkillParent)
|
|
|
|
grid = XUiGridDoubleResonanceSkill.New(go)
|
|
|
|
self.GridDoubleResonanceSkills[equipSite] = grid
|
|
|
|
grid.GameObject:SetActiveEx(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
if not equipId or equipId == 0 then
|
|
|
|
grid:RefreshByEquipId(nil, nil, equipSite)
|
|
|
|
else
|
|
|
|
grid:RefreshByEquipId(self.CharacterId, equipId, equipSite)
|
|
|
|
skillCount = skillCount + 1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local noResonanceSkill = skillCount == 0
|
|
|
|
self.PanelResonanceSkillParent.gameObject:SetActiveEx(not noResonanceSkill)
|
|
|
|
self.PanelNoResonanceSkill.gameObject:SetActiveEx(noResonanceSkill)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:UpdateSavePanel()
|
|
|
|
local isPreafabSaved = self.CurPrefabIndex ~= CUR_SUIT_PREFAB_INDEX
|
|
|
|
self.PanelSavedPrefab.gameObject:SetActiveEx(isPreafabSaved)
|
|
|
|
self.PanelUnSavedPrefab.gameObject:SetActiveEx(not isPreafabSaved)
|
|
|
|
|
|
|
|
if not isPreafabSaved then
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo()
|
|
|
|
self.BtnSetName:SetName(suitPrefabInfo:GetName())
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:UpdateDynamicTable(resetScroll)
|
|
|
|
local num = #self.SuitPrefabInfoList-1
|
|
|
|
if self.TabType == TAB_TYPE.ALL then
|
|
|
|
self.TxtTotalNum.text = CSXTextManagerGetText("EquipSuitPrefabNum", num, XDataCenter.EquipManager.GetSuitPrefabNumMax())
|
|
|
|
self.TextName.text = CSXTextManagerGetText("AwarenessGroup")
|
|
|
|
elseif self.TabType == TAB_TYPE.ONE then
|
|
|
|
local charConfig = XCharacterConfigs.GetCharacterTemplate(self.CharacterId)
|
|
|
|
self.TxtTotalNum.text = CSXTextManagerGetText("EquipSuitPrefabNum", num, XDataCenter.EquipManager.GetEquipSuitCharacterPrefabMaxNum())
|
|
|
|
self.TextName.text = CSXTextManagerGetText("AwarenessGroupWithName", charConfig.TradeName)
|
|
|
|
end
|
|
|
|
|
|
|
|
self.DynamicTable:SetDataSource(self.SuitPrefabInfoList)
|
|
|
|
self.DynamicTable:ReloadDataASync(resetScroll and 1)
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnDynamicTableEvent(event, index, grid)
|
|
|
|
local suitPrefabIndex = self.SuitPrefabInfoList[index]
|
|
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo(suitPrefabIndex)
|
|
|
|
local isPreafabSaved = suitPrefabIndex ~= CUR_SUIT_PREFAB_INDEX
|
|
|
|
grid:Refresh(suitPrefabInfo, index-1, isPreafabSaved)
|
|
|
|
if self.CurPrefabIndex == suitPrefabIndex then
|
|
|
|
grid:SetSelected(true)
|
|
|
|
self.LastSelectSuitPrefabGird = grid
|
|
|
|
else
|
|
|
|
grid:SetSelected(false)
|
|
|
|
end
|
|
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
|
|
|
|
if self.LastSelectSuitPrefabGird then
|
|
|
|
self.LastSelectSuitPrefabGird:SetSelected(false)
|
|
|
|
end
|
|
|
|
self.LastSelectSuitPrefabGird = grid
|
|
|
|
if self.LastSelectSuitPrefabGird then
|
|
|
|
self.LastSelectSuitPrefabGird:SetSelected(true)
|
|
|
|
end
|
|
|
|
self:UpdateCurEquipGrids(suitPrefabIndex)
|
|
|
|
self:ClosePopup()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:UpdateCurEquipGrids(suitPrefabIndex)
|
|
|
|
self.CurPrefabIndex = suitPrefabIndex
|
|
|
|
|
|
|
|
self:UpdateSavePanel()
|
|
|
|
self.EquipBtnGroup:SelectIndex(self.SelectShowProperty)
|
|
|
|
for _, equipSite in pairs(XEquipConfig.EquipSite.Awareness) do
|
|
|
|
self:UpdateCurEquipGrid(equipSite)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:UpdateCurEquipGrid(equipSite)
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo()
|
|
|
|
|
|
|
|
local equipId = suitPrefabInfo:GetEquipId(equipSite)
|
|
|
|
if not equipId or equipId == 0 then
|
|
|
|
self.CurEquipGirds[equipSite].GameObject:SetActiveEx(false)
|
|
|
|
self["PanelNoEquip" .. equipSite].gameObject:SetActiveEx(true)
|
|
|
|
else
|
|
|
|
self.CurEquipGirds[equipSite]:Refresh(equipId)
|
|
|
|
self.CurEquipGirds[equipSite].GameObject:SetActiveEx(true)
|
|
|
|
self["PanelNoEquip" .. equipSite].gameObject:SetActiveEx(false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:ClosePopup()
|
|
|
|
if XLuaUiManager.IsUiShow("UiEquipAwarenessPopup") then
|
|
|
|
XLuaUiManager.Close("UiEquipAwarenessPopup")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnSelectEquip(equipId)
|
|
|
|
local equipSite = XDataCenter.EquipManager.GetEquipSite(equipId)
|
|
|
|
self:OnSelectEquipSite(equipSite)
|
|
|
|
|
|
|
|
if self.CurEquipGirds[equipSite] then
|
|
|
|
XLuaUiManager.Open("UiEquipAwarenessPopup", self, nil, equipId, self.CharacterId, true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:OnSelectEquipSite(equipSite)
|
|
|
|
if self.LastSelectPos then
|
|
|
|
local go = self["ImgSelect" .. self.LastSelectPos]
|
|
|
|
if go then
|
|
|
|
go.gameObject:SetActiveEx(false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
self.LastSelectPos = equipSite
|
|
|
|
if self.LastSelectPos then
|
|
|
|
local go = self["ImgSelect" .. self.LastSelectPos]
|
|
|
|
if go then
|
|
|
|
go.gameObject:SetActiveEx(true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if self.LastSelectCurGrid then
|
|
|
|
self.LastSelectCurGrid:SetSelected(false)
|
|
|
|
end
|
|
|
|
self.LastSelectCurGrid = self.CurEquipGirds[equipSite]
|
|
|
|
if self.LastSelectCurGrid then
|
|
|
|
self.LastSelectCurGrid:SetSelected(true)
|
|
|
|
end
|
|
|
|
|
|
|
|
self:ClosePopup()
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:GetShowingPrefabInfo(prefabIndex)
|
|
|
|
prefabIndex = prefabIndex or self.CurPrefabIndex
|
|
|
|
return XDataCenter.EquipManager.GetSuitPrefabInfo(prefabIndex) or self.UnSavedPrefabInfo
|
|
|
|
end
|
|
|
|
|
|
|
|
function XUiEquipAwarenessSuitPrefab:GetSuitPrefabIndexList(tabType)
|
|
|
|
if tabType == nil then tabType = self.TabType end
|
|
|
|
local tl = {0} --0对应自定义的那列
|
|
|
|
local suitPrefabInfoList = XDataCenter.EquipManager.GetSuitPrefabIndexList()
|
|
|
|
|
|
|
|
for i,suitPrefabIndex in ipairs(suitPrefabInfoList) do
|
|
|
|
local suitPrefabInfo = self:GetShowingPrefabInfo(suitPrefabIndex)
|
|
|
|
if tabType == TAB_TYPE.ALL then
|
|
|
|
if suitPrefabInfo:GetCharacterId() == 0 then
|
|
|
|
table.insert(tl, suitPrefabIndex)
|
|
|
|
end
|
|
|
|
elseif tabType == TAB_TYPE.ONE then
|
|
|
|
if suitPrefabInfo:GetCharacterId() == self.CharacterId then
|
|
|
|
table.insert(tl, suitPrefabIndex)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
return tl
|
|
|
|
end
|