235 lines
6.6 KiB
C#
235 lines
6.6 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using Newtonsoft.Json;
|
||
using System.Threading.Tasks;
|
||
|
||
public class selectGameEscape512 : MonoBehaviour
|
||
{
|
||
private int gameEscapeId;
|
||
|
||
// 定义一个事件,当 gameEscapeId 被更新时触发
|
||
public static event Action<int> OnGameEscapeIdUpdated;
|
||
|
||
|
||
void Start()
|
||
{
|
||
// 由于除登录注册外的其他方法,都需要登录后返回的token
|
||
// 因此登录不在此发送请求(同时)
|
||
// 采用监听和事件回调的方法,只有监听到登录和token返回时,才运行其他方法
|
||
LoginAndGetToken.OnTokenReceived += HandleTokenReceived;
|
||
// 订阅事件,当 gameEscapeId 更新时调用 HandleGameEscapeIdUpdated
|
||
selectGameEscape512.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated;
|
||
}
|
||
|
||
private string token; // 用于保存收到的 token
|
||
|
||
void HandleTokenReceived(string token)
|
||
{
|
||
// 使用 token
|
||
this.token = token;
|
||
Debug.Log("HandleTokenReceived监听:" + token);
|
||
StartCoroutine(GameEscapeRoutine(token)); // 启动协程,每2秒调用一次gameEscape
|
||
}
|
||
void HandleGameEscapeIdUpdated(int newGameEscapeId)
|
||
{
|
||
Debug.Log("GameEscapeId 已更新为: " + newGameEscapeId);
|
||
// 在这里添加你想要执行的逻辑
|
||
}
|
||
|
||
// 创建一个IEnumerator的协程
|
||
IEnumerator GameEscapeRoutine(string token)
|
||
{
|
||
while (true) // 无限循环来实现每2秒发送一次请求
|
||
{
|
||
yield return new WaitForSeconds(5f); // 每2秒暂停一次
|
||
yield return gameEscape(token); // 调用gameEscape方法
|
||
}
|
||
}
|
||
|
||
public async Task gameEscape(string token)
|
||
{
|
||
// 用来给请求头赋值
|
||
string Authorization = token;
|
||
Debug.Log("Loding(Authorization)请求头赋值" + Authorization);
|
||
|
||
// 5.1查询最近一场大屠杀
|
||
Dictionary<string, string> head51 = new Dictionary<string, string>
|
||
{
|
||
{ "Authorization", Authorization }, // 设置授权头
|
||
};
|
||
|
||
string response51 = await web.SendRequest("http://121.40.42.41:8080/snail/gameEscape/queryLatest", "POST", "{}", head51);
|
||
Debug.Log("5.1查询最近一场大屠杀(独立)" + response51); // 查询最近一场大逃亡游戏详情:
|
||
|
||
// 解析JSON数据
|
||
string json = response51;
|
||
Response response = JsonConvert.DeserializeObject<Response>(json);
|
||
|
||
if (response != null && response.code == 200 && response.data != null)
|
||
{
|
||
gameEscapeId = response.data.gameEscapeModel.id;
|
||
Debug.Log("解析成功,id为: " + gameEscapeId);
|
||
|
||
// 触发事件,通知所有订阅者
|
||
OnGameEscapeIdUpdated?.Invoke(gameEscapeId);
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("解析失败或响应错误");
|
||
}
|
||
}
|
||
|
||
void OnDestroy()
|
||
{
|
||
// 取消监听,避免内存泄漏
|
||
LoginAndGetToken.OnTokenReceived -= HandleTokenReceived;
|
||
}
|
||
|
||
// Update is called once per frame
|
||
void Update()
|
||
{
|
||
|
||
}
|
||
|
||
[Serializable]
|
||
public class GameEscapeModel
|
||
{
|
||
public int id; // 解析游戏ID
|
||
public string gameNo; // 包括游戏编号
|
||
}
|
||
|
||
[Serializable]
|
||
public class GameEscapeRoomResponseVo
|
||
{
|
||
public int escapeId; // 逃脱游戏的ID
|
||
public int roomNo; // 房间号
|
||
}
|
||
|
||
[Serializable]
|
||
public class Data
|
||
{
|
||
public int carrySeconds; // 持续秒数
|
||
public GameEscapeModel gameEscapeModel; // 嵌套的GameEscapeModel对象
|
||
public List<GameEscapeRoomResponseVo> gameEscapeRoomResponseVoList; // 房间信息列表
|
||
public object gameEscapeUserModel; // 用户模型,可以保持为空或根据需要进行定义
|
||
}
|
||
|
||
[Serializable]
|
||
public class Response
|
||
{
|
||
public int code; // 状态码
|
||
public string message; // 返回信息
|
||
public Data data; // 数据对象
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
/*public class selectGameEscape512 : MonoBehaviour
|
||
{
|
||
int gameEscapeId;
|
||
|
||
void Start()
|
||
{
|
||
// 由于除登录注册外的其他方法,都需要登录后返回的token
|
||
// 因此登录不在此发送请求(同时)
|
||
// 采用监听和事件回调的方法,只有监听到登录和token返回时,才运行其他方法
|
||
LoginAndGetToken.OnTokenReceived += HandleTokenReceived;
|
||
}
|
||
|
||
void HandleTokenReceived(string token)
|
||
{
|
||
// 使用 token
|
||
Debug.Log("HandleTokenReceived监听:" + token);
|
||
StartCoroutine(GameEscapeRoutine(token)); // 启动协程,每2秒调用一次gameEscape
|
||
}
|
||
|
||
// 创建一个IEnumerator的协程
|
||
IEnumerator GameEscapeRoutine(string token)
|
||
{
|
||
while (true) // 无限循环来实现每2秒发送一次请求
|
||
{
|
||
yield return new WaitForSeconds(2f); // 每2秒暂停一次
|
||
yield return gameEscape(token); // 调用gameEscape方法
|
||
}
|
||
}
|
||
|
||
public async Task gameEscape(string token)
|
||
{
|
||
// 用来给请求头赋值
|
||
string Authorization = token;
|
||
Debug.Log("Loding(Authorization)请求头赋值" + Authorization);
|
||
|
||
// 5.1查询最近一场大屠杀
|
||
Dictionary<string, string> head51 = new Dictionary<string, string>
|
||
{
|
||
{ "Authorization", Authorization }, // 设置授权头
|
||
};
|
||
|
||
string response51 = await web.SendRequest("http://121.40.42.41:8080/snail/gameEscape/queryLatest", "POST", "{}", head51);
|
||
Debug.Log("5.1查询最近一场大屠杀(独立)" + response51); // 查询最近一场大逃亡游戏详情:
|
||
|
||
// 解析JSON数据
|
||
string json = response51;
|
||
Response response = JsonConvert.DeserializeObject<Response>(json);
|
||
|
||
if (response != null && response.code == 200 && response.data != null)
|
||
{
|
||
gameEscapeId = response.data.gameEscapeModel.id;
|
||
Debug.Log("解析成功,id为: " + gameEscapeId);
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("解析失败或响应错误");
|
||
}
|
||
}
|
||
|
||
void OnDestroy()
|
||
{
|
||
// 取消监听,避免内存泄漏
|
||
LoginAndGetToken.OnTokenReceived -= HandleTokenReceived;
|
||
}
|
||
|
||
// Update is called once per frame
|
||
void Update()
|
||
{
|
||
|
||
}
|
||
|
||
[Serializable]
|
||
public class GameEscapeModel
|
||
{
|
||
public int id; // 解析游戏ID
|
||
public string gameNo; // 包括游戏编号
|
||
}
|
||
|
||
[Serializable]
|
||
public class GameEscapeRoomResponseVo
|
||
{
|
||
public int escapeId; // 逃脱游戏的ID
|
||
public int roomNo; // 房间号
|
||
}
|
||
|
||
[Serializable]
|
||
public class Data
|
||
{
|
||
public int carrySeconds; // 持续秒数
|
||
public GameEscapeModel gameEscapeModel; // 嵌套的GameEscapeModel对象
|
||
public List<GameEscapeRoomResponseVo> gameEscapeRoomResponseVoList; // 房间信息列表
|
||
public object gameEscapeUserModel; // 用户模型,可以保持为空或根据需要进行定义
|
||
}
|
||
|
||
[Serializable]
|
||
public class Response
|
||
{
|
||
public int code; // 状态码
|
||
public string message; // 返回信息
|
||
public Data data; // 数据对象
|
||
}
|
||
}*/
|
||
|
||
|