local UIGemCompose = UIViewClass() function UIGemCompose:OnOpened(context) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title,Const_IDS.IDS_Jade_Button_1) self:RegistSystemEvent(EventID.UI_Gem_Refresh_Bag,self.RefreshBag) self:RegistSystemEvent(EventID.UI_PlayGemComposeEffect,self.PlayEffect) self.CurBagSelectIndex = 0 self.oldTexts = {} self.CurSelectGemImg = nil self.CurSelectGemData = nil self.CurSelectNextGemID = nil table.insert(self.oldTexts, self.group_GemOld.txt_Info1) table.insert(self.oldTexts, self.group_GemOld.txt_Info2) self.oldTextsValue = {} table.insert(self.oldTextsValue, self.group_GemOld.txt_Info11) table.insert(self.oldTextsValue, self.group_GemOld.txt_Info22) for i=1,#self.oldTexts do self.oldTexts[i].text = nil self.oldTextsValue[i].text = nil end self.newTexts = {} table.insert(self.newTexts, self.group_GemNew.txt_Info1) table.insert(self.newTexts, self.group_GemNew.txt_Info2) self.newTextsValue = {} table.insert(self.newTextsValue, self.group_GemNew.txt_Info11) table.insert(self.newTextsValue, self.group_GemNew.txt_Info22) for i=1,#self.newTexts do self.newTexts[i].text = nil end self.fullTexts = {} table.insert(self.fullTexts, self.group_GemCeiling.txt_Info1) table.insert(self.fullTexts, self.group_GemCeiling.txt_Info2) self.fullTextsValue = {} table.insert(self.fullTextsValue, self.group_GemCeiling.txt_Info11) table.insert(self.fullTextsValue, self.group_GemCeiling.txt_Info22) for i=1,#self.fullTexts do self.fullTexts[i].text = nil end for i=1,#self.fullTextsValue do self.fullTextsValue[i].text = nil end self:IsFullLevel(false) self:InitComposeBag() end function UIGemCompose:RefreshBag() self:RefreshComposeBag() self.ConditionScroll_Gem:MoveBegin() end function UIGemCompose:PlayEffect() self.Effect:PlayUIEffect() end function UIGemCompose:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.ConditionScroll_Gem then local gemBagData = data if gemBagData == nil then return end local itemData = gemBagData.ItemData local name = string.FormatByIdsId(Const_IDS[itemData.Name], itemData.ThirdType) cellTable.txt_GemName.text = name local length = UTL.String.GetStrLen(cellTable.txt_GemName.text) if length > 5 then local shortcutContent = UTL.String.CutStrByLength(cellTable.txt_GemName.text, 9) cellTable.txt_GemName.text = shortcutContent .. "..." end UTL.Item.ItemSquareIcon(cellTable.img_gem, cellTable.bg_Gem, itemData.ID) cellTable.txt_Num.text = gemBagData.Count UIUtils.SetActive(cellTable.img_Select, false) if gemBagData.ItemData.ThirdType >= MDL.GemCompose.GetGemMaxLevel() then UIUtils.SetActive(cellTable.BgLab, false) else local canCompose = gemBagData.Count >= 2 UIUtils.SetActive(cellTable.BgLab, canCompose) end if self.CurBagSelectIndex == index then self:OnCellClicked(scrollRect, self.CurBagSelectIndex, cellTable, nil, data) end end end function UIGemCompose:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.ConditionScroll_Gem then if self.CurSelectGemImg ~= nil then UIUtils.SetActive(self.CurSelectGemImg, false) end self.CurBagSelectIndex = index self.CurSelectGemImg = cellTable.img_Select UIUtils.SetActive(self.CurSelectGemImg, true) self.CurSelectGemData = data local curItemId = self.CurSelectGemData.ItemData.ID local nextItemId = MDL.GemCompose.GetNextLevelGem(curItemId) self.CurSelectNextGemID = nextItemId if self.CurSelectGemData.Count > 0 then local canComposeCount = math.floor(self.CurSelectGemData.Count / 2) if canComposeCount <= 0 then self.group_GemOld.txt_Num.text = UTL.Color.FormatRedColor("x2") self.group_GemNew.txt_Num.text = UTL.Color.FormatRedColor("x1") self.TxtNum.text = UTL.Color.FormatRedColor(0) self.CanComposeAll = false self.CanComposeOnce = false -- self.btn_ComposeAll.interactable = false -- self.btn_ComposeOnce.interactable = false else self.group_GemOld.txt_Num.text = "x2" self.group_GemNew.txt_Num.text = "x1" self.TxtNum.text = canComposeCount self.CanComposeAll = true self.CanComposeOnce = true -- self.btn_ComposeAll.interactable = true -- self.btn_ComposeOnce.interactable = true end else end if nextItemId ~= -1 then self:IsFullLevel(false) self:SetNormalInfo(curItemId, nextItemId) else self:IsFullLevel(true) self:SetFullInfo(curItemId) end end end function UIGemCompose:InitComposeBag() local gemBagDatas = MDL.GemCompose.GetSortGemBagDatas() local count = #gemBagDatas self.ConditionScroll_Gem:ClearCells() for i=1,count do self.ConditionScroll_Gem:AddData(gemBagDatas[i], 0) end local isZeroGem = count <= 0--没有宝石 self:IsDisplayTips(isZeroGem) if isZeroGem == false then self.ConditionScroll_Gem:SelectIndex(self.CurBagSelectIndex) end end function UIGemCompose:RefreshComposeBag() self.CurSelectGemImg = nil local gemBagDatas = MDL.GemCompose.GetSortGemBagDatas() self.ConditionScroll_Gem:ReloadAll(gemBagDatas) end function UIGemCompose:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UIGemCompose:OnButtonClicked(comp) if comp == self.UICommonPopUp.btn_Close then self:CloseView() elseif comp == self.btn_ComposeAll then logging.log(LTAG.LOG,"-----btn_ComposeAll------") if self.CurSelectGemData == nil then return end if not self.CanComposeAll then CTL.Tips.AddTipsMsg(Const_IDS.IDS_Jade_Upgrade_3) return end local canComposeCount = 0 if self.CurSelectGemData.Count >= 2 then canComposeCount = math.floor(self.CurSelectGemData.Count / 2) end local singleGem = {} singleGem.Id = self.CurSelectNextGemID singleGem.Count = canComposeCount local costGem = {} costGem.Id = self.CurSelectGemData.ItemData.ID costGem.Count = canComposeCount * 2 logging.log(LTAG.LOG,"-btn_ComposeAll-singleGem.Id---", singleGem.Id, " singleGem.Count ", singleGem.Count) MDL.GemCompose.ComposeGemReq(singleGem, costGem) CTL.Sound.PlayGameSound("UI_jeweled_04") elseif comp == self.btn_ComposeOnce then if self.CurSelectGemData == nil then return end if not self.CanComposeOnce then CTL.Tips.AddTipsMsg(Const_IDS.IDS_Jade_Upgrade_3) return end local singleGem = {} singleGem.Id = self.CurSelectNextGemID singleGem.Count = 1 local costGem = {} costGem.Id = self.CurSelectGemData.ItemData.ID if self.CurSelectGemData.Count >= 2 then costGem.Count = 2 end logging.log(LTAG.LOG,"-btn_ComposeOnce-singleGem.Id---", singleGem.Id, " singleGem.Count ", singleGem.Count) MDL.GemCompose.ComposeGemReq(singleGem, costGem) CTL.Sound.PlayGameSound("UI_jeweled_03") elseif comp == self.group_GemOld.btn_GemOld or comp == self.group_GemCeiling.btn_GemCeiling then -- self.CurSelectGemData.ItemData.ID UTL.ItemTips.ShowCommonTipsById(self.CurSelectGemData.ItemData.ID) elseif comp == self.group_GemNew.btn_GemNew then -- self.CurSelectNextGemID UTL.ItemTips.ShowCommonTipsById(self.CurSelectNextGemID) end end function UIGemCompose:IsDisplayTips(isDisplay) UIUtils.SetActive(self.group_UnGem, isDisplay) if isDisplay == false then UIUtils.SetActive(self.ConditionScroll_Gem, true) UIUtils.SetActive(self.group_Right, true) else UIUtils.SetActive(self.ConditionScroll_Gem, false) UIUtils.SetActive(self.group_Right, false) end end function UIGemCompose:SetNormalInfo(oldItemId, newItemId) local oldItem = DataSheetManager.ItemData:GetDataByID(oldItemId) UIUtils.SetLabel(self.group_GemOld.txt_GemName, UTL.Item.GetItemDataSpliceByType(oldItemId).Name) -- self.group_GemOld.txt_Num.text = "x2" UTL.Item.ItemSquareIcon(self.group_GemOld.img_gem,self.group_GemOld.bg_Gem,oldItem.ID) local oldJadeDataCfgData = DataSheetManager.JadeData:GetDataByID(oldItem.ID) local oldAttrDict = UTL.Item.GetAttrDict(oldJadeDataCfgData.Attr_Table) local oldIndex = 0 for k,v in pairs(oldAttrDict) do oldIndex = oldIndex + 1 self.oldTexts[oldIndex].text = k self.oldTextsValue[oldIndex].text = v end self.oldTexts[2].text = UIUtils.GetLocalizedTxt(Const_IDS.IDS_Team_TotalCapacity) self.oldTextsValue[2].text = UTL.Attr.CalculateFight(oldJadeDataCfgData.Attr_Table) local newItem = DataSheetManager.ItemData:GetDataByID(newItemId) UIUtils.SetLabel(self.group_GemNew.txt_GemName, UTL.Item.GetItemDataSpliceByType(newItemId).Name) -- self.group_GemNew.txt_Num.text = "x1" local newJadeDataCfgData = DataSheetManager.JadeData:GetDataByID(newItem.ID) UTL.Item.ItemSquareIcon(self.group_GemNew.img_gem,self.group_GemNew.bg_Gem,newItem.ID) local newAttrDict = UTL.Item.GetAttrDict(newJadeDataCfgData.Attr_Table) local newIndex = 0 for k,v in pairs(newAttrDict) do newIndex = newIndex + 1 self.newTexts[newIndex].text = k self.newTextsValue[newIndex].text = v end self.newTexts[2].text = UIUtils.GetLocalizedTxt(Const_IDS.IDS_Team_TotalCapacity) self.newTextsValue[2].text = UTL.Attr.CalculateFight(newJadeDataCfgData.Attr_Table) end function UIGemCompose:SetFullInfo(itemId) local item = DataSheetManager.ItemData:GetDataByID(itemId) UTL.Item.ItemSquareIcon(self.group_GemCeiling.img_gem,self.group_GemCeiling.bg_Gem,item.ID) UIUtils.SetLabel(self.group_GemCeiling.txt_GemName, UTL.Item.GetItemDataSpliceByType(itemId).Name) local JadeDataCfgData = DataSheetManager.JadeData:GetDataByID(item.ID) local attrDict = UTL.Item.GetAttrDict(JadeDataCfgData.Attr_Table) local index = 0 for k, v in pairs(attrDict) do index = index + 1 self.fullTexts[index].text = k self.fullTextsValue[index].text = v end self.fullTexts[2].text = UIUtils.GetLocalizedTxt(Const_IDS.IDS_Team_TotalCapacity) self.fullTextsValue[2].text = UTL.Attr.CalculateFight(JadeDataCfgData.Attr_Table) end function UIGemCompose:IsFullLevel(isFull) if isFull then UIUtils.SetActive(self.group, false) UIUtils.SetActive(self.group_Ceiling, true) else UIUtils.SetActive(self.group, true) UIUtils.SetActive(self.group_Ceiling, false) end end function UIGemCompose:OnClosed() self.CurBagSelectIndex = 0 end return UIGemCompose