源战役客户端
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.
 
 
 
 
 

239 rivejä
7.8 KiB

PetEvolvePreView = PetEvolvePreView or BaseClass(BaseView)
local PetEvolvePreView = PetEvolvePreView
function PetEvolvePreView:__init()
self.base_file = "pet"
self.layout_file = "PetEvolvePreView"
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 PetEvolvePreView:Open(pet_id)
self.pet_id = pet_id
BaseView.Open(self)
end
function PetEvolvePreView:LoadSuccess()
local nodes = {
"skillCon",--技能图标容器
"modelCon1","modelCon2","modelCon3",--形象容器
"desCon/Text_2:tmp", "desCon/Text_4:tmp",
"confirmBtn:obj",
"name:tmp", "raceIcon:img",
}
self:GetChildren(nodes)
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_preview_bg")
self.tabWindowComponent:SetTitleText("进化预览")
-- 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
end
function PetEvolvePreView:AddEvent()
local on_click = function ( click_obj )
if self.confirmBtn_obj == click_obj then
self:Close()
end
end
AddClickEvent(self.confirmBtn_obj, on_click,LuaSoundManager.SOUND_UI.NONE)
end
function PetEvolvePreView:OpenSuccess()
self:UpdateView()
end
function PetEvolvePreView:UpdateView()
self:UpdateFigure()
self:UpdateSkillCon()
local star_1 = self.model:GetStarCanUnlockFigure(self.pet_id,2)
local star_2 = self.model:GetStarCanUnlockFigure(self.pet_id,3)
self.Text_2_tmp.text = star_1
self.Text_4_tmp.text = star_2
local pet_cfg = self.model:GetPetCfg(self.pet_id, 1)
lua_resM:setImageSprite(self, self.raceIcon_img, "pet_asset", "pet_race_"..pet_cfg.pet_race,true)
self.name_tmp.text = Trim(pet_cfg.pet_name)
SetAnchoredPositionX(self.raceIcon,7-self.name_tmp.preferredWidth/2-20)
end
--模型展示
function PetEvolvePreView:UpdateFigure( )
local pet_cfg_1 = self.model:GetPetCfg(self.pet_id, 1)
local pet_cfg_2 = self.model:GetPetCfg(self.pet_id, 6)
local pet_cfg_3 = self.model:GetPetCfg(self.pet_id, 11)
-- 发行绿幕特殊处理
-- 由于进化预览界面有可能出现在图鉴界面上,加之这是三个模型的展示,需要特殊处理
local loaded_model_num = 0
local function green_screen_callback()
if LoginModel.ENABLE_GREEN_SCREEN then
loaded_model_num = loaded_model_num + 1
if loaded_model_num >= 3 then -- 当前是3个模型,完全加载完后再开启绿屏
local function delay_method( )
CheatModel:getInstance():SetupGreenScreenEffect(
true,
{
lua_resM:GetPartModel(self, self.modelCon1),
lua_resM:GetPartModel(self, self.modelCon2),
lua_resM:GetPartModel(self, self.modelCon3)
},
2, true
)
end
if self.gs_delay_id then
GlobalTimerQuest:CancelQuest(self.gs_delay_id)
self.gs_delay_id = nil
end
self.gs_delay_id = setTimeout(delay_method, 0.02)
end
end
end
local res_data = {
layer_name = "Activity",
father_node = self,
transform = self.modelCon1,
fashion_type = FuncOpenModel.TypeId.Pet,
figure_id = pet_cfg_1.figure_id,
scale = PetConst.ModelShowConfig[pet_cfg_1.figure_id] and PetConst.ModelShowConfig[pet_cfg_1.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8,
position = Vector3(0,-160,-500),
-- position = Vector3(-15,90,0),
raycast_size = Vector2(200,260),
ui_model_type = UIModelCommon.ModelType.Model,
callBack = green_screen_callback,
}
FuncOpenModel:getInstance():SetModelRes(res_data)
local res_data = {
layer_name = "Activity",
father_node = self,
transform = self.modelCon2,
fashion_type = FuncOpenModel.TypeId.Pet,
figure_id = pet_cfg_2.figure_id,
scale = PetConst.ModelShowConfig[pet_cfg_2.figure_id] and PetConst.ModelShowConfig[pet_cfg_2.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8,
position = Vector3(0,-160,-500),
-- position = Vector3(0,90,0),
raycast_size = Vector2(200,260),
ui_model_type = UIModelCommon.ModelType.Model,
callBack = green_screen_callback,
}
FuncOpenModel:getInstance():SetModelRes(res_data)
local res_data = {
layer_name = "Activity",
father_node = self,
transform = self.modelCon3,
fashion_type = FuncOpenModel.TypeId.Pet,
figure_id = pet_cfg_3.figure_id,
scale = PetConst.ModelShowConfig[pet_cfg_3.figure_id] and PetConst.ModelShowConfig[pet_cfg_3.figure_id].scale*0.8 or PetConst.ModelShowConfig[1001].scale*0.8,
position = Vector3(0,-160,-500),
-- position = Vector3(25,90,0),
raycast_size = Vector2(200,260),
ui_model_type = UIModelCommon.ModelType.Model,
callBack = green_screen_callback,
}
FuncOpenModel:getInstance():SetModelRes(res_data)
end
--技能展示
function PetEvolvePreView:UpdateSkillCon( )
local skill_table = {}
for i=1,4 do
local data = self.model:GetPetSkillCfg(self.pet_id,i)--通过id和槽位获取技能配置
if data then
table.insert(skill_table,data)
end
end
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
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,2)
item:SetPosition(7+83*(i-1),1)
end
end
function PetEvolvePreView: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 LoginModel.ENABLE_GREEN_SCREEN then
if self.gs_delay_id then
GlobalTimerQuest:CancelQuest(self.gs_delay_id)
self.gs_delay_id = nil
end
if PetController.Instance.pet_base_view
and PetController.Instance.pet_base_view:HasOpen() then -- 存在绿屏的主界面
CheatModel:getInstance():DisabledGreenScreenEffect(true)
LoginModel.ENABLE_GREEN_SCREEN = true
-- 重新加载界面
PetController.Instance.pet_base_view:SwitchTab(PetController.Instance.pet_base_view.current_index)
else
CheatModel:getInstance():DisabledGreenScreenEffect()
end
end
end