PetDiamondComposeView = PetDiamondComposeView or BaseClass(BaseView) local PetDiamondComposeView = PetDiamondComposeView function PetDiamondComposeView:__init() self.base_file = "pet" self.layout_file = "PetDiamondComposeView" self.layer_name = "Activity" self.destroy_imm = true self.use_background = true self.change_scene_close = true self.hide_maincancas = false --是否隐藏主界面 self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.is_set_zdepth = true self.cur_select_index = 1 self.cur_select_compose_data = nil self.model = PetModel:getInstance() self.current_race_tab = 1 self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function PetDiamondComposeView:Open(index) self.current_race_tab = index or 1 BaseView.Open(self) end function PetDiamondComposeView:LoadSuccess() local nodes = { "tabCon/raceBtn2:img:obj", "tabCon/raceBtn3:img:obj", "tabCon/raceBtn1:img:obj", "ScrollView", "ScrollView/Viewport/Content", "composeAllBtn:obj:img", "composeBtn:obj:img", "composeBtn/composeText:tmp", "composeAllBtn/composeAllText:tmp", "composeCon:obj", "composeCon/targetAwardCon", "composeCon/materialCon1", "composeCon/materialCon2", "composeCon/materialCon3", "tabCon/raceBtn2/raceText2:tmp", "tabCon/raceBtn3/raceText3:tmp", "tabCon/raceBtn1/raceText1:tmp", "tabCon/raceBtn1/raceRed1:obj", "tabCon/raceBtn2/raceRed2:obj", "tabCon/raceBtn3/raceRed3:obj", "composeBtn/composeRed:obj", "composeAllBtn/composeAllRed:obj", } self:GetChildren(nodes) local close_callback = function() self:Close() end self.tabWindowComponent = UITabWindow.New(self.transform, nil, nil, close_callback, self.background_wnd, self.transform,UITabWindow.SizeSmallNoTab,nil,nil,nil) self.tabWindowComponent:SetBackgroundRes("pet_diamond_compose_bg") self.tabWindowComponent:SetTitleText("宠物宝石合成") self.target_award_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.targetAwardCon) self.target_award_item:SetItemSize(78,78) self.target_award_item:SetAnchoredPosition(0,0) self.material_award_item_1 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.materialCon1) self.material_award_item_1:SetItemSize(78,78) self.material_award_item_1:SetAnchoredPosition(0,0) self.material_award_item_2 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.materialCon2) self.material_award_item_2:SetItemSize(78,78) self.material_award_item_2:SetAnchoredPosition(0,0) self.material_award_item_3 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.materialCon3) self.material_award_item_3:SetItemSize(78,78) self.material_award_item_3:SetAnchoredPosition(0,0) end function PetDiamondComposeView:AddEvent() local on_click = function ( click_obj ) if self.raceBtn1_obj == click_obj then self:SwitchTab(1,nil,true) elseif self.raceBtn2_obj == click_obj then self:SwitchTab(2,nil,true) elseif self.raceBtn3_obj == click_obj then self:SwitchTab(3,nil,true) elseif self.composeAllBtn_obj == click_obj then if self.cur_select_compose_data then self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16318,2,self.cur_select_compose_data.stone_id) end elseif self.composeBtn_obj == click_obj then if self.cur_select_compose_data then self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16318,1,self.cur_select_compose_data.stone_id) end end end AddClickEvent(self.raceBtn1_obj, on_click) AddClickEvent(self.raceBtn2_obj, on_click) AddClickEvent(self.raceBtn3_obj, on_click) AddClickEvent(self.composeAllBtn_obj, on_click) AddClickEvent(self.composeBtn_obj, on_click) --刷新宝石数量时 local update_feed_goods_num = function(goods_sub_type) if not self.is_loaded then return end if goods_sub_type == 3 then self:UpdateMaterialCon() end end self:BindEvent(self.model, PetConst.UPDATE_PET_GOODS_NUM, update_feed_goods_num) local function onRefreshRed(red_type) if not self.is_loaded then return end if red_type == PetConst.RED_DOT_TYPE.DiamondCompose then self:UpdateTabRed() self:UpdateComposeBtnRed() end end self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, onRefreshRed) end function PetDiamondComposeView:OpenSuccess() self:UpdateView() end function PetDiamondComposeView:UpdateView( ) local red_list = self.model:GetPetDiamnondComposeRedList() local compose_diamond_list = {} local jump_tab = 1 local jump_item_index = 1 for tab_index=1,3 do compose_diamond_list = self.model:GetPetDiamondComposeCfgByRace(tab_index) local need_break = false for i,v in ipairs(compose_diamond_list) do if red_list[v.stone_id] then jump_tab = tab_index jump_item_index = i need_break = true break end end if need_break then break end end self:SwitchTab(jump_tab,jump_item_index) self:UpdateTabRed() self:UpdateComposeBtnRed() end function PetDiamondComposeView:UpdateTabRed( ) local red_list = self.model:GetPetDiamnondComposeRedList() local compose_diamond_list = {} for tab_index=1,3 do local tab_red = false compose_diamond_list = self.model:GetPetDiamondComposeCfgByRace(tab_index) for i,v in ipairs(compose_diamond_list) do if red_list[v.stone_id] then tab_red = true break end end self["raceRed"..tab_index.."_obj"]:SetActive(tab_red) end end function PetDiamondComposeView:UpdateComposeBtnRed( ) local red_list = self.model:GetPetDiamnondComposeRedList() if not self.cur_select_compose_data then self.composeRed_obj:SetActive(false) self.composeAllRed_obj:SetActive(false) SetImageGray(self.composeAllBtn_img,true) SetImageGray(self.composeBtn_img,true) SetTMPSharedMaterial(self.composeAllText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) SetTMPSharedMaterial(self.composeText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) return end if red_list[self.cur_select_compose_data.stone_id] then self.composeRed_obj:SetActive(true) self.composeAllRed_obj:SetActive(true) SetImageGray(self.composeAllBtn_img,false) SetImageGray(self.composeBtn_img,false) SetTMPSharedMaterial(self.composeAllText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkBlueBtn) SetTMPSharedMaterial(self.composeText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn) else self.composeRed_obj:SetActive(false) self.composeAllRed_obj:SetActive(false) SetImageGray(self.composeAllBtn_img,true) SetImageGray(self.composeBtn_img,true) SetTMPSharedMaterial(self.composeAllText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) SetTMPSharedMaterial(self.composeText_tmp, ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn) end end function PetDiamondComposeView:SwitchTab(index,jump_item_index,need_check_jump_item_index) self.cur_select_index = jump_item_index and jump_item_index or 1 if need_check_jump_item_index then local red_list = self.model:GetPetDiamnondComposeRedList() local compose_diamond_list = {} -- for tab_index=1,3 do compose_diamond_list = self.model:GetPetDiamondComposeCfgByRace(index) local need_break = false for i,v in ipairs(compose_diamond_list) do if red_list[v.stone_id] then self.cur_select_index = i need_break = true break end end -- if need_break then break end -- end end for i=1,3 do if i == index then lua_resM:setImageSprite(self, self["raceBtn"..i.."_img"], "pet_asset","pet_compose_tab") self["raceText"..i.."_tmp"].color = ColorUtil:ConvertHexToRGBColor("ffffff") SetTMPSharedMaterial(self["raceText"..i.."_tmp"], ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab) else lua_resM:setImageSprite(self, self["raceBtn"..i.."_img"], "uiComponent_asset","com_empty") self["raceText"..i.."_tmp"].color = ColorUtil:ConvertHexToRGBColor("9eb3cf") SetTMPSharedMaterial(self["raceText"..i.."_tmp"], ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault) end end self.diamond_list = self.model:GetPetDiamondComposeCfgByRace(index) if not self.item_list_com then self.item_list_com = self:AddUIComponent(UI.ItemListCreator) end self.item_list_com:Reset() local function load_all_callback( ) self.item_list_com:IterateItems(function ( item ) item:SetSelect(self.cur_select_index,true) end) self.item_list_com:ScrollToItem(self.cur_select_index,-30,false) end local function select_callback(compose_item_index,compose_item_data) self:OnSelectComposeItem(compose_item_index,compose_item_data) end local info = { data_list = self.diamond_list, item_con = self.Content, item_class = PetDiamondComposeItem, -- item_width = 111, item_height = 98, space_x = 0, space_y = 3, start_x = 7.5, start_y = -7.5, scroll_view = self.ScrollView, -- create_frequency = 0.01, final_callback = load_all_callback, on_update_item = function(item, i, v) item:SetData(v,i,select_callback) item:SetSelect(self.cur_select_index) end, } self.item_list_com:UpdateItems(info) select_callback(self.cur_select_index,self.diamond_list[self.cur_select_index]) end function PetDiamondComposeView:OnSelectComposeItem(compose_item_index,compose_item_data) self.cur_select_index = compose_item_index self.cur_select_compose_data = compose_item_data self.item_list_com:IterateItems(function ( item ) item:SetSelect(self.cur_select_index) end) self:UpdateComposeBtnRed() if not self.cur_select_compose_data then return end self:UpdateMaterialCon() end function PetDiamondComposeView:UpdateMaterialCon( ) if not self.cur_select_compose_data then return end self.target_award_item:SetData(self.cur_select_compose_data.stone_id,0) local material_stone_id = stringtotable(self.cur_select_compose_data.compound_list)[1][1] local material_have_num = GoodsModel:getInstance():GetPetDiamondNumByTypeID(material_stone_id) self.material_award_item_1:SetData(material_stone_id) self.material_award_item_2:SetData(material_stone_id) self.material_award_item_3:SetData(material_stone_id) local get_str = HtmlColorTxt(material_have_num, material_have_num < 3 and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK).."/".. 3 self.material_award_item_1:IsGetGoods(true,get_str,false) self.material_award_item_2:IsGetGoods(true,get_str,false) self.material_award_item_3:IsGetGoods(true,get_str,false) if material_have_num >= 3 then self.material_award_item_1:SetGray(false) self.material_award_item_2:SetGray(false) self.material_award_item_3:SetGray(false) -- elseif material_have_num == 2 then -- self.material_award_item_1:SetGray(false) -- self.material_award_item_2:SetGray(false) -- self.material_award_item_3:SetGray(true) -- elseif material_have_num == 1 then -- self.material_award_item_1:SetGray(false) -- self.material_award_item_2:SetGray(true) -- self.material_award_item_3:SetGray(true) else self.material_award_item_1:SetGray(true) self.material_award_item_2:SetGray(true) self.material_award_item_3:SetGray(true) end end function PetDiamondComposeView:DestroySuccess( ) if self.tabWindowComponent then self.tabWindowComponent:DeleteMe() self.tabWindowComponent = nil end if self.target_award_item then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem,self.target_award_item) self.target_award_item = nil end if self.material_award_item_1 then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem,self.material_award_item_1) self.material_award_item_1 = nil end if self.material_award_item_2 then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem,self.material_award_item_2) self.material_award_item_2 = nil end if self.material_award_item_3 then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem,self.material_award_item_3) self.material_award_item_3 = nil end end