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

574 lines
21 KiB

HorseEquipCompareTips = HorseEquipCompareTips or BaseClass(BaseItem)
function HorseEquipCompareTips:__init()
self.base_file = "common"
self.layout_file = "EquipCompareTips"
self.goods_vo = nil
self.show_wake_suit = false
self.model = GoodsModel:getInstance()
self.horseModel = HorseModel:getInstance()
self.is_set_zdepth = true
self.star_list = {}
self.item_list = {}
self.fumo_item_list = {}
self.stone_item_list = {}
self:Load()
end
function HorseEquipCompareTips:__delete()
if self.arrowHint then
self.arrowHint:DeleteMe()
self.arrowHint = nil
end
if self.icon_item then
self.icon_item:DeleteMe()
end
for i,v in ipairs(self.item_list) do
v:DeleteMe()
v = nil
end
self.item_list = {}
for i,v in ipairs(self.fumo_item_list) do
v:DeleteMe()
v = nil
end
self.fumo_item_list = {}
for i, v in ipairs(self.stone_item_list) do
v:DeleteMe()
v = nil
end
self.stone_item_list = {}
if self.expire_label then
lua_viewM:ClearItem(self.expire_label)
self.expire_label = nil
end
if self.update_equip_combat_id then
self.horseModel:UnBind(self.update_equip_combat_id)
self.update_equip_combat_id = nil
end
end
function HorseEquipCompareTips:Load_callback()
self.step_bg,self.sell_icon,
self.wear_icon
= GetChildImages(self.transform,
{
"normal/setp_bg","normal/sell_conta/icon",
"normal/wear_icon",
})
self.bg,self.career_conta,self.descCon,self.expired_label,self.sell_conta,
self.icon_con,self.star_conta,self.ScrollView,
self.ScrollViewContent,self.ScrollViewViewport,
self.line1,self.line2,
self.line3,self.line4,
self.line5,self.line6,
self.line7,self.line8,
self.line9,self.line10,
self.stone_conta,self.down_arrow
= GetChildTransforms(self.transform,
{
"normal/bg","normal/career_conta","normal/descCon","normal/expired_label","normal/sell_conta",
"normal/icon_con","normal/star_conta","normal/ScrollView",
"normal/ScrollView/Viewport/Content","normal/ScrollView/Viewport",
"normal/ScrollView/Viewport/Content/line1","normal/ScrollView/Viewport/Content/line2",
"normal/ScrollView/Viewport/Content/line3","normal/ScrollView/Viewport/Content/line4",
"normal/ScrollView/Viewport/Content/line5","normal/ScrollView/Viewport/Content/line6",
"normal/ScrollView/Viewport/Content/line7","normal/ScrollView/Viewport/Content/line8",
"normal/ScrollView/Viewport/Content/line9","normal/ScrollView/Viewport/Content/line10",
"normal/ScrollView/Viewport/Content/stone_conta","normal/down_arrow"
})
self.descLabel,self.getWayLabel,self.nameText,
self.step_num,self.composite_score,self.equip_score,
self.career,self.level,self.equip_pos,self.fight,
self.base_name,self.baseName,
self.basePro,self.strengthAdd,
self.add_name,self.addName,
self.addPro,self.wash_name,
self.washName,self.washPro,
self.spirit_name,self.spiritName,
self.spiritPro,self.stone_name,
self.suit_name,self.suitNum,
self.suitName,self.suitPro,
self.suitNameList,
self.wake_base_name,self.wake_baseName,
self.wake_basePro,self.wake_baseAdd,
self.wake_stren_name,self.wake_strenName,
self.wake_strenPro,self.wake_strenAdd,
self.wake_suit_name,self.wake_suitNum,
self.wake_suitName,self.wake_suitPro,
self.wake_suitAdd,self.magic_skill_name,
self.magic_skillName,self.magic_skillLevel,
self.price_label
= GetChildTexts(self.transform,
{
"normal/descCon/descLabel","normal/descCon/getWayLabel","normal/nameText",
"normal/step_num","normal/composite_score","normal/equip_score",
"normal/career_conta/career","normal/level","normal/career_conta/equip_pos","normal/fight",
"normal/ScrollView/Viewport/Content/line1/Text","normal/ScrollView/Viewport/Content/baseName",
"normal/ScrollView/Viewport/Content/basePro","normal/ScrollView/Viewport/Content/strengthAdd",
"normal/ScrollView/Viewport/Content/line2/Text","normal/ScrollView/Viewport/Content/addName",
"normal/ScrollView/Viewport/Content/addPro","normal/ScrollView/Viewport/Content/line5/Text",
"normal/ScrollView/Viewport/Content/washName","normal/ScrollView/Viewport/Content/washPro",
"normal/ScrollView/Viewport/Content/line6/Text","normal/ScrollView/Viewport/Content/spiritName",
"normal/ScrollView/Viewport/Content/spiritPro","normal/ScrollView/Viewport/Content/line3/Text",
"normal/ScrollView/Viewport/Content/line4/Text","normal/ScrollView/Viewport/Content/suitNum",
"normal/ScrollView/Viewport/Content/suitName","normal/ScrollView/Viewport/Content/suitPro",
"normal/ScrollView/Viewport/Content/suitNameList",
"normal/ScrollView/Viewport/Content/line7/Text","normal/ScrollView/Viewport/Content/wakeBaseName",
"normal/ScrollView/Viewport/Content/wakeBasePro","normal/ScrollView/Viewport/Content/wakeBaseAdd",
"normal/ScrollView/Viewport/Content/line8/Text","normal/ScrollView/Viewport/Content/wakeStrenName",
"normal/ScrollView/Viewport/Content/wakeStrenPro","normal/ScrollView/Viewport/Content/wakeStrenAdd",
"normal/ScrollView/Viewport/Content/line9/Text","normal/ScrollView/Viewport/Content/wakeSuitNum",
"normal/ScrollView/Viewport/Content/wakeSuitName","normal/ScrollView/Viewport/Content/wakeSuitPro",
"normal/ScrollView/Viewport/Content/wakeSuitAdd","normal/ScrollView/Viewport/Content/line10/Text",
"normal/ScrollView/Viewport/Content/magicSkillName","normal/ScrollView/Viewport/Content/magicSkillLevel",
"normal/sell_conta/price_label"
})
self.stageBg,
self.step_num_obj,
self.text1_obj,
self.text2_obj
= GetChildGameObjects(self.transform,
{
"normal/stageBg",
"normal/step_num",
"normal/Text1",
"normal/Text2",
})
self.careerName
= GetChildTexts(self.transform,
{
"normal/career_conta/careerName",
})
self.careerName.text = "品质:"
self.stageBg:SetActive(false)
self.step_num_obj:SetActive(false)
-- self.text1_obj:SetActive(false)
self.text1_obj.transform:GetComponent("Text").text = "部位:"
self.text2_obj.transform:GetComponent("Text").text = "评分:"
-- self.equip_score.gameObject:SetActive(false)
-- self.text2_obj:SetActive(false)
self.icon_item = HorseBagIconItem.New(self.icon_con,false, self.layer_name)
self.icon_item:ChangeCountVisible(false)
-- self.level.gameObject:SetActive(false)
self:InitEvent()
if self.need_refresh then
self:SetData(self.goods_vo, self.view_type)
end
end
function HorseEquipCompareTips:InitEvent()
--更新装备的战力
local function onUpdateCombat(vo)
if vo.goods_id == self.goods_vo.goods_id then
self.level_vo = vo
-- self:SetCombat(vo, self.view_type)
if self.goods_vo then
basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
end
if basic then
local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist)
self:SetProperty(base_pro, self.dynamic.stren, basic.equip_type)
end
self.composite_score.text = self:GetFightList(self.dynamic, basic)
self:SetAddProperty(self.dynamic)
self:RefreshPosAndSize(self.dynamic)
end
end
self.update_equip_combat_id = self.horseModel:Bind(HorsePetEvent.SHOW_HORSE_UPGRADE, onUpdateCombat)
end
function HorseEquipCompareTips:SetData(goods_vo, view_type)
self.goods_vo = goods_vo
self.view_type = view_type
-- self.horseModel:Fire(HorsePetEvent.REQUEST_HORSE_UPGRADE, self.goods_vo.cell)
if self.goods_vo == nil then return print("EquipCompareTips里面没有物品数据") end
if self.is_loaded then
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:GetEquipPrefixByColor(self.goods_vo.color) .. self.goods_vo.goods_name .. stren .. "</color>"
-- local step_str = WordManager:GetEquipStepNum(self.goods_vo.type_id)
-- self.step_num.text = "<color="..WordManager.GetGoodsColor(self.dynamic.color)..">" .. step_str .. "</color>"
-- lua_resM:setImageSprite(self, self.step_bg, "uiComponent_asset", "tsui_pj_"..self.dynamic.color)
-- lua_resM:setImageSprite(self, self.step_bg, "uiComponent_asset", "tsui_pj_"..WordManager:GetEquipStepOnlyNum(self.goods_vo.type_id))
self.icon_item:SetData(self.goods_vo)
-- self.composite_score.text = self.dynamic.overall_rating
if self.view_type == 1 then -- 装备打造中 打造成功后的 装备对比
lua_resM:setImageSprite(self, self.wear_icon, "uiComponent_asset", "tsui_dzq")
-- self:SetCombat(nil, self.view_type)
local basic = nil
if self.goods_vo then
basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
end
if basic then
local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist)
self:SetProperty(base_pro, dynamic.stren, basic.equip_type)
end
self.composite_score.text = self:GetFightList(self.dynamic, basic)
else -- 装备穿着中 新的数据 和旧的数据的对比
self.horseModel:Fire(HorsePetEvent.REQUEST_HORSE_UPGRADE, self.goods_vo.cell)
end
-- self.equip_score.text = self.dynamic.rating
-- self.level.text = "<color=#ffffff>"..self.dynamic.rating.."</color>"
self.equip_score.text = "<color=#ffffff>"..self.dynamic.rating.."</color>"
-- local basic = nil
-- if self.goods_vo then
-- basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
-- end
-- if basic then
-- local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist)
-- self:SetProperty(base_pro, dynamic.stren, basic.equip_type)
self.fight.text = dynamic.combat_power or 0
-- end
self:SetAddProperty(self.dynamic)
self:RefreshPosAndSize(self.dynamic)
-- self:SetWashProperty(self.dynamic)
-- self:SetSpiritProperty(self.dynamic)
-- if self.dynamic.suit_lv and self.dynamic.suit_lv > 0 then
-- self:SetSuitProperty(self.dynamic, self.goods_vo.equip_type)
-- end
-- if self.dynamic.awakening_lv and self.dynamic.awakening_lv > 0 then
-- self:SetWakeProperty(self.dynamic)
-- end
-- if self.dynamic.equip_skill_lv and self.dynamic.equip_skill_lv > 0 then
-- self:SetMagicSKill(self.dynamic)
-- end
-- self:Refresh()
--self:ShowReDot()
end
end
GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback)
end
local cfg = self.horseModel:GetHorseEquipAttrCfg(self.goods_vo.type_id)
if cfg then
local quality_cfg = Config.ConfigQualityName.HorseEquipQualityName[cfg.quality]
if quality_cfg then
self.career.text = quality_cfg.name
end
self.nameText.text = "<color="..WordManager.GetGoodsColor(cfg.quality)..">"..self.goods_vo.goods_name.."</color>"
end
local equip_info = self.horseModel:GetHorseEquipCfg()
if cfg and equip_info then
for k,v in pairs(equip_info) do
if v and v.equip_type and cfg.pos and v.equip_type == cfg.pos then
local str = Trim(v.pos_name)
-- local str_arr = Split(self.goods_vo.goods_name, "·")
-- self.level.text = str_arr[#str_arr]
self.level.text = str
end
end
end
self:SetBtns()
else
self.need_refresh = true
end
end
--设置战力 穿戴状态 打造完成后的旧数据状态
function HorseEquipCompareTips:SetCombat(vo, view_type)
if view_type then
if view_type == 2 then --穿戴中的 战力显示为 评分加战力
if vo then
if not self.cell then
self.cell = self.horseModel:GetEquipWearPos(self.goods_vo.type_id)
end
local cfg = self.horseModel:GetHorseEquipLvCfg(self.cell, vo.lv)
if cfg then
local grade = self.horseModel:GetHorseEquipAttrCfg(self.goods_vo.type_id).base_rating
self.composite_score.text = cfg.combat + grade
end
end
elseif view_type == 1 then --打造成功后的旧数据 直接显示为评分
self.composite_score.text = self.horseModel:GetHorseEquipAttrCfg(self.goods_vo.type_id).base_rating
end
end
end
function HorseEquipCompareTips:GetFightList(dynamic, basic)
local list = {}
if basic then
--基础属性
local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist)
if self.view_type == 2 then --穿戴
--升级
local cfg = self.horseModel:GetHorseEquipLvCfg(self.goods_vo.cell, self.level_vo.lv)
local equip_pro = ErlangParser:GetInstance():Parse(cfg.attr)
for k,v in pairs(base_pro) do
local next_attr = {}
local next_prop = WordManager:GetPropertyValue(tonumber(v[1]),tonumber(v[2]))
for i,j in pairs(equip_pro) do
if tonumber(j[1]) == tonumber(v[1]) then
next_prop = tonumber(next_prop) + tonumber(j[2])
next_attr.attr_id = tonumber(v[1])
next_attr.attr_val = next_prop
end
end
table.insert(list, next_attr)
end
else
for i,v in ipairs(base_pro) do
table.insert(list,{attr_id = v[1],attr_val = v[2]})
end
end
end
--极品属性
for i,v in ipairs(dynamic.equip_extra_attr) do
table.insert(list,{attr_id = v.attr_id,attr_val = v.attr_val})
end
local AllProList = {}
local tempList = {}
local mainVo = RoleManager.Instance.mainRoleInfo
for i,v in ipairs(list) do
local cfg = Config.ConfigAttributeAddition[v.attr_id]
if cfg then
local val = v.attr_val * mainVo[cfg.baseAttrVo] / 10000
table.insert(tempList,{attr_id = cfg.baseAttr,attr_val = val})
else
table.insert(AllProList,v)
end
end
for i,v in ipairs(tempList) do
table.insert(AllProList,v)
end
local endList = {}
for i,v in ipairs(AllProList) do
table.insert(endList,{[1] = v.attr_id,[2] = v.attr_val})
end
return GetFighting(endList)
end
--设置基础属性
function HorseEquipCompareTips: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 prop
-- local pro_list = {}
-- if stren_config and Trim(stren_config.attr_list) ~= "[]" then
-- pro_list = ErlangParser:GetInstance():Parse(stren_config.attr_list)
-- end
local equip_pro
local next_equip_pro
if self.view_type == 2 and self.level_vo then
local cfg = self.horseModel:GetHorseEquipLvCfg(self.goods_vo.cell, self.level_vo.lv)
equip_pro = ErlangParser:GetInstance():Parse(cfg.attr)
-- next_equip_pro = ErlangParser:GetInstance():Parse(self.horseModel:GetHorseEquipLvCfg(self.goods_vo.cell, (self.level_vo.lv+1)).attr)
end
for i,v in ipairs(base_pro) do
name_str = name_str .. WordManager:GetProperties(tonumber(v[1]))
prop = WordManager:GetPropertyValue(tonumber(v[1]),tonumber(v[2]))
if equip_pro and #equip_pro > 0 then
for x,y in pairs(equip_pro) do
if y[1] == v[1] then
prop = tonumber(prop) + tonumber(y[2])
stren_str = stren_str.."(强化+"..y[2]..")"
end
end
end
pro_str = pro_str.."+" .. prop--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 .. "(强化+" .. v2[2] .. ")"
-- end
-- end
-- if self.view_type == 2 then
-- stren_str = stren_str .. "(升级+" .. 0 .. ")"
-- 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 = "<color="..ColorUtil.GREEN..">"..stren_str.."</color>"
local off_y = 0
local line_y = 39
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)
SetSizeDelta(self.strengthAdd.transform, self.strengthAdd.transform.sizeDelta.x, off_y)
end
--设置附加属性
function HorseEquipCompareTips:SetAddProperty(dynamic)
if dynamic and dynamic.equip_extra_attr then
local equip_extra_attr = nil
equip_extra_attr = self.horseModel:SortEquipAttr(dynamic.equip_extra_attr)
local name_str = ""
local pro_str = ""
if equip_extra_attr then
for i,v in ipairs(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 < #equip_extra_attr then
name_str = name_str .. "\n"
pro_str = pro_str .. "\n"
end
end
end
self.addName.text = name_str
self.addPro.text = pro_str
SetSizeDelta(self.addName.transform, 130, self.addName.preferredHeight + 15)
SetSizeDelta(self.addPro.transform, self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15)
end
end
--按钮显示
function HorseEquipCompareTips:SetBtns()
self.line3.gameObject:SetActive(false)
self.line4.gameObject:SetActive(false)
self.line5.gameObject:SetActive(false)
self.line6.gameObject:SetActive(false)
self.line7.gameObject:SetActive(false)
self.line8.gameObject:SetActive(false)
self.line9.gameObject:SetActive(false)
self.line10.gameObject:SetActive(false)
self.washName.gameObject:SetActive(false)
self.washPro.gameObject:SetActive(false)
self.spiritName.gameObject:SetActive(false)
self.spiritPro.gameObject:SetActive(false)
self.stone_conta.gameObject:SetActive(false)
self.suitNum.gameObject:SetActive(false)
self.suitName.gameObject:SetActive(false)
self.suitPro.gameObject:SetActive(false)
self.suitNameList.gameObject:SetActive(false)
self.wake_baseName.gameObject:SetActive(false)
self.wake_basePro.gameObject:SetActive(false)
self.wake_baseAdd.gameObject:SetActive(false)
self.wake_strenName.gameObject:SetActive(false)
self.wake_strenPro.gameObject:SetActive(false)
self.wake_strenAdd.gameObject:SetActive(false)
self.wake_suitNum.gameObject:SetActive(false)
self.wake_suitName.gameObject:SetActive(false)
self.wake_suitPro.gameObject:SetActive(false)
self.wake_suitAdd.gameObject:SetActive(false)
self.magic_skillName.gameObject:SetActive(false)
self.magic_skillLevel.gameObject:SetActive(false)
self.expired_label.gameObject:SetActive(false)
self.descCon.gameObject:SetActive(false)
end
-- function HorseEquipCompareTips:SetCombat(vo)
-- if vo then
-- local cfg = self.horseModel:GetHorseEquipLvCfg(self.goods_vo.cell, vo.lv)
-- if cfg then
-- local grade = self.horseModel:GetHorseEquipAttrCfg(self.goods_vo.type_id).base_rating
-- self.composite_score.text = cfg.combat + grade
-- end
-- end
-- end
--计算父物体大小
function HorseEquipCompareTips:CalculateSize( dynamic )
local off_y = 0
local line_y = 39
off_y = self.basePro.preferredHeight + 15
off_y = off_y + line_y
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
off_y = off_y + line_y
off_y = off_y + self.addPro.preferredHeight + 10
end
SetSizeDelta(self.ScrollViewContent, self.ScrollViewContent.sizeDelta.x, off_y)
end
--更新各个控件的位置
function HorseEquipCompareTips:RefreshPosAndSize(dynamic)
self.gameObject:SetActive(true)
self:CalculateSize(dynamic)
-- SetSizeDelta(self.ScrollViewContent, 326, 184)
local off_y = 0
local line_y = 39
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)
SetSizeDelta(self.strengthAdd.transform, self.strengthAdd.transform.sizeDelta.x, off_y)
off_y = off_y + line_y
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)
self.line2.localPosition = Vector3(0, -off_y, 0)
off_y = off_y + line_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)
SetLocalPosition(self.addName.transform, self.addName.transform.localPosition.x, -off_y)
SetLocalPosition(self.addPro.transform, self.addPro.transform.localPosition.x, -off_y)
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
SetSizeDelta(self.ScrollViewContent, self.ScrollViewContent.sizeDelta.x, off_y)
SetSizeDelta(self.ScrollView, self.ScrollView.sizeDelta.x, off_y)
SetSizeDelta(self.ScrollViewViewport, self.ScrollViewViewport.sizeDelta.x, off_y)
SetSizeDelta(self.bg, self.bg.sizeDelta.x, off_y - self.ScrollView.localPosition.y + 15)
end