|
|
- --装备对比的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
|