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; public enum GameKey { DinosaurPark2=0,//重返侏罗纪 SpongeBob=1,//深海冒险 XMen=2,//银河守护者 KOF=3,//幻影交锋 Valheim=4,//小小幻宠 FutureMen=5,//未来战警 AliceBall=6,//爱丽丝的舞会 Zombie=7,//僵尸来了 DefendNJ=8,//保卫金陵 Loong=9, //巨龙猎人 MRCS=10,//火力对决 SXDMystery=11,//三星堆之谜 } namespace Valheim { public enum Place { GongSi1Lou=0, GongSi1LouShiwai=-999, 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, Anhui_Suzhou_Yueshan_Guchengshangyejie_2=-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, Chongqing_Yuzhong_Hongyadong_Xiakexing_shiwan=-42, Chengdu_Shuangliu_ShengfeiXuexiao =43, Hebei_Hengshui_Xinji_WandaGuangchang = 44, Hebei_Hengshui_Taocheng_WandaGuangchang=-44, Ningxia_Yinchuan_Jinfeng_XinhualianGuangchang = 45, Hunan_Zhuzhou_Wanda_Shennongcheng_Chaowanshe = 46, Anhui_Suzhou_Yueshan_Guchengshangyejie_Shinei=47, Zhejiang_Wenzhou_Cangnan_Yintaicheng = 48, Shandong_Jining_Shangchang_3 = 49, Anhui_Manshan_XingyueGuangchang = 50, Shandong_Weifang_Linqu_WandaGuangchang = 51, Guangdong_Foushan_Haiyangguang = 52, Jilin_Changchun_Chaoyang_OuyaMaichang = 53, Shandong_Weifang_Linqu_WandaGuangchang_Shinei=54, Liaoning_Panjin_Shuangtaizi_Shuangtaicheng = 55, Liaoning_Dalian_Pulandian_WandaGuangchang = 56, Jiangxi_Ganzhou_Longnan_WandaGuangchang=57, Jiangxi_Ganzhou_Longnan_WandaGuangchang_Shinei=58, Jiangxi_Ganzhou_Zhanggong_GanzhouShucheng=59, Henan_Shangqiu_Juyang_WuyueGuangchang = 60, Guangdong_Meizhou_Meixian_TianhongShangchang = 61, Beijing_Tongzhou_Luyijie_XiangrikuiGuangchang = 62, Ningxia_Yinchuang_Shizuishan_WandaGuangchang = 63, Jilin_Jilin_Chuangying_Zhongdongxinshenghuo=64, Jiangxi_Nanchang_Xinjian_XvhuiGuangchang = 65, Shandong_Weihai_Jingqu_W37=66, Hunan_Xiangxi_Yongshun_XintiandiShangchang=67, Shanxi_Yuncheng_Yanhu_WandaGuangchang = 68, Bejing_Miyun_RuijiaShangchang = 69, Henan_Kaifeng_Longting_XihuJingqu = 70, Henan_Kaifeng_Longting_XihuJingqu_Shiwai = 71, Jiangxi_Nanchang_Xihu_NanchangDongwuyuan = 72, Liaoning_Panjin_Xinglongtai_Shuiyoucheng = 73, Shanxi_Yulin_Shenmu_Liuta_Yuyuecheng = 74, Sichuan_Liangshan_Mianning_GaoyangJiedao = 75, Jiangxi_Nanchang_Xihu_NanchangDongwuyuan_Shinei = 76, Ningxia_Yinchuan_Xingqing_XinhuaBaihuo = 77, Liaoning_Huludao_Jianchang_XinglongDajiating = 78, Ningxia_Yinchuan_Xingqing_XinhuaBaihuo_Shiwai = 79, Ningxia_Wuzhong_Litong_YiwuShangmaocheng = 80, Gansu_Dingxi_Anding_WandaGuangchang=81, Guangdong_Shaoguan_Lechang_ZhigongwenhuGuangchang=82, Guangdong_Shaoguan_Lechang_Dongjietingchechang=83, Liaoning_Fushun_Xinbinmanzu_MinzuShangchang=84, Wuhan_Jiangxia_LongwanBandao=85, } 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 float curGameTime = 0; public GameObject goEffect; [NonSerialized] public Player self; [Header("场地")] public Place place = Place.GongSi1Lou; // 版本号 public GameKey gameId; private NavMeshDataInstance currentInstance; public void Close() { MRLeftControl.GetComponent().enabled = false; MRRightControl.GetComponent().enabled = false; } void Start() { Ins = this; gameId = GameKey.Valheim; 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(); Debug.Log("游戏结束,5秒后退出"); CoroutineTaskManager.Instance.WaitSecondTodo(() => { Debug.Log("正在退出游戏..."); Application.Quit(); }, 75f); } public void LoadNavMesh(NavMeshData data) { // 卸载之前的NavMesh currentInstance.Remove(); // 加载新的NavMesh currentInstance = NavMesh.AddNavMeshData(data); } } }