From b9a6e7e896b451e9c915e782a1789b2afe079cc9 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 03 十二月 2025 19:16:01 +0800
Subject: [PATCH] 76 聊天系统-客户端
---
Main/System/Guild/GuildBaseWin.cs | 80 +++++++++++++++++++++++++++++++++++++---
1 files changed, 74 insertions(+), 6 deletions(-)
diff --git a/Main/System/Guild/GuildBaseWin.cs b/Main/System/Guild/GuildBaseWin.cs
index a7d6c73..84305ce 100644
--- a/Main/System/Guild/GuildBaseWin.cs
+++ b/Main/System/Guild/GuildBaseWin.cs
@@ -3,6 +3,7 @@
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using DG.Tweening;
+using System.Text;
using UnityEngine;
using UnityEngine.UI;
@@ -20,8 +21,9 @@
[SerializeField] Text guildMemberCountText;
[SerializeField] Button rankBtn;
[SerializeField] Button storeBtn;
-
-
+ [SerializeField] RichText talkInfoText;
+ [SerializeField] Button talkBtn;
+ [SerializeField] Button talkBtn1;
[SerializeField] Button requestBtn;
@@ -56,6 +58,8 @@
UIManager.Instance.OpenWindow<StoreBaseWin>();
});
InitHawker();
+ talkBtn.AddListener(OnClickTalkButton);
+ talkBtn1.AddListener(OnClickTalkButton);
}
@@ -65,7 +69,7 @@
return;
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
GlobalTimeEvent.Instance.fiveSecondEvent += OnFiveSecondEvent;
-
+ ChatManager.Instance.OnUpdateTalkEvent += OnUpdateTalkEvent;
Display();
}
@@ -73,13 +77,21 @@
{
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
GlobalTimeEvent.Instance.fiveSecondEvent -= OnFiveSecondEvent;
+ ChatManager.Instance.OnUpdateTalkEvent -= OnUpdateTalkEvent;
}
+ private void OnUpdateTalkEvent(ChatChannel channel, TalkData data)
+ {
+ if (channel != ChatChannel.Guild)
+ return;
+ ShowTalkInfo();
+ }
void Display()
{
ShowGuildInfo();
ShowHawkerTime();
+ ShowTalkInfo();
}
void OnSecondEvent()
@@ -124,7 +136,7 @@
if (modelPlay)
HawkerMove(true);
}
-
+
}
@@ -159,8 +171,8 @@
FuncNPCManager.Instance.isHawkerStandBy = isShow;
};
}
-
-
+
+
//NPC瀵硅瘽鐩稿叧
@@ -190,4 +202,60 @@
var npc = funcNPCs[index].GetModel();
npc.PlayAnimation("idle", true);
}
+
+ public void OnClickTalkButton()
+ {
+ ChatManager.Instance.nowChatTab = ChatTab.Guild;
+ ChatManager.Instance.nowChatChannel = ChatChannel.Guild;
+ UIManager.Instance.OpenWindow<ChatWin>();
+ }
+
+ public string GetGuildChatAreaContent(TalkData talkData)
+ {
+ int type = ChatManager.Instance.GetTalkDataType(talkData);
+ if (type == 0)
+ {
+ return Language.Get("L1100", Language.Get("Chat13"), talkData.Content);
+ }
+ else if (type == 1)
+ {
+ return Language.Get("L1100", Language.Get("Chat13"), talkData.Content);
+ }
+ else
+ {
+ return Language.Get("L1100", talkData.Name, talkData.Content);
+ }
+ }
+
+ public Color32 GetGuildChatAreaColor(TalkData talkData)
+ {
+ int type = ChatManager.Instance.GetTalkDataType(talkData);
+ if (type == 2)
+ {
+ return ChatManager.Instance.areaMyColor;
+ }
+ else
+ {
+ return ChatManager.Instance.areaOtherColor;
+ }
+ }
+
+ void ShowTalkInfo()
+ {
+ if (!ChatManager.Instance.TryGetTalkData(ChatChannel.Guild, out List<TalkData> datas) || datas.IsNullOrEmpty())
+ {
+ talkInfoText.text = string.Empty;
+ return;
+ }
+
+ StringBuilder stringBuilder = new StringBuilder();
+ int startIndex = Mathf.Max(datas.Count - 2, 0);
+ for (int i = startIndex; i < datas.Count; i++)
+ {
+ TalkData data = datas[i];
+ stringBuilder.Append(UIHelper.AppendColor(GetGuildChatAreaColor(data), GetGuildChatAreaContent(data)));
+ stringBuilder.AppendLine();
+ }
+ talkInfoText.text = stringBuilder.ToString();
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0