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
|
|
|
|
|
|
|