This commit is contained in:
2026-10-08 17:04:24 +08:00
parent e60e3bdb99
commit 4a8c66dcaf
24 changed files with 1132 additions and 228 deletions
@@ -72,7 +72,11 @@ public class UIHome_BY_BackPackPanel : SubUIBase
if (DaLaBaPanel != null)
DaLaBaPanel.SetActive(false);
if (btn_FaSong != null)
{
// ⭐ 先清再绑:防止面板重复 Show 叠加监听器(点一次发 N 次 = 多扣 N 个大喇叭)
btn_FaSong.onClick.RemoveAllListeners();
btn_FaSong.onClick.AddListener(OnClickFaSong);
}
// 数量选择面板(默认隐藏)
if (useObj != null) useObj.SetActive(false);
@@ -147,23 +151,51 @@ public class UIHome_BY_BackPackPanel : SubUIBase
_curUseCountAction = null;
}
/// <summary>大喇叭发送中标志:防止回调返回前连点发送按钮导致多发多扣道具</summary>
private bool _isSendingFaSong;
private void OnClickFaSong()
{
string msg = "广播:"+ tMPText_DaLaBaLabel?.text?.Trim();
if (string.IsNullOrEmpty(msg))
// ⭐ 防重入:上次请求回调还没回来时连点直接忽略
if (_isSendingFaSong) return;
// ⭐ 先取文本判空再拼前缀(原"广播:"+text 判空永远不成立,空内容也会发送扣道具)
string content = tMPText_DaLaBaLabel?.text?.Trim();
if (string.IsNullOrEmpty(content))
{
UIManager.Instance.ShowBoardError("请输入广播内容");
return;
}
APIRequestList.SendBroadcast(msg, (result) =>
_isSendingFaSong = true;
// ⭐ 显示格式:"<sprite index=0>【小*鱼】:内容"(前面加喇叭图标 TMP 标签;名字打码与游戏内大喇叭同格式)
var userName = GameManager.Instance.user?.BaseInfo?.userName;
if (string.IsNullOrEmpty(userName)) userName = "玩家";
APIRequestList.SendBroadcast($"<sprite index=0>【{MaskBroadcastName(userName)}】:{content}", (result) =>
{
//UIManager.Instance.ShowBoardGongGao($"广播: {msg}");
_isSendingFaSong = false;
tMPText_DaLaBaLabel.text = "";
DaLaBaPanel.SetActive(false);
// ⭐ 发送成功=服务端已扣大喇叭:拉最新用户数据刷新背包数量
APIRequestList.GetUser((user) =>
{
if (user != null)
GameManager.Instance.UpdataUserData(user);
});
});
}
/// <summary>
/// 玩家名打码(广播格式):保留首尾字符、中间一个 *("小金鱼"→"小*鱼")。
/// 与 GameMainPanel_FishBase.MaskBroadcastName 同格式(背包面板独立副本)。
/// </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];
}
private void OnClickConfirmChangeName()
{
string newName = tMPText_NewName?.text?.Trim();