using System.Collections; using System.Collections.Generic; using UnityEngine; using GameFramework.Event; using UnityGameFramework.Runtime; using UnityEngine.Video; using System; using DG; using DG.Tweening; public class BuildManager : MonoSingleton { public static List unlockbuildList = new List(); private bool _isPlay = false; private VideoPlayer vplayer; private float _duration = 0; private GameObject cmObj; private GameObject mainCm; private GameObject uiCm; private int unlockBuildId = 0; GameObject unlockEffect = null; /// /// 完成回调 /// private Action finishAC = null; // private bool first = true; ///// ///// ///// //public static void Init() //{ // Debug.Log("注册建筑解锁消息成功"); // EventComponent nowEvent = GameEntry.GetComponent(); // //nowEvent.Subscribe(BattleEventYLSkillFeatureS.EventId, OnYLSkillFeatureStart); // //EventComponent e = GameEntry.GetComponent(); // nowEvent.Subscribe(BuildUnlockEvent.EventId, FunUnlockBuild); // //unlockbuildList.Add(1002); // //unlockbuildList.Add(1000); // //unlockbuildList.Add(1001); // //unlockbuildList.Add(1003); //} //public static void FunUnlockBuild(object sender, GameEventArgs e) //{ // BuildUnlockEvent buildunlock = e as BuildUnlockEvent; // Debug.Log("获得建筑解锁事件:" + buildunlock.buildId); // if (!unlockbuildList.Contains(buildunlock.buildId)) // { // unlockbuildList.Add(buildunlock.buildId); // } //} public static void UnlockBuild(int BuildId) { if (!unlockbuildList.Contains(BuildId)) { unlockbuildList.Add(BuildId); //if (UI_BaseMainWindow.Instance() != null) //{ // UI_BaseMainWindow.Instance().UnlockBuild(); //} } } public void Update() { if (_duration > 0) { _duration -= Time.deltaTime; if (_duration <= 0) { vplayer.gameObject.SetActive(false); _duration = 0; sm_gate gateMo = null; if (GameDateManager.Instance.GateID != 0) { gateMo = sm_gate.GetMoById(GameDateManager.Instance.GateID); } if (gateMo != null && ((BattleDefine.EBattleSceneType)int.Parse(gateMo.battleType) == BattleDefine.EBattleSceneType.EBattleType_Safe)) { // UnlockBuild(unlockBuildId); } if(mainCm) { mainCm.SetActive(true); } if (uiCm) { uiCm.SetActive(true); } if (cmObj) { cmObj.SetActive(false); } if (GameDateManager.Instance.lastBattleType == BattleDefine.EBattleSceneType.EBattleType_Safe) { PanelHelper.Instance.ShowPanel("UI_BaseMainWindow"); } } } } /// /// 解锁建筑 /// /// 建筑ID /// 播放时长 public float NewUnlockBuild(int BuildId) { float playTime = 5; mainCm = Camera.main.gameObject; uiCm = GameObject.Find("UICamera"); cmObj = GameObject.Find("ForeverUI").transform.Find("UnlockBuildEffect/Camera").gameObject; if (uiCm && mainCm) { float timer = 0; Tween t = DOTween.To(() => timer, x => timer = x, 1, 1.3f) .OnStepComplete(() => { uiCm.SetActive(false); mainCm.SetActive(false); }) .SetLoops(0); } cmObj.SetActive(true); sm_build build = sm_build.GetMoById(BuildId); unlockBuildId = BuildId; if (!unlockEffect) { unlockEffect = GameObject.Find("ForeverUI/UnlockBuildEffect"); } vplayer = unlockEffect.transform.Find("VideoPlayer/unlockBuild_" + BuildId.ToString()).GetComponent(); vplayer.gameObject.SetActive(true); vplayer.targetCamera = cmObj.GetComponent(); if(vplayer.frameRate == 0) { return 0; } playTime = (float)vplayer.frameCount / vplayer.frameRate; _duration = playTime; vplayer.Play(); UnlockBuild(unlockBuildId); //GameObject cameraObj = GameObject.Find("ForeverUI").transform.Find("Scenes/MainUIBuilder/CameraNode/Main Camera").gameObject; //GameObject bgObj = GameObject.Find("ForeverUI").transform.Find("Scenes/MainUIBuilder/BG/LensFlare").gameObject; //if (cameraObj) //{ // UnityEngine.Rendering.PostProcessing.PostProcessLayer layer = cameraObj.GetComponent(); // layer.enabled = false; //} //if(bgObj) //{ // bgObj.SetActive(false); //} return playTime; } }