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