Files
5.24BuYu/Assets/MyGame/Scripts/Net/WebResponses/ChineseChess/ChineseChessGameClassList.cs
T

231 lines
6.8 KiB
C#
Raw Normal View History

2026-07-11 17:07:32 +08:00
using System;
2026-03-09 09:25:01 +08:00
using System.Collections;
2026-02-13 19:23:01 +08:00
using System.Collections.Generic;
2026-03-09 09:25:01 +08:00
using UnityEngine;
using UnityEngine.Networking;
2026-02-13 19:23:01 +08:00
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>
2026-06-26 23:42:49 +08:00
public long gold { get; set; }
2026-02-13 19:23:01 +08:00
}
[Serializable]
/// <summary>
/// 游戏房间
/// </summary>
2026-03-09 09:25:01 +08:00
public class ChessGameRoom
2026-02-13 19:23:01 +08:00
{
/// <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>
2026-02-26 11:05:56 +08:00
/// 游戏类型 1 房主黑 2 房主红
2026-02-13 19:23:01 +08:00
/// </summary>
public int gameType { get; set; }
/// <summary>
/// 密码,可为空字符串
/// </summary>
public string password { get; set; }
/// <summary>
/// 创建者id
/// </summary>
public string createUserId { get; set; }
/// <summary>
2026-07-11 17:07:32 +08:00
/// 状态 0 空房间 1 未开始 2 进行中 3 已结束
2026-02-13 19:23:01 +08:00
/// </summary>
public int state { get; set; } = 1;
/// <summary>
/// 金币数量
/// </summary>
2026-06-26 23:42:49 +08:00
public long gold { get; set; }
2026-07-11 17:07:32 +08:00
/// <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; }
2026-02-13 19:23:01 +08:00
}
[Serializable]
/// <summary>
/// 缓存中的游戏用户模型
/// </summary>
public class RedisGameUser
{
2026-03-09 09:25:01 +08:00
//下载头像 失败最多重试5次
public IEnumerator DownTexture2d(System.Action<Texture2D> action)
{
string url = userAvatar;
int downCount = 5;
2026-05-08 06:49:53 +08:00
if (texture2D!=null)
{
action?.Invoke(texture2D);
yield break;
}
2026-03-09 09:25:01 +08:00
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);
2026-06-11 19:37:56 +08:00
downCount--;
if (downCount == 0)
2026-03-09 09:25:01 +08:00
{
action.Invoke(new Texture2D(100, 100));
yield break;
}
}
else
{
avatarTexture2D = DownloadHandlerTexture.GetContent(www);
2026-05-08 06:49:53 +08:00
texture2D = avatarTexture2D;
2026-03-09 09:25:01 +08:00
break;
}
}
}
2026-05-08 06:49:53 +08:00
action?.Invoke(avatarTexture2D);
2026-03-09 09:25:01 +08:00
}
2026-05-08 06:49:53 +08:00
public Texture2D texture2D;
2026-02-13 19:23:01 +08:00
/// <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>
2026-06-26 23:42:49 +08:00
public long gold { get; set; }
2026-02-13 19:23:01 +08:00
}
}
}