源战役客户端
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

237 linhas
9.0 KiB

-- <*
-- @Author: Saber
-- @Description: 圣物装备对比tips
-- *>
PsionicToolTipsCompare = PsionicToolTipsCompare or BaseClass(BaseItem)
local PsionicToolTipsCompare = PsionicToolTipsCompare
function PsionicToolTipsCompare:__init(parent_wnd,prefab_asset,layer_name)
self.base_file = "common"
self.layout_file = "PsionicToolTips"
self.parent_wnd = parent_wnd
self.layer_name = layer_name
self.cur_star_list = {}
self.attr_item_list = {}
self.model = PsionicModel:getInstance()
self.goods_model = GoodsModel:getInstance()
self:Load()
end
function PsionicToolTipsCompare:Load_callback()
local nodes = {
"con",
"con/bg:raw",
"con/power:txt", -- 圣物装备战斗力
"con/cp_arrow:img", "con/cp_power:tmp",
"con/goods_name:tmp", -- 装备名
"con/icon_con", -- 图标容器
"con/equiped:obj", -- 穿戴中标识
"con/attr_scroll", "con/attr_scroll/Viewport/attr_con", -- 属性容器
"con/star_con", -- 星数节点
"con/armor_item_bg:img",
-- 操作按钮部分
"con/bg/btn_con/unload_btn:obj", -- 卸下
"con/bg/btn_con/wear_btn:obj", -- 穿戴
"con/bg/btn_con/strength_btn:obj", "con/bg/btn_con/strength_btn/strength_btn_red:obj", -- 升品 / 强化
"con/bg/btn_con/getway_btn:obj", -- 获取途径
"con/bg/btn_con/delete_btn:obj", -- 销毁
"con/bg/btn_con/refact_btn:obj", "con/bg/btn_con/refact_btn/refact_btn_red:obj",
}
self:GetChildren(nodes)
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("ps_tool_tips_bg"), false)
self.icon_item = PsionicArmorCircleItem.New(self.icon_con, false, self.layer_name)
self.icon_item:SetEnableClick(false)
self.icon_item:SetItemSize(78, 78)
self.icon_item:ChangeCountVisible(false)
self.transform.name = "PsionicToolTipsCompare"
self:AddEvents()
if self.need_refreshData then
self:UpdateView()
end
end
function PsionicToolTipsCompare:AddEvents( )
end
function PsionicToolTipsCompare:SetData( psionic_data, power_callback )
self.psionic_data = psionic_data
self.power_callback = power_callback -- 参与对比装备的战斗力
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function PsionicToolTipsCompare:UpdateView( )
self.con.gameObject:SetActive(true)
SetAnchoredPositionX(self.con, 196.5)
self.psionic_star = self.psionic_data.star
self.is_equiped = self.goods_model:GetPsionicEquipGoodsByID(self.psionic_data.goods_id) and true or false
self.equiped_obj:SetActive(self.is_equiped)
-- self.slot_flag_tmp.text = PsionicConst.EquipSlotName[self.psionic_data.subtype]
self:UpdateBasicInfo()
self:UpdateMainInfo()
end
-- 加载基础数据
function PsionicToolTipsCompare:UpdateBasicInfo( )
self.icon_item:SetData(self.psionic_data.type_id, nil, nil, self.psionic_data.equip_lv)
self.icon_item:SetSlotName(self.psionic_data.subtype)
self.goods_name_tmp.text = self.goods_model:getGoodsName(self.psionic_data.type_id, true, true)
lua_resM:setImageSprite(self, self.armor_item_bg_img, "psionicExtra_asset", "ps_armor_bg_" .. self.psionic_data.color)
-- 更新星数
local offset_x = (self.star_con.sizeDelta.x - self.psionic_star * 22) / 2
for i = 1, self.psionic_star do
self.cur_star_list[i] = self.cur_star_list[i] or UiFactory.createChild(self.star_con, UIType.Image2, "star" .. i)
SetAnchoredPosition(self.cur_star_list[i].transform, (i-1) * 22 + offset_x, 0)
lua_resM:setImageSprite(self, self.cur_star_list[i]:GetComponent("Image"), "common_asset", "ps_star_1", true)
end
end
-- 加载主要信息
function PsionicToolTipsCompare:UpdateMainInfo( )
-- 加载槽位数据
local slot_data = self.model:GetPsionicSlotData(self.psionic_data.subtype)
-- 配置的基础属性
local cfg_attr = self.psionic_data.basic_attrs
-- 获取配置等级属性增量
local add_attr_cfg = {}
for k, v in ipairs(self.psionic_data.cfg_attrs) do
for k2, v2 in ipairs(cfg_attr) do
if v[1] == v2[1] then
add_attr_cfg[v[1]] = v[3]
end
end
end
-- 配置属性的战斗力
local basic_attr = GetFighting(cfg_attr, self.is_equiped)
-- 创建信息节点列表,动态加载属性内容
local data_list = {}
data_list[#data_list + 1] = {title = "基础信息"}
local attr_len = TableSize(cfg_attr)
local slot_lv = slot_data.lv
for k, v in ipairs(cfg_attr) do
data_list[#data_list + 1] = {
attr_basic = v,
index = k,
is_last = k == attr_len,
add_attr = add_attr_cfg[v[1]],
slot_lv = slot_lv
}
end
-- 加载洗练属性
local wash_cfg = self.model:GetPsionicWashCfg(self.psionic_data.subtype, slot_data.grade)
local stage_max_lv, max_stage = self.model:GetPsionicSlotStageMaxLevel(slot_data.grade)
local wash_attr_list, wash_attr_id_list = {}, {}
for k, v in pairs(slot_data.attrs) do
wash_attr_list[#wash_attr_list+1] = {[1] = v.attr_id, [2] = v.attr_value}
wash_attr_id_list[v.attr_id] = v.attr_value
end
local wash_power = GetFighting(wash_attr_list, self.is_equiped)
local wash_attr_num = #wash_attr_list
data_list[#data_list + 1] = {title = "洗练属性"}
for k, v in pairs(wash_cfg.maxs) do
-- 获取目标属性的属性值
local attr_id = v[1]
local cur_val = wash_attr_id_list[attr_id] or 0
data_list[#data_list + 1] = {
cur_val = cur_val,
attr_wash = v,
index = k,
is_last = k >= wash_attr_num
}
end
-- 加载觉醒属性
local awake_power = 0
local awake_cfg = self.model:GetPsionicAwakeCfg(slot_data.pos, slot_data.sec_lv) -- 觉醒等级相关配置
local awake_attr = awake_cfg.attrs -- 当前觉醒等级属性列表
awake_power = GetFighting(awake_attr, self.is_equiped)
attr_len = TableSize(awake_attr)
if attr_len > 0 then -- 要有属性才展示
data_list[#data_list + 1] = {
title = "觉醒属性",
title_extra = {
has_weared = self.psionic_data,
awake_lv = slot_data.sec_lv,
equip_color = self.psionic_data.color, -- 这里需要装备品级,不足橙色装备的需要做特殊处理
}
}
for k, v in ipairs(awake_attr) do
data_list[#data_list + 1] = {
skill_data = v,
index = k,
is_last = k == attr_len,
}
end
end
local total_power = basic_attr + wash_power + awake_power
self.power_txt.text = "f" .. total_power
-- 对比战斗力差别,并调整节点位置
local offset_x = (345 - self.power_txt.preferredWidth) * 0.5 + 14
SetAnchoredPositionX(self.power, offset_x)
if self.power_callback then
self.power_callback(total_power)
end
-- -- 对比战斗力差别,并调整节点位置
-- local off_power = total_power - self.compare_power
-- local power_width = self.power_txt.preferredWidth
-- local cp_arrow_width, cp_power_width = 0, 0
-- if off_power ~= 0 then -- 有战力差
-- local higher = off_power > 0
-- cp_arrow_width = 29
-- self.cp_arrow_img.enabled = true
-- self.cp_power_tmp.text = math.abs(off_power)
-- cp_power_width = self.cp_power_tmp.preferredWidth
-- lua_resM:setImageSprite(self, self.cp_arrow_img, "common_asset", higher and "tyui_Arrow_3" or "tyui_Arrow_4", true)
-- SetTMPSharedMaterial(self.cp_power_tmp, higher
-- and ShaderTools.TMPSharedMaterialType.HKYTW7OutlineGreenUp
-- or ShaderTools.TMPSharedMaterialType.HKYTW7OutlineRedDown)
-- end
-- local total_len = power_width + cp_arrow_width + cp_power_width
-- local offset_x = (345 - total_len) * 0.5
-- SetAnchoredPositionX(self.power, offset_x + 14)
-- SetAnchoredPositionX(self.cp_arrow, offset_x + power_width - 18)
-- SetAnchoredPositionX(self.cp_power, offset_x + power_width + cp_arrow_width - 20)
-- self.compare_power
self:UpdateDetailItem(data_list)
end
-- 根据组合的表生成属性节点
function PsionicToolTipsCompare:UpdateDetailItem(data_list)
local item
local height = 0
for k, v in ipairs(data_list) do
item = self.attr_item_list[k]
if not item then
item = PsionicToolTipsItem.New(self.attr_con)
self.attr_item_list[k] = item
end
item:SetAnchoredPosition(0, -height)
height = height + item:SetData(v)
end
SetSizeDeltaY(self.attr_con, height)
end
function PsionicToolTipsCompare:__delete( )
if self.icon_item then
self.icon_item:DeleteMe()
self.icon_item = nil
end
for i,v in ipairs(self.attr_item_list) do
v:DeleteMe()
v = nil
end
self.attr_item_list = {}
end