Files
back_cantanBuilding/Assets/Scripts/UI/Social/FishingSocialPanel.cs
2026-05-26 16:15:54 +08:00

198 lines
6.7 KiB
C#

using asap.core;
using UniRx;
using game;
using GameCore;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class FishingSocialPanel : BasePanel
{
ClubService _socialData;
public Button btn_close;
List<Toggle> toggleList = new List<Toggle>();
List<GameObject> selected_tab = new List<GameObject>();
SocialFriends friends;
SocialLeadboard leaderboard;
GameObject clubOb;
SocialClubApplication clubApplication;
SocialClubJoined clubJoined;
private void Awake()
{
_socialData = GContext.container.Resolve<ClubService>();
btn_close = transform.Find("root/btn_close").GetComponent<Button>();
for (int i = 1; i <= 3; i++)
{
toggleList.Add(transform.Find($"root/tab/text_tab{i}").GetComponent<Toggle>());
selected_tab.Add(transform.Find($"root/tab/selected_tab{i}").gameObject);
}
friends = transform.Find("root/friends").GetComponent<SocialFriends>();
friends.InitUI();
leaderboard = transform.Find("root/leaderboard").GetComponent<SocialLeadboard>();
clubOb = transform.Find("root/club").gameObject;
clubApplication = transform.Find("root/club/club_application").GetComponent<SocialClubApplication>();
clubJoined = transform.Find("root/club/club_joined").GetComponent<SocialClubJoined>();
GContext.container.Resolve<GuideDataCenter>().InspectTriggerGuide("FishingSocialPanel");
}
protected override void Start()
{
base.Start();
GContext.OnEvent<ClubStateChangeEvent>().Subscribe(OnChangeJoinedState).AddTo(disposables);
GContext.OnEvent<SocialFriendListChangedData>().Subscribe(OnChangeFriendListData).AddTo(disposables);
clubOb.gameObject.SetActive(false);
friends.gameObject.SetActive(false);
leaderboard.gameObject.SetActive(false);
btn_close.onClick.AddListener(() =>
{
UIManager.Instance.DestroyUI(UITypes.FishingSocialFriendSearchPanel);
UIManager.Instance.DestroyUI(UITypes.FishingSocialPanel);
});
selected_tab[0].SetActive(false);
selected_tab[1].SetActive(false);
selected_tab[2].SetActive(false);
toggleList[0].onValueChanged.AddListener(OnToggleClub);
toggleList[1].onValueChanged.AddListener(OnToggleFriends);
toggleList[2].onValueChanged.AddListener(OnToggleLeaderboard);
OnToggle();
_socialData.GetSelfClub();
_socialData.SetOpenClubRed();
EventPopupData eventPopup = GContext.container.Resolve<ClubService>().eventPopupDataClub;
if (eventPopup != null && !eventPopup.IsRead)
{
eventPopup.IsRead = true;
_socialData.ReadClubEvent();
switch (eventPopup.redirectID)
{
case 1:
KickedOut();
break;
case 2:
KickedOutMaster();
break;
case 3:
case 4:
Promote(eventPopup.content);
break;
default:
break;
}
}
}
//玩家被踢出首次进入俱乐部打开提示弹窗:
// 您被会长踢出了俱乐部 You have been kicked out of the club by the club master
void KickedOut()
{
string info = LocalizationMgr.GetText("UI_FishingSocialPanel_35");
ShowTips(info);
}
//会长长时间不活跃被踢出后首次进入俱乐部打开提示弹窗:
//由于长时间不活跃,您已被踢出俱乐部,会长已自动移交给他人
//Due to inactivity, you have been kicked out of the club ,
//the club master has been automatically transferred
void KickedOutMaster()
{
string info = LocalizationMgr.GetText("UI_FishingSocialPanel_36");
ShowTips(info);
}
//由于前任会长不活跃被踢出,被转让会长身份的玩家首次进入俱乐部打开的提示弹窗:
//由于前任会长长时间不活跃,您已被任命成新的俱乐部会长
//Due to the inactivity of the previous club master, you have been appointed as the new club master
void BeenAppointed()
{
string info = LocalizationMgr.GetText("UI_FishingSocialPanel_37");
ShowTips(info);
}
//升职
void Promote(string content)
{
_socialData.ShowPromote();
}
async void ShowTips(string info)
{
GameObject go = await UIManager.Instance.ShowUI(UITypes.NoticeConfirmPopupPanel);
var NoticeConfirmPopupPanel = go.GetComponent<NoticeConfirmPopupPanel>();
NoticeConfirmPopupPanel.Init(1, "", info);
}
void OnToggle()
{
if (_socialData.OpenPanelType == 2)
{
selected_tab[3].SetActive(true);
toggleList[3].isOn = true;
OnToggleLeaderboard(true);
}
else if (_socialData.OpenPanelType == 1)
{
selected_tab[1].SetActive(true);
toggleList[1].isOn = true;
OnToggleFriends(true);
}
else
{
selected_tab[0].SetActive(true);
toggleList[0].isOn = true;
OnToggleClub(true);
}
}
void OnToggleClub(bool isOn)
{
selected_tab[0].SetActive(isOn);
clubOb.gameObject.SetActive(isOn);
if (isOn)
{
clubApplication.gameObject.SetActive(!_socialData.IsClubJoined());
clubJoined.gameObject.SetActive(_socialData.IsClubJoined());
}
}
void OnToggleFriends(bool isOn)
{
friends.gameObject.SetActive(isOn);
selected_tab[1].SetActive(isOn);
}
void OnToggleLeaderboard(bool isOn)
{
leaderboard.gameObject.SetActive(isOn);
selected_tab[2].SetActive(isOn);
}
void OnChangeFriendListData(SocialFriendListChangedData data)
{
if (friends == null) return;
friends.SetScroll();
}
void OnChangeJoinedState(ClubStateChangeEvent stateData)
{
int state = stateData.state;
if (state == 0)
{
clubApplication.gameObject.SetActive(!_socialData.IsClubJoined());
clubJoined.gameObject.SetActive(_socialData.IsClubJoined());
}
else
{
//加入公会之后的搜索和返回
clubApplication.gameObject.SetActive(state == 1);
clubJoined.gameObject.SetActive(state == 2);
}
}
private void OnDisable()
{
RestartShowHomeUIEvent restartShowHomeUIEvent = new RestartShowHomeUIEvent();
GContext.Publish(restartShowHomeUIEvent);
}
protected override void OnDestroy()
{
base.OnDestroy();
}
}