local XUiAwarenessTf = XLuaUiManager.Register(XLuaUi, "UiAwarenessTf") local XUiGridEquip = require("XUi/XUiEquipAwarenessReplace/XUiGridEquip") local MAX_MATERIAL_SLOT = 3 function XUiAwarenessTf:OnAwake() self:InitAutoScript() end function XUiAwarenessTf:OnStart(targetTemplateId) self.TemplateId = targetTemplateId --当前背包要选择的材料位置(1,2,3) self.CurSelectPos = 1 self.CurBagSelectEquipId = { 0, 0, 0 } --有顺序1(Main),2,3 self.CurMaterialEquipId = { 0, 0, 0 } self.MaterialGrid = {} self.AwarenessTfBagList = {} self.SuitId = XEquipConfig.GetEquipCfg(self.TemplateId).SuitId self.EquipIds = XDataCenter.EquipManager.GetEquipIdsBySuitId(self.SuitId) self.UpSort = true self:InitTargetInfo() self:UpdateConformBtn() self:UpdateMaterialBtn() end function XUiAwarenessTf:OnEnable() end function XUiAwarenessTf:OnDisable() end function XUiAwarenessTf:OnDestroy() end function XUiAwarenessTf:OnGetEvents() return nil end function XUiAwarenessTf:OnNotify() end -- auto -- Automatic generation of code, forbid to edit function XUiAwarenessTf:InitAutoScript() self:AutoInitUi() self:AutoAddListener() end function XUiAwarenessTf:AutoInitUi() self.PanelMaterial = self.Transform:Find("SafeAreaContentPane/PanelMaterial") self.GridMaterial2 = self.Transform:Find("SafeAreaContentPane/PanelMaterial/Material2/GridMaterial2") self.GridMaterial1 = self.Transform:Find("SafeAreaContentPane/PanelMaterial/Material1/GridMaterial1") self.BtnSelectMaterial1 = self.Transform:Find("SafeAreaContentPane/PanelMaterial/Material1/BtnSelectMaterial1"):GetComponent("Button") self.BtnStartTf = self.Transform:Find("SafeAreaContentPane/PanelMaterial/Buttons/BtnStartTf"):GetComponent("Button") self.BtnDisable = self.Transform:Find("SafeAreaContentPane/PanelMaterial/Buttons/BtnDisable"):GetComponent("Button") self.BtnSelectMaterial2 = self.Transform:Find("SafeAreaContentPane/PanelMaterial/Material2/BtnSelectMaterial2"):GetComponent("Button") self.GridMaterial3 = self.Transform:Find("SafeAreaContentPane/PanelMaterial/Material3/GridMaterial3") self.BtnSelectMaterial3 = self.Transform:Find("SafeAreaContentPane/PanelMaterial/Material3/BtnSelectMaterial3"):GetComponent("Button") self.GridResult = self.Transform:Find("SafeAreaContentPane/Result/GridResult") self.ImgGirdStar1 = self.Transform:Find("SafeAreaContentPane/Result/GridResult/Stars/PaneStar1/ImgGirdStar1"):GetComponent("Image") self.ImgGirdStar2 = self.Transform:Find("SafeAreaContentPane/Result/GridResult/Stars/PaneStar2/ImgGirdStar2"):GetComponent("Image") self.ImgGirdStar3 = self.Transform:Find("SafeAreaContentPane/Result/GridResult/Stars/PaneStar3/ImgGirdStar3"):GetComponent("Image") self.ImgGirdStar4 = self.Transform:Find("SafeAreaContentPane/Result/GridResult/Stars/PaneStar4/ImgGirdStar4"):GetComponent("Image") self.ImgGirdStar5 = self.Transform:Find("SafeAreaContentPane/Result/GridResult/Stars/PaneStar5/ImgGirdStar5"):GetComponent("Image") self.ImgGirdStar6 = self.Transform:Find("SafeAreaContentPane/Result/GridResult/Stars/PaneStar6/ImgGirdStar6"):GetComponent("Image") self.TxtResultName = self.Transform:Find("SafeAreaContentPane/Result/GridResult/TxtResultName"):GetComponent("Text") self.PanelPos = self.Transform:Find("SafeAreaContentPane/Result/GridResult/PanelPos") self.TxtResultPos = self.Transform:Find("SafeAreaContentPane/Result/GridResult/PanelPos/TxtResultPos"):GetComponent("Text") self.TxtResultLevel = self.Transform:Find("SafeAreaContentPane/Result/GridResult/Text/TxtResultLevel"):GetComponent("Text") self.BtnMainUi = self.Transform:Find("SafeAreaContentPane/PaneTop/BtnMainUi"):GetComponent("Button") self.BtnBack = self.Transform:Find("SafeAreaContentPane/PaneTop/BtnBack"):GetComponent("Button") self.RImgResultIcon = self.Transform:Find("SafeAreaContentPane/Result/RImgResultIcon"):GetComponent("RawImage") self.PanelAwarenessBag = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag") self.PanelGrid = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag/PanelGrid") self.PanelContent = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag/PanelGrid/ViewPort/PanelContent") self.GridAwarenessTfSelect = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag/PanelGrid/ViewPort/PanelContent/GridAwarenessTfSelect") self.BtnSortUp = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag/BtnSortUp"):GetComponent("Button") self.BtnConfirm = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag/BtnConfirm"):GetComponent("Button") self.BtnSortDown = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag/BtnSortDown"):GetComponent("Button") self.BtnCancel = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag/BtnCancel"):GetComponent("Button") self.PanelEmpty = self.Transform:Find("SafeAreaContentPane/PanelAwarenessBag/PanelEmpty") end function XUiAwarenessTf:AutoAddListener() self:RegisterClickEvent(self.BtnSelectMaterial1, self.OnBtnSelectMaterial1Click) self:RegisterClickEvent(self.BtnStartTf, self.OnBtnStartTfClick) self:RegisterClickEvent(self.BtnDisable, self.OnBtnDisableClick) self:RegisterClickEvent(self.BtnSelectMaterial2, self.OnBtnSelectMaterial2Click) self:RegisterClickEvent(self.BtnSelectMaterial3, self.OnBtnSelectMaterial3Click) self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick) self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick) self:RegisterClickEvent(self.BtnSortUp, self.OnBtnSortUpClick) self:RegisterClickEvent(self.BtnConfirm, self.OnBtnConfirmClick) self:RegisterClickEvent(self.BtnSortDown, self.OnBtnSortDownClick) self:RegisterClickEvent(self.BtnCancel, self.OnBtnCancelClick) end -- auto function XUiAwarenessTf:OnBtnSelectMaterial1Click() self:StartSelectMaterial(1) end function XUiAwarenessTf:OnBtnSelectMaterial2Click() self:StartSelectMaterial(2) end function XUiAwarenessTf:OnBtnSelectMaterial3Click() self:StartSelectMaterial(3) end function XUiAwarenessTf:OnBtnCancelClick() self.CurBagSelectEquipId = { 0, 0, 0 } self.PanelAwarenessBag.gameObject:SetActive(false) end function XUiAwarenessTf:OnBtnSortDownClick() self:SortMaterial(true) self:UpdateBagItem() self:UpdateBagSelectMark() end function XUiAwarenessTf:OnBtnStartTfClick() local tfCb = function(equipData) XLuaUiManager.Open("UiAwarenessTfResult", equipData.Id, self:ClearSelect()) end local okCb = function() local site = XGoodsCommonManager.GetGoodsShowParamsByTemplateId(self.TemplateId).Site XDataCenter.EquipManager.AwarenessTransform(self.SuitId, site, self.CurMaterialEquipId, tfCb) end local title = CS.XTextManager.GetText("AwarenessTfConfirmTitle") local hasResonanced = false for i = 1, MAX_MATERIAL_SLOT do local resonanceSkillNum = XDataCenter.EquipManager.GetResonanceSkillNum(self.CurMaterialEquipId[i]) for j = 1, resonanceSkillNum do if XDataCenter.EquipManager.CheckEquipPosResonanced(self.CurMaterialEquipId[i], j) then hasResonanced = true end end end local content if hasResonanced then content = CS.XTextManager.GetText("AwarenessTfConfirmContentResonance") else content = CS.XTextManager.GetText("AwarenessTfConfirmContent") end XLuaUiManager.Open("UiDialog", title, content, XUiManager.DialogType.Normal, nil, okCb) end function XUiAwarenessTf:OnBtnDisableClick() local text = CS.XTextManager.GetText("AwarenessTfMaterialError") XUiManager.TipMsg(text, XUiManager.UiTipType.Tip) end function XUiAwarenessTf:OnBtnMainUiClick() XLuaUiManager.RunMain() end function XUiAwarenessTf:OnBtnBackClick() self:Close() end function XUiAwarenessTf:OnBtnSortUpClick() self:SortMaterial(false) self:UpdateBagItem() self:UpdateBagSelectMark() end --确认背包选择按钮 function XUiAwarenessTf:OnBtnConfirmClick() --改变了主材料清空副材料 if self.CurSelectPos == 1 then if self.CurMaterialEquipId[1] ~= self.CurBagSelectEquipId[1] then self.CurMaterialEquipId[1] = self.CurBagSelectEquipId[1] self.CurMaterialEquipId[2] = 0 self.CurBagSelectEquipId[2] = 0 self.CurMaterialEquipId[3] = 0 self.CurBagSelectEquipId[3] = 0 end else for i = 2, MAX_MATERIAL_SLOT do self.CurMaterialEquipId[i] = self.CurBagSelectEquipId[i] end end self:UpdateMaterialBtn() self.PanelAwarenessBag.gameObject:SetActive(false) self:UpdateTargetLevel() end function XUiAwarenessTf:InitTargetInfo() self.PanelAwarenessBag.gameObject:SetActive(false) self:UpdateBaseInfo() self:UpdateStar() end --星星 function XUiAwarenessTf:UpdateStar() local star = XDataCenter.EquipManager.GetEquipStar(self.TemplateId) for i = 1, XEquipConfig.MAX_STAR_COUNT do if self["ImgGirdStar" .. i] then if i <= star then self["ImgGirdStar" .. i].gameObject:SetActive(true) else self["ImgGirdStar" .. i].gameObject:SetActive(false) end end end end --基础属性(名字,位置,等级,图标),等级默认1级,有继承在更新 function XUiAwarenessTf:UpdateBaseInfo() self.TxtResultName.text = XDataCenter.EquipManager.GetEquipName(self.TemplateId) self.TxtResultPos.text = XGoodsCommonManager.GetGoodsShowParamsByTemplateId(self.TemplateId).Site self.TxtResultLevel.text = 1 local icon = XDataCenter.EquipManager.GetEquipLiHuiPath(self.TemplateId) self.RImgResultIcon:SetRawImage(icon) end --放入主材料后更新等级显示 function XUiAwarenessTf:UpdateTargetLevel() if self.CurMaterialEquipId[1] > 0 then self.TxtResultLevel.text = XDataCenter.EquipManager.GetEquip(self.CurMaterialEquipId[1]).Level else self.TxtResultLevel.text = 1 end end --用于更新改造按钮状态(3个材料都放入) function XUiAwarenessTf:UpdateConformBtn() if self.CurMaterialEquipId[1] > 0 and self.CurMaterialEquipId[2] > 0 and self.CurMaterialEquipId[3] > 0 then self.BtnStartTf.gameObject:SetActive(true) self.BtnDisable.gameObject:SetActive(false) else self.BtnStartTf.gameObject:SetActive(false) self.BtnDisable.gameObject:SetActive(true) end end --开始选择材料 function XUiAwarenessTf:StartSelectMaterial(index) if index > 1 then if self.CurMaterialEquipId[1] == 0 then local text = CS.XTextManager.GetText("AwarenessTfMaterialMainError") XUiManager.TipMsg(text, XUiManager.UiTipType.Tip) return end end self.CurSelectPos = index self:InitMaterialBag() self.PanelAwarenessBag.gameObject:SetActive(true) end function XUiAwarenessTf:InitMaterialBag() self.GridAwarenessTfSelect.gameObject:SetActive(false) --筛选:去除已穿戴的,锁定的,主材料,与目标同位置的 self.EquipIds = XDataCenter.EquipManager.GetEquipIdsBySuitId(self.SuitId) self:FilterMaterial() --sort(默认升序) self.UpSort = true self.BtnSortDown.gameObject:SetActive(false) self.BtnSortUp.gameObject:SetActive(true) XDataCenter.EquipManager.SortEquipIdListByPriorType(self.EquipIds) self:SortMaterial() --生成Grid self:UpdateBagItem() --设置选中状态 for i = 1, #self.EquipIds do if self:IsSelected(self.EquipIds[i]) then self.AwarenessTfBagList[i]:SetSelected(true) else self.AwarenessTfBagList[i]:SetSelected(false) end end --设置已选择的数据 if self.CurSelectPos == 1 then return self.CurBagSelectEquipId[1] == self.CurMaterialEquipId[1] else for i = 2, MAX_MATERIAL_SLOT do self.CurBagSelectEquipId[i] = self.CurMaterialEquipId[i] end end end function XUiAwarenessTf:UpdateBagSelectMark() for i = 1, #self.EquipIds do if self:IsBagSelected(self.EquipIds[i]) then self.AwarenessTfBagList[i]:SetSelected(true) else self.AwarenessTfBagList[i]:SetSelected(false) end end end function XUiAwarenessTf:UpdateBagItem() --init local clickCb = function(equipId, grid) if self.CurSelectPos == 1 then if grid:IsSelected() then grid:SetSelected(false) self.CurBagSelectEquipId[self.CurSelectPos] = 0 else for _, v in pairs(self.AwarenessTfBagList) do v:SetSelected(false) end grid:SetSelected(true) self.CurBagSelectEquipId[self.CurSelectPos] = equipId end else if grid:IsSelected() then grid:SetSelected(false) if self.CurBagSelectEquipId[2] == equipId then self.CurBagSelectEquipId[2] = 0 else self.CurBagSelectEquipId[3] = 0 end else if self.CurBagSelectEquipId[2] == 0 or self.CurBagSelectEquipId[3] == 0 then if self.CurBagSelectEquipId[2] == 0 then self.CurBagSelectEquipId[2] = equipId elseif self.CurBagSelectEquipId[3] == 0 then self.CurBagSelectEquipId[3] = equipId end grid:SetSelected(true) else local text = CS.XTextManager.GetText("AwarenessTfMaterialSelectError") XUiManager.TipMsg(text, XUiManager.UiTipType.Tip) end end end end for i = 1, #self.EquipIds do if not self.AwarenessTfBagList[i] then local tempGo = CS.UnityEngine.Object.Instantiate(self.GridAwarenessTfSelect.gameObject) tempGo.transform:SetParent(self.PanelContent, false) self.AwarenessTfBagList[i] = XUiGridEquip.New(tempGo, clickCb, self) end self.AwarenessTfBagList[i]:Refresh(self.EquipIds[i]) self.AwarenessTfBagList[i].GameObject:SetActive(true) end for i = #self.EquipIds + 1, #self.AwarenessTfBagList do self.AwarenessTfBagList[i].GameObject:SetActive(false) end if #self.EquipIds > 0 then self.PanelEmpty.gameObject:SetActive(false) else self.PanelEmpty.gameObject:SetActive(true) end end function XUiAwarenessTf:IsSelected(equipId) if self.CurSelectPos == 1 then return self.CurMaterialEquipId[1] == equipId end for i = 2, MAX_MATERIAL_SLOT do if self.CurMaterialEquipId[i] == equipId then return true end end return false end function XUiAwarenessTf:IsBagSelected(equipId) if self.CurSelectPos == 1 then return self.CurBagSelectEquipId[1] == equipId end for i = 2, MAX_MATERIAL_SLOT do if self.CurBagSelectEquipId[i] == equipId then return true end end return false end --更新3个材料槽状态 function XUiAwarenessTf:UpdateMaterialBtn() for i = 1, MAX_MATERIAL_SLOT do if self.CurMaterialEquipId[i] > 0 then self["GridMaterial" .. i].gameObject:SetActive(true) self["BtnSelectMaterial" .. i].gameObject:SetActive(false) else self["GridMaterial" .. i].gameObject:SetActive(false) self["BtnSelectMaterial" .. i].gameObject:SetActive(true) end end self:UpdateMaterialGrid() self:UpdateConformBtn() end function XUiAwarenessTf:SortMaterial(upSort) if upSort ~= nil then self.UpSort = upSort end if self.UpSort then self.BtnSortDown.gameObject:SetActive(false) self.BtnSortUp.gameObject:SetActive(true) else self.BtnSortDown.gameObject:SetActive(true) self.BtnSortUp.gameObject:SetActive(false) end XTool.ReverseList(self.EquipIds) --[[ table.sort(self.EquipIds, function(a, b) if self.UpSort then return XDataCenter.EquipManager.GetEquip(a).Level < XDataCenter.EquipManager.GetEquip(b).Level else return XDataCenter.EquipManager.GetEquip(a).Level > XDataCenter.EquipManager.GetEquip(b).Level end end) --]] end function XUiAwarenessTf:FilterMaterial() local removeIds = {} for k, v in pairs(self.EquipIds) do --已穿戴的 if XDataCenter.EquipManager.IsWearing(v) then removeIds[k] = true end --锁定的 if XDataCenter.EquipManager.IsLock(v) then removeIds[k] = true end --主材料 if self.CurMaterialEquipId[1] > 0 and v == self.CurMaterialEquipId[1] and self.CurSelectPos ~= 1 then removeIds[k] = true end --同位置的 local targetPos = XGoodsCommonManager.GetGoodsShowParamsByTemplateId(self.TemplateId).Site local tempPos = XDataCenter.EquipManager.GetEquipSite(v) if targetPos == tempPos then removeIds[k] = true end end for i = #self.EquipIds, 1, -1 do if removeIds[i] then table.remove(self.EquipIds, i) end end end function XUiAwarenessTf:UpdateMaterialGrid() local clickCb = function(equipId) for i = 1, MAX_MATERIAL_SLOT do if self.CurMaterialEquipId[i] == equipId then self:StartSelectMaterial(i) end end end for i = 1, MAX_MATERIAL_SLOT do if not self.MaterialGrid[i] then self.MaterialGrid[i] = XUiGridEquip.New(self["GridMaterial" .. i], clickCb, self) end if self.CurMaterialEquipId[i] > 0 then self.MaterialGrid[i]:Refresh(self.CurMaterialEquipId[i]) end end end function XUiAwarenessTf:ClearSelect() self.CurBagSelectEquipId = { 0, 0, 0 } self.CurMaterialEquipId = { 0, 0, 0 } self:InitTargetInfo() self:UpdateConformBtn() self:UpdateMaterialBtn() end