266 lines
9.4 KiB
C#
266 lines
9.4 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;
|
||
|
||
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);
|
||
}
|
||
}
|
||
}
|