源战役客户端
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 

405 рядки
13 KiB

UpSuccessView = UpSuccessView or BaseClass(BaseView)
local UpSuccessView = UpSuccessView
function UpSuccessView:__init()
self.base_file = "upSuccess"
self.layout_file = "UpSuccessView"
self.layer_name = "Top"
self.destroy_imm = true
self.change_scene_close = true
self.append_to_ctl_queue = false --是否要添加进界面堆栈
self.need_show_money = false --是否要显示顶部的金钱栏
self.is_set_zdepth = true
self.click_bg_toClose = true
self.fire_change_visible_event = true
------------------------
-- 一级全屏界面:
self.hide_maincancas = false --隐藏主界面
self.use_background = true --不一定显示遮罩
-- 二级界面:
-- self.hide_maincancas = false --是否需要隐藏主界面,看策划需求
-- self.use_background = true --需要遮罩
self.attr_item_list = {}
------------------------
FosterModel:GetInstance().is_open_up_success = true
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self:OpenSuccess()
end
self.close_win_callback = function ( )
self:Close()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
function UpSuccessView:Open( data )
self.data = data
BaseView.Open(self)
end
function UpSuccessView:LoadSuccess()
local nodes = {
"img_title:img:obj","con_model","bg_0:raw","lb_name:tmp","lb_name_des:tmp",
"con_attr/title_attr:tmp","con_attr/scroll_attr","con_attr/scroll_attr/Viewport/Content_attr","con_attr:obj",
"con_fight/lb_fight:txt","con_fight:obj","con_fight/lb_fight_change:tmp","con_fight/icon_fight_up:obj",
"con_change/lb_change_2:tmp","con_change:obj","lb_close:tmp",
"con_goods/scroll_goods/Viewport/Content_goods","con_goods:obj","con_goods/img_goods:img","con_goods/lb_tips:tmp", "con_title_effect", "con_title_effect2",
"con_special_attr/lb_special_attr_value:tmp", "con_special_attr:obj", "con_special_attr/lb_special_attr_name:tmp",
"con_change/con_star_old/lb_change_1:tmp","con_change/con_star_old",
"con_change/con_star_old/star_1_6:img:obj", "con_change/star_2_1:img:obj", "con_change/star_2_3:img:obj", "con_change/con_star_old/star_1_3:img:obj", "con_change/star_2_5:img:obj", "con_change/con_star_old/star_1_5:img:obj", "con_change/con_star_old/star_1_1:img:obj", "con_change/star_2_4:img:obj", "con_change/con_star_old/star_1_4:img:obj", "con_change/star_2_6:img:obj", "con_change/con_star_old/star_1_2:img:obj", "con_change/star_2_2:img:obj",
}
self:GetChildren(nodes)
-- local function bg_back_func( ... )
-- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
-- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
-- end
-- end
-- if self.background_wnd then
-- bg_back_func()
-- else
-- self.bg_back_func = bg_back_func
-- end
end
function UpSuccessView:AddEvent()
local function ChangeVisible( )
if self.data and self.data.model_info then
self:ShowModel(self.data.model_info)
end
end
self:BindEvent(GlobalEventSystem, BaseView.ChangeVisible, ChangeVisible)
end
function UpSuccessView:OpenSuccess()
self:UpdateView()
end
function UpSuccessView:UpdateView()
print("huangcong:UpSuccessView [start:78] self.data:", self.data)
PrintTable(self.data)
print("huangcong:UpSuccessView [end]")
self:SetBigBg(self.data.big_bg_res)
self:SetBigTitle(self.data.big_title_res)
self:SetBigTitleEffect(self.data.big_title_effect)
self:ShowModel(self.data.model_info)
self:ShowGrade(self.data.grade_change)
self:ShowPower(self.data.power_data)
self:ShowAttr(self.data.attr_data)
self:ShowReward( self.data.reward_data )
self:ShowCloseClock( self.data.close_time )
self:ShowSpecialAttr(self.data.special_attr)
end
function UpSuccessView:ShowCloseClock( time )
if not time then
if self.close_clock_id then
GlobalTimerQuest:CancelQuest(self.close_clock_id)
self.close_clock_id = nil
end
else
self.time = 10--20201009策划说统一进阶成功界面关闭倒计时
-- self.time = 10 or time
local function clockFun()
if self.time <= 0 then
self.lb_close_tmp.text = ""
self:Close()
else
self.lb_close_tmp.text = string.format( "<color=#2cf89a>%d</color> 秒后自动关闭" ,self.time)
self.time = self.time - 1
end
end
self.close_clock_id = self.close_clock_id or GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1)
clockFun()
end
end
function UpSuccessView:ShowModel( model_info )
--[[
model_info = {
model_type = UpSuccessView.ModelType.Foster,
model_id = 1101,
name_des = "名字左边的文本",
name = "坐骑名字",
}
--]]
if not model_info then return end
-------------------------
self.lb_name_tmp.text = model_info.name or ""
self.lb_name_des_tmp.text = model_info.name_des or ""
if model_info.model_type == SceneBaseType.FWing or
model_info.model_type == SceneBaseType.Horse or
model_info.model_type == SceneBaseType.Pet or
model_info.model_type == SceneBaseType.FCloud or
model_info.model_type == SceneBaseType.FArmour or
model_info.model_type == SceneBaseType.FPearl or
model_info.model_type == SceneBaseType.FWeapon or
model_info.model_type == SceneBaseType.FGun then
self:ShowFosterModel(model_info.model_type,model_info.model_id)
end
end
function UpSuccessView:SetBigBg( res_name )
res_name = res_name or "up_success_bg"
local function func( ... )
-- self:MoveUIToBack(self.bg_0)
end
lua_resM:setOutsideRawImage(self,self.bg_0_raw,GameResPath.GetViewBigBg(res_name),false,func)
end
function UpSuccessView:SetBigTitle( res_name )
if res_name then
res_name = res_name or "upSuccess_title_1"
lua_resM:setImageSprite(self, self.img_title_img, "upSuccess_asset", res_name,true)
self.img_title_obj:SetActive(true)
end
end
function UpSuccessView:SetBigTitleEffect( big_title_effect )
if big_title_effect then
if type(big_title_effect) == "table" then
if #big_title_effect == 2 then
if not self.con_title_effect then return end
-------------------------
local function end_call_func( ... )
if not self.con_title_effect2 then return end
self:AddUIEffect(big_title_effect[2].res,self.con_title_effect2, self.layer_name, Vector3(-37,-180,0), 1, true,nil)
end
self:AddUIEffect(big_title_effect[1].res,self.con_title_effect, self.layer_name, Vector3(-37,-180,0), 1, false,nil,nil,end_call_func)
end
end
self.img_title_obj:SetActive(false)
end
end
function UpSuccessView:ShowGrade( grade_change )
--[[
grade_change = {
old_grade = "5阶",
new_grade = "6阶",
old_star = 1,
new_star = 2,
max_star_old = 6,
max_star_new = 6,
}
--]]
if not grade_change then
self.con_change_obj:SetActive(false)
else
self.con_change_obj:SetActive(true)
self.lb_change_1_tmp.text = grade_change.old_grade or ""
self.lb_change_2_tmp.text = grade_change.new_grade or ""
end
for i=1,6 do
lua_resM:setImageSprite(self,self["star_1_"..i.."_img"],'upSuccess_asset', grade_change.old_star >= i and "upSuccess_star_1" or "upSuccess_star_0",true)
lua_resM:setImageSprite(self,self["star_2_"..i.."_img"],'upSuccess_asset', "upSuccess_star_0",true)
if grade_change.max_star_old and grade_change.max_star_old < 6 then
if grade_change.max_star_old < i then
self["star_1_"..i.."_obj"]:SetActive(false)
end
end
if grade_change.max_star_new and grade_change.max_star_new < 6 then
if grade_change.max_star_new < i then
self["star_2_"..i.."_obj"]:SetActive(false)
end
end
end
if grade_change.max_star_old and grade_change.max_star_old < 6 then
SetAnchoredPositionX( self.con_star_old.transform, -296 + (6-grade_change.max_star_old)*28.2 )
end
end
function UpSuccessView:ShowPower( power_data )
--[[
power_data = {
new_power = 996
change_power = 110
}
--]]
if not power_data then
self.con_fight_obj:SetActive(false)
else
self.con_fight_obj:SetActive(true)
self.lb_fight_txt.text = "f" .. power_data.new_power
if power_data.change_power and power_data.change_power > 0 then
self.lb_fight_change_tmp.text = power_data.change_power
self.icon_fight_up_obj:SetActive(true)
else
self.lb_fight_change_tmp.text = ""
self.icon_fight_up_obj:SetActive(false)
end
end
end
function UpSuccessView:ShowAttr( attr_data )
--[[
attr_data = {
title_name = "属性标替文本",
pos_type = pos_tag,--位置
attr_old = {
[1] = {1,100},
[2] = {2,200},
},
attr_new = {
[1] = {1,110},
[2] = {2,220},
},
}
--]]
if not attr_data then
self.con_attr_obj:SetActive(false)
else
local attr_pos_tab = {
["default"] = {
["con_attr_pos"] = {222.46,23.21},
["scroll_attr_size"] = {355.99,201.49},
["scroll_attr_pos"] = {2.72,-55.68},
},
["foster"] = {
["con_attr_pos"] = {222.46,-48.79},
["scroll_attr_size"] = {355.99,129.58},
["scroll_attr_pos"] = {14.42-12,8.33-30},
}
}
local pos_info = false
if attr_data.pos_type and attr_pos_tab[attr_data.pos_type] then
pos_info = attr_pos_tab[attr_data.pos_type]
else
pos_info = attr_pos_tab["default"]
end
if pos_info then
local temp = attr_pos_tab[attr_data.pos_type]
SetAnchoredPosition( self.con_attr.transform, temp.con_attr_pos[1], temp.con_attr_pos[2] )
-------------------------
SetSizeDelta(self.scroll_attr.transform, temp.scroll_attr_size[1], temp.scroll_attr_size[2] )
SetAnchoredPosition( self.scroll_attr.transform, temp.scroll_attr_pos[1], temp.scroll_attr_pos[2] )
end
-------------------------
self.con_attr_obj:SetActive(true)
self.title_attr_tmp.text = attr_data.title_name or "获得属性"
-------------------------
local old_attr = attr_data.attr_old or {}
local new_attr = attr_data.attr_new or {}
old_attr,new_attr = GetAttrMatch( old_attr,new_attr )
old_attr = SortAttrList( old_attr )
for k,v in pairs(self.attr_item_list) do
v:SetVisible( false )
end
for i,v in ipairs(old_attr) do
local next_one = false
for a,b in pairs(new_attr) do
if b[1] == v[1] then
next_one = b
end
end
self.attr_item_list[i] = self.attr_item_list[i] or self:CreateItem(UpSuccessAttrItem, self.Content_attr , self.layer_name)
self.attr_item_list[i]:SetData( i, v, next_one )
self.attr_item_list[i]:SetVisible( true )
-- local x = i%2 == 1 and 28 or 380
-- local y = math.ceil( i/2 ) * 45
local x = 0
local y = -32*(i-1)
self.attr_item_list[i]:SetPosition( x, y )
end
SetSizeDeltaY(self.Content_attr.transform, #old_attr*36)
end
end
--[[
special_attr = {
[1] = {1,100},
[2] = {2,200},
},
--]]
function UpSuccessView:ShowSpecialAttr( special_attr )
if special_attr and special_attr[1] then
local _, name1, _, val1 = WordManager:GetPropertyInfo(special_attr[1][1], special_attr[1][2])
self.con_special_attr_obj:SetActive(true)
self.lb_special_attr_value_tmp.text = val1
self.lb_special_attr_name_tmp.text = name1
else
self.con_special_attr_obj:SetActive(false)
end
end
function UpSuccessView:ShowReward( reward_data )
--[[
reward_data = {
title_res = nil,
show_list = {
[1] = {1,100065,100},
[2] = {1,100065,100},
}
show_name = "",
}
--]]
if not reward_data then
self.con_goods_obj:SetActive(false)
else
self.con_goods_obj:SetActive(true)
local res_name = reward_data.title_res or "upSuccess_title_2"
lua_resM:setImageSprite(self, self.img_goods_img, "upSuccess_asset", res_name,true)
-------------------------
self.tip_award_list = self.tip_award_list or {}
for k,v in pairs(self.tip_award_list) do
v:SetVisible( false )
end
local show_info = reward_data.show_list or {}
for i,v in ipairs(show_info) do
self.tip_award_list[i] = UIObjPool:PopItem(UIObjPool.UIType.AwardItem,self.Content_goods)
self.tip_award_list[i]:SetItemSize(59,59)
self.tip_award_list[i]:SetDataWithMapId(v[2], v[3], v[1])
self.tip_award_list[i]:SetPosition( 70 * (i-1)+6,-15)
end
SetSizeDeltaX(self.Content_goods, #show_info * 108)
if reward_data.show_name and reward_data.show_name ~= "" then
self.lb_tips_tmp.text = string.format("您已成功激活:%s\n现已将等值材料返还给您", HtmlColorTxt(reward_data.show_name, "#2CF86F"))
else
self.lb_tips_tmp.text = ""
end
end
end
function UpSuccessView:ShowFosterModel( model_type,model_id )
local res_data = {
father_node = self,
transform = self.con_model,
fashion_type = self.data.extra_type_id + 1000,
figure_id = model_id,
-------------------------
raycast_size = Vector2(500,530),
ui_model_type = UIModelCommon.ModelType.Model,
layer_name = self.layer_name,
--这个翅膀,是半透明翅膀,使用特殊shader处理一下
using_material = self.data.extra_type_id == FosterConst.ModuleId.FWing and "render_texture" or false,
}
FuncOpenModel:getInstance():SetModelRes(res_data)
end
function UpSuccessView:DestroySuccess( )
if self.close_clock_id then
GlobalTimerQuest:CancelQuest(self.close_clock_id)
self.close_clock_id = nil
end
if self.tip_award_list then
for k,v in pairs(self.tip_award_list) do
UIObjPool:PushItem(UIObjPool.UIType.AwardItem, v)
end
self.tip_award_list = {}
end
self:ClearUIEffect(self.con_title_effect)
self:ClearUIEffect(self.con_title_effect2)
end