Files
valheim/Assets/_Valheim/Scripts/GameInit.cs

203 lines
6.6 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,
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,
}
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();
}
public void LoadNavMesh(NavMeshData data)
{
// 卸载之前的NavMesh
currentInstance.Remove();
// 加载新的NavMesh
currentInstance = NavMesh.AddNavMeshData(data);
}
}
}