|
|
- --[[
- 新功能开启,包括功能图标、技能图标的展示
- ]]
- NewModelOpenView = NewModelOpenView or BaseClass(BaseView)
- local NewModelOpenView = NewModelOpenView
-
- --模型资源图标ID
- NewModelOpenView.model_icon_res = {
- [1] = {ab_name = "mainRole_asset", res_name = "mainrole_level_btn"},
- [2] = {ab_name = "mainUI_asset", res_name = "icon_leftBottom_1"}, --巫女
- [3] = {ab_name = "mainUI_asset", res_name = "icon_leftBottom_32"}, --契兽
- [4] = {ab_name = "mainUI_asset", res_name = "guide_icon_xingpang"}, --星盘
- [5] = {ab_name = "mainUI_asset", res_name = "guide_icon_baoju"}, --宝具
- [6] = {ab_name = "mainUI_asset", res_name = "guide_icon_bingwu"}, --兵武
- [9] = {ab_name = "mainUI_asset", res_name = "icon_leftBottom_22"}, --宝宝
-
- }
-
- function NewModelOpenView:__init()
- self.base_file = "func"
- self.layout_file = "NewModelOpenView"
- self.layer_name = "Activity"
- self.destroy_imm = true
- self.change_scene_close = true
- self.open_guide_close = nil
- self.hide_maincancas = false --隐藏主界面
- self.click_bg_toClose = true
- self.use_background = true --不一定显示遮罩
- self.close_fog = true
- self.model = FuncOpenModel:getInstance()
- self.mainVo = RoleManager.Instance.mainRoleInfo
- self.time_diff = 10
- self.model.is_open_func_model_view = true
-
-
- self.load_callback = function ()
- self:LoadSuccess()
- self:AddEvent()
- end
- self.open_callback = function ( )
- self:OpenSuccess()
- end
- self.close_callback = function ()
- self:CloseSuccess()
- end
- self.destroy_callback = function ( )
- self:DestroySuccess()
- end
- end
-
- function NewModelOpenView:Open( voList )
- self.voList = voList
- self.cur_vo = self.voList[1] or {}
- BaseView.Open(self)
- end
-
- function NewModelOpenView:LoadSuccess()
- self.center_obj = self:GetChild("mid/center_cont").gameObject
- self.mask_obj = self:GetChild("mid/mask_img").gameObject
- self.mask_img = self:GetChild("mid/mask_img"):GetComponent("Image")
- self.title_img = self:GetChild("mid/center_cont/title_img"):GetComponent("Image")
- self.name_txt = self:GetChild("mid/center_cont/up_cont/name_txt"):GetComponent("TMPro.TextMeshProUGUI")
- self.desc_txt = self:GetChild("mid/center_cont/up_cont/desc_txt"):GetComponent("TMPro.TextMeshProUGUI")
- self.time_txt = self:GetChild("mid/center_cont/time_txt"):GetComponent("TMPro.TextMeshProUGUI")
- self.icon_cont = self:GetChild("icon_cont")
- self.model_cont = self:GetChild("icon_cont/model_cont")
-
- self.effect = self:GetChild("mid/center_cont/effect")
- self.effect2 = self:GetChild("mid/center_cont/effect2")
- self.up_cont = self:GetChild("mid/center_cont/up_cont").gameObject
-
- -- self:MoveUIToBack(self.effect)
-
- local function delay_method( )
- self:AddUIEffect("ui_jihuoxinxitong01", self.effect, self.layer_name, nil, 1, true,nil,nil, nil, nil,nil,UIPartical.RenderingOther_List.UIBackward)
- self:AddUIEffect("ui_jihuoxinxitong02", self.effect2, self.layer_name, nil, 1, true,nil,nil, nil, nil,nil,UIPartical.RenderingOther_List.UIBackward)
- end
- setTimeout(delay_method, 0.02) --延时0.02秒后再加载特效防止层级错乱
-
- local nodes = {
- "mid/center_cont/bg_img:img","mid/center_cont/up_cont/tipImg:img",
- }
- self:GetChildren(nodes)
- self.mask_img.alpha = 0
- self.mask_obj.transform.sizeDelta = Vector2(ScreenWidth,ScreenHeight)
- -- self.mask_obj:SetActive(true)
-
-
- local function bg_back_func( ... )
- if self.background_wnd and self.background_wnd:GetComponent("RawImageExtend") then
- self:MoveUIToBack(self.background_wnd:GetComponent("RawImageExtend"))
- end
-
- local function func( ... )
- self:MoveUIToBack(self.bg_img_img)
- end
- lua_resM:setOutsideImageSprite(self, self.bg_img_img, GameResPath.GetFuncIcon("open_func_model_bg"),false,func)
- end
- if self.background_wnd then
- bg_back_func()
- else
- self.bg_back_func = bg_back_func
- end
-
-
- self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeLeft, 0, ScreenWidth)
- end
-
- function NewModelOpenView:AddEvent()
- local function on_click( target )
- if target == self.mask_obj then
- if Scene.Instance.main_role then
- local cfg = Scene.Instance.main_role:GetMainRoleStorycfg(PoseState.STORY)
- if cfg and cfg.ignore_click then
- return
- end
- end
- self:PlayAction()
- end
- end
- AddClickEvent(self.mask_obj, on_click)
- end
-
- function NewModelOpenView:OpenSuccess()
- GlobalEventSystem:Fire(SceneEventType.CLOSE_DIALOGUE_VIEW)
- GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK)
- GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT)
- self:UpdateView()
- self:PlaySound()
- end
-
- function NewModelOpenView:PlaySound( )
- if IsTableEmpty(self.cur_vo) then
- return
- end
- if self.cur_vo then
- lua_soundM:StopEffect(self, LuaSoundManager.SOUND_TYPE.FUNC, self.sound_id)
- -- lua_soundM:StopEffect(self, LuaSoundManager.SOUND_TYPE.FUNC, self.sound_id)
- if self.cur_vo.sound and Trim(self.cur_vo.sound) ~= "" then
- if lua_soundM then
- self.sound_id = lua_soundM:PlayEffect(self, Trim(self.cur_vo.sound),false,LuaSoundManager.SOUND_TYPE.FUNC)
- end
- end
- end
- end
-
- function NewModelOpenView:UpdateView()
- if IsTableEmpty(self.cur_vo) then
- return
- end
- if not self.cur_vo.fashion_type or self.cur_vo.fashion_type == 0 then
- return
- end
-
- lua_resM:setImageSprite(self, self.title_img, "func_asset", "open_func_title3", true)
-
- self:UpdateModelCon()
- --设置文本
- -- self.name_txt.text = self.cur_vo.saying
- self.desc_txt.text = "[ " .. self.cur_vo.saying .. " ]"
- --倒计时
- self:StartTimer()
- --创建图标
- self:CreateFlyIcon()
- lua_resM:setImageSprite(self, self.tipImg_img, "func_asset", "open_func_tip_"..self.cur_vo.fashion_type, true)
- end
-
- function NewModelOpenView:UpdateModelCon( )
- --ai娘、座驾的模型展示需要单独做一些位置调整(原则,尽量不调整模型的pos,能调con的位置就调con的参数,模型太大调整scale)
- local model_pos = nil
- local model_scale = nil
- local model_con_pos = Vector3(9,-10,0)
- local rotate = nil
- local can_rotate = nil
- if self.cur_vo.fashion_type == FuncOpenModel.TypeId.FHorse then--座驾
- -- model_pos = Vector3(0, 135, 0)
- -- model_scale = 160
- model_con_pos = Vector3(9,-120,350)
- rotate = Vector3(0, 160, 0)
- can_rotate = true
- elseif self.cur_vo.fashion_type == FuncOpenModel.TypeId.FJarvis then--ai娘
- -- model_pos = Vector3(0, 120, 0)
- model_scale = 240
- model_con_pos = Vector3(35,-30,150)
- elseif self.cur_vo.fashion_type == FuncOpenModel.TypeId.FPearl then--宝具
- -- model_pos = Vector3(0, 180, 0)
- -- model_scale = 220
- model_con_pos = Vector3(15,-20,0)
- elseif self.cur_vo.fashion_type == FuncOpenModel.TypeId.FWeapon then--武器
- -- model_pos = Vector3(0, 180, 0)
- -- model_scale = 200
- model_con_pos = Vector3(45,-10,280)
- elseif self.cur_vo.fashion_type == FuncOpenModel.TypeId.FCloud then--AI娘翅膀
- model_con_pos = Vector3(20,-10,0)
- elseif self.cur_vo.fashion_type == FuncOpenModel.TypeId.FWing then--翅膀
- model_con_pos = Vector3(20,-10,0)
- elseif self.cur_vo.fashion_type == FuncOpenModel.TypeId.Child then--宝宝
- model_con_pos = Vector3(20, -10, 0)
- model_scale = 500
- end
- self.model_cont.transform.localPosition = model_con_pos
-
- local res_data = {
- father_node = self,
- transform = self.model_cont,
- fashion_type = self.cur_vo.fashion_type,
- figure_id = self.cur_vo.figure_id,
- position = model_pos,
- scale = model_scale,
- figure_texture = 1,
- layer_name = self.layer_name,
- can_rotate = can_rotate,
- rotate = rotate,
- ui_model_type = UIModelCommon.ModelType.BackModel,
- }
- FuncOpenModel:getInstance():SetModelRes(res_data)
-
- if self.cur_vo.fashion_type == FuncOpenModel.TypeId.FHorse then--座驾
- lua_soundM:PlayEffect(self, "activate_moto", false, LuaSoundManager.SOUND_TYPE.UI, 1)
- end
- end
-
- function NewModelOpenView:StartTimer( )
- if self.time_id == nil then
- self.time_txt.text = HtmlColorTxt(self.time_diff, "#2cf86f") .. " 秒后自动关闭"
- local function onTimer()
- self.time_diff = self.time_diff - 1
- if self.time_diff >= 0 then
- self.time_txt.text = HtmlColorTxt(self.time_diff, "#2cf86f") .. " 秒后自动关闭"
- else
- if self.time_id then
- GlobalTimerQuest:CancelQuest(self.time_id)
- self.time_id = nil
- end
- self:PlayAction()
- end
- end
- self.time_id = GlobalTimerQuest:AddPeriodQuest(onTimer,1,-1)
- end
- end
-
- function NewModelOpenView:CreateFlyIcon( )
- if self.cur_vo then
- self.image_obj = UiFactory.createChild(self.icon_cont, UIType.ImageExtend)
- self.image_obj.transform.sizeDelta = Vector2(78, 78)
- self.image_icon = self.image_obj:GetComponent("ImageExtend")
- local ab_name, res_name = "activityIcon_asset", ""
- if self.cur_vo.winId and self.cur_vo.subId then
- local fun_vo = OpenFun.LinkWin[self.cur_vo.winId.."@"..self.cur_vo.subId]
- if fun_vo then
- res_name = fun_vo.icon_res
- end
- end
- if self.cur_vo.model_type and self.cur_vo.model_type ~= 0 and self.cur_vo.icon_res_name ~= nil then
- res_name = self.cur_vo.icon_res_name
- end
-
- self.center_obj:SetActive(true)
- self.image_obj:SetActive(false)
- local function callback( ... )
- if ab_name == "activityIcon_asset" then
- self.image_obj.transform.sizeDelta = Vector2(60, 60)
- end
- end
- if ab_name and ab_name ~= "" and res_name and res_name ~= "" then
- lua_resM:setImageSprite(self, self.image_icon, ab_name, res_name, true, callback)
- if ab_name == "activityIcon_asset" then
- self.image_obj.transform.sizeDelta = Vector2(60, 60)
- end
- end
- end
- end
-
- function NewModelOpenView:PlayAction( )
- local function callback( )
- GlobalEventSystem:Fire(EventName.SHOW_FUNC_OPEN_ICON,self.voList)
- self.image_obj:SetActive(false)
- self:Close()
- end
-
- if self.cur_vo and self.cur_vo.ignore_fly then
- callback()
- return
- end
-
- if not self.image_obj then
- callback()
- return
- end
- local pos = self.cur_vo.pos
- if self.cur_vo then
- pos = self.model:GetFlyPos(self.cur_vo)
- end
-
- self.center_obj:SetActive(false)
- self.image_obj:SetActive(true)
- self.model_cont.gameObject:SetActive(false)
- if pos ~= nil then
- self.tween_id = TweenLite.to(self, self.image_obj.transform, TweenLite.UiAnimationType.POS, pos, 0.8, callback)
- end
- end
-
- --关闭界面后做什么
- function NewModelOpenView:CloseSuccess( )
- --完成引导
- local main_role = Scene.Instance.main_role
- if main_role then
- main_role:ChangeState(PoseState.STAND)
- end
- local helpVo, endVo = GuideModel:getInstance():GetHelpVo(HelpType.TASK_ITEM_SHOW,1)
- if helpVo and not endVo then
- GlobalEventSystem:Fire(EventName.FINISH_CURRENT_HELP_STEP,helpVo)
- else
- --当前没有引导才继续做任务
- GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
- GlobalEventSystem:Fire(EventName.START_AUTO_DO_TASK)
-
- end
- -- if self.cur_vo.winId and self.cur_vo.subId then
- -- OpenFun.Open(self.cur_vo.winId, self.cur_vo.subId)
- -- else
-
- -- end
- if self.image_obj then
- self.image_obj:SetActive(false)
- end
- GlobalEventSystem:Fire(EventName.SHOW_FUNC_OPEN_ICON,self.voList)
- end
-
- function NewModelOpenView:DestroySuccess( )
- self.model.is_open_func_model_view = false
- self:ClearUIEffect(self.effect)
- self:ClearUIEffect(self.effect2)
-
- if self.time_id then
- GlobalTimerQuest:CancelQuest(self.time_id)
- self.time_id = nil
- end
- end
|