|
|
- PetEvolveSuccessView = PetEvolveSuccessView or BaseClass(BaseView)
- local PetEvolveSuccessView = PetEvolveSuccessView
-
- function PetEvolveSuccessView:__init()
- self.base_file = "pet"
- self.layout_file = "PetEvolveSuccessView"
- self.layer_name = "Activity"
- self.destroy_imm = true
- self.use_background = true
- self.change_scene_close = true
- self.hide_maincancas = true
- -- self.append_to_ctl_queue = true --是否要添加进界面堆栈
- self.need_show_money = false --是否要显示顶部的金钱栏
- self.is_set_zdepth = true
- self.click_bg_toClose = false
- self.close_fog = true
- self.click_bg_toClose = true
-
- self.blur_activity_bg = true
- -- self.use_show_anim = true
- -- self.use_hide_anim = true
-
- self.model = PetModel:getInstance()
-
- self.skill_item_list = {}
-
- 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 PetEvolveSuccessView:Open(pet_id,action_type)
- self.pet_id = pet_id
- self.action_type = action_type
- BaseView.Open(self)
- end
-
- function PetEvolveSuccessView:LoadSuccess()
- local nodes = {
- "raceIcon:img",
- "modelCon",
- "attr_ScrollView/Viewport/Content","attr_ScrollView",
- "skillCon",
- "name:tmp",
- "tips:tmp",
- "fightCon/fightTxt:txt","fightCon:obj",
- "fightCon/fightUpTxt:tmp","fightCon/fightLabel",
- "fightCon/arrow:obj",
- "starCon1:obj", "starCon2:obj",
- "title:img",
- "arrow2:obj",
- "closeTimer:tmp",
- "rightBg2:raw:obj", "rightBg1:raw:obj",
- }
- self:GetChildren(nodes)
-
- lua_resM:setOutsideRawImage(self,self.rightBg1_raw,GameResPath.GetViewBigBg("pet_evolve_succese_right_bg_1"))
- lua_resM:setOutsideRawImage(self,self.rightBg2_raw,GameResPath.GetViewBigBg("pet_evolve_succese_right_bg_2"))
-
- 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_evolve_succese_bg")
- if self.action_type == 1 then
- self.tabWindowComponent:SetTitleText("激活成功")
- lua_resM:setImageSprite(self, self.title_img, "petExtra_asset","pet_evolve_success_title_1")
- else
- self.tabWindowComponent:SetTitleText("进化成功")
- lua_resM:setImageSprite(self, self.title_img, "petExtra_asset","pet_evolve_success_title_2")
- end
-
- -- local function bg_back_func( ... )
- -- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
- -- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
- -- end
- -- self:MoveUIToBack(self.tabWindowComponent.win_bg)
- -- end
- -- if self.background_wnd then
- -- bg_back_func()
- -- else
- -- self.bg_back_func = bg_back_func
- -- end
-
- self.star1 = {}--星级
- for i=1,5 do
- self.star1[i] = self:GetChild("starCon1/star"..i):GetComponent("Image")
- end
- self.star2 = {}--星级
- for i=1,5 do
- self.star2[i] = self:GetChild("starCon2/star"..i):GetComponent("Image")
- end
- end
-
- function PetEvolveSuccessView:AddEvent()
-
-
- end
-
- function PetEvolveSuccessView:OpenSuccess()
- self:UpdateView()
- end
-
- function PetEvolveSuccessView:UpdateView()
- local pet_data = self.model:GetPetListById(self.pet_id)
- local pet_cfg = self.model:GetPetCfg(self.pet_id,pet_data.pet_star)
-
- --阶段和星级
- if self.action_type == 1 then--激活
- self.starCon1_obj:SetActive(false)
- self.starCon2_obj:SetActive(false)
- self.arrow2_obj:SetActive(false)
-
- self.rightBg1_obj:SetActive(true)
- self.rightBg2_obj:SetActive(false)
-
- SetAnchoredPositionY(self.fightCon,133)
-
- -- local max_star = self.model:GetMaxStarInStage(self.pet_id,pet_data.pet_star)
- -- lua_resM:setImageSprite(self, self.star1[1], "pet_asset", PetConst.stage_message[1].star_res,true)
- -- self.star1[1].gameObject:SetActive(true)
- -- self:AddUIEffect("ui_jinjiestar", self.star1[1].transform, "Activity", nil, 1, false)
- -- for i=2,max_star do
- -- self.star1[i].gameObject:SetActive(false)
- -- end
- else
- self.starCon1_obj:SetActive(true)
- self.starCon2_obj:SetActive(true)
- self.arrow2_obj:SetActive(true)
-
- self.rightBg1_obj:SetActive(false)
- self.rightBg2_obj:SetActive(true)
-
- SetAnchoredPositionY(self.fightCon,126)
-
- local max_star = self.model:GetMaxStarInStage(self.pet_id,pet_data.pet_star)
- local show_star = self.model:GetNowShowPetStar(pet_data.pet_star)
- for i=1,show_star do
- lua_resM:setImageSprite(self, self.star2[i], "pet_asset", PetConst.stage_message[pet_data.pet_stage].star_res,true)
- self.star2[i].gameObject:SetActive(true)
- end
- for i=show_star+1,max_star do
- self.star2[i].gameObject:SetActive(false)
- end
- self:AddUIEffect("ui_jinjiestar", self.star2[show_star].transform, "Activity", nil, 1, false)
-
- local max_star_next = self.model:GetMaxStarInStage(self.pet_id,pet_data.pet_star-1)
- local show_star_next = self.model:GetNowShowPetStar(pet_data.pet_star-1)
- local stage_next = math.ceil((pet_data.pet_star-1-0.5)/5)
- for i=1,show_star_next do
- lua_resM:setImageSprite(self, self.star1[i], "pet_asset", PetConst.stage_message[stage_next].star_res,true)
- self.star1[i].gameObject:SetActive(true)
- end
- for i=show_star_next+1,max_star_next do
- self.star1[i].gameObject:SetActive(false)
- end
- end
-
-
-
- --战力
- local old_data = self.model:GetPetOldDataById(pet_data.pet_id)--宠物进化之前的旧数据
- self.fightTxt_txt.text = self.model:GetPetFightById(pet_data.pet_id)
- SetAnchoredPositionX(self.fightLabel,-25-self.fightTxt_txt.preferredWidth/2-35)
- local up_num
- if not old_data then
- up_num = self.model:GetPetFightById(pet_data.pet_id)
- else
- up_num = self.model:GetPetFightById(pet_data.pet_id) - self.model:GetPetFightByData(old_data)
- end
- self.fightUpTxt_tmp.text = up_num
-
-
- --名字
- self.name_tmp.text = Trim(pet_cfg.pet_name)
- SetAnchoredPositionX(self.raceIcon,-169-self.name_tmp.preferredWidth/2-20)
-
- --种族
- lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..pet_cfg.pet_race,true)
-
- --进化提示
- if pet_data.pet_stage < 3 then
- local need_star_1 = self.model:GetStarCanUnlockFigure(self.pet_id,2)
- local need_star_2 = self.model:GetStarCanUnlockFigure(self.pet_id,3)
- local evolve_times = pet_data.pet_stage == 1 and need_star_1-pet_data.pet_star or need_star_2-pet_data.pet_star
- self.tips_tmp.text = string.format("再进化<#f3fcff>%s</color>次可<#fdffc2>解锁</color>新形态", evolve_times)
- elseif pet_data.pet_stage == 3 then
- self.tips_tmp.text = "当前已是最高形态 "
- end
-
- --属性提升栏
- self:UpdateAttr(pet_data,pet_cfg)
-
- --技能栏
- self:UpdateSkillCon()
-
- local res_data = {
- layer_name = "Activity",
- father_node = self,
- transform = self.modelCon,
- fashion_type = FuncOpenModel.TypeId.Pet,
- figure_id = pet_cfg.figure_id,
- position = Vector3(0,-160,-500),
- ui_model_type = UIModelCommon.ModelType.Model,
- }
- FuncOpenModel:getInstance():SetModelRes(res_data)
-
-
- self:UpdateTime()
- end
-
- --刷新属性值
- function PetEvolveSuccessView:UpdateAttr(data,cfg_data)
- --获取计算好的属性值
- local diamond_data = self.model:GetPetDiamondDataById(data.pet_id)--取出宝石所加的属性一并计算
- local awake_cfg = nil
- if data.is_awaken == 1 then
- awake_cfg = self.model:GetPetAwakeCfg(data.pet_id)
- end
- local now_attr_list = self.model:GetPetAttrList(data.pet_lv,stringtotable(cfg_data.attr_list),diamond_data,awake_cfg,data.pet_star,data.pet_id)
-
- if self.action_type == 1 then--刚激活
- self:UpdateAttrScrollView(now_attr_list,true)
- else
- local old_data = self.model:GetPetOldDataById(data.pet_id)--宠物进化之前的旧数据
- local old_cfg = self.model:GetPetCfg(old_data.pet_id, old_data.pet_star)
- local old_attr_list = self.model:GetPetAttrList(old_data.pet_lv, stringtotable(old_cfg.attr_list), diamond_data,awake_cfg,old_data.pet_star,old_data.pet_id)
- local final_attr_list = self.model:MergeAttrList2(now_attr_list, old_attr_list)
- self:UpdateAttrScrollView(final_attr_list, false)
- end
-
- end
-
- --刷新属性栏scrollview
- function PetEvolveSuccessView:UpdateAttrScrollView(attr_list,is_active_now)
- -- --解决高级属性名字过长导致文字重叠的问题:普通属性一行摆两个,高级属性一行摆一个
- -- --思路:ItemListCreator不能自由控制一行摆几个,因此在高级属性后面插入一个空属性隐藏显示,模拟出一行只摆一个属性的效果
- -- --step1:排序属性列表,把高级属性排后面
- -- local _sort = function( a,b )
- -- if a[1] < b[1] then
- -- return true
- -- end
- -- end
- -- table.sort( attr_list, _sort )
- -- --step2:找到普通属性和高级属性的分界点
- -- local divide_index = 0--分界点下标
- -- local max_index = #attr_list--属性个数
- -- for i,v in ipairs(attr_list) do
- -- --找到高级属性,标记分界点
- -- if WordManager:GetAttrIsSpecial(v[1]) then
- -- divide_index = i-1
- -- break
- -- end
- -- end
- -- --step3:分情况操作
- -- --偶数个普通属性时,直接对后面的高级属性依次插入空属性即可
- -- --奇数个普通属性时,先在最后一个普通属性后插入空属性,让高级属性掉到下一行位置去
- -- if divide_index ~= 0 then
- -- if divide_index %2 == 0 then
- -- for i=1,max_index-divide_index do
- -- table.insert(attr_list,divide_index+2*i,{0})
- -- end
- -- else
- -- table.insert(attr_list,divide_index+1,{0})
- -- for i=1,max_index-divide_index do
- -- table.insert(attr_list,divide_index+2*i+1,{0})
- -- end
- -- end
- -- end
- ------------------
- 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.Content,
- item_class = PetAttrItem,
- item_width = 385,
- item_height = 47,
- -- space_x = -7,
- space_y = -5,
- start_x = 1,
- start_y = 2,
- scroll_view = self.attr_ScrollView,
- create_frequency = 0.01,
- on_update_item = function(item, i, v)
- item:SetData(i,v,is_active_now,false,true)
- end,
- }
- self.attr_list_com:UpdateItems(info)
- end
-
- --技能展示
- function PetEvolveSuccessView:UpdateSkillCon( )
- local pet_data = self.model:GetPetListById(self.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
-
- local skill_table = {}
- for i=1,4 do
- local data = self.model:GetPetSkillCfg(self.pet_id,i,pet_data.is_awaken==1)--通过id和槽位获取技能配置
- if data then
- table.insert(skill_table,data)
- end
- end
-
- 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 = PetSkillItem.New(self.skillCon)
- self.skill_item_list[i] = item
- end
- item:SetVisible(true)
- item:SetData(v,self.pet_id,3)
- item:SetPosition(2+83*(i-1),-1)
- end
- end
-
- function PetEvolveSuccessView:DestroySuccess( )
- for i, v in ipairs(self.skill_item_list) do
- v:DeleteMe()
- end
- self.skill_item_list = {}
- if self.tabWindowComponent then
- self.tabWindowComponent:DeleteMe()
- self.tabWindowComponent = nil
- end
- if self.timer_id then
- GlobalTimerQuest:CancelQuest(self.timer_id)
- self.timer_id = nil
- end
-
- for i=1,5 do
- self:ClearUIEffect(self.star1[i].transform)
- self:ClearUIEffect(self.star2[i].transform)
- end
-
- --特定宠物激活成功要弹出道具提示
- if self.action_type == 1 and self.pet_id == HelpType.ACTIVITY_PET_ID then
- UIToolTipMgr:getInstance():AppendGoodsTips(HelpType.ACTIVITY_PET_GOODS_ID, nil, nil,nil,nil, {},nil,true)
- end
- end
-
- function PetEvolveSuccessView:UpdateTime( )
- local time = 10
- local function countDown()
- if self._use_delete_method then return end
- time = time - 1
- if time >= 0 then
- self.closeTimer_tmp.text = HtmlColorTxt(time, ColorUtil.GREEN_TIPS).." 秒后自动关闭界面"
- else
- self.closeTimer_tmp.text = ""
- self:Close()
- end
- end
- countDown()
- self.timer_id = GlobalTimerQuest:AddPeriodQuest(countDown,1)
- end
|