using System;
///
/// Brisk SDK 初始化参数。
///
public sealed class BriskOptions
{
///
/// 服务端基础地址。可以传主机地址,SDK 会自动补上 /api。
///
public string BaseUrl;
///
/// 项目标识。
///
public string GameKey;
///
/// 客户端版本号。
///
public string ClientVersion;
///
/// 设备标识。
///
public string DeviceId;
///
/// 是否启用调试日志。
///
public bool EnableLog;
///
/// 初始化时是否主动校验本地会话有效性。
///
public bool ValidateSessionOnInitialize = true;
///
/// 初始化恢复的本地会话已过期或失效时,是否使用本地保存的登录身份静默换取新会话。
///
public bool AutoReloginOnInitialize = true;
///
/// 自定义登录态持久化实现。
///
public IBriskTokenStore TokenStore;
///
/// 自定义严重错误展示器。
///
public IBriskErrorPresenter ErrorPresenter;
///
/// 阻断错误确认后的退出处理逻辑。
///
public Action ExitHandler;
///
/// 校验并规范化初始化参数。
///
public void Validate()
{
if (string.IsNullOrWhiteSpace(BaseUrl))
{
throw new ArgumentException("BriskOptions.BaseUrl is required.", nameof(BaseUrl));
}
if (string.IsNullOrWhiteSpace(GameKey))
{
throw new ArgumentException("BriskOptions.GameKey is required.", nameof(GameKey));
}
BaseUrl = NormalizeBaseUrl(BaseUrl);
}
private static string NormalizeBaseUrl(string baseUrl)
{
var normalized = baseUrl.Trim().TrimEnd('/');
if (normalized.EndsWith("/api", StringComparison.OrdinalIgnoreCase))
{
return normalized;
}
return normalized + "/api";
}
}