_TheStrongestSnail/TheStrongestSnail/Assets/Scripts/Login/11/selectUserInfo.cs
wulongxiao 2bb3a4898b huang
2024-11-14 18:09:37 +08:00

422 lines
14 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 System.Collections.Generic;
using UnityEngine;
using System.Threading.Tasks;
using Newtonsoft.Json;
using UnityEngine.UI;
using Newtonsoft.Json.Linq;
/*public class selsecUserInfo : MonoBehaviour
{
public string token = null; // 保存最新的 token初始为 null
public int escapeId = -1; // 保存最新的 escapeId初始为 -1 表示未设置
void Start()
{
// 注册监听事件,当收到 token 时,触发 HandleTokenReceived
LoginAndGetToken.OnTokenReceived += HandleTokenReceived;
// 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated但不执行其他方法
selectLatest511.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated;
}
// 当接收到 token 时触发此方法,仅保存 token
public void HandleTokenReceived(string receivedToken)
{
token = receivedToken; // 保存最新的 token
// 首次调用加载初始数据
LoadInitialData();
//LoadGameEscapeData();
//Debug.Log("接收到新的 token: " + token);
}
// 当游戏逃亡 ID 更新时触发此方法,仅保存最新的 escapeId
public async void HandleGameEscapeIdUpdated(int newGameEscapeId)
{
escapeId = newGameEscapeId; // 保存最新的 escapeId
await selectUser();//=====================================================================放在这里仅因为懒得写触发条件可以放在任何地方比如input.GetKeyDown.....必须改掉,吃服务器
//Debug.Log("接收到新的 GameEscapeId: " + escapeId);
}
// 加载初始数据,使用最新的 token
public async void LoadInitialData()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("无法加载初始数据token 未设置。");
return;
}
await selectUser();//=====================================================================放在此处只为解除一个黄色报错,看着闹心。但可以不要
}
// 加载游戏逃亡数据,使用最新的 escapeId 和 token
public async void selectQueryKill1()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("无法加载游戏逃亡数据token 未设置。");
return;
}
if (escapeId == -1)
{
Debug.LogWarning("无法加载游戏逃亡数据escapeId 未设置。");
return;
}
await selectUser();//==========================================================================================================================================================================
}
//===============================================================================================================================================================================================================================
// 查询用户详情
public async Task<string> selectUser()
{
var headers = CreateHeaders();
Debug.Log("正在查询用户详细信息...");
string response = await web.SendRequest("http://121.40.42.41:8080/snail/user/queryUserInfo", "POST", "{}", headers);
Debug.Log("查询用户详细信息响应: " + response);
return response;
}
//===============================================================================================================================================================================================================================
// 创建请求头,使用最新的 token
public Dictionary<string, string> CreateHeaders()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("尝试创建请求头时token 未设置。");
return new Dictionary<string, string>();
}
return new Dictionary<string, string>
{
{ "Authorization", token }
};
}
void OnDestroy()
{
// 注销监听事件,避免内存泄漏
LoginAndGetToken.OnTokenReceived -= HandleTokenReceived;
selectLatest511.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated;
}
}*/
/*public class SelectUserInfo : MonoBehaviour
{
public string token = null; // 保存最新的 token初始为 null
public int escapeId = -1; // 保存最新的 escapeId初始为 -1 表示未设置
private string lastSelectUserInfoResponse = null; // 保存最新的用户详情查询响应
// 假设有一个手动查询用户详情的按钮
public Button selectUserInfoButton;
void Start()
{
// 注册监听事件,当收到 token 时,触发 HandleTokenReceived
LoginAndGetToken.OnTokenReceived += HandleTokenReceived;
// 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated
selectLatest511.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated;
// 假设按钮被点击时调用 OnSelectUserInfoButtonClicked
if (selectUserInfoButton != null)
{
selectUserInfoButton.onClick.AddListener(OnSelectUserInfoButtonClicked);
}
}
// 当接收到 token 时触发此方法,仅保存 token
public void HandleTokenReceived(string receivedToken)
{
token = receivedToken; // 保存最新的 token
Debug.Log("接收到新的 token: " + token);
// 首次调用加载初始数据
LoadInitialData();
}
// 当游戏逃亡 ID 更新时触发此方法,仅保存最新的 escapeId
public async void HandleGameEscapeIdUpdated(int newGameEscapeId)
{
escapeId = newGameEscapeId; // 保存最新的 escapeId
Debug.Log("接收到新的 GameEscapeId: " + escapeId);
// 在接收到 escapeId 更新时自动调用查询用户详情
lastSelectUserInfoResponse = await SelectUser();
Debug.Log("HandleGameEscapeIdUpdated 处理的查询用户详情响应: " + lastSelectUserInfoResponse);
}
// 加载初始数据,使用最新的 token
public async void LoadInitialData()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("无法加载初始数据token 未设置。");
return;
}
// 调用查询用户详情方法
lastSelectUserInfoResponse = await SelectUser();
Debug.Log("初始加载的查询用户详情响应: " + lastSelectUserInfoResponse);
}
// 按钮点击后触发用户详情查询操作
public async void OnSelectUserInfoButtonClicked()
{
// 检查 token 是否已正确设置
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("无法查询用户详情token 未设置。");
return;
}
// 调用查询用户详情方法
lastSelectUserInfoResponse = await SelectUser();
Debug.Log("用户按钮触发的查询用户详情响应: " + lastSelectUserInfoResponse);
// 根据响应做进一步的处理
HandleSelectUserResponse(lastSelectUserInfoResponse);
}
// 查询用户详情
public async Task<string> SelectUser()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("无法查询用户详情token 未设置。");
return null;
}
var headers = CreateHeaders();
Debug.Log("正在查询用户详细信息...");
string response = await web.SendRequest("http://121.40.42.41:8080/snail/user/queryUserInfo", "POST", "{}", headers);
Debug.Log("查询用户详细信息响应: " + response);
return response; // 返回响应
}
// 创建请求头,使用最新的 token
public Dictionary<string, string> CreateHeaders()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("尝试创建请求头时token 未设置。");
return new Dictionary<string, string>();
}
return new Dictionary<string, string>
{
{ "Authorization", token }
};
}
// 处理 SelectUser 方法的响应
private void HandleSelectUserResponse(string response)
{
if (response.Contains("success"))
{
Debug.Log("查询用户详情成功!");
}
else
{
Debug.LogWarning("查询用户详情失败,服务器响应: " + response);
}
}
void OnDestroy()
{
// 注销监听事件,避免内存泄漏
LoginAndGetToken.OnTokenReceived -= HandleTokenReceived;
selectLatest511.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated;
// 取消按钮的点击监听
if (selectUserInfoButton != null)
{
selectUserInfoButton.onClick.RemoveListener(OnSelectUserInfoButtonClicked);
}
}
}*/
public class SelectUserInfo : MonoBehaviour
{
public string token = null; // 保存最新的 token初始为 null
public int escapeId = -1; // 保存最新的 escapeId初始为 -1 表示未设置
private string lastSelectUserInfoResponse = null; // 保存最新的用户详情查询响应
// 假设有一个手动查询用户详情的按钮=======================================================================================
public Button selectUserInfoButton;
void Start()
{
// 注册监听事件,当收到 token 时,触发 HandleTokenReceived
LoginAndGetToken.OnTokenReceived += HandleTokenReceived;
// 注册监听,当 escapeId 更新时调用 HandleGameEscapeIdUpdated
selectLatest511.OnGameEscapeIdUpdated += HandleGameEscapeIdUpdated;
// 假设按钮被点击时调用 OnSelectUserInfoButtonClicked===================================================================
if (selectUserInfoButton != null)
{
selectUserInfoButton.onClick.AddListener(OnSelectUserInfoButtonClicked);
}
}
// 当接收到 token 时触发此方法,仅保存 token
public void HandleTokenReceived(string receivedToken)
{
token = receivedToken; // 保存最新的 token
Debug.Log("接收到新的 token: " + token);
// 首次调用加载初始数据
LoadInitialData();
}
// 当游戏逃亡 ID 更新时触发此方法,仅保存最新的 escapeId
public async void HandleGameEscapeIdUpdated(int newGameEscapeId)
{
escapeId = newGameEscapeId; // 保存最新的 escapeId
Debug.Log("接收到新的 GameEscapeId: " + escapeId);
// 在接收到 escapeId 更新时自动调用查询用户详情
lastSelectUserInfoResponse = await SelectUser();
Debug.Log("HandleGameEscapeIdUpdated 处理的查询用户详情响应: " + lastSelectUserInfoResponse);
// 处理响应内容
HandleSelectUserResponse(lastSelectUserInfoResponse);
}
// 加载初始数据,使用最新的 token
public async void LoadInitialData()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("无法加载初始数据token 未设置。");
return;
}
// 调用查询用户详情方法
lastSelectUserInfoResponse = await SelectUser();
Debug.Log("初始加载的查询用户详情响应: " + lastSelectUserInfoResponse);
// 处理响应内容
HandleSelectUserResponse(lastSelectUserInfoResponse);
}
// 按钮点击后触发用户详情查询操作
public async void OnSelectUserInfoButtonClicked()
{
// 检查 token 是否已正确设置
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("无法查询用户详情token 未设置。");
return;
}
// 调用查询用户详情方法
lastSelectUserInfoResponse = await SelectUser();
Debug.Log("用户按钮触发的查询用户详情响应: " + lastSelectUserInfoResponse);
// 处理响应内容
HandleSelectUserResponse(lastSelectUserInfoResponse);
}
// 查询用户详情
public async Task<string> SelectUser()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("无法查询用户详情token 未设置。");
return null;
}
var headers = CreateHeaders();
Debug.Log("正在查询用户详细信息...");
string response = await web.SendRequest("http://121.40.42.41:8080/snail/user/queryUserInfo", "POST", "{}", headers);
Debug.Log("查询用户详细信息响应: " + response);
return response; // 返回响应
}
// 创建请求头,使用最新的 token
public Dictionary<string, string> CreateHeaders()
{
if (string.IsNullOrEmpty(token))
{
Debug.LogWarning("尝试创建请求头时token 未设置。");
return new Dictionary<string, string>();
}
return new Dictionary<string, string>
{
{ "Authorization", token }
};
}
// 处理 SelectUser 方法的响应,直接从字符串中获取字段
private void HandleSelectUserResponse(string response)
{
try
{
// 使用 JObject 解析 JSON 字符串
JObject jsonObject = JObject.Parse(response);
// 获取 code 和 message
int code = jsonObject.Value<int>("code");
string message = jsonObject.Value<string>("message");
if (code == 200)
{
JObject data = jsonObject.Value<JObject>("data");
if (data != null)//用户信息
{
int userId = data.Value<int>("userId");//用户ID
string userName = data.Value<string>("userName");//用户名
string nickName = data.Value<string>("nickName");//呢称
string headImg = data.Value<string>("headImg");//头像
int gender = data.Value<int>("gender");//性别
string birthday = data.Value<string>("birthday");//生日
int voluteCoin = data.Value<int>("voluteCoin");//蜗壳
int beansCoin = data.Value<int>("beansCoin");//蜗牛蛋
int ichorCoin = data.Value<int>("ichorCoin");//灵液
int cuteNo = data.Value<int>("cuteNo");//靓号
// 打印输出获取的字段
Debug.Log($"查询用户信息成功!用户 ID: {userId}, 用户名: {userName}, 昵称: {nickName}, 性别: {(gender == 1 ? "" : "")}, 蜗壳: {voluteCoin}, 蜗蛋: {beansCoin}, 灵液: {ichorCoin}, 靓号: {cuteNo}");
}
else
{
Debug.LogWarning("数据对象为空,无法获取用户详细信息");
}
}
else
{
Debug.LogWarning($"查询用户信息失败,消息: {message}");
}
}
catch (Exception ex)
{
Debug.LogError($"解析响应时出现异常: {ex.Message}");
}
}
void OnDestroy()
{
// 注销监听事件,避免内存泄漏
LoginAndGetToken.OnTokenReceived -= HandleTokenReceived;
selectLatest511.OnGameEscapeIdUpdated -= HandleGameEscapeIdUpdated;
// 取消按钮的点击监听-==============================================================================================
if (selectUserInfoButton != null)
{
selectUserInfoButton.onClick.RemoveListener(OnSelectUserInfoButtonClicked);
}
}
}