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

389 rivejä
12 KiB

GuideSpiritView = GuideSpiritView or BaseClass(BaseView)
local GuideSpiritView = GuideSpiritView
GuideSpiritView.MaxTaskNum = 3
function GuideSpiritView:__init()
self.base_file = "guide"
self.layout_file = "GuideSpiritView"
self.layer_name = "Activity"
self.destroy_imm = true
self.use_background = true
self.task_item_list = {}
self.is_set_zdepth = true
self.is_guide_module = true
-- self.use_local_view = true
self.isPlay = true
self.finish_all = false
self.load_callback = function ()
self:LoadSuccess()
self:InitEvent()
end
self.open_callback = function ()
end
self.close_callback = function ()
self:Remove()
if self.finish_all then
GlobalEventSystem:Fire(EventName.TEST_HELP_STEP, 999991011)
elseif self.need_do_task then
GuideModel:getInstance():BeginTask(self.layout_file)
end
end
end
function GuideSpiritView:LoadSuccess()
self.leaveTime,
self.desc_txt,
self.explain_txt = self:GetChildTexts({
"InfoCon/CloseBtn/Text",
"InfoCon/Desc/Text",
"InfoCon/UICon/BG3/Text"
})
self.background,
self.bg1,
self.bg2,
self.bg3 = self:GetChildImages ({
"BG",
"InfoCon/BG1",
"InfoCon/BG2",
"InfoCon/UICon/BG3",
})
self.closeBtn,
self.ModelBtn,
self.SureBtn,
self.DescCon,
self.ContinueBtn = self:GetChildGameObjects({
"InfoCon/CloseBtn",
"InfoCon/UICon/ModelBtn",
"InfoCon/SureBtn",
"InfoCon/Desc",
"InfoCon/UICon/ContinueBtn"
})
self.con,
self.UICon,
self.SpiritCon,
self.BgEffectCon,
self.EffectCon,
self.mask = self:GetChildTransforms({
"InfoCon/Con",
"InfoCon/UICon",
"InfoCon/SpiritCon",
"InfoCon/BgEffectCon",
"InfoCon/UICon/EffectCon",
"Mask"
})
lua_resM:setOutsideImageSprite(self,self.background,GameResPath.GetJpgImage("bag_bg.jpg"),false)
lua_resM:setOutsideImageSprite(self,self.bg1,GameResPath.GetGuideImage("hxui_bg"),false)
lua_resM:setOutsideImageSprite(self,self.bg2,GameResPath.GetGuideImage("hxui_msz"),false)
lua_resM:setOutsideImageSprite(self,self.bg3,GameResPath.GetGuideImage("hxui_qp"),false)
self.mask.sizeDelta = Vector2(ScreenWidth,ScreenHeight)
self.closeBtn.transform.anchoredPosition = Vector2(ScreenWidth / 2 - 50,ScreenHeight / 2 - 50)
local function generateItem(i)
local item = {
gameObject = self:GetChild("InfoCon/Grid/title"..i).gameObject,
task_name_txt = self:GetChild("InfoCon/Grid/title"..i.."/Text"):GetComponent("Text"),
finish_flag_img = self:GetChild("InfoCon/Grid/title"..i.."/Sign"):GetComponent("Image"),
}
return item
end
for i = 1,3 do
table.insert(self.task_item_list,generateItem(i))
end
self:InitView()
local function load_callback()
self:SetSpiritModel()
self:SetUIDepth(self.UICon.gameObject)
end
local data = {
clothe_res_id = GuideModel.SpiritBgId,
type = SceneBaseType.StarSoul,
layer_name = self.layer_name,
rotate = Vector3(-15,0,0),
action_name_list = {"idle"},
can_rotate = false,
scale = 150,
position = Vector3(0, -156, 0),
callBack = load_callback,
layout_file = self.layout_file
}
lua_resM:SetRoleModel(self, self.con,data)
end
function GuideSpiritView:InitView()
local finish_num = 0
local last_finish_task_id = TaskModel:getInstance().last_finish_task_id
local list = Config.ConfigHelper.StarTaskList
for index,id in ipairs(list) do
if id > last_finish_task_id then
lua_resM:setImageSprite(self, self.task_item_list[index].finish_flag_img, "common_asset", "tyui_wdc",true)
else
finish_num = finish_num + 1
lua_resM:setImageSprite(self, self.task_item_list[index].finish_flag_img, "common_asset", "tyui_ywc",true)
end
local basedata=ConfigItemMgr.Instance:GetTaskData(id)
if basedata then
self.task_item_list[index].task_name_txt.text = Trim("Lv."..basedata.level..basedata.name)
end
end
if finish_num >= GuideSpiritView.MaxTaskNum then
self.finish_all = true
end
if self.finish_all then
self.SureBtn:SetActive(false)
self.DescCon:SetActive(false)
self.ContinueBtn:SetActive(false)
self.explain_txt.text = "萌羊座被你唤醒了!让她与你并肩作战吧!"
self.bg3.transform.localPosition = Vector3(-43,-174,0)
GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK)
GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT)
else
self.SureBtn:SetActive(false)
self.DescCon:SetActive(true)
self.ContinueBtn:SetActive(true)
self.explain_txt.text = "萌羊座似乎还能感知你的存在,点击试试看吧"
self.desc_txt.text = string.format("完成主线任务:%d/%d",finish_num,GuideSpiritView.MaxTaskNum)
end
end
function GuideSpiritView:SetSpiritModel()
local function load_callback()
if self.curr_Model == nil then
self.curr_Model = lua_resM:GetPartModel(self, self.con)
self.animator = self.curr_Model.gameObject:GetComponent("Animator")
end
if self.curr_Model then
self.spirit_root = self.curr_Model.transform:Find("Bone001")
if self.spirit_root then
local function load_finish_func(go)
if go then
self.BGEffect = go.transform
self:SetUILayer(go.transform)
go.transform.localPosition = Vector3(-0.046,1.459,-0.036)
go.transform.localScale = Vector3.one
go.transform.localRotation = Quaternion.Euler(Vector3.zero)
end
self:SetUIDepth(self.UICon.gameObject)
end
local function load_finish(go)
if go then
self:SetUILayer(go.transform)
go.transform.localPosition = Vector3(-0.046,1.459,-0.036)
go.transform.localScale = Vector3.one
go.transform.localRotation = Quaternion.Euler(Vector3.zero)
end
self:SetUIDepth(self.UICon.gameObject)
self:AddUIEffect("ui_partnersys_bkgd",self.curr_Model.transform,self.layer_name, nil, -1, false, -1, nil, nil, load_finish_func, nil, nil, true)
end
self:AddUIEffect("ui_partnersys_platformfx",self.curr_Model.transform,self.layer_name, nil, -1, false, -1, nil, nil, load_finish, nil, nil, true)
self.SpiritCon:SetParent(self.spirit_root.transform)
end
if self.finish_all then
local onTimer = function ()
if self._use_delete_method then
return
end
self:CancelDelayTimer()
self:ShowActiveAnim()
end
self.delay_timer_id = TimerQuest.AddDelayQuest(GlobalTimerQuest, onTimer,0.5)
end
end
end
local data = {
clothe_res_id = GuideModel.SpiritId,
type = SceneBaseType.StarSoul,
layer_name = self.layer_name,
rotate = Vector3(0,180,0),
action_name_list = {"idle2"},
can_rotate = false,
scale = 1,
position = Vector3(2.1, -92.2, 0),
callBack = load_callback,
layout_file = self.layout_file
}
lua_resM:SetRoleModel(self,self.SpiritCon.transform,data)
end
function GuideSpiritView:CancelDelayTimer()
if self.delay_timer_id then
TimerQuest.CancelQuest(GlobalTimerQuest, self.delay_timer_id)
self.delay_timer_id = nil
end
end
function GuideSpiritView:InitEvent()
local function clickFunc(target)
if target == self.closeBtn then
self:Close()
elseif target == self.SureBtn then
self:ShowActiveAnim()
elseif target == self.ModelBtn then
if self.finish_all then
return
end
if self.curr_Model == nil then
self.curr_Model = lua_resM:GetPartModel(self, self.con)
self.animator = self.curr_Model.gameObject:GetComponent("Animator")
end
if self.animator then
self.animator.speed = 1
self.animator:Update(0)
self.animator:CrossFade("shake1",0.1, 0)
if not self.isPlay then return end
local cur_state = self.animator:GetCurrentAnimatorStateInfo(0)
if cur_state then
local action_time = cur_state.length
self.isPlay = false
self.model_timer_1 = setTimeout(function()
if self.animator then
self.isPlay = true
self.animator:CrossFade("idle",0.1,0)
end
end,action_time)
end
end
elseif target == self.ContinueBtn then
self:BtnCall()
end
end
AddClickEvent(self.closeBtn,clickFunc )
AddClickEvent(self.ModelBtn,clickFunc,LuaSoundManager.SOUND_UI.SWITCH)
AddClickEvent(self.SureBtn,clickFunc,LuaSoundManager.SOUND_UI.SWITCH)
AddClickEvent(self.ContinueBtn,clickFunc,LuaSoundManager.SOUND_UI.SWITCH)
end
function GuideSpiritView:StartLeaveTimer( time )
local onUpdate = function ( )
time = time - 1
if time<=0 then
self.leaveTime.text = ""
self:CancelLeaveTimer()
self:Close()
return
end
self.leaveTime.text = time.."s后自动关闭"
end
self.leaveTime.text = ""
if not self.leave_timer_id then
self.leaveTime.text = time.."s后自动关闭"
self.leave_timer_id = GlobalTimerQuest:AddPeriodQuest(onUpdate, 1, -1)
end
onUpdate()
end
function GuideSpiritView:CancelLeaveTimer( )
if self.leave_timer_id then
GlobalTimerQuest:CancelQuest(self.leave_timer_id)
self.leave_timer_id = nil
end
end
function GuideSpiritView:Remove()
if self.event_id then
self.model:UnBind(self.event_id)
end
self:CancelLeaveTimer()
self:CancelDelayTimer()
if self.model_timer_1 then
TimerQuest.CancelQuest(GlobalTimerQuest, self.model_timer_1)
self.model_timer_1 = nil
end
if self.model_timer_2 then
TimerQuest.CancelQuest(GlobalTimerQuest, self.model_timer_2)
self.model_timer_2 = nil
end
if self.model_timer_3 then
TimerQuest.CancelQuest(GlobalTimerQuest, self.model_timer_3)
self.model_timer_3 = nil
end
end
function GuideSpiritView:ShowActiveAnim()
if self.curr_Model == nil then
self.curr_Model = lua_resM:GetPartModel(self, self.con)
self.animator = self.curr_Model.gameObject:GetComponent("Animator")
end
if self.animator then
self.animator.speed = 1
self.animator:Update(0)
self.animator:CrossFade("shake",0.1, 0)
if self.spirit_root == nil then
self.spirit_root = self.curr_Model.transform:Find("Bone001")
end
if self.spirit_root then
local function load_finish_func(go)
if go then
self:SetUILayer(go.transform)
go.transform.localPosition = Vector3(0,0,0)
go.transform.localScale = Vector3.one
go.transform.localRotation = Quaternion.Euler(Vector3.zero)
end
end
self:AddUIEffect("ui_partnersys_touchhot",self.spirit_root.transform,self.layer_name, nil, -1, false, -1, nil, nil, load_finish_func, nil, nil, true)
end
local cur_state = self.animator:GetCurrentAnimatorStateInfo(0)
if cur_state then
local action_time = cur_state.length
self.model_timer_2 = setTimeout(function()
self.SpiritCon:SetParent(self.con.transform)
SetLocalRotation(self.SpiritCon)
SetAnchoredPosition(self.SpiritCon,0,132)
if self.BGEffect then
self.BGEffect:SetParent(self.con.transform)
end
self.curr_Model.gameObject:SetActive(false)
local spirit_Model = lua_resM:GetPartModel(self, self.SpiritCon)
if spirit_Model then
spirit_Model.transform.localRotation = Vector3(0,180,0)
local spirit_animator = spirit_Model.gameObject:GetComponent("Animator")
spirit_animator.speed = 1
spirit_animator:Update(0)
spirit_Model:PlayActions({"casual","idle"})
end
self:AddUIEffect("ui_partnersys_breakout", self.EffectCon, self.layer_name, nil, {x=1,y=1,z=1}, true, nil, nil, nil, call_fun)
self.model_timer_3 = setTimeout(function ( )
self.EffectCon.gameObject:SetActive(false)
self:StartLeaveTimer(5)
end,0.5)
end,action_time)
end
end
end
function GuideSpiritView:BtnCall()
self:Close()
setTimeout(function ()
GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK, true)
end,0.2)
end