Files
webRtc/Assets/Script/GlobalConfigSystem.cs

232 lines
5.1 KiB
C#
Raw Permalink Normal View History

2026-05-12 17:45:40 +08:00
using System.Threading;
using Cysharp.Threading.Tasks;
using Stary.Evo;
using UnityEngine;
2026-05-19 22:40:52 +08:00
using UnityEngine.UI;
2026-05-12 17:45:40 +08:00
public interface IGlobalConfigSystem : ISystem
{
public string IP { get; }
2026-05-12 17:45:40 +08:00
public string GetConnectionId();
public void SetConnectionId(string connectionId);
2026-05-17 11:35:43 +08:00
2026-05-12 17:45:40 +08:00
public string GetConnectionName();
public void SetConnectionName(string connectionName);
2026-05-17 11:35:43 +08:00
2026-05-19 22:40:52 +08:00
public UniTaskVoid StartConnectionTime(Text updateText);
2026-05-12 17:45:40 +08:00
public string GetConnectionTime();
2026-05-17 11:35:43 +08:00
2026-05-12 17:45:40 +08:00
public void StopConnectionTime();
2026-05-17 11:35:43 +08:00
2026-05-22 10:59:18 +08:00
public string GetConnectionStartTime();
public void SetUserCount(int userCount);
public int GetUserCount();
2026-05-17 11:35:43 +08:00
public int GetConnectionTimeType();
public void SetConnectionTimeType(int connectionTimeType);
2026-05-19 22:40:52 +08:00
public string GetConnectionTexture();
public void SetConnectionTexture(string connectionTexture);
public string GetUserId();
public void SetUserId(string userId);
2026-06-03 22:05:03 +08:00
public string GetParticipantId();
public void SetParticipantId(string participantId);
2026-05-12 17:45:40 +08:00
}
public class GlobalConfigSystem : AbstractSystem, IGlobalConfigSystem
{
2026-05-19 22:40:52 +08:00
/// <summary>
/// 连接图标
/// </summary>
private string _connectionAvatar;
2026-05-17 11:35:43 +08:00
/// <summary>
/// 连接ID
/// </summary>
2026-05-12 17:45:40 +08:00
private string _connectionId;
2026-05-17 11:35:43 +08:00
/// <summary>
/// 连接名称
/// </summary>
2026-05-12 17:45:40 +08:00
private string _connectionName;
2026-05-17 11:35:43 +08:00
2026-05-22 10:59:18 +08:00
/// <summary>
/// 开始时间
/// </summary>
private string _connectionStartTime;
2026-05-17 11:35:43 +08:00
/// <summary>
/// 连接时间
/// </summary>
2026-05-12 17:45:40 +08:00
private float _connectionTime;
2026-05-17 11:35:43 +08:00
/// <summary>
/// 连接时间类型
/// </summary>
private int _connectionTimeType;
2026-06-03 22:05:03 +08:00
private string _participantId;
2026-05-12 17:45:40 +08:00
private CancellationTokenSource _cts;
/// <summary>
/// 连接ID
/// </summary>
private string _userId;
2026-05-22 10:59:18 +08:00
/// <summary>
/// 人数
/// </summary>
/// <returns></returns>
private int _userCount;
2026-05-12 17:45:40 +08:00
public override void Dispose()
{
}
2026-05-19 22:40:52 +08:00
public string IP => "https://192.168.31.16:8080";
2026-05-12 17:45:40 +08:00
public string GetConnectionId()
{
if (string.IsNullOrEmpty(_connectionId))
{
Debug.LogWarning("GlobalConfigSystem: GetConnectionId not set");
return "";
}
return _connectionId;
}
public void SetConnectionId(string connectionId)
{
_connectionId = connectionId;
}
public string GetConnectionName()
{
if (string.IsNullOrEmpty(_connectionName))
{
Debug.LogWarning("GlobalConfigSystem: GetConnectionName not set");
return "";
}
return _connectionName;
}
public void SetConnectionName(string connectionName)
{
_connectionName = connectionName;
}
2026-05-19 22:40:52 +08:00
public async UniTaskVoid StartConnectionTime(Text updateText)
2026-05-12 17:45:40 +08:00
{
_cts = new CancellationTokenSource();
_connectionTime = 0;
2026-05-22 10:59:18 +08:00
_connectionStartTime = System.DateTime.Now.ToString("HH:mm:ss");
2026-05-12 17:45:40 +08:00
while (!_cts.IsCancellationRequested)
{
2026-05-17 11:35:43 +08:00
_connectionTime += Time.deltaTime;
2026-05-19 22:40:52 +08:00
updateText.text = GetConnectionTime();
2026-05-12 17:45:40 +08:00
await UniTask.Yield(_cts.Token); // 等一帧,等价于 Update
}
}
public string GetConnectionTime()
{
2026-05-17 11:35:43 +08:00
var totalSeconds = (int)_connectionTime;
var hours = totalSeconds / 3600;
var minutes = totalSeconds % 3600 / 60;
var seconds = totalSeconds % 60;
2026-05-12 17:45:40 +08:00
return $"{hours:D2}:{minutes:D2}:{seconds:D2}";
}
2026-05-22 10:59:18 +08:00
public string GetConnectionStartTime()
{
if (string.IsNullOrEmpty(_connectionStartTime))
{
Debug.LogWarning("GlobalConfigSystem: GetConnectionStartTime not set");
return "";
}
return _connectionStartTime;
}
public void SetUserCount(int userCount)
{
_userCount = userCount;
}
public int GetUserCount()
{
return _userCount;
}
2026-05-12 17:45:40 +08:00
public void StopConnectionTime()
{
_cts?.Cancel();
_cts?.Dispose();
_cts = null;
}
2026-05-17 11:35:43 +08:00
public int GetConnectionTimeType()
{
return _connectionTimeType;
}
public void SetConnectionTimeType(int connectionTimeType)
{
_connectionTimeType = connectionTimeType;
}
2026-05-19 22:40:52 +08:00
public string GetConnectionTexture()
2026-05-17 11:35:43 +08:00
{
2026-05-19 22:40:52 +08:00
if (string.IsNullOrEmpty(_connectionAvatar))
2026-05-17 11:35:43 +08:00
{
Debug.LogWarning("GlobalConfigSystem: GetConnectionTexture not set");
return null;
}
2026-05-19 22:40:52 +08:00
return _connectionAvatar;
2026-05-17 11:35:43 +08:00
}
public string GetUserId()
{
if (string.IsNullOrEmpty(_userId))
{
Debug.LogWarning("GlobalConfigSystem: GetUserId not set");
return "";
}
return _userId;
}
public void SetUserId(string userId)
{
_userId = userId;
}
2026-05-19 22:40:52 +08:00
public void SetConnectionTexture(string connectionTexture)
{
_connectionAvatar = connectionTexture;
}
2026-06-03 22:05:03 +08:00
public string GetParticipantId()
{
return _participantId;
}
public void SetParticipantId(string participantId)
{
_participantId = participantId;
}
2026-05-17 11:35:43 +08:00
protected override void OnInit()
{
}
2026-05-12 17:45:40 +08:00
}