Files
5.24BuYu/Assets/MyGame/Scripts/Net/WebResponses/ChineseChess/ChineseChessGameClassList.cs
T
2026-07-11 17:07:32 +08:00

231 lines
6.8 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
namespace Assets.MyGame.Scripts.Net.WebResponses.ChineseChess
{
[Serializable]
public class ChineseChessGameClassList
{
/// <summary>
/// 创建房间参数
/// </summary>
public class CreateRoomParam
{
/// <summary>
/// 房间id
/// </summary>
public string roomId { get; set; }
/// <summary>
/// 用户ID
/// </summary>
public string userId { get; set; }
/// <summary>
/// 游戏类型 1 我方黑 2 我方红
/// </summary>
public int gameType { get; set; }
/// <summary>
/// 密码,可为空字符串
/// </summary>
public string password { get; set; }
/// <summary>
/// 金币数量
/// </summary>
public long gold { get; set; }
}
[Serializable]
/// <summary>
/// 游戏房间
/// </summary>
public class ChessGameRoom
{
/// <summary>
/// 用户列表
/// </summary>
public List<RedisGameUser> users { get; set; } = new List<RedisGameUser>();
/// <summary>
/// 房间id
/// </summary>
public string roomId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime createTime { get; set; }
/// <summary>
/// 游戏类型 1 房主黑 2 房主红
/// </summary>
public int gameType { get; set; }
/// <summary>
/// 密码,可为空字符串
/// </summary>
public string password { get; set; }
/// <summary>
/// 创建者id
/// </summary>
public string createUserId { get; set; }
/// <summary>
/// 状态 0 空房间 1 未开始 2 进行中 3 已结束
/// </summary>
public int state { get; set; } = 1;
/// <summary>
/// 金币数量
/// </summary>
public long gold { get; set; }
/// <summary>
/// 机器人数量(房间内 AI 玩家数,计入总人数)
/// </summary>
public int robotCount { get; set; }
/// <summary>
/// 结束游戏请求记录(前端不用,仅占位反序列化)
/// </summary>
public object endGameRequests { get; set; }
/// <summary>
/// 最后活跃时间(Unix 秒)
/// </summary>
public long lastActiveTime { get; set; }
/// <summary>
/// 超时秒数
/// </summary>
public int timeoutSeconds { get; set; } = 60;
/// <summary>
/// 超时输方用户ID
/// </summary>
public string timeoutLoserUserId { get; set; }
/// <summary>
/// 待定赢方用户ID(可能为 null)
/// </summary>
public string pendingWinUserId { get; set; }
/// <summary>
/// 游戏是否已结束
/// </summary>
public bool isGameEnded { get; set; }
/// <summary>
/// 房间唯一 GUID(与 roomId 不同,roomId 是业务编号)
/// </summary>
public string id { get; set; }
/// <summary>
/// 是否已删除
/// </summary>
public bool isDelete { get; set; }
/// <summary>
/// 创建信息(前端不用,仅占位反序列化)
/// </summary>
public object createInfo { get; set; }
}
[Serializable]
/// <summary>
/// 缓存中的游戏用户模型
/// </summary>
public class RedisGameUser
{
//下载头像 失败最多重试5次
public IEnumerator DownTexture2d(System.Action<Texture2D> action)
{
string url = userAvatar;
int downCount = 5;
if (texture2D!=null)
{
action?.Invoke(texture2D);
yield break;
}
Texture2D avatarTexture2D = new Texture2D(100, 100);
//if (avatarTexture2D == null)
for (int i = 0; i < downCount; i++)
{
using (UnityWebRequest www = UnityWebRequestTexture.GetTexture(url))
{
yield return www.SendWebRequest();
if (www.result == UnityWebRequest.Result.ConnectionError ||
www.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError("下载失败: " + www.error);
downCount--;
if (downCount == 0)
{
action.Invoke(new Texture2D(100, 100));
yield break;
}
}
else
{
avatarTexture2D = DownloadHandlerTexture.GetContent(www);
texture2D = avatarTexture2D;
break;
}
}
}
action?.Invoke(avatarTexture2D);
}
public Texture2D texture2D;
/// <summary>
/// 链接Id
/// </summary>
public string cid { get; set; }
/// <summary>
/// 用户ID
/// </summary>
public string userId { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string userName { get; set; }
/// <summary>
/// 用户头像
/// </summary>
public string userAvatar { get; set; }
/// <summary>
/// 用户类型 1 黑方 2 红方
/// </summary>
public int type { get; set; }
/// <summary>
/// 是否掉线
/// </summary>
public bool isLeave { get; set; } = false;
/// <summary>
/// 是否准备
/// </summary>
public bool isReady { get; set; } = false;
/// <summary>
/// 金币数量
/// </summary>
public long gold { get; set; }
}
}
}