|
EquipExamUpgradeView = EquipExamUpgradeView or BaseClass(BaseItem)
|
|
local EquipExamUpgradeView = EquipExamUpgradeView
|
|
|
|
local table_insert = table.insert
|
|
|
|
local SCROLLITEM_OFFSET = {
|
|
[0] = 5 - 130,
|
|
[1] = 5 + 500,
|
|
[2] = 5 + 300,
|
|
[3] = 5 + 200,
|
|
[4] = 5,
|
|
}
|
|
function EquipExamUpgradeView:__init()
|
|
self.base_file = "equipCollect"
|
|
self.layout_file = "EquipExamUpgradeView"
|
|
self.model = EquipCollectModel:GetInstance()
|
|
self.equip_model = EquipModel:getInstance()
|
|
self.cur_select_index = 1
|
|
-- self.cur_select_skill = 1
|
|
self:Load()
|
|
end
|
|
|
|
function EquipExamUpgradeView:Load_callback()
|
|
self.nodes = {
|
|
"bg:raw", "item_scroll", "item_scroll/Viewport/item_con", "btn:obj:imgex", "power_text:txt", "btn/btn_text:tmp",
|
|
"btn/btn_red:obj", "skill_con/skill_title_text:tmp", "attr_btn:obj",
|
|
"attr_text1:tmp", "attr_text2:tmp", "light_image:obj", "condition_text:tmp",
|
|
"skill_con:obj", "skill_con/click_con1:obj", "skill_con/skill_image1:img:obj", "skill_con/skill_image2:img:obj",
|
|
"skill_con/select_image1:obj", "skill_con/select_image2:obj", "skill_con/click_con2:obj", "skill_con/skill_text:tmp",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("equipExam_upgrade_bg"),false)
|
|
|
|
self:AddEvents()
|
|
if self.need_refreshData then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
|
|
function EquipExamUpgradeView:AddEvents( )
|
|
--更新星级套装红点
|
|
local function equipStarRedFunc( ... )
|
|
self:UpdateView(true)
|
|
end
|
|
self:BindEvent(EquipModel:getInstance(), EquipModel.INFO_UPDATE, equipStarRedFunc)
|
|
|
|
local function on_click( target )
|
|
if target == self.click_con1_obj then
|
|
if self.is_choice then
|
|
return
|
|
end
|
|
self:SwitchSkill(1)
|
|
elseif target == self.click_con2_obj then
|
|
if self.is_choice then
|
|
return
|
|
end
|
|
self:SwitchSkill(2)
|
|
elseif target == self.btn_obj then
|
|
if self.can_click then
|
|
EquipModel:getInstance():Fire(EquipModel.REQUEST_CCMD_EVENT, 15206, self.cur_select_skill or 0)
|
|
else
|
|
if self.is_active then
|
|
Message.show("当前星级已经激活")
|
|
else
|
|
Message.show("之前还存在未激活的星级,请先激活")
|
|
end
|
|
end
|
|
elseif target == self.attr_btn_obj then
|
|
if self.real_star and self.real_star > 0 then
|
|
self.model:Fire(EquipCollectConst.OPEN_EC_UPGRADE_ATTR_VIEW)
|
|
else
|
|
Message.show("还没激活任何属性哦~")
|
|
end
|
|
end
|
|
end
|
|
AddClickEvent(self.click_con1_obj, on_click)
|
|
AddClickEvent(self.click_con2_obj, on_click)
|
|
AddClickEvent(self.btn_obj, on_click)
|
|
AddClickEvent(self.attr_btn_obj, on_click)
|
|
end
|
|
|
|
function EquipExamUpgradeView:UpdateView(need_scroll_to )
|
|
local cfg_list = Config.Equipmentstartotal
|
|
local list_index = 0
|
|
for k,v in pairsByKeys(cfg_list) do
|
|
list_index = list_index + 1
|
|
v.list_index = list_index
|
|
end
|
|
self.real_star = EquipModel:getInstance().equip_activie_stars--当前激活星级
|
|
self.sum_star = EquipModel:getInstance().equip_sum_stars--可以激活的星级
|
|
self.server_data = self.model:GetEquipExamSkillInfo()
|
|
self.cur_star_lv = 3
|
|
for k,v in pairsByKeys(cfg_list) do
|
|
if v.stars <= self.real_star then
|
|
self.cur_star_lv = v.stars
|
|
else
|
|
break
|
|
end
|
|
end
|
|
--总属性
|
|
if self.real_star == 0 then
|
|
self.power_text_txt.text = 0
|
|
else
|
|
local total_attr = stringtotable(cfg_list[self.cur_star_lv].attr)
|
|
local power = GetFighting(total_attr)
|
|
--以下是算技能战力
|
|
local skill_attr = {}
|
|
for k,v in pairs(self.server_data) do
|
|
if cfg_list[v.id] then
|
|
local skill_data = stringtotable(cfg_list[v.id].branch)
|
|
power = power + GetFighting(skill_data[v.choice][2])
|
|
end
|
|
end
|
|
self.power_text_txt.text = power
|
|
end
|
|
|
|
local next_star = 0
|
|
self.cur_select_data = nil
|
|
self.is_max = false
|
|
for k,v in pairsByKeys(cfg_list) do
|
|
if v.stars > self.real_star then--配置星级大于激活星级并且小于装备总星级
|
|
next_star = v.stars
|
|
self.cur_select_data = v
|
|
break
|
|
end
|
|
end
|
|
if not self.cur_select_data then
|
|
self.next_star = self.equip_model.equip_cfg_max_star
|
|
self.cur_select_data = cfg_list[self.next_star]
|
|
self.cur_select_skill = nil--已经激活
|
|
self.is_max = true
|
|
else
|
|
self.next_star = next_star
|
|
end
|
|
|
|
self.cur_select_index = self.next_star
|
|
|
|
local len = TableSize(cfg_list)
|
|
local item_data = {}
|
|
local count = 1
|
|
for i,v in pairsByKeys(cfg_list) do
|
|
if not item_data[count] then
|
|
item_data[count] = {}
|
|
end
|
|
table_insert(item_data[count], v)
|
|
if v.list_index % 5 == 0 then
|
|
count = count + 1
|
|
end
|
|
end
|
|
|
|
local function on_click( index, data )
|
|
self:SetSelectItem(index,data)
|
|
end
|
|
self.item_list_creator = self.item_list_creator or self:AddUIComponent(UI.ItemListCreator)
|
|
local info = {
|
|
data_list = item_data,
|
|
item_con = self.item_con,
|
|
scroll_view = self.item_scroll,
|
|
item_class = EquipExamUpgradeItem,
|
|
item_width = 784,
|
|
start_x = 0,
|
|
start_y = 0,
|
|
space_x = 0,
|
|
create_frequency = 0.01,
|
|
reuse_item_num = 3,
|
|
on_update_item = function(item, i, v)
|
|
self.last_index = self.cur_index
|
|
self.cur_index = i
|
|
item:SetData(v, i, self.last_index, self.cur_index, len, self.real_star, self.sum_star)
|
|
item:SetCallBackFunc(on_click)
|
|
item:SetSelect(self.cur_select_index)
|
|
end,
|
|
final_callback = function()
|
|
local unit = self.cur_select_data.list_index % 5
|
|
local offset = SCROLLITEM_OFFSET[unit] or 5
|
|
self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_data.list_index/5), offset, {duration = 0.5})
|
|
end,
|
|
}
|
|
self.item_list_creator:UpdateItems(info)
|
|
self:SetSelectItem(self.cur_select_index, self.cur_select_data)
|
|
--[[ local _, unit = math.modf(self.real_star/5)
|
|
if need_scroll_to then
|
|
if unit == 0 then
|
|
print('====a[149] ===111====', data)
|
|
self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5 + 300)
|
|
else
|
|
print('====a[152] =====222==', data)
|
|
self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5)
|
|
end
|
|
-- elseif unit == 0 then
|
|
-- print('====a[156] ===333====', data)
|
|
-- self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5 + 300)
|
|
-- elseif unit == 2 then
|
|
-- print('====a[156] ===4444====', data)
|
|
-- self.item_list_creator:ScrollToItem(math.ceil(self.cur_select_index/5), 5)
|
|
end--]]
|
|
end
|
|
|
|
function EquipExamUpgradeView:SetSelectItem(index, data)
|
|
if self.cur_select_data.list_index % 5 ~= 0 then
|
|
self.cur_select_skill = nil
|
|
end
|
|
self.cur_select_index = index
|
|
self.cur_select_data = data
|
|
self.item_list_creator:IterateItems(function ( item )
|
|
item:SetSelect(self.cur_select_index)
|
|
end)
|
|
if self.cur_select_data.list_index % 5 == 0 then
|
|
self:SwitchSkill(self.cur_select_skill)
|
|
else
|
|
self:UpdateBottomInfo()
|
|
end
|
|
end
|
|
|
|
function EquipExamUpgradeView:SwitchSkill( index )
|
|
self.cur_select_skill = index
|
|
for i=1,2 do
|
|
self["select_image"..i.."_obj"]:SetActive(i == self.cur_select_skill and not self.is_max)
|
|
end
|
|
self:UpdateBottomInfo()
|
|
end
|
|
|
|
function EquipExamUpgradeView:UpdateBottomInfo( )
|
|
local is_skill_node = self.cur_select_data.list_index % 5 == 0
|
|
local attr_data = is_skill_node and stringtotable(self.cur_select_data.branch) or stringtotable(self.cur_select_data.stage_attr)
|
|
self.skill_con_obj:SetActive(is_skill_node and not self.is_max)
|
|
if is_skill_node then
|
|
local data = self.model:GetEquipExamSkillInfo()
|
|
if data[self.cur_select_data.stars] then--如果是已经激活了的
|
|
self.is_choice = true
|
|
self.cur_select_skill = data[self.cur_select_data.stars].choice
|
|
local skill_data = attr_data[self.cur_select_skill]
|
|
for i=1,2 do
|
|
lua_resM:setImageSprite(self,self["skill_image"..i.."_img"], "equipExam_asset", attr_data[i][3])
|
|
self["skill_image"..i.."_obj"]:SetActive(true)
|
|
self["select_image"..i.."_obj"]:SetActive(i == self.cur_select_skill)
|
|
end
|
|
for i=1,2 do
|
|
if attr_data[self.cur_select_skill][2][i] then
|
|
local attr_name = WordManager:GetProperties(skill_data[2][i][1])
|
|
local attr_value = WordManager:GetPropertyValue(skill_data[2][i][1],skill_data[2][i][2])
|
|
self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
|
|
self.skill_text_tmp.text = string.format("%s:%s", attr_name, attr_value)
|
|
else
|
|
self["attr_text"..i.."_tmp"].text = ""
|
|
end
|
|
end
|
|
self.skill_title_text_tmp.text = "已选择技能"
|
|
else
|
|
self.is_choice = false
|
|
for i=1,2 do
|
|
lua_resM:setImageSprite(self,self["skill_image"..i.."_img"], "equipExam_asset", attr_data[i][3])
|
|
self["skill_image"..i.."_obj"]:SetActive(true)
|
|
end
|
|
if self.cur_select_skill then
|
|
local skill_data = attr_data[self.cur_select_skill]
|
|
for i=1,2 do
|
|
if attr_data[self.cur_select_skill][2][i] then
|
|
local attr_name = WordManager:GetProperties(skill_data[2][i][1])
|
|
local attr_value = WordManager:GetPropertyValue(skill_data[2][i][1],skill_data[2][i][2])
|
|
self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
|
|
self.skill_text_tmp.text = string.format("%s:%s", attr_name, attr_value)
|
|
else
|
|
self["attr_text"..i.."_tmp"].text = ""
|
|
end
|
|
end
|
|
else
|
|
self.attr_text1_tmp.text = ""
|
|
self.attr_text2_tmp.text = ""
|
|
self.skill_text_tmp.text = "选择后查看属性"
|
|
end
|
|
self.skill_title_text_tmp.text = "请选择技能"
|
|
end
|
|
|
|
else
|
|
for i=1,2 do
|
|
if attr_data[i] then
|
|
local attr_name = WordManager:GetProperties(attr_data[i][1])
|
|
local attr_value = WordManager:GetPropertyValue(attr_data[i][1],attr_data[i][2])
|
|
self["attr_text"..i.."_tmp"].text = string.format("%s:%s", attr_name, attr_value)
|
|
else
|
|
self["attr_text"..i.."_tmp"].text = ""
|
|
end
|
|
self["skill_image"..i.."_obj"]:SetActive(false)
|
|
self["select_image"..i.."_obj"]:SetActive(false)
|
|
end
|
|
end
|
|
local color_str = ColorUtil.RED_DARK
|
|
if self.sum_star >= self.cur_select_data.stars then
|
|
color_str = ColorUtil.GREEN_DARK
|
|
end
|
|
local str = string.format("穿戴装备累计 %s 星共鸣(%s/%s)", self.cur_select_data.stars, HtmlColorTxt(self.sum_star, color_str), self.cur_select_data.stars)
|
|
self.condition_text_tmp.text = str
|
|
self.can_click = self.cur_select_index == self.next_star and not self.is_max
|
|
self.is_active = self.cur_select_index < self.next_star or self.is_max
|
|
if self.cur_select_index == self.next_star and not self.is_max then--可操作激活
|
|
self.btn_red_obj:SetActive(self.sum_star >= self.cur_select_data.stars)
|
|
self.btn_imgex.gray = self.sum_star < self.cur_select_data.stars
|
|
self.btn_text_tmp.text = "激活"
|
|
SetTMPSharedMaterial(self.btn_text_tmp, self.sum_star >= self.cur_select_data.stars and ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn or ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
|
|
elseif self.cur_select_index < self.next_star or self.is_max then--已激活
|
|
self.btn_text_tmp.text = "已激活"
|
|
SetTMPSharedMaterial(self.btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
|
|
self.btn_imgex.gray = true
|
|
self.btn_red_obj:SetActive(false)
|
|
else
|
|
self.btn_text_tmp.text = "激活"
|
|
SetTMPSharedMaterial(self.btn_text_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
|
|
self.btn_imgex.gray = true
|
|
self.btn_red_obj:SetActive(false)
|
|
end
|
|
end
|
|
|
|
function EquipExamUpgradeView:SetData( data )
|
|
self.data = data
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
self:UpdateView()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function EquipExamUpgradeView:__delete( )
|
|
|
|
end
|