This commit is contained in:
2026-10-10 08:59:44 +08:00
parent 2bbabb70b4
commit b5881a6cc4
7 changed files with 130 additions and 39 deletions
@@ -726,11 +726,39 @@ namespace Assets.MyGame.Scripts.Net
/// <summary>
/// LoginHub Broadcast — 大厅公告广播
/// 首字符命中大喇叭标识(APIRequestList.BroadcastMarker)时按大喇叭格式渲染:
/// 去掉标识,补"喇叭图标+打码昵称"前缀;否则原样显示为普通公告。
/// </summary>
public static void LoginBroadcast(string msg)
{
var data = JsonConvert.DeserializeObject<WebSocketResponseBase<LoginBroadcastData>>(msg).arguments[0];
UIManager.Instance.ShowBoardGongGao(data.message);
string message = data?.message;
if (!string.IsNullOrEmpty(message) && message[0] == APIRequestList.BroadcastMarker)
{
// 大喇叭:服务端只存了"标识+正文",昵称从广播数据取,展示时再拼接前缀
string content = message.Substring(1);
string userName = data.userName;
if (string.IsNullOrEmpty(userName)) userName = "玩家";
UIManager.Instance.ShowBoardGongGao($"<sprite index=0>【{MaskBroadcastName(userName)}】:{content}");
}
else
{
// 普通公告:原样显示
UIManager.Instance.ShowBoardGongGao(message);
}
}
/// <summary>
/// 玩家名打码(大喇叭展示格式):保留首尾字符、中间一个 *("小金鱼"→"小*鱼")。
/// 与 GameMainPanel_FishBase / UIHome_BY_BackPackPanel 同格式。
/// </summary>
private static string MaskBroadcastName(string name)
{
if (string.IsNullOrEmpty(name)) return name;
name = name.Trim();
if (name.Length <= 1) return name;
return name[0] + "*" + name[name.Length - 1];
}
/// <summary>