开始开发
This commit is contained in:
97
Assets/Script/GlobalConfigSystem.cs
Normal file
97
Assets/Script/GlobalConfigSystem.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Stary.Evo;
|
||||
using UnityEngine;
|
||||
|
||||
public interface IGlobalConfigSystem : ISystem
|
||||
{
|
||||
public string GetConnectionId();
|
||||
public void SetConnectionId(string connectionId);
|
||||
|
||||
public string GetConnectionName();
|
||||
public void SetConnectionName(string connectionName);
|
||||
|
||||
public UniTaskVoid StartConnectionTime();
|
||||
public string GetConnectionTime();
|
||||
|
||||
public void StopConnectionTime();
|
||||
|
||||
}
|
||||
|
||||
public class GlobalConfigSystem : AbstractSystem, IGlobalConfigSystem
|
||||
{
|
||||
private string _connectionId;
|
||||
private string _connectionName;
|
||||
private float _connectionTime;
|
||||
private CancellationTokenSource _cts;
|
||||
protected override void OnInit()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public async UniTaskVoid StartConnectionTime()
|
||||
{
|
||||
_cts = new CancellationTokenSource();
|
||||
_connectionTime = 0;
|
||||
while (!_cts.IsCancellationRequested)
|
||||
{
|
||||
_connectionTime+=Time.deltaTime;
|
||||
await UniTask.Yield(_cts.Token); // 等一帧,等价于 Update
|
||||
}
|
||||
}
|
||||
|
||||
public string GetConnectionTime()
|
||||
{
|
||||
int totalSeconds = (int)_connectionTime;
|
||||
int hours = totalSeconds / 3600;
|
||||
int minutes = totalSeconds % 3600 / 60;
|
||||
int seconds = totalSeconds % 60;
|
||||
return $"{hours:D2}:{minutes:D2}:{seconds:D2}";
|
||||
}
|
||||
|
||||
public void StopConnectionTime()
|
||||
{
|
||||
_cts?.Cancel();
|
||||
_cts?.Dispose();
|
||||
_cts = null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user