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