|
PetCollectionView = PetCollectionView or BaseClass(BaseItem)
|
|
local PetCollectionView = PetCollectionView
|
|
|
|
function PetCollectionView:__init()
|
|
self.base_file = "pet"
|
|
self.layout_file = "PetCollectionView"
|
|
|
|
self.model = PetModel:getInstance()
|
|
|
|
self.full_screen = true
|
|
self.ani_right = 400
|
|
self.ani_left = -200
|
|
|
|
self.cur_select_data = nil
|
|
|
|
self.current_info_panel_tag = false--属性框:true 技能框:false
|
|
self.skill_item_list = {}--技能itemlist
|
|
|
|
self:Load()
|
|
end
|
|
|
|
function PetCollectionView:Load_callback()
|
|
self.nodes = {
|
|
"left/previewBtn:obj",--预览按钮
|
|
"left/storyBtn:obj",--故事按钮
|
|
"mid/raceIcon:img",--种族icon
|
|
"con_model",--模型容器
|
|
"mid/name:tmp",--名字
|
|
"right/ScrollViewCollect/Viewport/Content","right/ScrollViewCollect",--图鉴scrollview
|
|
"mid/con_info/con_attr/ScrollViewAttr/Viewport/ContentAttr",--属性框容器
|
|
"mid/con_info/con_attr/ScrollViewAttr",--属性框scrollview
|
|
"mid/con_info/switchBtn:obj",--切换按钮
|
|
"mid/con_info/con_skill:obj","mid/con_info/con_attr:obj",--属性框技能框容器
|
|
"mid/con_info/fightText:txt",--战力
|
|
"right/rareTab2:img:obj", "right/rareTab3:img:obj", "right/rareTab1:img:obj", "right/rareTab4:img:obj",
|
|
"right/rareTab2/rareRed2:obj", "right/rareTab3/rareRed3:obj", "right/rareTab1/rareRed1:obj", "right/rareTab4/rareRed4:obj",
|
|
"right/rareTab2/tabText2:tmp", "right/rareTab3/tabText3:tmp", "right/rareTab1/tabText1:tmp", "right/rareTab4/tabText4:tmp",
|
|
"mid/msgBg:img",
|
|
"mid/con_info/fightLabel", "right/scrollBg:img",
|
|
|
|
"mid/getWayCon:obj", "mid/getWayCon/goGetDes:obj", "mid/getWayCon/getDes:tmp",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
|
|
-- lua_resM:setImageSprite(self,self.msgBg_img,"petExtra_asset","pet_collect_skill_di")
|
|
lua_resM:setOutsideImageSprite(self, self.scrollBg_img, GameResPath.GetPetImage("pet_collection_di"))
|
|
|
|
self:AddEvents()
|
|
if self.need_refreshData then
|
|
self:SetData(self.data)
|
|
end
|
|
end
|
|
|
|
function PetCollectionView:AddEvents( )
|
|
local on_click = function ( click_obj )
|
|
if self.switchBtn_obj == click_obj then--切换按钮
|
|
self.current_info_panel_tag = not self.current_info_panel_tag
|
|
self:UpdateAttrPanelSkillPanelSwitch()
|
|
elseif self.previewBtn_obj == click_obj then--进化预览
|
|
self.model:Fire(PetConst.OPEN_PET_PREVIEW,self.show_pet_id)
|
|
elseif self.storyBtn_obj == click_obj then--故事
|
|
self.model:Fire(PetConst.OPEN_PET_STORY_VIEW,self.show_pet_id)
|
|
elseif self.rareTab1_obj == click_obj then
|
|
self:UpdateCollectScrollView(1)
|
|
elseif self.rareTab2_obj == click_obj then
|
|
self:UpdateCollectScrollView(2)
|
|
elseif self.rareTab3_obj == click_obj then
|
|
self:UpdateCollectScrollView(3)
|
|
elseif self.rareTab4_obj == click_obj then
|
|
self:UpdateCollectScrollView(4)
|
|
elseif self.goGetDes_obj == click_obj then
|
|
self:OpenGetWay()
|
|
end
|
|
end
|
|
AddClickEvent(self.switchBtn_obj, on_click)
|
|
AddClickEvent(self.previewBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
|
|
AddClickEvent(self.storyBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
|
|
AddClickEvent(self.rareTab1_obj, on_click)
|
|
AddClickEvent(self.rareTab2_obj, on_click)
|
|
AddClickEvent(self.rareTab3_obj, on_click)
|
|
AddClickEvent(self.rareTab4_obj, on_click)
|
|
AddClickEvent(self.goGetDes_obj, on_click)
|
|
|
|
local function on_ans_update_red_dot(tab_id)
|
|
if not self.is_loaded then return end
|
|
if tab_id == PetConst.RED_DOT_TYPE.Active then
|
|
self:RefreshRed()
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, on_ans_update_red_dot)
|
|
end
|
|
|
|
function PetCollectionView:OpenGetWay( )
|
|
if not self.cur_select_data then return end
|
|
|
|
local goods_id = stringtotable(self.cur_select_data.cost)[1][2]
|
|
UIToolTipMgr:getInstance():AppendGoodsTips(goods_id, nil, nil,nil,nil,nil,nil,true,true)
|
|
end
|
|
|
|
function PetCollectionView:RefreshRed( )
|
|
local red_1 = self.model:GetSingleRareActiveRedDot(1)
|
|
local red_2 = self.model:GetSingleRareActiveRedDot(2)
|
|
local red_3 = self.model:GetSingleRareActiveRedDot(3)
|
|
local red_4 = red_1 or red_2 or red_3
|
|
|
|
self.rareRed1_obj:SetActive(red_1)
|
|
self.rareRed2_obj:SetActive(red_2)
|
|
self.rareRed3_obj:SetActive(red_3)
|
|
self.rareRed4_obj:SetActive(red_4)
|
|
end
|
|
|
|
function PetCollectionView:UpdateView( )
|
|
-- self:UpdateCollectScrollView(self.model:GetPetBySort())
|
|
self:UpdateCollectScrollView(4)
|
|
self:UpdateAttrPanelSkillPanelSwitch()
|
|
self:RefreshRed()
|
|
end
|
|
|
|
--刷新图鉴scrollview
|
|
function PetCollectionView:UpdateCollectScrollView(index)
|
|
for i=1,4 do
|
|
if index ~= i then
|
|
lua_resM:setImageSprite(self, self["rareTab"..i.."_img"], "uiComponent_asset","com_empty")
|
|
self["tabText"..i.."_tmp"].color = ColorUtil:ConvertHexToRGBColor("9eb3cf")
|
|
SetTMPSharedMaterial(self["tabText"..i.."_tmp"], ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault)
|
|
else
|
|
lua_resM:setImageSprite(self, self["rareTab"..i.."_img"], "pet_asset","pet_top_bar_select")
|
|
self["tabText"..i.."_tmp"].color = ColorUtil:ConvertHexToRGBColor("ffffff")
|
|
SetTMPSharedMaterial(self["tabText"..i.."_tmp"], ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab)
|
|
end
|
|
end
|
|
|
|
local pet_list = {}
|
|
if index == 4 then
|
|
pet_list = self.model:GetPetBySort()
|
|
else
|
|
pet_list = self.model:GetPetRareCfg(index)
|
|
end
|
|
|
|
--图鉴item的点击回调函数
|
|
local function select_callback(data)
|
|
self.show_pet_id = data.pet_id--记录当前展示中的宠物id
|
|
self:UpdatePetInfo(data)
|
|
self:UpdateCollectAttrPanel(stringtotable(data.attr_list))--刷新属性框
|
|
self:UpdateCollectSkillPanel(data.pet_id)--刷新技能框
|
|
end
|
|
if not self.item_list_com then
|
|
self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
|
|
end
|
|
self.item_list_com:Reset()
|
|
|
|
self.model.select_collect_item_id = 0
|
|
|
|
--找到最前面那个可以解锁的宠物index
|
|
local jump_index = 1
|
|
for i,v in ipairs(pet_list) do
|
|
local can_active = self.model:GetSingleActiveRedDot(v.pet_id)
|
|
if can_active then
|
|
jump_index = i
|
|
break
|
|
end
|
|
end
|
|
|
|
local info = {
|
|
data_list = pet_list,
|
|
item_con = self.Content,
|
|
item_class = PetCollectItem,
|
|
item_width = 112,
|
|
item_height = 112+5,
|
|
space_x = 10,
|
|
space_y = 12-5,
|
|
start_x = 15.5,
|
|
start_y = -6.5,
|
|
scroll_view = self.ScrollViewCollect,
|
|
create_frequency = 0.01,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(i,v,select_callback,#pet_list)
|
|
-- self.item_list_com:IterateItems(function( item, i )
|
|
-- item:OnClick(1)--每次进入scrollview时默认选中第一个
|
|
-- end)
|
|
end,
|
|
final_callback = function()
|
|
if jump_index ~= 1 then
|
|
self.item_list_com:ScrollToItem(jump_index,0)
|
|
end
|
|
end,
|
|
}
|
|
self.item_list_com:UpdateItems(info)
|
|
|
|
self.item_list_com:IterateItems(function( item, i )
|
|
item:OnClick(1)
|
|
end)
|
|
end
|
|
|
|
--设置属性框和技能框的切换显示
|
|
function PetCollectionView:UpdateAttrPanelSkillPanelSwitch()
|
|
if self.current_info_panel_tag then--显示属性框
|
|
self.con_attr_obj:SetActive(true)
|
|
-- self.con_skill_obj:SetActive(false)
|
|
else--显示技能框
|
|
self.con_attr_obj:SetActive(false)
|
|
-- self.con_skill_obj:SetActive(true)
|
|
end
|
|
end
|
|
|
|
--刷新属性框
|
|
function PetCollectionView:UpdateCollectAttrPanel(attr_list)
|
|
local need_attr_list = {}
|
|
for k,v in pairs(attr_list) do
|
|
local data = {v[1],v[2]}
|
|
table.insert(need_attr_list,data)
|
|
end
|
|
--刷新战力
|
|
self.fightText_txt.text = GetFighting(need_attr_list)
|
|
SetAnchoredPositionX(self.fightLabel,52-self.fightText_txt.preferredWidth/2-45)
|
|
|
|
local is_base_attr = true
|
|
if not self.attr_list_com then
|
|
self.attr_list_com = self:AddUIComponent(UI.ItemListCreator)
|
|
end
|
|
local info = {
|
|
data_list = attr_list,
|
|
item_con = self.ContentAttr,
|
|
item_class = PetCollectAttrItem,
|
|
-- item_width = 180,
|
|
item_height = 47,
|
|
-- space_x = -3,
|
|
space_y = -3,
|
|
start_y = 0,
|
|
start_x = 0,
|
|
scroll_view = self.ScrollViewAttr,
|
|
create_frequency = 0.01,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(i,v,is_base_attr)
|
|
end,
|
|
}
|
|
self.attr_list_com:UpdateItems(info)
|
|
end
|
|
|
|
--刷新技能框
|
|
function PetCollectionView:UpdateCollectSkillPanel(pet_id)--pet_id
|
|
local skill_table = {}
|
|
for i=1,4 do
|
|
local data = self.model:GetPetSkillCfg(pet_id,i)--通过id和槽位获取技能配置
|
|
if data then
|
|
table.insert(skill_table,data)
|
|
end
|
|
end
|
|
|
|
local pet_data = self.model:GetPetListById(pet_id)
|
|
local pet_stage = pet_data and pet_data.pet_stage or 0
|
|
local pet_star = pet_data and pet_data.pet_star or 0
|
|
for k,v in pairs(self.skill_item_list) do
|
|
v:SetVisible(false)
|
|
end
|
|
for i,v in ipairs(skill_table) do
|
|
local item = self.skill_item_list[i]
|
|
if not item then
|
|
item = PetCollectSkillItem.New(self.con_skill)
|
|
self.skill_item_list[i] = item
|
|
end
|
|
item:SetVisible(true)
|
|
item:SetData(v,pet_id,1)
|
|
item:SetPosition(17+95*(i-1),-6)
|
|
end
|
|
end
|
|
|
|
--刷新形象、名字等的显示
|
|
function PetCollectionView:UpdatePetInfo(pet_data)
|
|
self.cur_select_data = pet_data and pet_data or nil
|
|
|
|
lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..pet_data.pet_race,true)
|
|
|
|
local get_des_cfg = PetConst.PetGetWayDes[pet_data.pet_id]
|
|
if get_des_cfg then
|
|
self.getWayCon_obj:SetActive(true)
|
|
self.getDes_tmp.text = get_des_cfg.des
|
|
SetAnchoredPositionX(self.goGetDes,-45+self.getDes_tmp.preferredWidth/2+45)
|
|
else
|
|
self.getWayCon_obj:SetActive(false)
|
|
end
|
|
|
|
--设置姓名
|
|
local pet_stage = 1
|
|
local show_figure_id = pet_data.figure_id
|
|
|
|
--取当前最高表现的资源id
|
|
-- local my_pet_data = self.model:GetPetListById(pet_data.pet_id)
|
|
-- if my_pet_data then
|
|
-- pet_stage = my_pet_data.pet_stage
|
|
-- show_figure_id = self.model:GetPetCfg(my_pet_data.pet_id,my_pet_data.pet_star).figure_id
|
|
-- end
|
|
|
|
self.name_tmp.text = Trim(pet_data.pet_name)
|
|
SetAnchoredPositionX(self.raceIcon,15-self.name_tmp.preferredWidth/2-20)
|
|
|
|
|
|
local res_data = {
|
|
father_node = self,
|
|
transform = self.con_model,
|
|
fashion_type = FuncOpenModel.TypeId.Pet,
|
|
figure_id = show_figure_id,
|
|
ui_model_type = UIModelCommon.ModelType.BackModel,
|
|
use_green_screen = true,
|
|
green_screen_camera_type = 3, -- camera_type:1 主摄像机 2 UI摄像机 3 UIModel摄像机
|
|
}
|
|
local function delay_method( )
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|
|
setTimeout(delay_method, 0.02)
|
|
end
|
|
|
|
function PetCollectionView:SetData( data )
|
|
self.data = data
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
self:UpdateView()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function PetCollectionView:__delete( )
|
|
for i, v in ipairs(self.skill_item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.skill_item_list = {}
|
|
end
|