|
|
- 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
|