| | |
| | | using System; |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using Cysharp.Threading.Tasks; |
| | |
| | | { |
| | | guildBtn.AddListener(() => |
| | | { |
| | | UIManager.Instance.OpenWindow<GuildHallWin>(); |
| | | UIManager.Instance.OpenWindowAsync<GuildHallWin>().Forget(); |
| | | }); |
| | | |
| | | requestBtn.AddListener(() => |
| | | { |
| | | // UIManager.Instance.OpenWindow<GuildRequestWin>(); |
| | | UIManager.Instance.OpenWindowAsync<GuildApplyListWin>().Forget(); |
| | | }); |
| | | |
| | | guildHawkerBtn.AddListener(OpenHawker); |
| | | storeBtn.AddListener(() => |
| | | { |
| | | StoreModel.Instance.selectStoreFuncType = StoreFunc.Guild; |
| | | UIManager.Instance.OpenWindow<StoreBaseWin>(); |
| | | UIManager.Instance.OpenWindowAsync<StoreBaseWin>().Forget(); |
| | | }); |
| | | rankBtn.AddListener(() => |
| | | { |
| | | UIManager.Instance.OpenWindowAsync<GuildRankWin>().Forget(); |
| | | }); |
| | | InitHawker(); |
| | | talkBtn.AddListener(OnClickTalkButton); |
| | |
| | | { |
| | | if (PlayerDatas.Instance.fairyData.fairy == null) |
| | | return; |
| | | |
| | | GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; |
| | | GlobalTimeEvent.Instance.fiveSecondEvent += OnFiveSecondEvent; |
| | | ChatManager.Instance.OnUpdateTalkEvent += OnUpdateTalkEvent; |
| | |
| | | ShowGuildInfo(); |
| | | } |
| | | |
| | | private void OnUpdateTalkEvent(ChatChannel channel, TalkData data) |
| | | private void OnUpdateTalkEvent(ChatChannel channel, TalkData data, bool isSendBullet) |
| | | { |
| | | if (channel != ChatChannel.Guild) |
| | | return; |
| | |
| | | |
| | | void ShowGuildInfo() |
| | | { |
| | | requestBtn.SetActive(PlayerDatas.Instance.fairyData.HasFairy && PlayerDatas.Instance.fairyData.IsCanFunc(LimitFunc.CanCall)); |
| | | emblemCell.Display(PlayerDatas.Instance.fairyData.fairy.EmblemID, PlayerDatas.Instance.fairyData.fairy.EmblemWord, 0.8f); |
| | | guildNameText.text = PlayerDatas.Instance.fairyData.fairy.FamilyName; |
| | | var config = FamilyConfig.Get(PlayerDatas.Instance.fairyData.fairy.FamilyLV); |
| | |
| | | SysNotifyMgr.Instance.ShowTip("GuildSys17"); |
| | | return; |
| | | } |
| | | UIManager.Instance.OpenWindow<GuildHawkerWin>(); |
| | | UIManager.Instance.OpenWindowAsync<GuildHawkerWin>().Forget(); |
| | | } |
| | | |
| | | void ShowHawkerTime(bool modelPlay = false) |
| | |
| | | async UniTask Talk(int index) |
| | | { |
| | | await UniTask.Delay(5000); |
| | | if (this == null) return; // destroyed during await |
| | | talkRects[index].SetActive(false); |
| | | var npc = funcNPCs[index].GetModel(); |
| | | npc.PlayAnimation("idle", true); |
| | |
| | | |
| | | public void OnClickTalkButton() |
| | | { |
| | | ChatManager.Instance.nowChatTab = ChatTab.Guild; |
| | | ChatManager.Instance.nowChatTab = ChatChannel.Guild; |
| | | ChatManager.Instance.nowChatChannel = ChatChannel.Guild; |
| | | UIManager.Instance.OpenWindow<ChatWin>(); |
| | | UIManager.Instance.OpenWindowAsync<ChatWin>().Forget(); |
| | | } |
| | | |
| | | public string GetGuildChatAreaContent(TalkData talkData) |
| | |
| | | } |
| | | } |
| | | |
| | | List<TalkData> showTalkDatas = new List<TalkData>(); |
| | | void ShowTalkInfo() |
| | | { |
| | | if (!ChatManager.Instance.TryGetTalkData(ChatChannel.Guild, out List<TalkData> datas) || datas.IsNullOrEmpty()) |
| | |
| | | talkInfoText.text = string.Empty; |
| | | return; |
| | | } |
| | | showTalkDatas.Clear(); |
| | | |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | int startIndex = Mathf.Max(datas.Count - 2, 0); |
| | | for (int i = startIndex; i < datas.Count; i++) |
| | | // 从后向前遍历,找到最后两条玩家消息(过滤掉系统消息和日期消息) |
| | | int count = 0; |
| | | for (int i = datas.Count - 1; i >= 0 && count < 2; i--) |
| | | { |
| | | TalkData data = datas[i]; |
| | | // 只保留玩家消息:非系统消息且非日期消息 |
| | | if (!data.isSystem && !data.isDate) |
| | | { |
| | | showTalkDatas.Insert(0, data); // 插入到列表开头以保持时间顺序 |
| | | count++; |
| | | } |
| | | } |
| | | |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | for (int i = 0; i < showTalkDatas.Count; i++) |
| | | { |
| | | TalkData data = showTalkDatas[i]; |
| | | stringBuilder.Append(UIHelper.AppendColor(GetGuildChatAreaColor(data), GetGuildChatAreaContent(data))); |
| | | stringBuilder.AppendLine(); |
| | | } |
| | | |
| | | talkInfoText.text = stringBuilder.ToString(); |
| | | } |
| | | |
| | | } |