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