diff --git a/lua/app/config/localization/localization_global_const.lua b/lua/app/config/localization/localization_global_const.lua index 966cf672..78f160e4 100644 --- a/lua/app/config/localization/localization_global_const.lua +++ b/lua/app/config/localization/localization_global_const.lua @@ -685,6 +685,43 @@ local LocalizationGlobalConst = EQUIP_DESC_30 = "EQUIP_DESC_30", EQUIP_DESC_31 = "EQUIP_DESC_31", EQUIP_DESC_32 = "EQUIP_DESC_32", + EQUIP_HERO_DESC_1 = "EQUIP_HERO_DESC_1", + EQUIP_HERO_LV_1 = "EQUIP_HERO_LV_1", + EQUIP_HERO_LV_2 = "EQUIP_HERO_LV_2", + EQUIP_HERO_LV_3 = "EQUIP_HERO_LV_3", + EQUIP_HERO_DESC_2 = "EQUIP_HERO_DESC_2", + EQUIP_HERO_DESC_3 = "EQUIP_HERO_DESC_3", + EQUIP_HERO_DESC_4 = "EQUIP_HERO_DESC_4", + EQUIP_HERO_DESC_5 = "EQUIP_HERO_DESC_5", + EQUIP_HERO_DESC_6 = "EQUIP_HERO_DESC_6", + EQUIP_HERO_DESC_7 = "EQUIP_HERO_DESC_7", + EQUIP_HERO_DESC_8 = "EQUIP_HERO_DESC_8", + EQUIP_HERO_DESC_9 = "EQUIP_HERO_DESC_9", + EQUIP_HERO_DESC_10 = "EQUIP_HERO_DESC_10", + EQUIP_HERO_DESC_11 = "EQUIP_HERO_DESC_11", + EQUIP_HERO_DESC_12 = "EQUIP_HERO_DESC_12", + EQUIP_HERO_DESC_13 = "EQUIP_HERO_DESC_13", + EQUIP_HERO_DESC_14 = "EQUIP_HERO_DESC_14", + EQUIP_HERO_DESC_15 = "EQUIP_HERO_DESC_15", + EQUIP_HERO_DESC_16 = "EQUIP_HERO_DESC_16", + EQUIP_HERO_DESC_17 = "EQUIP_HERO_DESC_17", + EQUIP_HERO_DESC_18 = "EQUIP_HERO_DESC_18", + EQUIP_HERO_DESC_19 = "EQUIP_HERO_DESC_19", + EQUIP_HERO_DESC_20 = "EQUIP_HERO_DESC_20", + EQUIP_HERO_DESC_21 = "EQUIP_HERO_DESC_21", + EQUIP_HERO_DESC_22 = "EQUIP_HERO_DESC_22", + EQUIP_HERO_DESC_23 = "EQUIP_HERO_DESC_23", + EQUIP_HERO_DESC_24 = "EQUIP_HERO_DESC_24", + EQUIP_HERO_DESC_25 = "EQUIP_HERO_DESC_25", + EQUIP_HERO_DESC_26 = "EQUIP_HERO_DESC_26", + EQUIP_HERO_DESC_27 = "EQUIP_HERO_DESC_27", + EQUIP_HERO_DESC_28 = "EQUIP_HERO_DESC_28", + EQUIP_HERO_DESC_29 = "EQUIP_HERO_DESC_29", + EQUIP_HERO_DESC_30 = "EQUIP_HERO_DESC_30", + EQUIP_HERO_DESC_31 = "EQUIP_HERO_DESC_31", + EQUIP_HERO_DESC_32 = "EQUIP_HERO_DESC_32", + EQUIP_HERO_DESC_33 = "EQUIP_HERO_DESC_33", + EQUIP_HERO_DESC_34 = "EQUIP_HERO_DESC_34", } return LocalizationGlobalConst \ No newline at end of file diff --git a/lua/app/config/strings/cn/global.lua b/lua/app/config/strings/cn/global.lua index 49189e2b..59a16799 100644 --- a/lua/app/config/strings/cn/global.lua +++ b/lua/app/config/strings/cn/global.lua @@ -681,10 +681,50 @@ local localization_global = ["HERO_DESC_22"] = "去升星", ["HERO_DESC_23"] = "技能等级:{0}", ["BAG_DESC_1"] = "背包", - ["EQUIP_DESC_29"] = "只有上阵的英雄才能穿戴装备", ["EQUIP_DESC_30"] = "穿戴", - ["EQUIP_DESC_31"] = "一键穿戴", - ["EQUIP_DESC_32"] = "装备培养", + ["EQUIP_PARTS_1"] = "头盔", + ["EQUIP_PARTS_2"] = "护臂", + ["EQUIP_PARTS_3"] = "胸甲", + ["EQUIP_PARTS_4"] = "裤子", + ["EQUIP_PARTS_5"] = "鞋子", + ["EQUIP_PARTS_6"] = "护手", + ["EQUIP_HERO_DESC_1"] = "没有多余装备", + ["EQUIP_HERO_LV_1"] = "强化共鸣{0}级", + ["EQUIP_HERO_LV_2"] = "品质共鸣{0}级", + ["EQUIP_HERO_LV_3"] = "精炼共鸣{0}级", + ["EQUIP_HERO_DESC_2"] = "一键穿戴", + ["EQUIP_HERO_DESC_3"] = "装备培养", + ["EQUIP_HERO_DESC_4"] = "装备共鸣", + ["EQUIP_HERO_DESC_5"] = "6件装备培养进度相同可激活装备共鸣", + ["EQUIP_HERO_DESC_6"] = "装备共鸣可提供额外属性", + ["EQUIP_HERO_DESC_7"] = "只有上阵英雄才可穿戴装备", + ["EQUIP_HERO_DESC_8"] = "装备详情", + ["EQUIP_HERO_DESC_9"] = "部位", + ["EQUIP_HERO_DESC_10"] = "评分", + ["EQUIP_HERO_DESC_11"] = "基础属性", + ["EQUIP_HERO_DESC_12"] = "附加属性", + ["EQUIP_HERO_DESC_13"] = "替换", + ["EQUIP_HERO_DESC_14"] = "养成", + ["EQUIP_HERO_DESC_15"] = "装备替换", + ["EQUIP_HERO_DESC_16"] = "交换", + ["EQUIP_HERO_DESC_17"] = "没有可穿戴的装备", + ["EQUIP_HERO_DESC_18"] = "装备养成", + ["EQUIP_HERO_DESC_19"] = "强化", + ["EQUIP_HERO_DESC_20"] = "精炼", + ["EQUIP_HERO_DESC_21"] = "取消全选", + ["EQUIP_HERO_DESC_22"] = "强化", + ["EQUIP_HERO_DESC_23"] = "一键强化", + ["EQUIP_HERO_DESC_24"] = "分解装备", + ["EQUIP_HERO_DESC_25"] = "成功率:{0}%(失败等级不变)", + ["EQUIP_HERO_DESC_26"] = "已精炼至满级", + ["EQUIP_HERO_DESC_27"] = "已强化至满级", + ["EQUIP_HERO_DESC_28"] = "分解可得", + ["EQUIP_HERO_DESC_29"] = "一键全选", + ["EQUIP_HERO_DESC_30"] = "分解", + ["EQUIP_HERO_DESC_31"] = "请先选择装备", + ["EQUIP_HERO_DESC_32"] = "没有可以强化的装备", + ["EQUIP_HERO_DESC_33"] = "共鸣激活", + ["EQUIP_HERO_DESC_34"] = "强化至{0}级可继续精炼", } return localization_global \ No newline at end of file diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua index 959d7e23..5a46481e 100644 --- a/lua/app/global/global_const.lua +++ b/lua/app/global/global_const.lua @@ -508,6 +508,27 @@ GConst.QLT_COLOR = { [6] = "#f6aeff", } +-- 没描边的文本颜色 +GConst.QLT_COLOR_NO_OUTLINE = { + [0] = "#FFFFFF", + [1] = "#146F3B", + [2] = "#23429C", + [3] = "#952BA8", + [4] = "#C45F0E", + [5] = "#C40E0E", + [6] = "#C40E0E", + [7] = "#C40E0E",-- 炫彩 +} + +GConst.QLT_TYPE = { + NORMAL = 1, + RARE = 2, + EXCELLENT = 3, + EPIC = 4, + LEGEND = 5, + MYTHIC = 6, +} + GConst.QLT_LABLE = { DEFAULT = "equip_quality_1", GRAY = "equip_quality_1", diff --git a/lua/app/global/global_func.lua b/lua/app/global/global_func.lua index 472a4386..fdb9573f 100644 --- a/lua/app/global/global_func.lua +++ b/lua/app/global/global_func.lua @@ -2007,6 +2007,18 @@ function GFunc.getFinalAttrValue(allAttrs, fixedId, factorId) end end +-- 通用 +function GFunc.getQltColor(qlt) + qlt = qlt or GConst.QLT_TYPE.NORMAL + return GConst.QLT_COLOR[qlt] +end + +-- 无描边用 +function GFunc.getQltColorNoOutline(qlt) + qlt = qlt or GConst.QLT_TYPE.NORMAL + return GConst.QLT_COLOR_NO_OUTLINE[qlt] +end + ---- 返回一个显示等间距,但是数值不等间距的sliderValue -- defaultValue 值代表第一段少了平均每段的值 function GFunc.getUnevenSliderValue(list, value, defaultValue) diff --git a/lua/app/module/equip/equip_const.lua b/lua/app/module/equip/equip_const.lua index 32236283..ae54da14 100644 --- a/lua/app/module/equip/equip_const.lua +++ b/lua/app/module/equip/equip_const.lua @@ -10,4 +10,25 @@ EquipConst.PART_TYPE = { EQUIP_6 = 6, } +EquipConst.EQUIP_PART_NAME = { + [EquipConst.PART_TYPE.EQUIP_1] = "EQUIP_PARTS_1", --"头盔", + [EquipConst.PART_TYPE.EQUIP_2] = "EQUIP_PARTS_2", --"护臂", + [EquipConst.PART_TYPE.EQUIP_3] = "EQUIP_PARTS_3", --"胸甲", + [EquipConst.PART_TYPE.EQUIP_4] = "EQUIP_PARTS_4", --"裤子", + [EquipConst.PART_TYPE.EQUIP_5] = "EQUIP_PARTS_5", --"鞋子", + [EquipConst.PART_TYPE.EQUIP_6] = "EQUIP_PARTS_6", --"护手", +} + +EquipConst.INFO_SHOW_TYPE = { + PREVIEW = 1, --预览 + BASE_ATTR = 2, --基础属性 + ALL_ATTR = 3, --所有属性 +} + +EquipConst.RESONATE_PAGE = { + LV_UP = 1, --强化共鸣 + QLT = 2, --品质共鸣 + REFINE = 3, --精炼共鸣 +} + return EquipConst \ No newline at end of file diff --git a/lua/app/module/equip/equip_manager.lua b/lua/app/module/equip/equip_manager.lua index aee763d6..9a52851e 100644 --- a/lua/app/module/equip/equip_manager.lua +++ b/lua/app/module/equip/equip_manager.lua @@ -4,11 +4,18 @@ function EquipManager:showEquipListUI(heroEntity, part) UIManager:showUI("app/ui/equip/equip_list_ui", {heroEntity = heroEntity, part = part}) end --- 展示材料获取弹窗(英雄id,部位,材料id,材料数量) -function EquipManager:showItemGetPop(heroId, part, id, num) - self:reqEquipUpgradeGift(heroId, part) +function EquipManager:showEquipGrowthUI(slotId) + UIManager:showUI("app/ui/equip/equip_growth_ui", {slotId = slotId}) +end - UIManager:showUI("app/ui/dungeon/item_get_ui", {heroId = heroId, part = part, id = id, value = num}) +function EquipManager:showEquipInfoUI(params) + local uiObj = UIManager:checkOpen(UIManager.UI_PATH.EQUIP_INFO_UI) + if uiObj then + uiObj:ctor(params) + uiObj:onRefresh() + else + UIManager:showUI(UIManager.UI_PATH.EQUIP_INFO_UI, params) + end end -- 请求触发装备升级礼包 diff --git a/lua/app/ui/common/cell/equip_cell.lua b/lua/app/ui/common/cell/equip_cell.lua index 48f4a19c..2dfb7c6a 100644 --- a/lua/app/ui/common/cell/equip_cell.lua +++ b/lua/app/ui/common/cell/equip_cell.lua @@ -27,7 +27,7 @@ function EquipCell:refresh(entity, slotId, showMask, showCheck, showLock) if entity == nil then return end - self:_refreshShow(entity:getQlt(), entity:getIconRes(), entity:getPartLevel(slotId), showMask, showCheck, showLock) + self:_refreshShow(entity:getQlt(), entity:getIconRes(), entity:getPartLv(slotId), showMask, showCheck, showLock) end function EquipCell:refreshByUid(uid) diff --git a/lua/app/ui/equip/cell/equip_list_cell.lua b/lua/app/ui/equip/cell/equip_list_cell.lua index 19bbfd77..ec61231f 100644 --- a/lua/app/ui/equip/cell/equip_list_cell.lua +++ b/lua/app/ui/equip/cell/equip_list_cell.lua @@ -6,26 +6,31 @@ function EquipListCell:init() self.nameTx = uiMap["cell.name_tx"] self.powerTx = uiMap["cell.power_tx"] self.wearBtn = uiMap["cell.wear_btn"] + self.wearBtnIcon = uiMap["cell.wear_btn.icon"] self.wearBtnTx = uiMap["cell.wear_btn.text"] self.wearBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_30)) self.wearBtn:addClickListener(function() - -- local ids = {} - -- for i = 1, GConst.EquipConst.PART_TYPE.EQUIP_6 do - -- ids[i] = DataManager.EquipData:getPartEquipUid(self.slotId, i) - -- end - -- ids[self.equipPart] = self.entity:getUid() - ModuleManager.EquipManager:onEquipWearReq(self.slotId, {self.entity:getUid()}) + ModuleManager.EquipManager:onEquipWearReq(self.slotId, {self.equipEntity:getUid()}) end) end -function EquipListCell:refresh(entity, slotId, equipPart) - self.entity = entity +function EquipListCell:refresh(equipEntity, slotId, equipPart) + self.equipEntity = equipEntity self.slotId = slotId self.equipPart = equipPart - self.nameTx:setText(entity:getName()) - self.powerTx:setText(entity:getPower()) - self.equipCell:refresh(entity, slotId) + self.nameTx:setText(equipEntity:getName()) + self.powerTx:setText(equipEntity:getPower()) + self.equipCell:refresh(equipEntity, slotId) + + local useHero = DataManager.EquipData:getEquipUseHero(equipEntity:getUid()) + if useHero then + local heroEntity = DataManager.HeroData:getHeroById(useHero) + self.wearBtnIcon:setActive(true) + self.wearBtnIcon:setSprite(GConst.ATLAS_PATH.ICON_HERO, heroEntity:getIcon()) + else + self.wearBtnIcon:setActive(false) + end end return EquipListCell \ No newline at end of file diff --git a/lua/app/ui/equip/equip_growth_ui.lua b/lua/app/ui/equip/equip_growth_ui.lua new file mode 100644 index 00000000..10126bfd --- /dev/null +++ b/lua/app/ui/equip/equip_growth_ui.lua @@ -0,0 +1,242 @@ +local EquipGrowthUI = class("EquipGrowthUI", BaseUI) + +local EQUIP_LIST_CELL = "app/ui/equip/cell/equip_list_cell" + +function EquipGrowthUI:isFullScreen() + return false +end + +function EquipGrowthUI:getPrefabPath() + return "assets/prefabs/ui/equip/equip_growth_ui.prefab" +end + +function EquipGrowthUI:onPressBackspace() + self:closeUI() +end + +function EquipGrowthUI:ctor(parmas) + self.slotId = parmas.slotId + self.equipPart = 1 + self.page = 1 +end + +function EquipGrowthUI:onLoadRootComplete() + local uiMap = self.root:genAllChildren() + + uiMap["equip_growth_ui.mask"]:addClickListener(function() + self:closeUI() + end) + uiMap["equip_growth_ui.bg.close_btn"]:addClickListener(function() + self:closeUI() + end) + uiMap["equip_growth_ui.bg.page_info_1.attr_bg.bg.info_btn"]:addClickListener(function() + self:closeUI() + end) + -- uiMap["equip_growth_ui.bg.close_btn"]:addClickListener(function() + -- self:closeUI() + -- end) + + self.nameTx = uiMap["equip_growth_ui.bg.name_tx"] + self.equipCell = uiMap["equip_growth_ui.bg.equip_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.EQUIP_CELL) + + -- 强化 + self.upCurrLvTx = uiMap["equip_growth_ui.bg.page_info_1.curr_lv_tx"] + self.upNextLvTx = uiMap["equip_growth_ui.bg.page_info_1.next_lv_tx"] + self.upDescTx = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.desc_tx"] + self.upAttrNameTx = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.attr_name_tx"] + self.upAttrCurrTx = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.attr_curr_tx"] + self.upAttrNextTx = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.attr_next_tx"] + -- self.upInfoBtn = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.bg.info_btn"] + self.upDescTx1 = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.bg.desc_tx"] + self.upCostBg = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.cost_bg"] + self.upCostIcon = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.cost_bg.cost_icon"] + self.upCostTx = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.cost_bg.cost_tx"] + self.upUpBtn = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.up_btn"] + -- self.upUpBtnTx = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.up_btn.text"] + self.upAutoBtn = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.auto_btn"] + -- self.upAutoBtnTx = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.auto_btn.text"] + self.upMaxDescTx = uiMap["equip_growth_ui.bg.page_info_1.attr_bg.max_desc_tx"] + self.upUpBtn:addClickListener(function() + self:closeUI() + end) + self.upAutoBtn:addClickListener(function() + self:closeUI() + end) + uiMap["equip_growth_ui.bg.page_info_1.attr_bg.up_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_3)) + uiMap["equip_growth_ui.bg.page_info_1.attr_bg.auto_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_23)) + self.upMaxDescTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_27)) + + -- 精炼 + -- self.refineNowBg = uiMap["equip_growth_ui.bg.page_info_2.now_bg"] + self.refineCurrLvTx = uiMap["equip_growth_ui.bg.page_info_2.now_bg.lv_tx"] + -- self.refineNextBg = uiMap["equip_growth_ui.bg.page_info_2.next_bg"] + self.refineNextLvTx = uiMap["equip_growth_ui.bg.page_info_2.next_bg.lv_tx"] + self.refineDescTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.desc_tx"] + -- self.list = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list"] + -- self.attrExtraCell1 = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_1"] + -- self.point = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_1.point"] + -- self.attrNameTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_1.attr_name_tx"] + -- self.attrCurrTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_1.attr_curr_tx"] + -- self.imgArrow = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_1.img_arrow"] + -- self.attrNextTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_1.attr_next_tx"] + -- self.attrExtraCell2 = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_2"] + -- self.point = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_2.point"] + -- self.attrNameTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_2.attr_name_tx"] + -- self.attrCurrTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_2.attr_curr_tx"] + -- self.imgArrow = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_2.img_arrow"] + -- self.attrNextTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_2.attr_next_tx"] + -- self.attrExtraCell3 = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_3"] + -- self.point = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_3.point"] + -- self.attrNameTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_3.attr_name_tx"] + -- self.attrCurrTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_3.attr_curr_tx"] + -- self.imgArrow = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_3.img_arrow"] + -- self.attrNextTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_3.attr_next_tx"] + -- self.attrExtraCell4 = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_4"] + -- self.point = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_4.point"] + -- self.attrNameTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_4.attr_name_tx"] + -- self.attrCurrTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_4.attr_curr_tx"] + -- self.imgArrow = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_4.img_arrow"] + -- self.attrNextTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_4.attr_next_tx"] + -- self.bg = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.bg"] + self.refineInfoBtn = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.bg.info_btn"] + self.refineDescTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.bg.desc_tx"] + self.refineCostBg = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.cost_bg"] + self.refineCostIcon = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.cost_bg.cost_icon"] + self.refineCostTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.cost_bg.cost_tx"] + self.refineUpBtn = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.up_btn"] + self.refineUpBtnTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.up_btn.text"] + self.refineRateTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.rate_tx"] + self.refineDescTx1 = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.desc_tx_1"] + self.refineResolveBtn = uiMap["equip_growth_ui.bg.resolve_btn"] + self.refineResolveBtnTx = uiMap["equip_growth_ui.bg.resolve_btn.text"] + + self.refineAttrCells = {} + self.refineAttrNameTxs = {} + self.refineAttrCurrTxs = {} + self.refineAttrNextTxs = {} + for i = 1, 4 do + self.refineAttrCells[i] = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_" .. i] + self.refineAttrNameTxs[i] = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_" .. i .. ".attr_name_tx"] + self.refineAttrCurrTxs[i] = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_" .. i .. ".attr_curr_tx"] + self.refineAttrNextTxs[i] = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.list.attr_extra_cell_" .. i .. ".attr_next_tx"] + end + + self.equipCells = {} + for i = 1, 6 do + self.equipCells[i] = uiMap["equip_growth_ui.bg.equip_list.equip_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.EQUIP_CELL) + self.equipCells[i]:addClickListener(function() + if self.page == i then + return + end + self.page = i + self:onRefresh() + -- ModuleManager.EquipManager:showEquipListUI(self.heroEntity, i) + end) + end + + self.btnTxs = {I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4), I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_16)} + self.pageInfos = {} + self.pageBtns = {} + self.pageBtnTxs = {} + for i = 1, 2 do + self.pageInfos[i] = uiMap["equip_growth_ui.bg.page_info_" .. i] + self.pageBtns[i] = uiMap["equip_growth_ui.bg.page_btn_" .. i] + self.pageBtnTxs[i] = uiMap["equip_growth_ui.bg.page_btn_" .. i .. ".text"] + self.pageBtns[i] :addClickListener(function() + if not self:getIsOpen(i) or self.equipPart == i then + return + end + self.equipPart = i + self:onRefresh() + end) + end + + uiMap["equip_growth_ui.bg.title_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.BAG_DESC_1)) + + -- self:bind(DataManager.HeroData, "isDirty", function() + -- self:closeUI() + -- end) +end + +function EquipGrowthUI:onRefresh() + self:initList() + self:refreshPageBtn() + self:refreshPageInfo() + self:refreshEquipCell() +end + +function EquipGrowthUI:refreshEquipCell() + local eid = DataManager.EquipData:getPartEquipUid(self.slotId, self.equipPart) + if eid and eid > 0 then + local equipEntity = DataManager.EquipData:getEquipByUid(eid) + self.equipCell:refresh(equipEntity, self.equipPart) + else + self.equipCell:refreshEmpty(self.equipPart) + end +end + +function EquipGrowthUI:refreshPageBtn() + for i = 1, 2 do + if self.page == i then + self.pageInfos[i]:setActive(true) + self.pageBtns[i]:setSprite(GConst.ATLAS_PATH.COMMON, "common_tab_1") + self.pageBtnTxs[i]:setText(self.btnTxs[i]) + else + self.pageInfos[i]:setActive(false) + self.pageBtns[i]:setSprite(GConst.ATLAS_PATH.COMMON, "common_tab_2") + self.pageBtnTxs[i]:setText("" .. self.btnTxs[i] .. "") + end + end +end + +function EquipGrowthUI:refreshPageInfo() + if self.page == 1 then + self:refreshPageUp() + else + self:refreshPageRefine() + end +end + +--@region 强化 +function EquipGrowthUI:refreshPageUp() + local lv = DataManager.EquipData:getPartLv(self.slotId, self.equipPart) + local eid = DataManager.EquipData:getPartEquipUid(self.slotId, self.equipPart) + local equipEntity = DataManager.EquipData:getEquipByUid(eid) + -- if eid and eid > 0 then + -- local equipEntity = DataManager.EquipData:getEquipByUid(eid) + -- self.equipCell:refresh(equipEntity, self.equipPart) + -- else + -- self.equipCell:refreshEmpty(self.equipPart) + -- end + + self.upCurrLvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, lv)) + self.upNextLvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, lv + 1)) + self.upDescTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_14)) + self.upAttrNameTx:setText(equipEntity:getName()) + + self.upAttrCurrTx:setText(equipEntity:getBaseAttrWithLv(lv)) + self.upAttrNextTx:setText(equipEntity:getBaseAttrWithLv(lv + 1)) + self.upDescTx1:setText("adasd") + self.upCostTx:setText("1323") +end +--@endregion + +--@region 精炼 +function EquipGrowthUI:refreshPageRefine() + + + -- self.refineInfoBtn = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.bg.info_btn"] + -- self.refineDescTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.bg.desc_tx"] + -- self.refineCostBg = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.cost_bg"] + -- self.refineCostIcon = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.cost_bg.cost_icon"] + -- self.refineCostTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.cost_bg.cost_tx"] + -- self.refineUpBtn = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.up_btn"] + -- self.refineUpBtnTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.up_btn.text"] + -- self.refineRateTx = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.rate_tx"] + -- self.refineDescTx1 = uiMap["equip_growth_ui.bg.page_info_2.attr_bg.desc_tx_1"] + -- self.refineResolveBtn = uiMap["equip_growth_ui.bg.resolve_btn"] + -- self.refineResolveBtnTx = uiMap["equip_growth_ui.bg.resolve_btn.text"] +end +--@endregion + +return EquipGrowthUI \ No newline at end of file diff --git a/lua/app/ui/equip/equip_growth_ui.lua.meta b/lua/app/ui/equip/equip_growth_ui.lua.meta new file mode 100644 index 00000000..044c44ad --- /dev/null +++ b/lua/app/ui/equip/equip_growth_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ae6fbe701800743b0923a4e9dcaa8dc3 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/equip/equip_info_ui.lua b/lua/app/ui/equip/equip_info_ui.lua new file mode 100644 index 00000000..58db88bc --- /dev/null +++ b/lua/app/ui/equip/equip_info_ui.lua @@ -0,0 +1,194 @@ +local EquipInfoUI = class("EquipInfoUI", BaseUI) + +function EquipInfoUI:isFullScreen() + return false +end + +function EquipInfoUI:getPrefabPath() + return "assets/prefabs/ui/equip/equip_info_ui.prefab" +end + +function EquipInfoUI:onPressBackspace() + self:closeUI() +end + +function EquipInfoUI:ctor(params) + self.showType = GConst.EquipConst.INFO_SHOW_TYPE.BASE_ATTR + if params.showType then + self.showType = params.showType + end + self.id = params and params.id --配置id + self.uid = params and params.uid --唯一id + self.slotId = params and params.slotId --上阵槽位 +end + +function EquipInfoUI:onLoadRootComplete() + local uiMap = self.root:genAllChildren() + uiMap["equip_info_ui.mask"]:addClickListener(function () + self:closeUI() + end) + uiMap["equip_info_ui.bg.close_btn"]:addClickListener(function() + self:closeUI() + end) + + self.equipCell = uiMap["equip_info_ui.bg.equip_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.EQUIP_CELL) + self.nameTx = uiMap["equip_info_ui.bg.name_tx"] + self.partTx = uiMap["equip_info_ui.bg.part_desc_tx.part_tx"] + self.powerTx = uiMap["equip_info_ui.bg.power_desc_tx.power_tx"] + self.attrNameTx = uiMap["equip_info_ui.bg.attr_base.attr_name_tx"] + self.attrValueTx = uiMap["equip_info_ui.bg.attr_base.attr_value_tx"] + self.attrValueAddTx = uiMap["equip_info_ui.bg.attr_base.attr_value_add_tx"] + self.attrExtraCells = {} + for i = 1, 4 do + local attrExtraCell = uiMap["equip_info_ui.bg.attr_extra.list.attr_extra_cell_"..i] + local point = uiMap["equip_info_ui.bg.attr_extra.list.attr_extra_cell_"..i..".point"] + local attrNameTx = uiMap["equip_info_ui.bg.attr_extra.list.attr_extra_cell_"..i..".attr_name_tx"] + local attrValueTx = uiMap["equip_info_ui.bg.attr_extra.list.attr_extra_cell_"..i..".attr_value_tx"] + local attrValueAddTx = uiMap["equip_info_ui.bg.attr_extra.list.attr_extra_cell_"..i..".attr_value_add_tx"] + table.insert(self.attrExtraCells, {attrExtraCell = attrExtraCell, point = point, attrNameTx = attrNameTx, attrValueTx = attrValueTx, attrValueAddTx = attrValueAddTx}) + end + + self.replaceBtn = uiMap["equip_info_ui.bg.replace_btn"] + self.upBtn = uiMap["equip_info_ui.bg.up_btn"] + + uiMap["equip_info_ui.bg.title_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_8)) + uiMap["equip_info_ui.bg.part_desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_9)) + uiMap["equip_info_ui.bg.power_desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_10)) + uiMap["equip_info_ui.bg.replace_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_13)) + uiMap["equip_info_ui.bg.up_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_14)) + uiMap["equip_info_ui.bg.attr_base.desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_11)) + uiMap["equip_info_ui.bg.attr_extra.desc_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_12)) + + self.replaceBtn:addClickListener(function() + local list = DataManager.EquipData:getAllEquipsSort(self.part) + if table.nums(list) == 0 then + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_17)) + return + end + ModuleManager.EquipManager:showReplaceUI(self.slotId, self.part) + end) + self.upBtn:addClickListener(function() + ModuleManager.EquipManager:showGrowthUI(self.slotId, self.part) + end) + self:bind(DataManager.EquipData, "isDirty", function() + self:closeUI() + end) +end + +function EquipInfoUI:onRefresh() + if self.showType == GConst.EquipConst.INFO_SHOW_TYPE.PREVIEW then + self:refreshPreview() + elseif self.showType == GConst.EquipConst.INFO_SHOW_TYPE.BASE_ATTR then + self:refreshBaseAttr() + elseif self.showType == GConst.EquipConst.INFO_SHOW_TYPE.ALL_ATTR then + self:refreshAllAttr() + end + self:refreshInfo() +end + +function EquipInfoUI:refreshInfo() + self.nameTx:setText(self.entity:getNameQltColor()) + self.partTx:setText(self.entity:getPartName()) + self.powerTx:setText(self.entity:getPower()) + local attr = self.entity:getBaseAttr() + self.attrNameTx:setText(GFunc.getAttrName(GFunc.getAttrIdByName(attr.type))) + self.attrValueTx:setText(attr.num // GConst.DEFAULT_FACTOR) + + local txW = self.attrValueTx:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT_MESH_PRO).preferredWidth + self.attrValueTx:setSizeDeltaX(txW) + self.attrValueAddTx:setAnchoredPositionX(self.attrValueTx:getAnchoredPositionX() + txW + 5) +end + +function EquipInfoUI:refreshPreview() + if self.id == nil then + self:closeUI() + return + end + self.entity = DataManager.EquipData:createEquipEntity({cfg_id = self.id}) + self.equipCell:refreshById(self.id) + self.attrValueAddTx:setText(GConst.EMPTY_STRING) + for i,cell in ipairs(self.attrExtraCells) do + cell.attrExtraCell:setActive(true) + local extraAttr = DataManager.EquipData:getExtraAttr(self.id, i) + cell.attrNameTx:setText(GFunc.getAttrName(GFunc.getAttrIdByName(extraAttr.type))) + cell.attrValueTx:setText(GConst.EMPTY_STRING) + cell.attrValueAddTx:setActive(true) + -- cell.attrValueAddTx:setText("".. DataManager.EquipData:getFinalAttr(extraAttr.type, extraAttr.minnum) .. "-".. DataManager.EquipData:getFinalAttr(extraAttr.type, extraAttr.maxnum) .."") + end + self.replaceBtn:setActive(false) + self.upBtn:setActive(false) +end + +function EquipInfoUI:refreshBaseAttr() + self.entity = DataManager.EquipData:getEquipByUid(self.uid) + self.equipCell:refreshById(self.entity:getId()) + local attrs = self.entity:getExtraMap() + local count = #attrs + for i,cell in ipairs(self.attrExtraCells) do + if count >= i then + cell.attrExtraCell:setActive(true) + local extraAttr = attrs[i] + cell.attrNameTx:setText(GFunc.getAttrName(extraAttr.id)) + -- cell.attrValueTx:setText(DataManager.EquipData:getFinalAttr(GFunc.getAttrNameById(extraAttr.id), extraAttr.value)) + cell.attrValueTx:setAnchoredPositionX(-10) + cell.attrValueAddTx:setActive(false) + else + cell.attrExtraCell:setActive(false) + end + end + self.attrValueAddTx:setText(GConst.EMPTY_STRING) + self.replaceBtn:setActive(false) + self.upBtn:setActive(false) +end + +function EquipInfoUI:refreshAllAttr() + if self.uid == 0 then + self:closeUI() + return + end + self.entity = DataManager.EquipData:getEquipByUid(self.uid) + if self.entity == nil then + return + end + self.part = self.entity:getPart() + self.equipCell:refresh(self.entity, self.slotId) + self.level = DataManager.EquipData:getPartLv(self.slotId, self.part) + self.refine = DataManager.EquipData:getPartRefine(self.slotId, self.part) + local resonateLv, resonateNextLv, resonateAttrNum, resonateAttrNextNum = DataManager.EquipData:getResonateLevel(GConst.EquipConst.RESONATE_PAGE.LV_UP, self.slotId) + local baseValueAdd = DataManager.EquipData:getBaseAttrLvAdd(self.level) + resonateAttrNum + if baseValueAdd <= 0 then + self.attrValueAddTx:setText(GConst.EMPTY_STRING) + else + self.attrValueAddTx:setText("(+".. math.floor(baseValueAdd) ..")") + end + + local attrs = self.entity:getExtraMap() + local count = table.nums(attrs) + for i,cell in ipairs(self.attrExtraCells) do + if count >= i then + cell.attrExtraCell:setActive(true) + local extraAttr = attrs[i] + cell.attrNameTx:setText(GFunc.getAttrName(extraAttr.id)) + -- cell.attrValueTx:setText(DataManager.EquipData:getFinalAttr(GFunc.getAttrNameById(extraAttr.id), extraAttr.value)) + local attrAdd = DataManager.EquipData:getRefineAttrAdd(self.refine, extraAttr.id) + local anchorX = -3 + if attrAdd.num <= 0 then + cell.attrValueAddTx:setActive(false) + else + cell.attrValueAddTx:setActive(true) + -- cell.attrValueAddTx:setText("(+".. DataManager.EquipData:getFinalAttr(attrAdd.type, attrAdd.num) ..")") + local meshProCompNext = cell.attrValueAddTx:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT_MESH_PRO) + local nowTipsNextX = meshProCompNext.preferredWidth + cell.attrValueAddTx:setSizeDeltaX(nowTipsNextX) + anchorX = anchorX - nowTipsNextX - 15 + end + cell.attrValueTx:setAnchoredPositionX(anchorX) + else + cell.attrExtraCell:setActive(false) + end + end + self.replaceBtn:setActive(true) + self.upBtn:setActive(true) +end + +return EquipInfoUI \ No newline at end of file diff --git a/lua/app/ui/equip/equip_info_ui.lua.meta b/lua/app/ui/equip/equip_info_ui.lua.meta new file mode 100644 index 00000000..79485db7 --- /dev/null +++ b/lua/app/ui/equip/equip_info_ui.lua.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1bfd48c6acaae47478378149c756381e +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3} diff --git a/lua/app/ui/equip/equip_list_ui.lua b/lua/app/ui/equip/equip_list_ui.lua index 4ac6e759..512714f8 100644 --- a/lua/app/ui/equip/equip_list_ui.lua +++ b/lua/app/ui/equip/equip_list_ui.lua @@ -64,7 +64,7 @@ function EquipListUI:refreshEquipCell() end function EquipListUI:initList() - self.equipList = DataManager.EquipData:getEquipListByPart(self.equipPart) + self.equipList = DataManager.EquipData:getAllEquipsSort(self.equipPart, nil, nil, self.heroEntity:getCfgId()) end function EquipListUI:refreshScrollrect() diff --git a/lua/app/ui/hero/equip_info_comp.lua b/lua/app/ui/hero/equip_info_comp.lua index ed039adb..bbeff7e7 100644 --- a/lua/app/ui/hero/equip_info_comp.lua +++ b/lua/app/ui/hero/equip_info_comp.lua @@ -20,9 +20,9 @@ function EquipInfoComp:init() self.hpNameTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_2)) self.atkNameTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_3)) - self.emptyTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_29)) - self.upBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_32)) - self.autoWaerBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_31)) + self.emptyTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_7)) + self.upBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_3)) + self.autoWaerBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_2)) self.equipCells = {} self.suitTxs = {} @@ -30,9 +30,24 @@ function EquipInfoComp:init() self.suitTxs[i] = uiMap["equip_info.equip_node.up.suit_tx_" .. i] self.equipCells[i] = uiMap["equip_info.equip_node.equip_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.EQUIP_CELL) self.equipCells[i]:addClickListener(function() - ModuleManager.EquipManager:showEquipListUI(self.heroEntity, i) + local eid = DataManager.EquipData:getPartEquipUid(self.heroEntity:getMatchType(), i) + if eid and eid > 0 then + -- local equipEntity = DataManager.EquipData:getEquipByUid(eid) + -- self.equipCells[part]:refresh(equipEntity, part) + -- EquipManager:showEquipGrowthUI(slotId) + local parmas = {} + parmas.slotId = self.heroEntity:getMatchType() + parmas.part = i + parmas.uid = eid + parmas.showType = GConst.EquipConst.INFO_SHOW_TYPE.ALL_ATTR + ModuleManager.EquipManager:showEquipInfoUI(parmas) + else + ModuleManager.EquipManager:showEquipListUI(self.heroEntity, i) + end end) end + self.descTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_4)) + self.descTx1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_5)) self.autoWaerBtn:addClickListener(function() local soltId = self.heroEntity:getMatchType() @@ -47,7 +62,7 @@ function EquipInfoComp:init() end) self.upBtn:addClickListener(function() -- UIManager:showUI("app/ui/hero/hero_attr_ui", {heroEntity = self.heroEntity}) - GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_32)) + GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_3)) end) self.attrBtn:addClickListener(function() UIManager:showUI("app/ui/hero/hero_attr_ui", {heroEntity = self.heroEntity}) @@ -66,6 +81,7 @@ end function EquipInfoComp:refresh() self:refreshAttr() self:refreshEquip() + self:refreshEquipSuit() end function EquipInfoComp:refreshAttr() @@ -119,4 +135,16 @@ function EquipInfoComp:refreshEquip() end end +function EquipInfoComp:refreshEquipSuit() + local suitLvs = {1, 2, 3} + local suitDescs = { + I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_LV_1, suitLvs[1]), + I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_LV_2, suitLvs[2]), + I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_LV_3, suitLvs[3]) + } + for i = 1, 3 do + self.suitTxs[i]:setText(suitDescs[i]) + end +end + return EquipInfoComp \ No newline at end of file diff --git a/lua/app/ui/ui_manager.lua b/lua/app/ui/ui_manager.lua index a2cfe2a0..86ea63d7 100644 --- a/lua/app/ui/ui_manager.lua +++ b/lua/app/ui/ui_manager.lua @@ -24,6 +24,8 @@ UIManager.UI_PATH = { HERO_DETAIL_UI = "app/ui/hero/hero_detail_ui", ARENA_MATCH_UI = "app/ui/arena/arena_match_ui", BATTLE_PVP_UI = "app/ui/battle/battle_ui_pvp", + + EQUIP_INFO_UI = "app/ui/equip/equip_info_ui", } -- 动画类型 diff --git a/lua/app/userdata/equip/equip_data.lua b/lua/app/userdata/equip/equip_data.lua index 0fcb4026..bc3c9f1f 100644 --- a/lua/app/userdata/equip/equip_data.lua +++ b/lua/app/userdata/equip/equip_data.lua @@ -29,6 +29,10 @@ function EquipData:init(data) self:addEquip(equip) end end + -- int64 equip_uid = 1; + -- int32 level = 2; + -- int32 refine = 3; + -- int64 refine_fail = 4; self.slots = data.slots or {} end @@ -111,6 +115,39 @@ function EquipData:getName(id) return I18N:getText("equip", id, "name") end +--附加属性 +function EquipData:getExtraAttr(id, index) + return self:getConfig(id)["extra_attr_" .. index] +end + +--精炼额外数值总和 +function EquipData:getRefineAttrAdd(refine, attrId) + local attrName = GFunc.getAttrNameById(attrId) + local attrAll = {type = attrName, num = 0} + for i = 1, refine do + if i <= refine then + local attr = self:getRefineAttr(i, attrName) + if attr then + attrAll.num = attrAll.num + attr.num + end + end + end + return attrAll +end + +--对应精炼等级的额外数值 +function EquipData:getRefineAttr(refine, attrName) + local cfg = self:getRefineConfig(refine) + if attrName == "attr_atk_private" then + return cfg.extra_attr_add_1 + elseif attrName == "def_dec_private" then + return cfg.extra_attr_add_2 + elseif attrName == "crit_private" then + return cfg.extra_attr_add_3 + elseif attrName == "crit_time_private" then + return cfg.extra_attr_add_4 + end +end --@endregion --@region 装备基础 @@ -129,19 +166,61 @@ function EquipData:createEquipEntity(equip) return EquipEntity:create(equip) end -function EquipData:getAllEquips() - return self.allEquips -end - -function EquipData:getEquipListByPart(part) +function EquipData:getAllEquips(part, qlt, star, useHeroId) local list = {} for _, v in pairs(self.allEquips) do - if v:getPart() == part then + local matchAll = true -- 默认全部匹配 + + -- 品质+星级筛选(必须同时满足) + if qlt ~= nil then + if qlt ~= 0 then + -- 先判断品质,再判断星级 + if not (v:getQlt() <= qlt and (v:getQlt() ~= qlt or v:getStar() <= star)) then + matchAll = false + end + end + end + + -- 部位筛选 + if matchAll and part ~= nil and part ~= 0 then + if v:getPart() ~= part then + matchAll = false + end + end + + -- 使用状态筛选 + if matchAll and useHeroId ~= nil then + local heroId = self:getEquipUseHero(v:getUid()) + if heroId and heroId == useHeroId then + matchAll = false + end + end + + -- 只有全部条件满足才加入 + if matchAll then table.insert(list, v) end end - table.sort(list, function (a, b) - return a:getPower() > b:getPower() + + return list +end + +-- 获取所有装备数据 +function EquipData:getAllEquipsSort(part, qlt, star, useHeroId) + local list = self:getAllEquips(part, qlt, star, useHeroId) + return self:sortEquipsList(list) +end + +--排序 +function EquipData:sortEquipsList(list) + for _, equip in ipairs(list) do + equip._sort = equip:getPower() * 10000000 + (10000000 - equip:getUid()) + end + -- 先品质后等级排序 + table.sort(list, function(equip1, equip2) + -- 权重相同的情况下,再单独比较评分(从高到低) + -- 评分也相同,则按UID排序 + return equip1._sort > equip2._sort end) return list end @@ -175,35 +254,58 @@ function EquipData:onWearSuccess(soltId, uids) end function EquipData:getEquipMaxScore(soltId, part) - local equip = nil - local maxScore = 0 - local useUid = self:getPartEquipUid(soltId, part) - if useUid ~= 0 then - local useEquip = self:getEquipByUid(useUid) - maxScore = useEquip:getPower() - end - for i, v in pairs(self.allEquips) do - if v:getPart() == part then - local isEquip = false - for k2, info in ipairs(self.slots) do - if info.parts[part] and info.parts[part].equip_uid == v:getUid() then - isEquip = true - break - end - end - if not isEquip then - local score = v:getPower() - if score > maxScore then - equip = v - maxScore = score - end - end - end - end - return equip + local equip = nil + local maxScore = 0 + local useUid = self:getPartEquipUid(soltId, part) + if useUid ~= 0 then + local useEquip = self:getEquipByUid(useUid) + maxScore = useEquip:getPower() + end + for i, v in pairs(self.allEquips) do + if v:getPart() == part then + local isEquip = false + for k2, info in ipairs(self.slots) do + if info.parts[part] and info.parts[part].equip_uid == v:getUid() then + isEquip = true + break + end + end + if not isEquip then + local score = v:getPower() + if score > maxScore then + equip = v + maxScore = score + end + end + end + end + return equip end --@endregion +--@region 装备强化 +-----获取强化等级 +function EquipData:getPartLv(slotId, part) + local parts = self.slots[slotId].parts + if parts then + local partInfo = parts[part] + if partInfo then + return partInfo.level + end + end + return 0 +end + +--基础属性额外强化值 +function EquipData:getBaseAttrLvAdd(lv) + local baseAttrAdd = 0 + for i = 1, lv do + baseAttrAdd = baseAttrAdd + self:getLevelConfig(i).base_attr_add.num + end + return baseAttrAdd +end + +--@endregion --@region 六个部位装备的强化与精炼 --获取对应位置的装备Id function EquipData:getPartEquipUid(slotId, part) @@ -220,19 +322,6 @@ function EquipData:getPartEquipUid(slotId, part) end return 0 end - ------获取强化等级 -function EquipData:getPartLevel(slotId, part) - local parts = self.slots[slotId].parts - if parts then - local partInfo = parts[part] - if partInfo then - return partInfo.level - end - end - return 0 -end - --获取精炼等级 function EquipData:getPartRefine(slotId, part) local parts = self.slots[slotId].parts @@ -260,10 +349,32 @@ function EquipData:getPartRefineFailPro(slotId, part) return 0 end +function EquipData:getResonateList(type) + if self.listResonate == nil then + self.listResonate = {} + local list = self:getResonateConfig() + for i,v in pairs(list) do + if self.listResonate[v.type] == nil then + self.listResonate[v.type] = {} + end + v.id = i + table.insert(self.listResonate[v.type], v) + end + for _,l in ipairs(self.listResonate) do + table.sort(l, function (a, b) + return a.id < b.id + end) + end + end + if self.listResonate[type] then + return self.listResonate[type] + end +end + function EquipData:getSlotAllAttr(slotId) local attr = {} for part = 1, 6 do - local level = self:getPartLevel(slotId, part) + local level = self:getPartLv(slotId, part) local refine = self:getPartRefine(slotId, part) for i = 1, level do local cfg = self:getLevelConfig(i) @@ -353,10 +464,10 @@ function EquipData:getResonateLevelValue(type, value, value2) if type == 1 or type == 3 then if v.parameter[1] <= value then lv = i - attrNum = attrNum + v.attr.num + attrNum = attrNum + v.attr[1].num else nextLv = v.parameter - attrNextNum = attrNum + v.attr.num + attrNextNum = attrNum + v.attr[1].num break end elseif type == 2 then @@ -368,10 +479,10 @@ function EquipData:getResonateLevelValue(type, value, value2) end if isTrue then lv = i - attrNum = attrNum + v.attr.num + attrNum = attrNum + v.attr[1].num else nextLv = v.parameter - attrNextNum = attrNum + v.attr.num + attrNextNum = attrNum + v.attr[1].num break end end @@ -383,7 +494,7 @@ function EquipData:getResonateLevel(type, slotId) if type == 1 then local minLv = 999 for i = 1, 6 do - local level = self:getPartLevel(slotId, i) + local level = self:getPartLv(slotId, i) if level < minLv then minLv = level end @@ -444,13 +555,13 @@ function EquipData:getRefineNeedLevel(refine) end end -function EquipData:getEquipUseForce(uid) +function EquipData:getEquipUseHero(uid) local equip = self:getEquipByUid(uid) - local mainTeam = DataManager.ForceData:getTeamList(ModuleManager.BattleManager.BATTLE_TYPE.STAGE) + local formation = DataManager.FormationData:getStageFormation() local part = equip:getPart() for i,info in ipairs(self.slots) do if info.parts[part] and info.parts[part].equip_uid and info.parts[part].equip_uid == uid then - return mainTeam[i] + return formation[i] end end end diff --git a/lua/app/userdata/equip/equip_entity.lua b/lua/app/userdata/equip/equip_entity.lua index 36b93096..e64af839 100644 --- a/lua/app/userdata/equip/equip_entity.lua +++ b/lua/app/userdata/equip/equip_entity.lua @@ -61,18 +61,18 @@ function EquipEntity:getName() return DataManager.EquipData:getName(self:getId()) end --- function EquipEntity:getNameQltColor() --- return string.format("%s", GFunc.getQltColor(self:getQlt()), self:getName()) --- end +function EquipEntity:getNameQltColor() + return string.format("%s", GFunc.getQltColor(self:getQlt()), self:getName()) +end --- function EquipEntity:getPartName() --- return I18N:getGlobalText(GConst.EquipConst.EQUIP_PART_NAME[self:getPart()]) --- end +function EquipEntity:getPartName() + return I18N:getGlobalText(GConst.EquipConst.EQUIP_PART_NAME[self:getPart()]) +end --@endregion --@region 属性 function EquipEntity:initBaseAttr() - self.baseAttrs = DataManager.EquipData:getBaseAttr(self:getId()) + self.baseAttr = self.config.base_attr end function EquipEntity:setExtraAttr(attr) @@ -90,8 +90,15 @@ function EquipEntity:setExtraAttr(attr) self.allAttrs = nil end -function EquipEntity:getBaseAttrs() - return self.baseAttrs +function EquipEntity:getBaseAttr() + return self.baseAttr +end + +function EquipEntity:getBaseAttrWithLv(lv) + local attr = {} + attr.type = self.baseAttr.type + attr.num = self.baseAttr.num + DataManager.EquipData:getBaseAttrLvAdd(lv) + return attr end function EquipEntity:getExtraMap() @@ -106,10 +113,10 @@ function EquipEntity:getAllAttr() if self.allAttrs == nil then self.allAttrs = {} -- 基础 - -- for attrName, attrNum in pairs(self:getBaseAttrs()) do + -- for attrName, attrNum in pairs(self:getBaseAttr()) do -- self.allAttrs[attrName] = (self.allAttrs[attrName] or 0) + attrNum -- end - self.allAttrs[self.baseAttrs.type] = (self.allAttrs[self.baseAttrs.type] or 0) + self.baseAttrs.num + self.allAttrs[self.baseAttr.type] = (self.allAttrs[self.baseAttr.type] or 0) + self.baseAttr.num -- 额外属性 for attrName, attrNum in pairs(self:getExtraAttrs()) do self.allAttrs[attrName] = (self.allAttrs[attrName] or 0) + attrNum @@ -169,8 +176,17 @@ end --@endregion --@region 数据 -function EquipEntity:getPartLevel(slotId) - return DataManager.EquipData:getPartLevel(slotId, self:getPart()) +function EquipEntity:getPartLv(slotId) + return DataManager.EquipData:getPartLv(slotId, self:getPart()) +end + +function EquipEntity:getMaxLv(slotId) + return #DataManager.EquipData:getLevelConfig() +end + +function EquipEntity:getIsLvMax() + local lv = self:getPartLv() + return lv >= self:getMaxLv() end --@endregion return EquipEntity \ No newline at end of file