using System; using System.Collections; using Common; using DragonLi.Core; using Unity.XR.PXR; using UnityEngine; using UnityEngine.AI; using UnityEngine.XR.Interaction.Toolkit; using Wave.Native; namespace Valheim { public enum Place { GongSi1Lou=0, LiaoningAnShan=1, Liaoning_Anshan_Lishan_Dayuecheng = -1, HangZhouLongHuTianJie=2, Nanjing_Yuhua_WanXiangTianDi=3, Nanjing_Xianlin_WanDaMao=4, Yangzhou_Hanjiang_Tansuozhongxin=5, Yangzhou_Hanjiang_Tansuozhongxin_wai=-5, Zhejiang_Jinhua_KeJiGuan=6, Guangzhou_Panyv_Zhanting=7, Anhui_Wuhu_Guanwei=8, Shandong_Jining_Shangchang_wai=9, Shandong_Jining_Shangchang_nei=-9, ShanDong_Langfang_QingzhouTaihuacheng=10, Hubei_Xiangyang_Kejiguan=11, Zhejiang_Shaoxing_Shengzhou_WuyueGuangchang = 12, Hunan_Jishou_Qianzhou_Tianhong=13, Jilin_Tonghua_Liuhe=14, Shandong_Jinan_Huaiyin_ShengfutongShangmao = 15, Shandong_Jinan_Huaiyin_ShengfutongShangmao_wai = -15, Henan_Xinzheng_Shuanghudadao_Longhujinyicheng = 16, Nanjing_Qixia_Yaohuamen_Jindiguangchang = 17, Nanjing_Qixia_Yaohuamen_Jindiguangchang_nei = -17, Anhui_Suzhou_Yueshan_Guchengshangyejie = 18, Gansu_Longnan_Shicheng_Dongsheng = 19, Shandong_Heze_Yuncheng_Gefuli = 20, Wulanhaote_Ouya_Shangchang = 21, Wulanhaote_Wanda_Shangchang = -21, Yunnan_Mile_Jinchen_Shidaiguangchang = 22, Xinjiang_Yili_Yining_Wanrong = 23, Hunan_Hengyang_Zhuhui_Dongzhoudao = 24, Hunan_Hengyang_Zhuhui_Dongzhoudao_nei = -24, Yunnan_Lincang_Linxiang_Hengji = 25, Yunnan_Lincang_Linxiang_Hengji_Dixia = -25, Guangxi_Guilin_Gongcheng_Shijixincheng = 26, Guangdong_Shenzhen_Guangming_Wanda = 27, Gansu_Jinchang_Jinchuan_Shijiguangchang = 28, Gansu_Jinchang_Jinchuan_Shijiguangchang_Shiwai=-28, Jiangsu_Xvzhou_Fengxian_Wuyueguangchang = 29, Hebei_Tangshan_Qianan_Tianyuangu = 30, Guangdong_Guangzhou_Yanghaiyan = 31, Guangdong_Guangzhou_Yanghaiyan_Lihu=-31, Zhejiang_Hangzhou_Linping_Yintaicheng = 32, Zhejiang_Hangzhou_Linping_Yintaicheng_Shinei = -32, Henan_Xinxiang_Wandaguangchang =33, Henan_Xinxiang_Wandaguangchang_Shinei=-33, Yangzhou_Hanjiang_TansuoZhongxin_Waidai =34, Nanjing_Pukou_Longhutianjie=35, Jiangsu_Xvzhou_Guolou_Oulebao=36, Jiangsu_Xvzhou_Guolou_Oulebao_2=-36, Jiangsu_Xvzhou_Suning_Guangchang =37, Jiangsu_Xvzhou_Suning_Guangchang_1 =-37, Shanxi_Baoji_Meixian_TianlongShangcheng=38, Hunan_Changde_Lixian_WandaGuangchang=39, Jilin_Changchun_Beihu_WuyueGuangchang=41, Chongqing_Yuzhong_Hongyadong_Xiakexing=42, Chengdu_Shuangliu_ShengfeiXuexiao=43, } public enum Bgm { Common, Fight, Win, Fail, Level0, Level1, Level2, } public class GameInit : MonoBehaviour { public static GameInit Ins { get; private set; } public Camera MRCamera; public State MRBgm; public Transform MRLeftControl; public Transform MRRightControl; //public PXR_Manager PXRManager; public Transform FakeTree; public Transform[] WorkTree; public LaboratoryManager laboratory; public GameObject[] worldPres; public Transform aiDrPos; public Transform doorPos; public Transform petPos; public GameObject[] badges; public GameObject[] openEffects; public NavMeshData[] navMeshData; public GameObject winLightBgm; public GameObject goEffect; [NonSerialized] public Player self; [Header("场地")] public Place place = Place.GongSi1Lou; // 版本号 private NavMeshDataInstance currentInstance; public void Close() { MRLeftControl.GetComponent().enabled = false; MRRightControl.GetComponent().enabled = false; } void Start() { Ins = this; Application.targetFrameRate = 60; //ConPanel.Show(); MRNetworkManager.Ins.CreateAndJoinRoom(); MRNetworkManager.Ins.networkDiscovery.AdvertiseServer(); MRBgm.StateChangeBgm(0); #if !UNITY_EDITOR && UNITY_ANDROID && PICO PXR_MixedReality.EnableVideoSeeThrough(true); #elif !UNITY_EDITOR && UNITY_ANDROID && VIVE Interop.WVR_ShowPassthroughUnderlay(true); #endif } public void StartGame(Action cb) { laboratory.gameObject.SetActive(false); winLightBgm.SetActive(false); goEffect.transform.position = MRCamera.transform.position + new Vector3(0, 0, 20); goEffect.SetActive(true); foreach (var obj in worldPres) { obj.SetActive(false); } LoadNavMesh(navMeshData[GameManager.Ins.curMapId]); MonoSingleton.Instance.WaitSecondTodo(() => { goEffect.SetActive(false); for (int i = 0; i < worldPres.Length; i++) { worldPres[i].gameObject.SetActive(i==GameManager.Ins.curMapId); } cb?.Invoke(); },5f); foreach (var obj in badges) { obj.SetActive(false); } foreach (var obj in openEffects) { obj.SetActive(false); } } public void BadgeShow(int id) { badges[id].SetActive(true); } public IEnumerator PlayEndAnimation() { foreach (var item in badges) { item.SetActive(true); StartCoroutine(GameManager.Ins.PlayAudio("放入徽章音效",item.transform,true)); yield return new WaitForSeconds(1f); } openEffects[0].SetActive(true); yield return new WaitForSeconds(1f); openEffects[1].SetActive(true); StartCoroutine(GameManager.Ins.PlayAudio("光波炸开音效", openEffects[1].transform, true)); yield return new WaitForSeconds(2f); openEffects[2].SetActive(true); yield return new WaitForSeconds(2f); //GameManager.Ins.GameOver = true; StartCoroutine(GameManager.Ins.PlayAudio("NPC25", self.transform, true)); winLightBgm.SetActive(true); GameManager.Ins.IsWin = true; GameManager.Ins.GameEnd(); } public void LoadNavMesh(NavMeshData data) { // 卸载之前的NavMesh currentInstance.Remove(); // 加载新的NavMesh currentInstance = NavMesh.AddNavMeshData(data); } } }