221 lines
7.5 KiB
C#
221 lines
7.5 KiB
C#
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,
|
||
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,
|
||
Ningxia_Yinchuan_Jinfeng_XinhualianGuangchang = 45,
|
||
Hunan_Zhuzhou_Wanda_Shennongcheng_Chaowanshe = 46,
|
||
}
|
||
|
||
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<XRRayInteractor>().enabled = false;
|
||
MRRightControl.GetComponent<XRRayInteractor>().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<CoroutineTaskManager>.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();
|
||
}, 15f);
|
||
}
|
||
|
||
public void LoadNavMesh(NavMeshData data)
|
||
{
|
||
// 卸载之前的NavMesh
|
||
currentInstance.Remove();
|
||
|
||
// 加载新的NavMesh
|
||
currentInstance = NavMesh.AddNavMeshData(data);
|
||
}
|
||
}
|
||
}
|