源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

369 lines
12 KiB

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