源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

447 行
16 KiB

--装备对比的tips
SealCompareTips = SealCompareTips or BaseClass(BaseItem)
function SealCompareTips:__init()
self.base_file = "common"
self.layout_file = "EquipCompareTips"
self.goods_vo = nil
self.model = GoodsModel:getInstance()
self.seal_item_list = {}
self:Load()
end
function SealCompareTips:__delete()
if self.icon_item then
self.icon_item:DeleteMe()
end
for i,v in ipairs(self.seal_item_list) do
v:DeleteMe()
v = nil
end
self.seal_item_list = {}
if self.expire_label then
lua_viewM:ClearItem(self.expire_label)
self.expire_label = nil
end
end
function SealCompareTips:Load_callback()
EquipCompareTips.Load_callback(self)
end
function SealCompareTips:InitEvent()
EquipCompareTips.InitEvent(self)
end
function SealCompareTips:SetData(goods_vo)
self.goods_vo = goods_vo
if self.goods_vo == nil then return print("SealCompareTips里面没有物品数据") end
if self.is_loaded then
local color_str = ColorUtil.WHITE
if self.goods_vo.level > RoleManager.Instance.mainRoleInfo.level then
color_str = ColorUtil.RED
end
self.level.text = "<color="..color_str..">" .. self.goods_vo.level .. "</color>"
-- local index = Config.ConfigEquipShow[self.goods_vo.subtype].index
self.equip_pos.text = Trim(Config.Holysealpos[self.goods_vo.subtype].name)
self.fight.text = self.goods_vo.combat_power or 0
color_str = (self.goods_vo.career_id == 0 or RoleManager.Instance.mainRoleInfo.career == self.goods_vo.career_id) and ColorUtil.WHITE or ColorUtil.RED
local career_name = Config.Career[self.goods_vo.career_id] and Config.Career[self.goods_vo.career_id].career_name or "通用"
self.career.text = "<color="..color_str..">" .. career_name .. "</color>"
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
-- self:CreateStar(8)
if self.goods_vo.goods_id then
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
self.dynamic.stren = dynamic.stren or 0
local stren = ""
if dynamic.stren and dynamic.stren > 0 then
stren = "+" ..dynamic.stren
end
self.nameText.text = "<color="..WordManager.GetGoodsColor(self.dynamic.color)..">" .. self.goods_vo.goods_name .. stren .. "</color>"
local step = Config.Holysealgoods[self.goods_vo.type_id] and Config.Holysealgoods[self.goods_vo.type_id].stage or 0
self.step_num.text = "<color="..WordManager.GetGoodsColor(self.dynamic.color)..">" .. step .. "阶</color>"
self.icon_item:SetData(self.goods_vo)
self.composite_score.text = self.dynamic.overall_rating
self.equip_score.text = self.dynamic.rating
if basic then
local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist)
self:SetProperty(base_pro, dynamic.stren, basic.subtype)
self.fight.text = dynamic.combat_power or 0
end
self:SetAddProperty(self.dynamic)
self:SetSpecialProperty(self.goods_vo)
self:SetSuitProperty(self.dynamic)
self:Refresh()
--self:ShowReDot()
end
end
GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback)
end
--self:SetSellState(self.goods_vo.sell, self.goods_vo.price_type, self.goods_vo.type_id)
self:Refresh()
else
self.need_refresh = true
end
end
--设置附加属性
function SealCompareTips:SetAddProperty(dynamic)
if dynamic and dynamic.equip_extra_attr then
local name_str = ""
local pro_str = ""
if #dynamic.equip_extra_attr == 0 then
self.addName.text = ""
self.addPro.text = ""
else
for i,v in ipairs(dynamic.equip_extra_attr) do
if v.type_id == 1 then
name_str = name_str .. "<color="..WordManager.GetGoodsColor(v.color)..">每"..v.plus_interval..""..WordManager:GetProperties(tonumber(v.attr_id)).."</color>"
pro_str = pro_str .."<color="..WordManager.GetGoodsColor(v.color)..">+"..WordManager:GetPropertyValue(tonumber(v.attr_id), tonumber(v.plus_unit)) .. "</color>"
else
name_str = name_str .. "<color=" .. WordManager.GetGoodsColor(v.color) .. ">"..WordManager:GetProperties(tonumber(v.attr_id)).."</color>"
pro_str = pro_str .. "<color="..WordManager.GetGoodsColor(v.color)..">+"..WordManager:GetPropertyValue(tonumber(v.attr_id), v.attr_val).."</color>"
end
if i < #dynamic.equip_extra_attr then
name_str = name_str .. "\n"
pro_str = pro_str .. "\n"
end
end
self.addName.text = name_str
self.addPro.text = pro_str
end
end
end
--设置洗炼属性
function SealCompareTips:SetSpecialProperty(goodsVo)
self.wash_name.text = "特殊属性"
if goodsVo then
if Config.Holysealgoods[goodsVo.type_id] then
local name_str = ""
local pro_str = ""
local attr = ErlangParser:GetInstance():Parse(Config.Holysealgoods[goodsVo.type_id].special_attr)
for i,v in ipairs(attr) do
name_str = name_str .. WordManager:GetProperties(tonumber(v[1]))
pro_str = pro_str .. "+" .. WordManager:GetPropertyValue(tonumber(v[1]), tonumber(v[2]))
if i < #attr then
name_str = name_str .. "\n"
pro_str = pro_str .. "\n"
end
end
self.washName.text = name_str
self.washPro.text = pro_str
end
end
end
--刷新相关控件的位置
function SealCompareTips:Refresh()
if self.goods_vo then
self:RefreshPosAndSize(self.dynamic)
self:SetRootPos()
end
end
--设置基础属性
function SealCompareTips:SetProperty(base_pro, stren, pos)
stren = stren or 0
local stren_config = SealModel:getInstance():GetStrengthConfig(pos, stren)
local name_str = ""
local pro_str = ""
local stren_str = ""
local pro_list = {}
if stren_config and Trim(stren_config.attr_list) ~= "[]" then
pro_list = ErlangParser:GetInstance():Parse(stren_config.attr_list)
end
for i,v in ipairs(base_pro) do
name_str = name_str .. WordManager:GetProperties(tonumber(v[1]))
pro_str = pro_str.."+" .. WordManager:GetPropertyValue(tonumber(v[1]),tonumber(v[2]))
for i2, v2 in ipairs(pro_list) do
if tonumber(v2[1]) == tonumber(v[1]) then
stren_str = stren_str .. "<color="..ColorUtil.GREEN..">(强化+" .. v2[2] .. ")</color>"
end
end
if i < #base_pro then
name_str = name_str.."\n"
pro_str = pro_str.."\n"
stren_str = stren_str.."\n"
end
end
self.baseName.text = name_str
self.basePro.text = pro_str
self.strengthAdd.text = stren_str
end
--设置套装属性
function SealCompareTips:SetSuitProperty(dynamic, subtype)
local suit_id = Config.Holysealgoods[dynamic.type_id] and Config.Holysealgoods[dynamic.type_id].suit_id
local suit_num
if isOther then
suit_num = dynamic.suit_count
else
suit_num = SealModel:getInstance():GetSuitNum(suit_id) or 0
end
local config = Config.Holysealsuit[suit_id]
if config then
self.suit_name.text = Trim(config.name)..""..suit_num.."/"..config.max_count..""
local attr = ErlangParser:GetInstance():Parse(config.attr_list)
if attr and #attr > 0 then
local num_str = ""
local name_str = ""
local pro_str = ""
for i, v in ipairs(attr) do
local color
if suit_num >= tonumber(v[1]) then
color = ColorUtil.GREEN
else
color = ColorUtil.GRAY
end
num_str = num_str.."<color="..color..">【"..v[1].."件】</color>"
for i2, v2 in ipairs(v[3]) do
name_str = name_str .."<color="..color..">"..WordManager:GetProperties(tonumber(v2[1])).."</color>"
pro_str = pro_str .."<color="..color..">+"..WordManager:GetPropertyValue(tonumber(v2[1]), tonumber(v2[2])).."</color>"
if i < #attr or i2 < #v[3] then
num_str = num_str.."\n"
name_str = name_str.."\n"
pro_str = pro_str.."\n"
end
end
end
self.suitNum.text = num_str
self.suitName.text = name_str
self.suitPro.text = pro_str
end
end
end
--更新各个控件的位置
function SealCompareTips:RefreshPosAndSize(dynamic)
local off_y = 0
off_y = self.basePro.preferredHeight + 15
self.baseName.transform.sizeDelta = Vector2(self.baseName.transform.sizeDelta.x, off_y)
self.basePro.transform.sizeDelta = Vector2(self.basePro.transform.sizeDelta.x, off_y)
self.strengthAdd.transform.sizeDelta = Vector2(self.strengthAdd.transform.sizeDelta.x, off_y)
off_y = off_y + 30
local show_add = false
if dynamic then
show_add = true
end
if show_add then
self.line2.gameObject:SetActive(true)
self.addName.gameObject:SetActive(true)
self.addPro.gameObject:SetActive(true)
self.line2.localPosition = Vector3(0, -off_y, 0)
off_y = off_y + 30
self.addName.transform.localPosition = Vector2(self.addName.transform.localPosition.x, -off_y)
self.addPro.transform.localPosition = Vector2(self.addPro.transform.localPosition.x, -off_y)
self.addName.transform.sizeDelta = Vector2(self.addName.transform.sizeDelta.x, self.addName.preferredHeight + 15)
self.addPro.transform.sizeDelta = Vector2(self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15)
off_y = off_y + self.addPro.preferredHeight + 15
else
self.line2.gameObject:SetActive(false)
self.addName.gameObject:SetActive(false)
self.addPro.gameObject:SetActive(false)
end
local show_wash = false
if dynamic and Config.Holysealgoods[dynamic.type_id] then
show_wash = true
end
if show_wash then
self.line5.gameObject:SetActive(true)
self.washName.gameObject:SetActive(true)
self.washPro.gameObject:SetActive(true)
self.line5.localPosition = Vector3(0, -off_y, 0)
off_y = off_y + 30
self.washName.transform.localPosition = Vector3(self.washName.transform.localPosition.x, -off_y, 0)
self.washName.transform.sizeDelta = Vector2(self.washName.transform.sizeDelta.x, self.washName.preferredHeight + 15)
self.washPro.transform.localPosition = Vector3(self.washPro.transform.localPosition.x, -off_y, 0)
self.washPro.transform.sizeDelta = Vector2(self.washPro.transform.sizeDelta.x, self.washPro.preferredHeight + 15)
off_y = off_y + self.washPro.preferredHeight + 15
else
self.line5.gameObject:SetActive(false)
self.washName.gameObject:SetActive(false)
self.washPro.gameObject:SetActive(false)
end
local show_spirit = false
--[[if dynamic and dynamic.cspirit_stage and dynamic.cspirit_lv and dynamic.cspirit_stage > 0 and dynamic.cspirit_lv > 0 then
show_spirit = true
end--]]
if show_spirit then
self.line6.gameObject:SetActive(true)
self.spiritName.gameObject:SetActive(true)
self.spiritPro.gameObject:SetActive(true)
self.line6.localPosition = Vector3(0, -off_y, 0)
off_y = off_y + 30
self.spiritName.transform.localPosition = Vector3(self.spiritName.transform.localPosition.x, -off_y, 0)
self.spiritName.transform.sizeDelta = Vector2(self.spiritName.transform.sizeDelta.x, self.spiritName.preferredHeight + 15)
self.spiritPro.transform.localPosition = Vector3(self.spiritPro.transform.localPosition.x, -off_y, 0)
self.spiritPro.transform.sizeDelta = Vector2(self.spiritPro.transform.sizeDelta.x, self.spiritPro.preferredHeight + 15)
off_y = off_y + self.spiritPro.preferredHeight + 10
else
self.line6.gameObject:SetActive(false)
self.spiritName.gameObject:SetActive(false)
self.spiritPro.gameObject:SetActive(false)
end
local show_stone = false
if dynamic and Config.Goodsdecompose[dynamic.type_id] then
show_stone = true
end
if show_stone then
self.line3.localPosition = Vector3(0, -off_y, 0)
off_y = off_y + 30
self.line3.gameObject:SetActive(true)
self.stone_conta.gameObject:SetActive(true)
local height = self:SetDecompose(dynamic)
self.stone_conta.sizeDelta = Vector2(self.stone_conta.sizeDelta.x, height)
self.stone_conta.localPosition = Vector3(self.stone_conta.localPosition.x, -off_y, 0)
off_y = off_y + height + 15
else
self.line3.gameObject:SetActive(false)
self.stone_conta.gameObject:SetActive(false)
end
local show_suit = false
if dynamic then
show_suit = true
end
if show_suit then
self.line4.gameObject:SetActive(true)
self.suitNum.gameObject:SetActive(true)
self.suitName.gameObject:SetActive(true)
self.suitPro.gameObject:SetActive(true)
self.line4.localPosition = Vector3(0, -off_y, 0)
off_y = off_y + 30
self.suitNum.transform.localPosition = Vector3(self.suitNum.transform.localPosition.x, -off_y, 0)
self.suitNum.transform.sizeDelta = Vector2(self.suitNum.transform.sizeDelta.x, self.suitNum.preferredHeight + 15)
self.suitName.transform.localPosition = Vector3(self.suitName.transform.localPosition.x, -off_y, 0)
self.suitName.transform.sizeDelta = Vector2(self.suitName.transform.sizeDelta.x, self.suitName.preferredHeight + 15)
self.suitPro.transform.localPosition = Vector3(self.suitPro.transform.localPosition.x, -off_y, 0)
self.suitPro.transform.sizeDelta = Vector2(self.suitPro.transform.sizeDelta.x, self.suitPro.preferredHeight + 15)
off_y = off_y + self.suitPro.preferredHeight + 15
else
self.line4.gameObject:SetActive(false)
self.suitNum.gameObject:SetActive(false)
self.suitName.gameObject:SetActive(false)
self.suitPro.gameObject:SetActive(false)
end
self.line7.gameObject:SetActive(false)
self.wake_baseName.gameObject:SetActive(false)
self.wake_basePro.gameObject:SetActive(false)
self.line8.gameObject:SetActive(false)
self.wake_strenName.gameObject:SetActive(false)
self.wake_strenPro.gameObject:SetActive(false)
self.line9.gameObject:SetActive(false)
self.wake_suitNum.gameObject:SetActive(false)
self.wake_suitName.gameObject:SetActive(false)
self.wake_suitPro.gameObject:SetActive(false)
self.line10.gameObject:SetActive(false)
self.magic_skillName.gameObject:SetActive(false)
self.magic_skillLevel.gameObject:SetActive(false)
-- if off_y > 451 then
-- self.down_arrow.localPosition = Vector3(150, -621.6, 0)
-- self.sell_conta.localPosition = Vector3(22, -643.5, 0)
-- self.ScrollView.sizeDelta = Vector2(287, 451)
self.ScrollViewContent.sizeDelta = Vector2(self.ScrollViewContent.sizeDelta.x, off_y)
-- self.ScrollViewViewport.sizeDelta = Vector2(276, 451)
-- self.transform.sizeDelta = Vector2(328, 685)
-- self.bg.sizeDelta = Vector2(328, 711)
-- else
-- self.down_arrow.localPosition = Vector3(150, -off_y + self.ScrollView.localPosition.y + 20, 0)
-- self.sell_conta.localPosition = Vector3(22, -off_y + self.ScrollView.localPosition.y, 0)
-- self.ScrollView.sizeDelta = Vector2(287, off_y)
-- self.ScrollViewContent.sizeDelta = Vector2(276, off_y)
-- self.ScrollViewViewport.sizeDelta = Vector2(276, off_y)
-- self.transform.sizeDelta = Vector2(328, off_y - self.ScrollView.localPosition.y + 60)
-- self.bg.sizeDelta = Vector2(328, off_y - self.ScrollView.localPosition.y + 60)
-- end
if self.ScrollViewContent.sizeDelta.y > 451 then
self.down_arrow.gameObject:SetActive(true)
else
self.down_arrow.gameObject:SetActive(false)
end
--[[--小天使小恶魔,位置改变
self.expired_label.gameObject:SetActive(false)
self.descCon.gameObject:SetActive(false)
self.ScrollViewViewport.transform.sizeDelta = Vector2(326, 447)
if self.goods_vo.type==10 and self.goods_vo.subtype==11 then
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
self.bg.sizeDelta = Vector2(335, 507)
self.career_conta.transform.anchoredPosition = Vector3(-61, 394, 0)
self.ScrollView.transform.anchoredPosition = Vector3(-3.5, -165, 0)
self.ScrollViewViewport.transform.sizeDelta = Vector2(326, 136)
self.ui_line1.transform.anchoredPosition = Vector3(113, -115, 0)
self.ui_line2.transform.anchoredPosition = Vector3(110, -253, 0)
self.descCon.transform.anchoredPosition = Vector3(-3.5, -351, 0)
self.descCon.gameObject:SetActive(true)
self.descLabel.text = Trim(basic.intro)
self.getWayLabel.text = Trim(basic.getway)
if self.goods_vo.expire_time then
if self.goods_vo.expire_time == 0 then
self.expired_label.gameObject:SetActive(false)
else
self.expired_label.gameObject:SetActive(true)
local text = ""
if TimeUtil:getServerTime() > self.goods_vo.expire_time then
text = "<color=#de4141>已过期</color>"
else
local time = self.goods_vo.expire_time - TimeUtil:getServerTime()
text = string.format("<color=#ff8a3c>【%s】后过期</color>",TimeUtil:timeConvert6(time))
end
self.expired_label:GetComponent("Text").text = text
self.expired_label.transform.sizeDelta = Vector2(280, 30)
self.expired_label.transform.anchoredPosition = Vector3(114, -96, 0)
end
end
end--]]
end
--设置宝石
function SealCompareTips:SetDecompose(goodsVo)
self.stone_name.text = "分解获得"
local cfg = Config.Goodsdecompose[goodsVo.type_id]
if cfg then
local list = ErlangParser:GetInstance():Parse(cfg.regular_mat)
for i, v in ipairs(list) do
local item = self.seal_item_list[i]
if item == nil then
item = SealToolDecomItem.New(self.stone_conta)
self.seal_item_list[i] = item
end
item:SetData(v)
end
return 25 * #list
end
return 25
end