源战役客户端
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.
 
 
 
 
 

275 rivejä
10 KiB

BeastCompareTips = BeastCompareTips or BaseClass(BaseItem)
function BeastCompareTips:__init()
self.base_file = "common"
self.layout_file = "BeastCompareTips"
self.goods_vo = nil
self.model = GoodsModel:getInstance()
self.star_list = {}
self.item_list = {}
self:Load()
end
function BeastCompareTips:__delete()
if self.icon_item then
self.icon_item:DeleteMe()
end
if self.arrowHint then
self.arrowHint:DeleteMe()
self.arrowHint = nil
end
for i,v in ipairs(self.item_list) do
v:DeleteMe()
v = nil
end
self.item_list = {}
if self.expire_label then
lua_viewM:ClearItem(self.expire_label)
self.expire_label = nil
end
end
function BeastCompareTips:Load_callback()
self.bg = self:GetChild("normal/bg")
self.icon_con = self:GetChild("normal/icon_con")
self.nameText = self:GetChild("normal/nameText"):GetComponent("Text")
self.composite_score = self:GetChild("normal/composite_score"):GetComponent("Text")
self.equip_score = self:GetChild("normal/equip_score"):GetComponent("Text")
self.ScrollView = self:GetChild("normal/ScrollView")
self.ScrollViewContent = self:GetChild("normal/ScrollView/Viewport/Content")
self.ScrollViewViewport = self:GetChild("normal/ScrollView/Viewport")
self.line1 = self:GetChild("normal/ScrollView/Viewport/Content/line1")
self.line2 = self:GetChild("normal/ScrollView/Viewport/Content/line2")
self.ui_line2 = self:GetChild("normal/ui_line2")
self.baseName = self:GetChild("normal/ScrollView/Viewport/Content/baseName"):GetComponent("Text")
self.basePro = self:GetChild("normal/ScrollView/Viewport/Content/basePro"):GetComponent("Text")
self.strengthAdd = self:GetChild("normal/ScrollView/Viewport/Content/strengthAdd"):GetComponent("Text")
self.add_name = self:GetChild("normal/ScrollView/Viewport/Content/line2/Text"):GetComponent("Text")
self.addName = self:GetChild("normal/ScrollView/Viewport/Content/addName"):GetComponent("Text")
self.addPro = self:GetChild("normal/ScrollView/Viewport/Content/addPro"):GetComponent("Text")
self.down_arrow = self:GetChild("normal/down_arrow")
self.sell_conta = self:GetChild("normal/sell_conta")
self.sell_icon = self:GetChild("normal/sell_conta/icon"):GetComponent("Image")
self.price_label = self:GetChild("normal/sell_conta/price_label"):GetComponent("Text")
self.info_content = self:GetChild("normal/info_content"):GetComponent("Text")
self.compare_conta = self:GetChild("compare_conta")
self.icon_item = BagIconItem.New(self.icon_con,false,self.layer_name)
self.icon_item:ChangeCountVisible(false)
self:InitEvent()
if self.need_refresh then
self:SetData(self.goods_vo)
end
end
function BeastCompareTips:InitEvent()
end
function BeastCompareTips:SetData(goods_vo)
self.goods_vo = goods_vo
if self.goods_vo == nil then return print("BeastCompareTips里面没有物品数据") end
if self.is_loaded then
if self.goods_vo.expire_time then
if self.goods_vo.expire_time == 0 then
if self.expire_label then
self.expire_label:SetActive(false)
end
else
if not self.expire_label then
self.expire_label = UiFactory.createChild(self.star_conta, UIType.Label2,"expire_label")
self.expire_label.transform.pivot = Vector2(0, 1)
end
self.expire_label: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=#fac090>【%s】后过期</color>",TimeUtil:timeConvert6(time))
end
self.expire_label:GetComponent("Text").text = text
self.expire_label.transform.sizeDelta = Vector2(280, 30)
end
else
if self.expire_label then
self.expire_label:SetActive(false)
end
end
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
if basic then
self.info_content.text = basic.intro
end
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)..">" .. WordManager:GetEquipPrefix(self.dynamic.prefix,"·") .. self.goods_vo.goods_name .. stren .. "</color>"
self.icon_item:SetData(self.goods_vo)
--local star = Config.Equipattr[self.goods_vo.type_id] and Config.Equipattr[self.goods_vo.type_id].star or 0
-- self:CreateStar(star)
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.equip_type)
end
self:SetAddProperty(self.dynamic)
self:Refresh()
--self:ShowReDot()
end
end
GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback)
end
--self:Refresh()
else
self.need_refresh = true
end
end
--设置附加属性
function BeastCompareTips:SetAddProperty(dynamic)
if dynamic and dynamic.equip_extra_attr then
local name_str = ""
local pro_str = ""
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
--刷新相关控件的位置
function BeastCompareTips:Refresh()
if self.goods_vo then
self:RefreshPosAndSize(self.dynamic)
end
end
--设置基础属性
function BeastCompareTips:SetProperty(base_pro, stren, pos)
stren = stren or 0
local stren_config = EquipModel: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 BeastCompareTips:RefreshPosAndSize(dynamic)
local off_y = 0
off_y = self.basePro.preferredHeight + 15
SetSizeDelta(self.baseName.transform, self.baseName.transform.sizeDelta.x, off_y)
SetSizeDelta(self.basePro.transform, self.basePro.transform.sizeDelta.x, off_y)
off_y = off_y + 30
local show_add = false
if dynamic and dynamic.equip_extra_attr and #dynamic.equip_extra_attr > 0 then
show_add = true
end
if show_add then
self.line2.gameObject:SetActive(true)
self.addName.gameObject:SetActive(true)
self.addPro.gameObject:SetActive(true)
SetLocalPosition(self.line2, 0, -off_y)
off_y = off_y + 30
--显示推荐属性
if self.type and self.type == EquipShowTips.EQUIP_RECOMMAND_TARGET then
SetLocalPosition(self.addName.transform, self.addName.transform.localPosition.x, -off_y)
SetLocalPosition(self.addPro.transform, 160, -off_y)
SetSizeDelta(self.addName.transform, 130, self.addName.preferredHeight + 15)
SetSizeDelta(self.addPro.transform, self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15)
else
SetLocalPosition(self.addName.transform, self.addName.transform.localPosition.x, -off_y)
SetLocalPosition(self.addPro.transform, self.addPro.transform.localPosition.x, -off_y)
SetSizeDelta(self.addName.transform, self.addName.transform.sizeDelta.x, self.addName.preferredHeight + 15)
SetSizeDelta(self.addPro.transform, self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15)
end
off_y = off_y + self.addPro.preferredHeight + 10
else
self.line2.gameObject:SetActive(false)
self.addName.gameObject:SetActive(false)
self.addPro.gameObject:SetActive(false)
end
self.max_off = 470 - self.info_content.preferredHeight
SetSizeDelta(self.ScrollViewContent, self.ScrollViewContent.sizeDelta.x, off_y)
if off_y > self.max_off then
--self.down_arrow.gameObject:SetActive(true)
--self.sell_conta.localPosition = Vector3(22, -643.5, 0)
self.arrowHint = self.arrowHint or ArrowHint.New()
self.arrowHint:Init(self, self.ScrollView, self.ScrollViewContent, self.down_arrow, nil, self.layer_name, nil, 0.7)
SetSizeDelta(self.ScrollView, self.ScrollView.sizeDelta.x, self.max_off)
SetSizeDelta(self.ScrollViewViewport, self.ScrollViewViewport.sizeDelta.x, self.max_off)
-- self.transform.sizeDelta = Vector2(328, 685)
SetSizeDelta(self.bg, self.bg.sizeDelta.x, 711)
else
self.stren_y = 451 - off_y
--self.down_arrow.gameObject:SetActive(false)
--self.down_arrow.localPosition = Vector3(self.down_arrow.localPosition.x, -off_y + self.ScrollView.localPosition.y + 20, 0)
--self.sell_conta.localPosition = Vector3(22, -off_y + self.ScrollView.localPosition.y, 0)
SetSizeDelta(self.ScrollView, self.ScrollView.sizeDelta.x, off_y)
SetSizeDelta(self.ScrollViewViewport, self.ScrollViewViewport.sizeDelta.x, off_y)
-- self.transform.sizeDelta = Vector2(328, off_y - self.ScrollView.localPosition.y + 60)
SetSizeDelta(self.bg, self.bg.sizeDelta.x, off_y + self.info_content.preferredHeight + 200)
end
SetLocalPosition(self.down_arrow, self.down_arrow.localPosition.x, -self.ScrollView.sizeDelta.y - 165)
SetLocalPosition(self.info_content.transform, self.info_content.transform.localPosition.x, -self.ScrollView.sizeDelta.y - 180)
SetLocalPosition(self.ui_line2.transform, self.ui_line2.transform.localPosition.x, -self.ScrollView.sizeDelta.y - 185)
end