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

266 lines
9.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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,
}
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;
// 版本号
public GameKey gameId;
private NavMeshDataInstance currentInstance;
public void Close()
{
MRLeftControl.GetComponent<XRRayInteractor>().enabled = false;
MRRightControl.GetComponent<XRRayInteractor>().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<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();
}, 75f);
}
public void LoadNavMesh(NavMeshData data)
{
// 卸载之前的NavMesh
currentInstance.Remove();
// 加载新的NavMesh
currentInstance = NavMesh.AddNavMeshData(data);
}
}
}