slot0 = class("ShipRemouldLayer", import("..base.BaseUI")) slot1 = 5 slot2 = 6 slot3 = 1 slot4 = 9 slot5 = 55 slot6 = Vector2(-5, 25) function slot0.getUIName(slot0) return "ShipRemouldUI" end function slot0.init(slot0) slot0.container = slot0:findTF("main/bg/container") slot0.gridContainer = slot0:findTF("grids", slot0.container) slot0.gridTF = slot0:findTF("grid_tpl", slot0.gridContainer) slot0.height = slot0.gridTF.sizeDelta.y + uv0 slot0.width = slot0.gridTF.sizeDelta.x + uv1 slot0.startPos = Vector2(-1 * (uv2 / 2 - 0.5) * slot0.width + uv3.x, (uv4 / 2 - 0.5) * slot0.height + uv3.y) slot0.containerWidth = uv2 * slot0.gridTF.sizeDelta.x + (uv2 - 1) * uv1 slot0.containerHeight = uv4 * slot0.gridTF.sizeDelta.y + (uv4 - 1) * uv0 slot0.container.sizeDelta = Vector2(slot0.containerWidth, slot0.containerHeight) setActive(slot0.gridTF, false) slot0.infoPanel = slot0:findTF("main/info_panel") slot0.itemContainer = slot0:findTF("usages/items", slot0.infoPanel) slot0.itemTF = slot0:findTF("itemTF", slot0.itemContainer) slot0.infoName = slot0:findTF("name_container/Text", slot0.infoPanel):GetComponent(typeof(Text)) slot0.attrContainer = slot0:findTF("align/attrs", slot0.infoPanel) slot0.attrTpl = slot0:getTpl("attr", slot0.attrContainer) slot0.attrTplD = slot0:getTpl("attrd", slot0.attrContainer) slot0.confirmBtn = slot0:findTF("confirm_btn/activity", slot0.infoPanel) slot0.inactiveBtn = slot0:findTF("confirm_btn/inactivity", slot0.infoPanel) slot0.completedteBtn = slot0:findTF("confirm_btn/complete", slot0.infoPanel) slot0.shipTF = slot0:findTF("main/info_panel/usages/shipTF") slot0.skillDesc = slot0:findTF("align/skill_desc/text", slot0.infoPanel) slot0.shipContainer = slot0:findTF("char_container", slot0.infoPanel) slot0.lineTpl = slot0:findTF("resources/line") slot0.lineContainer = slot0:findTF("grids/lines", slot0.container) slot0.helpBtn = GameObject.Find("/OverlayCamera/Overlay/UIMain/common/help_btn") if not IsNil(slot0.helpBtn) then setActive(slot0.helpBtn, false) end slot0.tooltip = slot0:findTF("tooltip") setActive(slot0.tooltip, false) end function slot0.setPlayer(slot0, slot1) slot0.playerVO = slot1 if slot0.curTranformId then slot0:updateInfo(slot0.curTranformId) end end function slot0.setItems(slot0, slot1) slot0.itemsVO = slot1 end function slot0.getItemCount(slot0, slot1) return (slot0.itemsVO[slot1] or Item.New({ count = 0, id = slot1 })).count end function slot0.setShipVO(slot0, slot1) slot0.shipVO = slot1 slot0.shipGroupId = math.floor(slot0.shipVO:getGroupId()) slot0.transforms = slot0.shipVO.transforms end function slot0.getShipTranformData(slot0) return pg.ship_data_trans[slot0.shipGroupId].transform_list end function slot0.didEnter(slot0) slot0:initTranformInfo() slot0:initShipModel() end function slot0.initTranformInfo(slot0) slot0.transformIds = {} slot0.grids = {} function slot1(slot0, slot1) for slot5, slot6 in ipairs(slot0) do if slot6[1] == slot1 then return true, slot5 end end return false end slot2 = slot0:getShipTranformData() for slot6 = 1, uv0 do for slot12 = 1, uv1 do slot13, slot14 = slot1(slot2[slot6], slot12) if slot13 then slot16 = cloneTplTo(slot0.gridTF, slot0.gridContainer) go(slot16).name = slot6 .. "/" .. slot12 slot16.localPosition = Vector2(slot0.startPos.x + slot0.width * (slot6 - 1), slot0.startPos.y - slot0.height * (slot12 - 1)) onToggle(slot0, slot16, function (slot0) if slot0 and uv0.curTranformId ~= uv1 then uv0:updateInfo(uv1) end end, SFX_PANEL) end end slot0.transformIds[slot6] = { [slot12] = slot2[slot6][slot14][2] } slot0.grids[slot6] = { [slot12] = slot16 } end slot0.lineTFs = {} for slot6, slot7 in pairs(slot0.transformIds) do for slot11, slot12 in pairs(slot7) do slot0:updateGridTF(slot12) slot0:initLines(slot12) end end slot0:updateLines() if slot0.contextData.transformId then triggerToggle(slot0:getGridById(slot0.contextData.transformId), true) end end function slot0.initLines(slot0, slot1) slot2 = 270 slot3 = 75 slot0.lineTFs[slot1] = {} slot4, slot5 = slot0:getPositionById(slot1) slot6 = slot0:getGridById(slot1) slot7 = slot6.sizeDelta slot8 = slot6.localPosition slot9 = slot0.lineTpl for slot14, slot15 in pairs(pg.transform_data_template[slot1].condition_id) do slot16, slot17 = slot0:getPositionById(slot15) cloneTplTo(slot9, slot0.lineContainer, slot4 .. "-" .. slot5 .. "-v").eulerAngles = Vector3(0, 0, Vector2(slot16 - slot4, slot17 - slot5).y < 0 and 90 or -90) cloneTplTo(slot9, slot0.lineContainer, slot4 .. "-" .. slot5 .. "-h").eulerAngles = Vector3(0, 0, slot18.x < 0 and 180 or 0) if math.abs(slot18.y) > 0 and math.abs(slot18.x) > 0 then slot20.localPosition = Vector2(slot8.x, slot8.y + (slot5 - slot17) * slot2, 0) slot19.localPosition = Vector2(slot8.x, slot18.y < 0 and slot8.y + slot7.y / 2 or slot8.y - slot7.y / 2) slot20.sizeDelta = Vector2(math.abs(slot18.x) * slot2, slot20.sizeDelta.y) slot19.sizeDelta = Vector2(math.abs(slot18.y) * slot2 - slot7.y / 2, slot19.sizeDelta.y) slot19:Find("corner").localScale = Vector3(1, slot18.x < 0 and slot21 < 0 and -1 or 1, 1) else slot20.sizeDelta = Vector2(math.abs(slot18.x) * slot2, slot20.sizeDelta.y) slot19.sizeDelta = Vector2(math.abs(slot18.y) * slot3, slot19.sizeDelta.y) slot20.localPosition = slot8 slot19.localPosition = Vector3(slot8.x, slot18.y < 0 and slot8.y + slot7.y / 2 or slot8.y - slot7.y / 2, 0) end setActive(slot19:Find("arr"), slot23 or math.abs(slot18.y) > 0) setActive(slot19:Find("corner"), slot23) setActive(slot20:Find("arr"), false) setActive(slot20:Find("corner"), false) table.insert(slot0.lineTFs[slot1], { id = slot15, hrz = slot20, vec = slot19 }) end end function slot0.updateLines(slot0) for slot4, slot5 in pairs(slot0.transformIds) do for slot9, slot10 in pairs(slot5) do slot0:updateGridTF(slot10) if slot0:canRemould(slot10) or slot0:isFinished(slot10) then for slot14, slot15 in ipairs(slot0.lineTFs[slot10] or {}) do slot15.hrz:GetComponent("UIGrayScale").enabled = false slot15.vec:GetComponent("UIGrayScale").enabled = false end end end end end function slot0.getLevelById(slot0, slot1) return pg.transform_data_template[slot1].level_limit end function slot0.getPositionById(slot0, slot1) for slot5, slot6 in pairs(slot0.transformIds) do for slot10, slot11 in pairs(slot6) do if slot1 == slot11 then return slot5, slot10 end end end end function slot0.getGridById(slot0, slot1) slot2, slot3 = slot0:getPositionById(slot1) return slot0.grids[slot2][slot3] end slot0.STATE_FINISHED = 1 slot0.STATE_ACTIVE = 2 slot0.STATE_LOCK = 3 function slot0.updateGridTF(slot0, slot1) slot3 = slot0:getLevelById(slot1) setText(slot0:getGridById(slot1):Find("name"), pg.transform_data_template[slot1].name) slot5 = 0 if slot0.shipVO.transforms[slot1] then slot5 = slot0.shipVO.transforms[slot1].level end slot6, slot7, slot8 = slot0:canRemould(slot1) slot11 = slot2:Find("icon"):GetComponent(typeof(Image)) GetSpriteFromAtlasAsync("modicon", slot4.icon, function (slot0) if not IsNil(uv0) then uv0.sprite = slot0 end end) setActive(slot2:Find("bgs/finished"), function () if uv0 == uv1.max_level then return uv2.STATE_FINISHED elseif uv3 then return uv2.STATE_ACTIVE else return uv2.STATE_LOCK end end() == uv0.STATE_FINISHED) setActive(slot2:Find("bgs/ongoing"), slot10 == uv0.STATE_ACTIVE) setActive(slot2:Find("bgs/lock"), slot10 == uv0.STATE_LOCK) setActive(slot2:Find("tags/finished"), slot10 == uv0.STATE_FINISHED) setActive(slot2:Find("tags/ongoing"), slot10 == uv0.STATE_ACTIVE) setActive(slot2:Find("tags/lock"), slot10 == uv0.STATE_LOCK) if slot10 == uv0.STATE_FINISHED then setText(slot2:Find("icon/progress"), slot5 .. "/" .. slot4.max_level) elseif slot10 == uv0.STATE_ACTIVE then setText(slot12, slot5 .. "/" .. slot4.max_level) elseif slot10 == uv0.STATE_LOCK then setText(slot12, "") setActive(slot2:Find("tags/lock/lock_prev"), slot8 and slot8[1] == 1) setActive(slot2:Find("tags/lock/lock_level"), slot8 and slot8[1] == 2) setActive(slot2:Find("tags/lock/lock_star"), slot8 and slot8[1] == 3) if slot8 and slot8[1] == 2 then setText(slot2:Find("tags/lock/lock_level/Text"), slot8[2]) elseif slot8 and slot8[1] == 3 then setText(slot2:Find("tags/lock/lock_star/Text"), slot8[2]) end end end function slot0.initShipModel(slot0) slot1 = slot0.shipVO:getPrefab() if slot0.shipContainer.childCount ~= 0 then PoolMgr.GetInstance():ReturnSpineChar(slot1, go(slot0.shipModel)) end function slot2(slot0) if not IsNil(uv0._tf) then slot1 = tf(slot0) uv0.shipModel = slot1 uv0.spineAnimUI = slot1:GetComponent("SpineAnimUI") pg.ViewUtils.SetLayer(slot1, Layer.UI) slot1.localScale = Vector3(uv1, uv1, 1) setParent(slot1, uv0.shipContainer) slot1.localPosition = Vector2(0, 10) uv0.spineAnimUI:SetAction("stand2", 0) end end PoolMgr.GetInstance():GetSpineChar(slot1, true, function (slot0) uv0(slot0) end) end function slot0.updateInfo(slot0, slot1) if slot0:isFinished(slot1) then slot0:updateFinished(slot1) else slot0:updateProgress(slot1) end end function slot0.updateFinished(slot0, slot1) slot0.curTranformId = slot1 slot0.infoName.text = pg.transform_data_template[slot1].name slot4 = {} for slot8 = 1, slot0.transforms[slot1].level do _.each(slot3.use_item[slot8], function (slot0) if not _.detect(uv0, function (slot0) return slot0.type == DROP_TYPE_ITEM and slot0.id == uv0[1] end) then table.insert(uv0, { type = DROP_TYPE_ITEM, id = slot0[1], count = slot0[2] }) else slot1.count = slot1.count + slot0[2] end end) end slot9 = 1 table.insert(slot4, { type = DROP_TYPE_ITEM, id = id2ItemId(slot9), count = slot3.use_gold * slot2 }) for slot9 = slot0.itemContainer.childCount, #slot4 - 1 do cloneTplTo(slot0.itemTF, slot0.itemContainer) end for slot9 = 1, slot0.itemContainer.childCount do setActive(slot0.itemContainer:GetChild(slot9 - 1), slot9 <= #slot4) if slot9 <= #slot4 then updateDrop(slot0:findTF("IconTpl", slot10), slot4[slot9]) RemoveComponent(slot10, typeof(Button)) end end setActive(slot0.shipTF, slot3.use_ship > 0) if slot3.use_ship > 0 then setActive(slot0.shipTF:Find("addTF"), false) setActive(slot0.shipTF:Find("IconTpl"), true) updateDrop(slot0:findTF("IconTpl", slot0.shipTF), { type = DROP_TYPE_SHIP, id = slot0.shipVO.configId }) removeOnButton(slot0.shipTF) end setActive(slot0.skillDesc.parent, slot3.skill_id ~= 0) if slot3.skill_id ~= 0 then setText(slot0.skillDesc, i18n("ship_remould_material_unlock_skill", HXSet.hxLan(pg.skill_data_template[slot3.skill_id].name))) end removeAllChildren(slot0.attrContainer) _.each(slot3.ship_id, function (slot0) if slot0[1] == uv0.shipVO.configId then uv1 = slot0[2] end if pg.ship_data_template[slot0[1]].group_type == uv0.shipVO.groupId then uv2 = pg.ship_data_statistics[slot0[2]].type end end) if nil then slot8 = cloneTplTo(slot0.attrTplD, slot0.attrContainer) setText(slot8:Find("name"), i18n("common_ship_type")) setText(slot8:Find("value"), ShipType.Type2Name(slot7)) setActive(slot8:Find("quest"), true) onButton(slot0, slot8, function () uv0:showToolTip(uv1) end) else slot8 = _.reduce(slot3.effect, {}, function (slot0, slot1) for slot5, slot6 in pairs(slot1) do slot0[slot5] = (slot0[slot5] or 0) + slot6 end return slot0 end) for slot13, slot14 in pairs(slot0.shipVO:getShipProperties()) do if slot8[slot13] then slot0:updateAttrTF_D(cloneTplTo(slot0.attrTplD, slot0.attrContainer), { attrName = AttributeType.Type2Name(slot13), value = math.floor(slot14), addition = slot8[slot13] }) end end for slot14 = 1, 3 do if slot8["equipment_proficiency_" .. slot14] then slot0:updateAttrTF_D(cloneTplTo(slot0.attrTplD, slot0.attrContainer), { attrName = EquipType.type2Title(slot14, pg.ship_data_template[slot0.shipVO.configId]["equip_" .. slot14][1]) .. i18n("common_proficiency"), value = slot0.shipVO:getEquipProficiencyByPos(slot14) * 100, addition = slot8["equipment_proficiency_" .. slot14] * 100 }, true) end end end setActive(slot0.confirmBtn, false) setActive(slot0.inactiveBtn, false) setActive(slot0.completedteBtn, slot0:isFinished(slot1)) slot0.contextData.transformId = slot1 end function slot0.updateProgress(slot0, slot1) slot0.curTranformId = slot1 slot3 = pg.transform_data_template[slot1] slot0.infoName.text = slot3.name slot4, slot5 = slot0:canRemould(slot1) setActive(slot0.shipTF, false) setText(slot0.skillDesc, "") slot7 = {} if table.getCount(slot3.effect[(slot0.transforms[slot1] and slot0.transforms[slot1].level or 0) + 1] or {}) > 0 then table.insert(Clone(slot3.use_item[slot2]) or {}, { id2ItemId(1), slot3.use_gold }) setActive(slot0.shipTF, slot3.use_ship ~= 0) if slot3.use_ship ~= 0 then slot9 = slot0.contextData.materialShipIds and table.getCount(slot8) ~= 0 setActive(slot0.shipTF:Find("IconTpl"), slot9) setActive(slot0.shipTF:Find("addTF"), not slot9) if slot9 then updateDrop(slot0:findTF("IconTpl", slot0.shipTF), { id = getProxy(BayProxy):getShipById(slot8[1]).configId, type = DROP_TYPE_SHIP }) end onButton(slot0, slot0.shipTF, function () if uv0 then uv1:emit(ShipRemouldMediator.ON_SELECTE_SHIP, uv1.shipVO) else pg.TipsMgr.GetInstance():ShowTips(uv2) end end, SFX_PANEL) else slot0.contextData.materialShipIds = nil end setActive(slot0.skillDesc.parent, slot3.skill_id ~= 0) if slot3.skill_id ~= 0 then setText(slot0.skillDesc, i18n("ship_remould_material_unlock_skill", HXSet.hxLan(pg.skill_data_template[slot3.skill_id].name))) end else slot0.contextData.materialShipIds = nil end for slot12 = slot0.itemContainer.childCount, #slot7 - 1 do cloneTplTo(slot0.itemTF, slot0.itemContainer) end for slot12 = 1, slot0.itemContainer.childCount do setActive(slot0.itemContainer:GetChild(slot12 - 1), slot12 <= #slot7) if slot12 <= #slot7 then slot15 = "" if slot7[slot12][1] == id2ItemId(1) then slot16 = slot14[2] <= slot0.playerVO.gold slot15 = setColorStr(slot14[2], slot16 and COLOR_WHITE or COLOR_RED) if slot16 then RemoveComponent(slot13, typeof(Button)) else onButton(slot0, slot13, function () ItemTipPanel.ShowGoldBuyTip(uv0[2]) end) slot13:GetComponent(typeof(Button)).targetGraphic = slot13:Find("IconTpl/icon_bg/icon"):GetComponent(typeof(Image)) end else slot16 = slot14[2] <= slot0:getItemCount(slot14[1]) slot15 = setColorStr(slot0:getItemCount(slot14[1]), slot16 and COLOR_WHITE or COLOR_RED) .. "/" .. slot14[2] if slot16 or not ItemTipPanel.CanShowTip(slot14[1]) then RemoveComponent(slot13, typeof(Button)) else onButton(slot0, slot13, function () ItemTipPanel.ShowItemTipbyID(uv0[1]) end) slot13:GetComponent(typeof(Button)).targetGraphic = slot13:Find("IconTpl/icon_bg/icon"):GetComponent(typeof(Image)) end end updateDrop(slot0:findTF("IconTpl", slot13), { id = slot14[1], type = DROP_TYPE_ITEM, count = slot15 }) end end removeAllChildren(slot0.attrContainer) _.each(slot3.ship_id, function (slot0) if slot0[1] == uv0.shipVO.configId then uv1 = slot0[2] end if pg.ship_data_template[slot0[1]].group_type == uv0.shipVO.groupId then uv2 = pg.ship_data_statistics[slot0[2]].type end end) if nil then slot11 = cloneTplTo(slot0.attrTpl, slot0.attrContainer) setText(slot11:Find("name"), i18n("common_ship_type")) setText(slot11:Find("pre_value"), ShipType.Type2Name(slot0.shipVO:getShipType())) setText(slot11:Find("value"), ShipType.Type2Name(slot10)) setActive(slot11:Find("addtion"), false) if slot9 then setActive(slot11:Find("quest"), true) onButton(slot0, slot11, function () uv0:showToolTip(uv1) end) else setActive(slot12, false) end else for slot15, slot16 in pairs(slot0.shipVO:getShipProperties()) do if slot6[slot15] then slot0:updateAttrTF(cloneTplTo(slot0.attrTpl, slot0.attrContainer), { attrName = AttributeType.Type2Name(slot15), value = math.floor(slot16), addition = slot6[slot15] }) end end for slot16 = 1, 3 do if slot6["equipment_proficiency_" .. slot16] then slot0:updateAttrTF(cloneTplTo(slot0.attrTpl, slot0.attrContainer), { attrName = EquipType.type2Title(slot16, pg.ship_data_template[slot0.shipVO.configId]["equip_" .. slot16][1]) .. i18n("common_proficiency"), value = slot0.shipVO:getEquipProficiencyByPos(slot16) * 100, addition = slot6["equipment_proficiency_" .. slot16] * 100 }, true) end end end slot11 = slot0:isEnoughResource(slot1) setActive(slot0.confirmBtn, slot4 and slot11) setActive(slot0.inactiveBtn, not slot4 or not slot11) setActive(slot0.completedteBtn, false) onButton(slot0, slot0.confirmBtn, function () slot0, slot1 = ShipStatus.ShipStatusCheck("onModify", uv0.shipVO) if not slot0 then pg.TipsMgr.GetInstance():ShowTips(slot1) return end slot2, slot3 = uv0:canRemould(uv1) if not slot2 then pg.TipsMgr.GetInstance():ShowTips(slot3) return end slot4, slot5 = uv0:isEnoughResource(uv1) if not slot4 then pg.TipsMgr.GetInstance():ShowTips(slot5) return end if uv2 then slot6 = pg.MsgboxMgr.GetInstance() slot6:ShowMsgBox({ modal = true, content = HXSet.hxLan(i18n("ship_remould_warning_" .. uv2, uv0.shipVO:getName())), onYes = function () uv0:emit(ShipRemouldMediator.REMOULD_SHIP, uv0.shipVO.id, uv1) end }) slot6.contentText:AddListener(function (slot0, slot1) if slot0 == "clickDetail" then uv0:showToolTip(uv1) end end) else uv0:emit(ShipRemouldMediator.REMOULD_SHIP, uv0.shipVO.id, uv1) end end, SFX_CONFIRM) slot0.contextData.transformId = slot1 end function slot0.isUnlock(slot0, slot1) if not slot0:isUnLockPrev(slot1) then return false end if slot0.shipVO.level < slot0:getLevelById(slot1) then return false end if not slot0:isReachStar(slot1) then return false end return true end function slot0.isFinished(slot0, slot1) if pg.transform_data_template[slot1].max_level == (slot0.transforms[slot1] and slot0.transforms[slot1].level or 0) then return true end return false end function slot0.isReachStar(slot0, slot1) return pg.transform_data_template[slot1].star_limit <= slot0.shipVO:getStar() end function slot0.canRemould(slot0, slot1) if not slot0:isUnLockPrev(slot1) then return false, i18n("ship_remould_prev_lock"), { 1 } end slot2 = pg.transform_data_template[slot1] if slot0.shipVO.level < slot0:getLevelById(slot1) then return false, i18n("ship_remould_need_level", slot2.level_limit), { 2, slot2.level_limit } end if not slot0:isReachStar(slot1) then return false, i18n("ship_remould_need_star", slot2.star_limit), { 3, slot2.star_limit } end if slot0:isFinished(slot1) then return false, i18n("ship_remould_finished"), { 4 } end return true end function slot0.isUnLockPrev(slot0, slot1) for slot6, slot7 in pairs(pg.transform_data_template[slot1].condition_id) do if not slot0.transforms[slot7] or slot0.transforms[slot7].level ~= pg.transform_data_template[slot7].max_level then return false end end return true end function slot0.isEnoughResource(slot0, slot1) slot2 = pg.transform_data_template[slot1] slot3 = 0 if slot0.transforms[slot1] then slot3 = slot0.transforms[slot1].level end for slot7, slot8 in ipairs(slot2.use_item[slot3 + 1] or {}) do if not slot0.itemsVO[slot8[1]] or slot0.itemsVO[slot8[1]].count < slot8[2] then return false, i18n("ship_remould_no_item") end end if slot0.playerVO.gold < slot2.use_gold then return false, i18n("ship_remould_no_gold") end if slot2.use_ship ~= 0 and (not slot0.contextData.materialShipIds or #slot0.contextData.materialShipIds ~= slot2.use_ship) then return false, i18n("ship_remould_no_material") end return true end function slot0.updateAttrTF(slot0, slot1, slot2, slot3) slot4 = slot3 and "%" or "" setText(slot1:Find("name"), slot2.attrName) setText(slot1:Find("pre_value"), slot2.value .. slot4) setText(slot1:Find("value"), slot2.addition + slot2.value .. slot4) setText(slot1:Find("addtion"), (slot2.addition > 0 and "+" .. slot2.addition or slot2.addition) .. slot4) end function slot0.updateAttrTF_D(slot0, slot1, slot2, slot3) setText(slot1:Find("name"), slot2.attrName) setText(slot1:Find("value"), (slot2.addition > 0 and "+" .. slot2.addition or slot2.addition) .. (slot3 and "%" or "")) end function slot0.showToolTip(slot0, slot1) if not slot0.shipVO then return end slot2 = pg.transform_data_template[slot1] slot3 = slot0:isFinished(slot1) setActive(findTF(slot0.tooltip, "window/scrollview/list/attrs"), not slot3) if not slot3 then slot4 = Clone(slot0.shipVO) _.each(slot2.ship_id, function (slot0) if slot0[1] == uv0.shipVO.configId then uv1.configId = slot0[2] end end) slot4.transforms[slot1] = { level = 1, id = slot1 } slot5 = {} table.insert(slot5, { name = i18n("common_ship_type"), from = ShipType.Type2Name(slot0.shipVO:getShipType()), to = ShipType.Type2Name(slot4:getShipType()) }) table.insert(slot5, { name = i18n("attribute_armor_type"), from = slot0.shipVO:getShipArmorName(), to = slot4:getShipArmorName() }) slot7 = slot0.shipVO:getShipProperties() slot8 = slot4:getShipProperties() for slot12, slot13 in ipairs({ AttributeType.Durability, AttributeType.Cannon, AttributeType.Torpedo, AttributeType.AntiAircraft, AttributeType.Air, AttributeType.Reload, AttributeType.Expend, AttributeType.Dodge, AttributeType.AntiSub }) do slot14 = { name = AttributeType.Type2Name(slot13), from = slot0.shipVO:getBattleTotalExpend(), to = slot4:getBattleTotalExpend() } if slot13 == AttributeType.Expend then -- Nothing else slot14.name = AttributeType.Type2Name(slot13) slot14.from = math.floor(slot7[slot13]) slot14.to = math.floor(slot8[slot13]) end slot14.add = slot14.to - slot14.from table.insert(slot5, slot14) end slot9 = UIItemList.New(findTF(slot0.tooltip, "window/scrollview/list/attrs"), findTF(slot0.tooltip, "window/scrollview/list/attrs/attr")) slot9:make(function (slot0, slot1, slot2) if slot0 == UIItemList.EventUpdate then slot3 = uv0[slot1 + 1] setText(slot2:Find("name"), slot3.name) setText(slot2:Find("pre_value"), slot3.from) slot4 = slot2:Find("addtion") slot5 = "#A9F548" if slot3.add and slot3.from ~= slot3.to then setActive(slot4, true) if slot3.to < slot3.from then slot5 = "#FF3333" end setText(slot4, string.format("[%s%s]", slot5, slot3.from < slot3.to and "+" or "", slot3.add)) setText(slot2:Find("value"), string.format("%s", slot5, slot3.to)) else setActive(slot4, false) setText(slot2:Find("value"), string.format("%s", slot5, slot3.to)) end end end) slot9:align(#slot5) end setText(findTF(slot0.tooltip, "window/scrollview/list/content/"), HXSet.hxLan(slot2.descrip)) onButton(slot0, findTF(slot0.tooltip, "window/top/btnBack"), function () uv0:closeTip() end, SFX_CANCEL) onButton(slot0, slot0.tooltip, function () uv0:closeTip() end, SFX_CANCEL) setActive(slot0.tooltip, true) pg.UIMgr.GetInstance():OverlayPanel(slot0.tooltip, { groupName = LayerWeightConst.GROUP_SHIPINFOUI }) end function slot0.closeTip(slot0) setActive(slot0.tooltip, false) pg.UIMgr.GetInstance():UnOverlayPanel(slot0.tooltip, slot0._tf) end function slot0.willExit(slot0) if slot0.helpBtn then setActive(slot0.helpBtn, true) end pg.UIMgr.GetInstance():UnOverlayPanel(slot0.tooltip, slot0._tf) end function slot0.onBackPressed(slot0) if isActive(slot0.tooltip) then slot0:closeTip() return end slot0:emit(BaseUI.ON_BACK_PRESSED, true) end return slot0