local UIDyeAppearanceSuit = UIViewClass() local Const_Height_Item = 105 function UIDyeAppearanceSuit:OnOpened(context) local _, y = self.scroll_desc:GetAnchoredPosition() self.scrollPosY = y UIUtils.SetLabelText(self.txt_Equipped, Const_IDS.IDS_Equip_Equiped) self:RegistSystemEvent(EventID.UI_DyeAppearance_UpdateModelDye, self.OnUpdateModelDye) self:RegistSystemEvent(EventID.UI_DyeAppearance_UpdateInfo, self.OnUpdateModelDye) self:RegistSystemEvent(EventID.UI_DyeAppearance_UpdateDrawCardRed, self.UpdateBtnRed) local suitCfg = DataSheetManager.CollectionAPSuit:GetDataByID(self.context.suitId) self.suitCfg = suitCfg self:HandleParts(suitCfg) self:HandleMiddle(suitCfg) self:HandleBottom(suitCfg) end function UIDyeAppearanceSuit:HandleParts(suitCfg) for i, v in ipairs(self.group_item) do local colorId = suitCfg.PartList[i] self:SetPartItem(v, i, colorId) end end function UIDyeAppearanceSuit:SetPartItem(item, partIndex, colorId) local cfg = DataSheetManager.CollectionAPPart:GetDataByColorID_PartID_ApperanceID(colorId, partIndex, self.context.appearanceId) local isActive = MDL.DyeAppearance.IsColorActive(self.context.appearanceId, partIndex, colorId) CTL.DyeAppearance.SetColorItemTemplate(item, cfg, false, false, isActive == false) end function UIDyeAppearanceSuit:HandleMiddle(suitCfg) local curCount, isSuitActive = CTL.DyeAppearance.GetSuitActiveCount(self.context.suitId) self.isSuitActive = isSuitActive self.lock_conditionNum.text = curCount .. "/" .. #suitCfg.PartList UIUtils.SetActive(self.cell_Hp.gameObject, false) UIUtils.SetActive(self.cell_Atk.gameObject, false) UIUtils.SetActive(self.cell_Defense.gameObject, false) UIUtils.SetActive(self.cell_shjc.gameObject, false) for i, v in ipairs(suitCfg.Attr_Table) do local cell if v.AttrType == LuaConst.AttrTypeId.hplmt then UIUtils.SetActive(self.cell_Hp.gameObject, true) self.cell_Hp.txt_value.text = v.AttrNum cell = self.cell_Hp elseif v.AttrType == LuaConst.AttrTypeId.atk then UIUtils.SetActive(self.cell_Atk.gameObject, true) self.cell_Atk.txt_value.text = v.AttrNum cell = self.cell_Atk elseif v.AttrType == LuaConst.AttrTypeId.def then UIUtils.SetActive(self.cell_Defense.gameObject, true) self.cell_Defense.txt_value.text = v.AttrNum cell = self.cell_Defense else UIUtils.SetActive(self.cell_shjc.gameObject, true) self.cell_shjc.txt_value.text = UTL.Attr.FormatNumberToPercentage(v.AttrNum, 0) cell = self.cell_shjc end if self.isSuitActive then cell.obj_state:SetState(0) else cell.obj_state:SetState(1) end end end function UIDyeAppearanceSuit:HandleBottom(suitCfg) --btn local isBtnGray = CTL.DyeAppearance.GetSuitActiveCount(self.context.suitId) == 0 UIUtils.SetActive(self.mask_btn, isBtnGray) self.obj_state:SetState(CTL.DyeAppearance.GetIfSuitAllPartDye(self.context.suitId) and 0 or 1) --toggle self.freeAppearanceIndex = 0 self.freeAppearanceCount = 0 if suitCfg.LightEffectID1 > 0 then self.freeAppearanceCount = self.freeAppearanceCount + 1 end if suitCfg.LightEffectID2 > 0 then self.freeAppearanceCount = self.freeAppearanceCount + 1 end if suitCfg.LightEffectID3 > 0 then self.freeAppearanceCount = self.freeAppearanceCount + 1 end if suitCfg.MagicWeaponID > 0 then self.freeAppearanceCount = self.freeAppearanceCount + 1 end local hasSkill = suitCfg.SkillID > 0 local hasFree = self.freeAppearanceCount > 0 local idsList if hasFree and hasSkill then idsList = { Const_IDS.IDS_CollectionAP_Button3, Const_IDS.IDS_CollectionAP_Button4 } self.toggleIndex_Free = 0 self.toggleIndex_Skill = 1 elseif hasFree then idsList = { Const_IDS.IDS_CollectionAP_Button3 } self.toggleIndex_Free = 0 elseif hasSkill then idsList = { Const_IDS.IDS_CollectionAP_Button4 } self.toggleIndex_Skill = 0 end UTL.Toggle.InitToggleGroupByIDS(self.toggle_TopGroup, "txt_Grow1", idsList) for i, v in ipairs(idsList) do self.toggle_TopGroup:SetToggleIDS(i, "txt_Grow2", v) end if hasFree or hasSkill then self.toggle_TopGroup:SelectIndex(0) end self:UpdateBtnRed() end function UIDyeAppearanceSuit:OnValueChanged(comp, index) self.curToggleIndex = index self:SetExtraAward() end function UIDyeAppearanceSuit:SetExtraAward() local isSkill = self.curToggleIndex == self.toggleIndex_Skill if isSkill then self.state_item:SetState(1) UIUtils.SetImageByAssetBundle(self.img_Skill, self.suitCfg.SkillIcon) local cfg = DataSheetManager.HeroAppearance:GetDataByID(self.context.appearanceId) UIUtils.SetLabelText(self.txt_desc, Const_IDS[cfg.SpecialIDS]) UIUtils.SetActive(self.btn_Left, false) UIUtils.SetActive(self.btn_Right, false) else self.state_item:SetState(0) local effectId local itemId if self.freeAppearanceIndex == 0 then if self.suitCfg.LightEffectID1 > 0 then effectId = self.suitCfg.LightEffectID1 UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_LightEffect1]) elseif self.suitCfg.LightEffectID2 > 0 then effectId = self.suitCfg.LightEffectID2 UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_LightEffect2]) elseif self.suitCfg.LightEffectID3 > 0 then effectId = self.suitCfg.LightEffectID3 UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_LightEffect3]) elseif self.suitCfg.MagicWeaponID > 0 then effectId = self.suitCfg.MagicWeaponID UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_MagicWeapon]) end if DataSheetManager.LightEffect:TryGetDataByID(effectId) then itemId = DataSheetManager.LightEffect:GetDataByID(effectId).Activation else itemId = DataSheetManager.WeaponAppearance:GetDataByID(effectId).Activation end elseif self.freeAppearanceIndex == 1 then if self.suitCfg.LightEffectID2 > 0 then effectId = self.suitCfg.LightEffectID2 UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_LightEffect2]) elseif self.suitCfg.LightEffectID3 > 0 then effectId = self.suitCfg.LightEffectID3 UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_LightEffect3]) elseif self.suitCfg.MagicWeaponID > 0 then effectId = self.suitCfg.MagicWeaponID UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_MagicWeapon]) end if DataSheetManager.LightEffect:TryGetDataByID(effectId) then itemId = DataSheetManager.LightEffect:GetDataByID(effectId).Activation else itemId = DataSheetManager.WeaponAppearance:GetDataByID(effectId).Activation end elseif self.freeAppearanceIndex == 2 then if self.suitCfg.LightEffectID3 > 0 then effectId = self.suitCfg.LightEffectID3 UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_LightEffect3]) elseif self.suitCfg.MagicWeaponID > 0 then effectId = self.suitCfg.MagicWeaponID UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_MagicWeapon]) end if DataSheetManager.LightEffect:TryGetDataByID(effectId) then itemId = DataSheetManager.LightEffect:GetDataByID(effectId).Activation else itemId = DataSheetManager.WeaponAppearance:GetDataByID(effectId).Activation end elseif self.freeAppearanceIndex == 3 then effectId = self.suitCfg.MagicWeaponID itemId = DataSheetManager.WeaponAppearance:GetDataByID(effectId).Activation UIUtils.SetLabelText(self.txt_desc, Const_IDS[self.suitCfg.Description_MagicWeapon]) end UIUtils.SetActive(self.btn_Left, self.freeAppearanceIndex > 0 and self.freeAppearanceCount > 1) UIUtils.SetActive(self.btn_Right, self.freeAppearanceIndex < self.freeAppearanceCount - 1 and self.freeAppearanceCount > 1) UTL.Item.SetItemCell(self.item, itemId) self.selectItemId = itemId end if self.isSuitActive == false then self.txt_desc.text = UTL.Color.FormatTextByColor("322a20", self.txt_desc.text) else self.txt_desc.text = UTL.Color.FormatTextByColor("fdedb8", self.txt_desc.text) end UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self.txt_desc.transform) local _, height = self.txt_desc.transform:GetSizeDelta() if height < Const_Height_Item then self.scroll_desc:SetAnchoredPosition(nil, self.scrollPosY - (Const_Height_Item - height) / 2) else self.scroll_desc:SetAnchoredPosition(nil, self.scrollPosY) end end function UIDyeAppearanceSuit:OnButtonClicked(comp) if comp == self.btn_Left then self.freeAppearanceIndex = math.max(self.freeAppearanceIndex - 1, 0) self:SetExtraAward() elseif comp == self.btn_Right then self.freeAppearanceIndex = math.min(self.freeAppearanceIndex + 1, self.freeAppearanceCount - 1) self:SetExtraAward() elseif comp == self.btn_Upgrade then CTL.DyeAppearance.TryGetDye(self.context.appearanceId) elseif comp == self.btn_Check then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, { id = LuaConst.NoteID.DyeAppearanceSuit, params = CTL.DyeAppearance.GetNoteParams(LuaConst.NoteID.DyeAppearanceSuit, self.context.suitId) }) elseif comp == self.item.event_Click then UTL.ItemTips.ShowCommonTipsById(self.selectItemId) elseif comp == self.btn_Equip then CTL.DyeAppearance.TrySaveSuit(self.context.suitId) end end function UIDyeAppearanceSuit:OnUpdateModelDye() self:HandleParts(self.suitCfg) self:HandleMiddle(self.suitCfg) self:HandleBottom(self.suitCfg) end function UIDyeAppearanceSuit:UpdateBtnRed() self.btn_Upgrade:SetRedPoint(CTL.DyeAppearance.CheckDrawCardRed(self.context.appearanceId)) end return UIDyeAppearanceSuit