源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

342 строки
12 KiB

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