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
|