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