Files
MRArcadia/Assets/_Arcadia/Scripts/Base/GameLocal.cs

323 lines
11 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 BestHTTP;
using Common;
using DarkTonic.MasterAudio;
using Unity.XR.PXR;
using UnityEngine;
using System.Collections;
using DragonLi.Core;
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,//三星堆之谜
FutureMen2=12,//银河守护者2
MRFishingMaster=13,//深海乐园
MRSnowWhite=14,//公主奇缘
}
public enum Place
{
Company1Floor=0,
LiaoningAnShan=1,
Liaoning_Anshan_Lishan_Dayuecheng = -1,
HangZhouLongHuTianJie=2,
Nanjing_Yvhua_Wanxiang=3,
Nanjing_Xianlin_WanDaMao=4,
Yangzhou_Hanjiang_TansuoZhongxin=5,
Yangzhou_Hanjiang_TansuoZhongxin_wai=-5,
Zhejiang_Jinhua_KeJiGuan=6,
GuangZhou_PanYu_ZhanTing=7,
Anhui_Wuhu_Guanwei=8,
Shandong_Jining_Shangchang = 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,
}
public class GameLocal : MonoBehaviour
{
public static GameLocal Ins { get; private set; }
public Camera MRCamera;
public Transform Aim;
public Transform MRLeftControl;
public Transform MRRightControl;
public PXR_Manager PXRManager;
public State BGMState;
public GameObject[] BGM;
public GameObject goEffect;
private AuthInfo authInfo = new AuthInfo();
public Transform startDoorPos;
public Player self;
[Header("版本号")]
public string Version = "1.0.1";
[Header("场地")]
public Place place = Place.Company1Floor;
public GameKey gameId;
void Start()
{
Ins = this;
Application.targetFrameRate = 60;
gameId = GameKey.MRSnowWhite;
AuthorPanel.Show();
foreach (var item in BGM)
{
item.SetActive(false);
}
HideGoEffect(-1);
//BGMState.StateChange(0);
//PXRManager.enabled = true;
#if !UNITY_EDITOR && UNITY_ANDROID && PICO
PXR_MixedReality.EnableVideoSeeThrough(true);
#endif
}
/// <summary>
/// 登录
/// </summary>
/// <param name="cb">回调</param>
public void RequestAuth(Action<HTTPRequest, HTTPResponse> cb = null)
{
// 先获取高德定位,定位成功后再发送请求
StartCoroutine(RequestAuthWithLocation(cb));
}
/// <summary>
/// 带定位的登录请求协程
/// </summary>
private IEnumerator RequestAuthWithLocation(Action<HTTPRequest, HTTPResponse> cb)
{
bool locationReady = false;
double lat = 0, lng = 0;
// // 请求IP定位
// Debug.Log("开始IP定位...");
//
// // 等待定位结果最多等待20秒
// float waitTime = 0f;
// float maxWaitTime = 20f;
// while (!locationReady && waitTime < maxWaitTime)
// {
// yield return new WaitForSeconds(0.5f);
// waitTime += 0.5f;
// }
//
// if (!locationReady)
// {
// Debug.LogWarning("定位超时使用默认值0,0");
// }
// 发送登录请求
SendAuthRequest(lat, lng, cb);
yield break;
}
/// <summary>
/// 发送鉴权请求
/// </summary>
private void SendAuthRequest(double latitude, double longitude, Action<HTTPRequest, HTTPResponse> cb)
{
string url = "http://www.pineappletech.cn/startcount";
HTTPRequest request = new HTTPRequest(new Uri(url), HTTPMethods.Post, (req, response) =>
{
if (response != null)
{
Debug.Log("收到数据 ->" + response.DataAsText);
}
cb?.Invoke(req, response);
});
authInfo.deviceSn = GetSn();
authInfo.startAt = ConvertTimestampToDateTime(GetTimestamp()) + "";
authInfo.shop =0;
#if !UNITY_EDITOR && UNITY_ANDROID && PICO
authInfo.shop = (int)place;
if (place == Place.Liaoning_Anshan_Lishan_Dayuecheng)
authInfo.shop = 1;
if (place == Place.Yangzhou_Hanjiang_TansuoZhongxin_wai)
authInfo.shop = 5;
if(place == Place.Shandong_Jining_Shangchang_nei)
authInfo.shop = 9;
if(place == Place.Shandong_Jinan_Huaiyin_ShengfutongShangmao_wai)
authInfo.shop = 15;
if(place == Place.Nanjing_Qixia_Yaohuamen_Jindiguangchang_nei)
authInfo.shop = 17;
if(place == Place.Anhui_Suzhou_Yueshan_Guchengshangyejie_2)
authInfo.shop = 18;
if(place == Place.Wulanhaote_Wanda_Shangchang)
authInfo.shop = 21;
if(place == Place.Hunan_Hengyang_Zhuhui_Dongzhoudao_nei)
authInfo.shop = 24;
if(place == Place.Yunnan_Lincang_Linxiang_Hengji_Dixia)
authInfo.shop = 25;
if(place == Place. Gansu_Jinchang_Jinchuan_Shijiguangchang_Shiwai )
authInfo.shop = 28;
if(place == Place. Guangdong_Guangzhou_Yanghaiyan_Lihu )
authInfo.shop = 31;
if(place == Place.Zhejiang_Hangzhou_Linping_Yintaicheng_Shinei)
authInfo.shop = 32;
if(place == Place.Henan_Xinxiang_Wandaguangchang_Shinei)
authInfo.shop = 33;
if(place == Place.Jiangsu_Xvzhou_Guolou_Oulebao_2)
authInfo.shop = 36;
if(place == Place.Jiangsu_Xvzhou_Suning_Guangchang_1)
authInfo.shop = 37;
if(place == Place.Chongqing_Yuzhong_Hongyadong_Xiakexing_shiwan)
authInfo.shop = 42;
if(place == Place. Hebei_Hengshui_Taocheng_WandaGuangchang)
authInfo.shop = 44;
#endif
authInfo.gameId = (int)gameId;
authInfo.latitude = latitude;
authInfo.longitude = longitude;
string authJson = JsonUtility.ToJson(authInfo);
Debug.Log("发送数据 -> " + authJson);
Debug.Log($"当前经度: {authInfo.longitude}, 当前纬度: {authInfo.latitude}");
request.RawData = System.Text.Encoding.UTF8.GetBytes(authJson);
request.AddHeader("Content-Type", "application/json");
request.Send();
}
public void ShowGoEffect(float userTime,int bgmId,Action cb=null)
{
goEffect.transform.position = MRCamera.transform.position + new Vector3(0, 0, 20);
goEffect.SetActive(true);
GameManager.Ins.StopBGM();
CoroutineTaskManager.Instance.WaitSecondTodo(() =>
{
HideGoEffect(bgmId);
cb?.Invoke();
}, userTime);
}
public void HideGoEffect(int bgmId)
{
goEffect.SetActive(false);
if(bgmId<0)
return;
GameManager.Ins.PlayBGM(bgmId);
}
public long GetTimestamp()
{
return (long)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;
}
public string ConvertTimestampToDateTime(long timestamp)
{
// Unix时间戳是从1970年1月1日00:00:00开始的秒数或毫秒数
// 这里以秒为单位如果时间戳是毫秒则除以1000
DateTime dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
return dateTime.ToString("yyyy-MM-dd HH:mm:ss");
}
/// <summary>
/// 获取sn号
/// </summary>
public string GetSn()
{
string res = "UnityEditor";
// string res = "PA8E10MGH7210380D";
#if !UNITY_EDITOR && UNITY_ANDROID && PICO
res = PXR_Enterprise.StateGetDeviceInfo(SystemInfoEnum.EQUIPMENT_SN);
#endif
return res;
}
}