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