源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

308 regels
12 KiB

--装备对比的tips
StarSoulEquipCompareTips = StarSoulEquipCompareTips or BaseClass(BaseItem)
function StarSoulEquipCompareTips:__init()
self.base_file = "common"
self.layout_file = "StarSoulEquipCompareTips"
self.layer_name = "Top"
-- self.use_local_view = true
self.use_background = true
self.click_bg_toClose = true
self.close_mode = CloseMode.CloseDestroy
self.is_set_zdepth = true
-- self.destroy_imm = true
self.goods_vo = nil
self.model = StarSpiritModel:getInstance()
self:Load()
end
function StarSoulEquipCompareTips:__delete()
if self.icon_item then
self.icon_item:ReleaseObj()
self.icon_item = nil
end
end
function StarSoulEquipCompareTips:Load_callback()
self:LoadSuccess()
self:InitEvent()
if self.need_refreshData then
self:SetData(self.goods_vo)
end
end
function StarSoulEquipCompareTips:LoadSuccess()
self.layout,
self.bg,
self.icon_con,
self.ScrollView,
self.ScrollViewContent,
self.line1,
self.line2,
self.line3
= GetChildTransforms(self.transform, {
"layout",
"layout/normal/bg",
"layout/normal/icon_con",
"layout/normal/ScrollView",
"layout/normal/ScrollView/Viewport/Content",
"layout/normal/ScrollView/Viewport/Content/line1",
"layout/normal/ScrollView/Viewport/Content/line2",
"layout/normal/ScrollView/Viewport/Content/line3",
})
self.name_text,
self.pos_text,
self.base_name_text,
self.basePro_text,
self.base_stren_text,
self.add_name_text,
self.addPro_text,
self.equip_score,
self.random_name_text,
self.random_pro_text
= GetChildTexts(self.transform, {
"layout/normal/nameText",
"layout/normal/posText",
"layout/normal/ScrollView/Viewport/Content/baseName",
"layout/normal/ScrollView/Viewport/Content/basePro",
"layout/normal/ScrollView/Viewport/Content/strengthAdd",
"layout/normal/ScrollView/Viewport/Content/addName",
"layout/normal/ScrollView/Viewport/Content/addPro",
"layout/normal/equip_score",
"layout/normal/ScrollView/Viewport/Content/randomName",
"layout/normal/ScrollView/Viewport/Content/randomPro",
})
self.step_bg,
self.item_bg
= GetChildImages(self.transform, {
"layout/normal/setp_bg",
"layout/normal/itemBg",
})
self.layout.anchoredPosition = Vector2(-384, 0)
self.icon_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.icon_con, nil, self.layer_name)
self.icon_item:SetStrenTextPos(6.5, 23.5)
self.icon_item:SetPosition(50, -60)
self.icon_item:SetItemBgVisible(false)
end
function StarSoulEquipCompareTips:InitEvent()
end
function StarSoulEquipCompareTips:SetData(goods_vo)
self.goods_vo = goods_vo
if self.goods_vo == nil then return end
if self.is_loaded then
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_vo.type_id)
local equip_cfg = Config.Starsoulequip[goods_vo.type_id]
--部位
self.pos_text.text = equip_cfg and Config.Starsoulequippos[equip_cfg.pos] and Trim(Config.Starsoulequippos[equip_cfg.pos].describe) or ""
local stren = 0
for _, v in pairs(self.model.equip_stren_data) do
if v.goods_id == self.goods_vo.goods_id then
stren = v.stren
break
end
end
self.icon_item:SetData(goods_vo.type_id, nil, nil, stren,nil,nil,nil,nil,nil,true)
self.icon_item:SetStar(equip_cfg and equip_cfg.star or 0)
self:SetBestPro(equip_cfg.best_attr)
--计算强化后的属性加成
self:SetProperty(basic, stren)
local callback = function (dynamic)
if self.goods_vo.goods_id and dynamic and self.goods_vo.goods_id == dynamic.goods_id then
self.dynamic = dynamic
--背景
lua_resM:setImageSprite(self, self.step_bg, "uiComponent_asset", "tsui_pj_"..self.dynamic.color)
lua_resM:setImageSprite(self, self.item_bg, "common_asset", "xlui_zbpz_"..self.dynamic.color)
--评分
self.equip_score.text = self.dynamic.rating + (equip_cfg and equip_cfg.base_rating or 0)
if basic then
-- 名字
self.name_text.text = "<color="..WordManager.GetGoodsColor(self.dynamic.color) .. ">" .. basic.goods_name .. "+"..stren .. "</color>"
end
self:SetBetterProperty(self.dynamic.equip_extra_attr)
end
self:RefreshPos()
end
GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback, false)
else
self.need_refreshData = true
end
end
function StarSoulEquipCompareTips:SetName()
local basic = GoodsModel.Instance:GetGoodsBasicByTypeId(self.goods_vo.type_id)
self.name_text.text = basic and basic.goods_name-- self.goods_vo.goods_name
end
function StarSoulEquipCompareTips:SetScore()
local cfg = Config.Starsoulequip[self.goods_vo.type_id]
local base_score = 0
local better_score = 0
if cfg then
base_score = cfg.base_rating
end
self.base_score_text.text = base_score
self.better_score_text.text = base_score + self.goods_vo.rating
end
--红点
function StarSoulEquipCompareTips:ShowReDot()
if self.dynamic and self.dynamic.type_id and self.dynamic.stren and self.dynamic.cell then
if RoleManager.Instance.mainRoleInfo.level >= Config.ConfigOpenLv.Equip.strength then
local bool = EquipModel:getInstance():IsCanStrength(self.dynamic.type_id, self.dynamic.stren, self.dynamic.cell) and true or false
self.strengthBtn_dot:SetActive(bool)
end
end
end
--设置基础属性
function StarSoulEquipCompareTips:SetProperty(basic, stren)
stren = stren or 0
if basic then
local equip_cfg = Config.Starsoulequip[self.goods_vo.type_id]
if not equip_cfg then
Message.show("没有配置", self.goods_vo.type_id)
return
end
local pos = equip_cfg.pos or 0
local rare = equip_cfg.rare
local base_attrlist = ErlangParser:GetInstance():Parse(basic.base_attrlist)
local base_equip_attr_list = Config.Starsoulequiplv[pos.."@"..rare.."@0"] and Config.Starsoulequiplv[pos.."@"..rare.."@0"].attr_list or {}
base_equip_attr_list = ErlangParser:GetInstance():Parse(base_equip_attr_list)
local stren_attr_list = {}
local add_prop = {}
local base_prop = {}
local attr_id_list = {}
local name_str = ""
local pro_str = ""
local stren_str = ""
for _, v in pairs(base_attrlist) do
local id, value = tonumber(v[1]), tonumber(v[2])
base_prop[id] = {id = id, value = value}
table.insert(attr_id_list, id)
end
table.sort(attr_id_list, function (a, b)
return a < b
end)
for _, v in pairs(base_equip_attr_list) do
local id, value = tonumber(v[1]), tonumber(v[2])
if base_prop[id] then
base_prop[id].value = base_prop[id].value + value
end
end
for i = 1, stren do
local list = Config.Starsoulequiplv[pos.."@"..rare.."@"..i] and Config.Starsoulequiplv[pos.."@"..rare.."@"..i].attr_list
if list then
list = ErlangParser:GetInstance():Parse(list)
for _, v in pairs(list) do
local id, value = tonumber(v[1]), tonumber(v[2])
if not stren_attr_list[id] then
stren_attr_list[id] = {id = id, value = 0}
end
stren_attr_list[id].value = stren_attr_list[id].value + value
end
end
end
for _, id in ipairs(attr_id_list) do
local data = base_prop[id]
if data then
local add_value = stren_attr_list[id] and stren_attr_list[id].value or 0
local _, name, _, value = WordManager:GetPropertyInfo(data.id, data.value + add_value)
name_str = name_str..name.."\n"
pro_str = pro_str..value.."\n"
if stren_attr_list[id] then
local value_add = WordManager:GetPropertyValue(stren_attr_list[id].id, stren_attr_list[id].value)
stren_str = stren_str.."(强化 +"..value_add..")\n"
else
stren_str = stren_str.."(强化 +0)\n"
end
end
end
self.base_name_text.text = Trim(name_str)
self.basePro_text.text = Trim(pro_str)
self.base_stren_text.text = Trim(stren_str)
self.base_name_text.transform.sizeDelta = Vector2(self.base_name_text.transform.sizeDelta.x, self.base_name_text.preferredHeight)
self.basePro_text.transform.sizeDelta = Vector2(self.basePro_text.transform.sizeDelta.x, self.basePro_text.preferredHeight)
self.base_stren_text.transform.sizeDelta = Vector2(self.base_stren_text.transform.sizeDelta.x, self.base_stren_text.preferredHeight)
end
end
--设置附加属性
function StarSoulEquipCompareTips:SetBetterProperty(equip_extra_attr)
local better_str = ""
local name_str = ""
local pro_str = ""
if equip_extra_attr then
table.sort(equip_extra_attr, function (a, b)
return a.attr_id < b.attr_id
end)
for i, v in ipairs(equip_extra_attr) do
local _, name, _, value = WordManager:GetPropertyInfo(v.attr_id, v.attr_val)
name_str = name_str .. "<color=" .. WordManager.GetGoodsColor(v.color) .. ">"..name.."</color>" .. "\n"
pro_str = pro_str.."<color=" .. WordManager.GetGoodsColor(v.color) .. ">"..value.."</color>" .. "\n"
end
end
self.random_name_text.text = Trim(name_str)
self.random_pro_text.text = Trim(pro_str)
self.random_pro_text.transform.sizeDelta = Vector2(self.random_pro_text.transform.sizeDelta.x, self.random_pro_text.preferredHeight)
self.random_name_text.transform.sizeDelta = Vector2(self.random_name_text.transform.sizeDelta.x, self.random_name_text.preferredHeight)
end
--设置极品属性
function StarSoulEquipCompareTips:SetBestPro(best_attr)
local attr_list = ErlangParser:GetInstance():Parse(best_attr)
local name_str = ""
local pro_str = ""
for i, v in ipairs(attr_list) do
local _, name, _, value = WordManager:GetPropertyInfo(tonumber(v[1]), tonumber(v[2]))
name_str = name_str ..name.."\n"
pro_str = pro_str..value.."\n"
end
if name_str == "" then
name_str = ""
end
self.add_name_text.text = Trim(name_str)
self.addPro_text.text = Trim(pro_str)
self.addPro_text.transform.sizeDelta = Vector2(self.addPro_text.transform.sizeDelta.x, self.addPro_text.preferredHeight)
self.add_name_text.transform.sizeDelta = Vector2(self.add_name_text.transform.sizeDelta.x, self.add_name_text.preferredHeight)
end
function StarSoulEquipCompareTips:RefreshPos()
local base_offset = 55
base_offset = base_offset + self.basePro_text.preferredHeight
base_offset = base_offset + 40
base_offset = base_offset + self.addPro_text.preferredHeight
base_offset = base_offset + 50
base_offset = base_offset + self.random_pro_text.preferredHeight
base_offset = base_offset + 190
self.ScrollView.sizeDelta = Vector2(380, base_offset - 175)
self.ScrollViewContent.sizeDelta = Vector2(380, base_offset - 175)
base_offset = 55
base_offset = base_offset + self.basePro_text.preferredHeight
self.line2.anchoredPosition = Vector2(0, -base_offset)
base_offset = base_offset + 40
self.addPro_text.transform.anchoredPosition = Vector2(171, -base_offset)
self.add_name_text.transform.anchoredPosition = Vector2(25, -base_offset)
base_offset = base_offset + self.addPro_text.preferredHeight + 10
self.line3.anchoredPosition = Vector2(0, -base_offset)
base_offset = base_offset + 40
self.random_name_text.transform.anchoredPosition = Vector2(25, -base_offset)
self.random_pro_text.transform.anchoredPosition = Vector2(171, -base_offset)
base_offset = base_offset + self.random_pro_text.preferredHeight
base_offset = base_offset + 190 --190 是背景初始高度
self.bg.sizeDelta = Vector2(382.7, base_offset)
end