From 6205f6a3daa716ae0e2e2fbb50d2b11240d76bb9 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 10 六月 2026 18:13:48 +0800
Subject: [PATCH] 588 公会攻防战 公会旗号支持不同语言不同字数限制

---
 Main/System/Guild/GuildManager.cs                          |   72 ++++++++++++++++++++++++++++-------
 Main/System/GuildAtkDefBat/GuildAtkDefBatWin.cs            |    2 
 Main/System/GuildAtkDefBat/GuildAtkDefBatRecordWin.cs      |    2 
 Main/System/Guild/GuildCreateWin.cs                        |    2 
 Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs |    2 
 Main/System/Guild/GuildEmblemWin.cs                        |    9 ++++
 6 files changed, 69 insertions(+), 20 deletions(-)

diff --git a/Main/System/Guild/GuildCreateWin.cs b/Main/System/Guild/GuildCreateWin.cs
index c63f925..c560706 100644
--- a/Main/System/Guild/GuildCreateWin.cs
+++ b/Main/System/Guild/GuildCreateWin.cs
@@ -28,7 +28,7 @@
     {
         GuildEmblemModel.Instance.CreateSelectEmblemIdChangeEvent += CreateSelectEmblemEvent;
         if (GuildEmblemModel.Instance.createEmblemWord == "")
-            GuildEmblemModel.Instance.createEmblemWord = PlayerDatas.Instance.baseData.PlayerName[0].ToString();
+            GuildEmblemModel.Instance.createEmblemWord = GuildManager.Instance.LimitEmblemWord(PlayerDatas.Instance.baseData.PlayerName);
         if (GuildEmblemModel.Instance.createSelectEmblemId <= 0)
             GuildEmblemModel.Instance.createSelectEmblemId = FamilyEmblemConfig.GetRandomEmblem();
 
diff --git a/Main/System/Guild/GuildEmblemWin.cs b/Main/System/Guild/GuildEmblemWin.cs
index b1433eb..07fbc92 100644
--- a/Main/System/Guild/GuildEmblemWin.cs
+++ b/Main/System/Guild/GuildEmblemWin.cs
@@ -28,6 +28,7 @@
     {
         GuildEmblemModel.Instance.ChooseEmblemIdChangeEvent += ChooseEmblemEvent;
         emblemScroller.OnRefreshCell += OnRefreshCell;
+        flagNameText.characterLimit = GuildManager.Instance.GetEmblemWordCharacterLimit();
 
         if (functionOrder == 1)
         {
@@ -124,7 +125,12 @@
 
     void OnFlagNameChange(string value)
     {
-        emblemWord = value;
+        emblemWord = GuildManager.Instance.LimitEmblemWord(value);
+        if (emblemWord != value)
+        {
+            flagNameText.text = emblemWord;
+            return;
+        }
         guildEmblem.Display(GuildEmblemModel.Instance.nowChooseEmblemId, emblemWord);
     }
 
@@ -135,6 +141,7 @@
 
     void ChangeEmblem()
     {
+        emblemWord = GuildManager.Instance.LimitEmblemWord(emblemWord);
         if (functionOrder == 1)
         {
             GuildEmblemModel.Instance.createEmblemWord = emblemWord;
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index 0f77812..8265ced 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -3,12 +3,12 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
-using Cysharp.Threading.Tasks;
-using LitJson;
-using UnityEngine;
-
-
-public partial class GuildManager : GameSystemManager<GuildManager>
+using Cysharp.Threading.Tasks;
+using LitJson;
+using UnityEngine;
+
+
+public partial class GuildManager : GameSystemManager<GuildManager>
 {
     // 瀹舵棌鑷畾涔夎褰曠被鍨�
     public const int MemberChangeActionType = 12;      //鍏細鍙樻洿璁板綍
@@ -206,6 +206,8 @@
     public int zbgChangFamilyCD;
     public List<int> cutCntListForTalk = new List<int>();
     public int familyRecordMaxCount;
+    public const int DefaultEmblemWordCharacterLimit = 1;
+    public Dictionary<string, int> emblemWordCharacterLimitDict = new Dictionary<string, int>();
 
     void ParseConfig()
     {
@@ -252,6 +254,9 @@
         config = FuncConfigConfig.Get("FamilyBillboardSet");
         pageCnt = int.Parse(config.Numerical1);
         queryPointNum = int.Parse(config.Numerical2);
+
+        config = FuncConfigConfig.Get("FamilyEmblem");
+        emblemWordCharacterLimitDict = JsonMapper.ToObject<Dictionary<string, int>>(config.Numerical1);
     }
 
 
@@ -344,6 +349,44 @@
         });
     }
 
+    public int GetEmblemWordCharacterLimit()
+    {
+        string langId = Language.Id;
+        if (!string.IsNullOrEmpty(langId) && emblemWordCharacterLimitDict.TryGetValue(langId, out int limit) && limit > 0)
+        {
+            return limit;
+        }
+
+        return DefaultEmblemWordCharacterLimit;
+    }
+
+    public string LimitEmblemWord(string emblemWord)
+    {
+        if (string.IsNullOrEmpty(emblemWord))
+        {
+            return string.Empty;
+        }
+
+        int limit = GetEmblemWordCharacterLimit();
+        if (emblemWord.Length <= limit)
+        {
+            return emblemWord;
+        }
+
+        return emblemWord.Substring(0, limit);
+    }
+
+    bool CheckEmblemWord(string emblemWord)
+    {
+        if (string.IsNullOrEmpty(emblemWord))
+        {
+            return true;
+        }
+
+        int limit = GetEmblemWordCharacterLimit();
+        return emblemWord.Length <= limit;
+    }
+
 
 
 
@@ -390,9 +433,8 @@
             return;
         }
 
-        if (emblemWord.Length > 1)
+        if (!CheckEmblemWord(emblemWord))
         {
-            //棰勫埗浣撹緭鍏ユ闄愬埗锛屼笉闄愪换鎰忓瓧绗﹂兘鍙兘杈撳叆1涓瓧
             return;
         }
 
@@ -485,12 +527,12 @@
             return;
         }
 
-        if (GuildAtkDefBatManager.Instance.UpdateAtkDefBatLogInfo(_package))
-        {
-            return;
-        }
-        
-        if (PlayerDatas.Instance.baseData.FamilyId != _package.FamilyID)
+        if (GuildAtkDefBatManager.Instance.UpdateAtkDefBatLogInfo(_package))
+        {
+            return;
+        }
+        
+        if (PlayerDatas.Instance.baseData.FamilyId != _package.FamilyID)
         {
             return;
         }
@@ -1297,4 +1339,4 @@
     PublishNotice = 3,
     Kick = 4,
 
-}
\ No newline at end of file
+}
diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
index 310bed7..4fb33bd 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
@@ -188,7 +188,7 @@
             {
                 string enemyName = Language.Get("GuildAtkDefBat31");
                 enemyNameText.text = enemyName;
-                enemyEmblemCell.Display(FamilyEmblemConfig.GetFirstDefaultEmblem(), !string.IsNullOrEmpty(enemyName) ? enemyName[0].ToString() : string.Empty, 0.7f);
+                enemyEmblemCell.Display(FamilyEmblemConfig.GetFirstDefaultEmblem(), GuildManager.Instance.LimitEmblemWord(enemyName), 0.7f);
                 enemyServerText.text = ServerListCenter.Instance.GetServerName(UIHelper.GetServerIDByAccount(PlayerDatas.Instance.baseData.AccID));
                 enemyStarCntText.text = enemyFamilyInfo.TotalStar.ToString();
             }
diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatRecordWin.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatRecordWin.cs
index 45afde5..4e1c3a3 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatRecordWin.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatRecordWin.cs
@@ -123,7 +123,7 @@
             {
                 string enemyName = Language.Get("GuildAtkDefBat31");
                 enemyGuildName.text = enemyName;
-                enemyEmblem.Display(FamilyEmblemConfig.GetFirstDefaultEmblem(), !string.IsNullOrEmpty(enemyName) ? enemyName[0].ToString() : string.Empty, 0.7f);
+                enemyEmblem.Display(FamilyEmblemConfig.GetFirstDefaultEmblem(), GuildManager.Instance.LimitEmblemWord(enemyName), 0.7f);
                 enemyStatCnt.text = enemyFamilyInfo.TotalStar.ToString();
             }
             else
diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatWin.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatWin.cs
index 75363a0..99d931f 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatWin.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatWin.cs
@@ -303,7 +303,7 @@
             {
                 string enemyName = Language.Get("GuildAtkDefBat31");
                 enemyNameText.text = enemyName;
-                enemyEmblemCell.Display(FamilyEmblemConfig.GetFirstDefaultEmblem(), !enemyName.IsNullOrEmpty() ? enemyName[0].ToString() : string.Empty, 0.7f);
+                enemyEmblemCell.Display(FamilyEmblemConfig.GetFirstDefaultEmblem(), GuildManager.Instance.LimitEmblemWord(enemyName), 0.7f);
                 enemyServerText.text = ServerListCenter.Instance.GetServerName(UIHelper.GetServerIDByAccount(PlayerDatas.Instance.baseData.AccID));
                 enemyStarCntText.text = enemyFamilyInfo.TotalStar.ToString();
             }

--
Gitblit v1.8.0