|
PetTrainingView = PetTrainingView or BaseClass(BaseItem)
|
|
local PetTrainingView = PetTrainingView
|
|
|
|
function PetTrainingView:__init()
|
|
self.base_file = "pet"
|
|
self.layout_file = "PetTrainingView"
|
|
|
|
self.model = PetModel:getInstance()
|
|
|
|
self.full_screen = true
|
|
self.ani_right = 400
|
|
self.ani_left = -200
|
|
|
|
self.old_model_effct_play_time = 0
|
|
|
|
self.current_panel_tag = 0--当前选中的操作栏页签
|
|
|
|
self:Load()
|
|
end
|
|
|
|
function PetTrainingView:Load_callback()
|
|
self.nodes = {
|
|
"left/storyBtn:obj","left/previewBtn:obj","left/shareBtn:obj",--故事、预览、分享
|
|
"right/topBarCon/feedBtn:obj:img","right/topBarCon/skillBtn:obj:img","right/topBarCon/evolveBtn:obj:img",--操作栏页签按钮
|
|
"right/topBarCon/skillBtn/skillTxt:tmp", "right/topBarCon/feedBtn/feedTxt:tmp", "right/topBarCon/evolveBtn/evolveTxt:tmp", --操作栏页签按钮文字
|
|
"mid/raceIcon:img",--种族
|
|
"con_model",--模型容器
|
|
"mid/name:tmp",--名字
|
|
"mid/ScrollView","mid/ScrollView/Viewport/Content",--scrollview
|
|
"right/raceTxt:tmp","right/dateTxt:tmp",--种族 获取日期
|
|
"right/fightTxt:txt",--战力
|
|
"right/con_panel",--操作栏容器
|
|
"right/msgBg:img",
|
|
"right/topBarCon/skillBtn/skillRed:obj", "right/topBarCon/feedBtn/feedRed:obj", "right/topBarCon/evolveBtn/evolveRed:obj", --红点
|
|
"right/fightLabel",
|
|
"mid/effectCon",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
|
|
lua_resM:setImageSprite(self, self.msgBg_img, "petExtra_asset","pet_msg_bg")
|
|
|
|
--操作栏背景图
|
|
self.panel_img_list = {
|
|
[1] = self.feedBtn_img,
|
|
[2] = self.evolveBtn_img,
|
|
[3] = self.skillBtn_img,
|
|
}
|
|
--操作栏按钮
|
|
self.panel_btn_list = {
|
|
[1] = self.feedBtn_obj,
|
|
[2] = self.evolveBtn_obj,
|
|
[3] = self.skillBtn_obj,
|
|
}
|
|
--操作栏文本
|
|
self.panel_txt_list = {
|
|
[1] = self.feedTxt_tmp,
|
|
[2] = self.evolveTxt_tmp,
|
|
[3] = self.skillTxt_tmp,
|
|
}
|
|
|
|
|
|
self:CreatPanelTopBar()--先把操作栏给创建出来
|
|
|
|
self:AddEvents()
|
|
if self.need_refreshData then
|
|
self:UpdateView()
|
|
end
|
|
end
|
|
|
|
function PetTrainingView:AddEvents( )
|
|
local on_click = function ( click_obj )
|
|
if 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.shareBtn_obj == click_obj then--分享
|
|
local color = PetConst.stage_message[self.show_pet_cfg_data.rare_degree].color_str
|
|
local herf_content = string.format("<a@Pet@%s@%s>",
|
|
tostring(RoleManager.Instance.mainRoleInfo.role_id),
|
|
tostring(self.show_pet_data.pet_id))
|
|
local content = string.format("%s%s%s%s%s%s","我分享了我的宠物 ",
|
|
color,self.show_pet_cfg_data.pet_name,"</color> 哦!",herf_content,"<color=#2cf89a>[前往查看]</color></a>")
|
|
ChatModel:getInstance():Fire(ChatModel.SEND_MSG,ChatModel.CHANNEL_WORLD,content,nil,nil,ChatModel.CHAT_COMMON_TYPE.SYSTEM)
|
|
Message.show("已分享宠物至世界聊天!","success")
|
|
elseif self.panel_btn_list[1] == click_obj then--喂养页签按钮
|
|
self:UpdatePanelTopBar(1)
|
|
elseif self.panel_btn_list[2] == click_obj then--进化页签按钮
|
|
self:UpdatePanelTopBar(2)
|
|
elseif self.panel_btn_list[3] == click_obj then--技能宝石页签按钮
|
|
self:UpdatePanelTopBar(3)
|
|
end
|
|
end
|
|
AddClickEvent(self.previewBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
|
|
AddClickEvent(self.storyBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
|
|
AddClickEvent(self.shareBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
|
|
AddClickEvent(self.panel_btn_list[1], on_click,LuaSoundManager.SOUND_UI.SWITCH)
|
|
AddClickEvent(self.panel_btn_list[2], on_click,LuaSoundManager.SOUND_UI.SWITCH)
|
|
AddClickEvent(self.panel_btn_list[3], on_click,LuaSoundManager.SOUND_UI.SWITCH)
|
|
|
|
local function update_pet_training_view()
|
|
self:UpdateView()
|
|
end
|
|
self:BindEvent(self.model, PetConst.UPDATE_PET_TRAINING_VIEW, update_pet_training_view)
|
|
|
|
--更新战力显示
|
|
local function update_pet_fight(power)
|
|
if not self.is_loaded then return end
|
|
--设置战力文本
|
|
-- self.fightTxt_txt.text = power
|
|
self.fightTxt_txt.text = self.model:GetPetFightById(self.show_pet_id)--改用前端计算战力
|
|
SetAnchoredPositionX(self.fightLabel,51-self.fightTxt_txt.preferredWidth/2-55)
|
|
end
|
|
self:BindEvent(self.model, PetConst.UPDATE_PET_FIGHT, update_pet_fight)
|
|
|
|
--宠物进化之后刷新有阶段显示的地方
|
|
local pet_evolve = function(pet_id)
|
|
if not self.is_loaded then return end
|
|
if pet_id == self.show_pet_id then
|
|
local data = self.model:GetPetListById(pet_id)
|
|
local cfg_data = self.model:GetPetCfg(data.pet_id, data.pet_star)
|
|
self:UpdatePetInfo(data,cfg_data)--刷新宠物信息
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PetConst.PET_EVOLVE, pet_evolve)
|
|
|
|
--装宝石之后刷新模型展示
|
|
local function on_pet_diamond_effect_update(pet_id)
|
|
if not self.is_loaded then return end
|
|
if pet_id == self.show_pet_id then
|
|
local data = self.model:GetPetListById(pet_id)
|
|
local cfg_data = self.model:GetPetCfg(data.pet_id, data.pet_star)
|
|
self:UpdatePetInfo(data,cfg_data)--刷新宠物信息
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PetConst.UPDATE_PET_DIAMOND_EFFECT, on_pet_diamond_effect_update)
|
|
|
|
-- local function refresh_feed_red(bool,pet_id)
|
|
-- if pet_id ~= self.show_pet_id then return end
|
|
-- self.feedRed_obj:SetActive(bool)
|
|
-- end
|
|
-- self:BindEvent(self.model, PetConst.REFRESH_PET_TRAINING_FEED_RED, refresh_feed_red)
|
|
|
|
-- local function refresh_evolve_red(bool,pet_id)
|
|
-- if pet_id ~= self.show_pet_id then return end
|
|
-- self.evolveRed_obj:SetActive(bool)
|
|
-- end
|
|
-- self:BindEvent(self.model, PetConst.REFRESH_PET_TRAINING_EVOLVE_RED, refresh_evolve_red)
|
|
|
|
-- local function refresh_diamond_red(bool,pet_id)
|
|
-- if pet_id ~= self.show_pet_id then return end
|
|
-- self.skillRed_obj:SetActive(bool)
|
|
-- end
|
|
-- self:BindEvent(self.model, PetConst.REFRESH_PET_DIAMOND_DIAMOND_RED, refresh_diamond_red)
|
|
|
|
local function onRefreshRed(red_type)
|
|
if not self.is_loaded then return end
|
|
if not self.show_pet_id or self.show_pet_id == 0 then return end
|
|
if red_type == PetConst.RED_DOT_TYPE.Feed then
|
|
local feed_red = self.model:GetSingleFeedRedDot(self.show_pet_id)
|
|
self.feedRed_obj:SetActive(feed_red)
|
|
elseif red_type == PetConst.RED_DOT_TYPE.Evolve then
|
|
local evolve_red = self.model:GetSingleEvolveRedDot(self.show_pet_id)
|
|
self.evolveRed_obj:SetActive(evolve_red)
|
|
elseif red_type == PetConst.RED_DOT_TYPE.Diamond or red_type == PetConst.RED_DOT_TYPE.DiamondCompose then
|
|
local skill_red = self.model:GetSingleDiamondRedDot(self.show_pet_id)
|
|
local diamond_compose_red = self.model:GetPetRedDotByType(PetConst.RED_DOT_TYPE.DiamondCompose)
|
|
self.skillRed_obj:SetActive(skill_red or diamond_compose_red)
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, onRefreshRed)
|
|
|
|
--宠物喂养后要刷特效
|
|
local function play_lv_up_effect_handler()
|
|
if not self.is_loaded then return end
|
|
--播放属性特效有cd,必须等播完才能再播
|
|
local need_play_model_effect = true
|
|
if TimeUtil:getServerTimeMs()/1000-self.old_model_effct_play_time <= 1.2 then
|
|
need_play_model_effect = false
|
|
end
|
|
if need_play_model_effect then
|
|
self.old_model_effct_play_time = TimeUtil:getServerTimeMs()/1000
|
|
self:AddUIEffect("ui_jinjie", self.effectCon, "UI", nil, 1, false, nil, false)
|
|
end
|
|
end
|
|
self:BindEvent(self.model, PetConst.PLAY_PET_LV_UP_EFFECT, play_lv_up_effect_handler)
|
|
end
|
|
|
|
function PetTrainingView:UpdateView( )
|
|
self:UpdatePanelTopBar(self.right_tab_index)
|
|
self:UpdatePetScrollView()
|
|
end
|
|
|
|
--刷新下方宠物栏
|
|
function PetTrainingView:UpdatePetScrollView()
|
|
local pet_list = self.model:GetPetListAfterSortByDegreeAndLv()
|
|
local empty_data = {pet_id = 0}--加一个空数据用作点击跳转获取宠物使用
|
|
|
|
if #pet_list < 7 then
|
|
for i=1,7-#pet_list do
|
|
table.insert(pet_list,empty_data)
|
|
end
|
|
else
|
|
table.insert(pet_list,empty_data)
|
|
end
|
|
|
|
--petitem的点击回调函数 --data追溯至16301协议
|
|
local function click_callback(data,cfg_data)
|
|
|
|
self.feedRed_obj:SetActive(self.model:GetSingleFeedRedDot(data.pet_id))
|
|
self.evolveRed_obj:SetActive(self.model:GetSingleEvolveRedDot(data.pet_id))
|
|
self.skillRed_obj:SetActive(self.model:GetSingleDiamondRedDot(data.pet_id) or self.model:GetPetRedDotByType(PetConst.RED_DOT_TYPE.DiamondCompose))
|
|
|
|
self.show_pet_cfg_data = cfg_data
|
|
self.show_pet_data = data
|
|
self.show_pet_id = data.pet_id--记录当前展示中的宠物id
|
|
self:UpdatePetInfo(data,cfg_data)--刷新宠物信息
|
|
self.feed_panel:SetData(data,cfg_data)--刷新升级栏
|
|
self.evolve_panel:SetData(data,cfg_data)--刷新进化栏
|
|
self.skill_panel:SetData(data)
|
|
end
|
|
if not self.item_list_com then
|
|
self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
|
|
end
|
|
local info = {
|
|
data_list = pet_list,
|
|
item_con = self.Content,
|
|
item_class = PetItem,
|
|
item_width = 135,
|
|
-- item_height = 175,
|
|
space_x = 27,
|
|
start_x = 11,
|
|
start_y = -17,
|
|
scroll_view = self.ScrollView,
|
|
-- create_frequency = 0.01,
|
|
-- reuse_item_num = 100,
|
|
is_scroll_back_on_update = true,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(i,v,click_callback)
|
|
-- self.item_list_com:IterateItems(function( item, i )
|
|
-- item:OnClick(1)--选中第一个
|
|
-- end)
|
|
end,
|
|
}
|
|
self.item_list_com:UpdateItems(info)
|
|
|
|
self.item_list_com:IterateItems(function( item, i )
|
|
item:OnClick(1)
|
|
end)
|
|
end
|
|
|
|
--创建操作栏topbar
|
|
function PetTrainingView:CreatPanelTopBar()
|
|
if not self.feed_panel then
|
|
self.feed_panel = PetFeedPanel.New(self.con_panel)
|
|
end
|
|
self.feed_panel:SetVisible(false,true)
|
|
if not self.evolve_panel then
|
|
self.evolve_panel = PetEvolvePanel.New(self.con_panel)
|
|
end
|
|
self.evolve_panel:SetVisible(false,true)
|
|
if not self.skill_panel then
|
|
self.skill_panel = PetSkillPanel.New(self.con_panel)
|
|
end
|
|
self.skill_panel:SetVisible(false,true)
|
|
end
|
|
|
|
--刷新操作栏topbar
|
|
function PetTrainingView:UpdatePanelTopBar(panel_type)
|
|
if self.current_panel_tag == panel_type or panel_type < 1 or panel_type > 3 then
|
|
return
|
|
end
|
|
self.current_panel_tag = panel_type
|
|
self.right_tab_index = panel_type
|
|
for i=1,3 do
|
|
--设置按钮的图片样式和按钮文字的颜色样式
|
|
if panel_type ~= i then
|
|
lua_resM:setImageSprite(self, self.panel_img_list[i], "uiComponent_asset","com_empty")
|
|
self.panel_txt_list[i].color = ColorUtil:ConvertHexToRGBColor("9eb3cf")
|
|
SetTMPSharedMaterial(self.panel_txt_list[i], ShaderTools.TMPSharedMaterialType.HKYTW7FFDefault)
|
|
else
|
|
lua_resM:setImageSprite(self, self.panel_img_list[i], "pet_asset", "pet_top_bar_select")
|
|
self.panel_txt_list[i].color = ColorUtil:ConvertHexToRGBColor("ffffff")
|
|
SetTMPSharedMaterial(self.panel_txt_list[i], ShaderTools.TMPSharedMaterialType.HKYTW7OutlineBlueTab)
|
|
end
|
|
end
|
|
|
|
self.feed_panel:SetVisible(panel_type == 1,true)
|
|
self.evolve_panel:SetVisible(panel_type == 2,true)
|
|
self.skill_panel:SetVisible(panel_type == 3,true)
|
|
end
|
|
|
|
--刷新宠物的各类信息 data追溯至16301协议数据
|
|
function PetTrainingView:UpdatePetInfo(data,cfg_data)
|
|
--设置姓名
|
|
self.name_tmp.text = Trim(cfg_data.pet_name)
|
|
SetAnchoredPositionX(self.raceIcon,15-self.name_tmp.preferredWidth/2-20)
|
|
|
|
--设置种族icon
|
|
lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..cfg_data.pet_race,true)
|
|
|
|
--设置战力文本
|
|
self.fightTxt_txt.text = self.model:GetPetFightById(self.show_pet_id)--改用前端计算战力
|
|
SetAnchoredPositionX(self.fightLabel,51-self.fightTxt_txt.preferredWidth/2-55)
|
|
|
|
--设置获取时间文本
|
|
self.dateTxt_tmp.text = string.format("获得日期:<%s>%s</color>", "#ffffff", TimeUtil:timeConversion(data.collect_time,"yyyy年mm月dd日"))
|
|
|
|
--设置种族文本
|
|
self.raceTxt_tmp.text = string.format("种族:<%s>%s</color>", PetConst.PetRace[cfg_data.pet_race].color, PetConst.PetRace[cfg_data.pet_race].str1)
|
|
|
|
local pokemon_diamond_effect = self.model:GetPokemonDiamondEffectRes(self.show_pet_id)
|
|
|
|
local res_data = {
|
|
father_node = self,
|
|
transform = self.con_model,
|
|
fashion_type = FuncOpenModel.TypeId.Pet,
|
|
figure_id = cfg_data.figure_id,
|
|
ui_model_type = UIModelCommon.ModelType.BackModel,
|
|
use_green_screen = true,
|
|
green_screen_camera_type = 3, -- camera_type:1 主摄像机 2 UI摄像机 3 UIModel摄像机
|
|
pokemon_diamond_effect = pokemon_diamond_effect
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|
|
|
|
function PetTrainingView:SetData(right_tab_index)
|
|
self.right_tab_index = right_tab_index
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
self:UpdateView()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
function PetTrainingView:__delete( )
|
|
if self.feed_panel then
|
|
self.feed_panel:DeleteMe()
|
|
self.feed_panel = nil
|
|
end
|
|
if self.evolve_panel then
|
|
self.evolve_panel:DeleteMe()
|
|
self.evolve_panel = nil
|
|
end
|
|
if self.skill_panel then
|
|
self.skill_panel:DeleteMe()
|
|
self.skill_panel = nil
|
|
end
|
|
|
|
self:ClearUIEffect(self.effectCon)
|
|
end
|