Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/GatheringInvite.cs
gamer147 0455ff649e feat(battle-engine): EffectType full enum + collection/card/vfx extension copies
Replaces partial EffectMgr.EffectType with all 226 decomp values; copies the
IsNotNullOrEmpty/EquelsID/FindFromCardId/GetAllFuncVfxResults extension files +
UI extensions; adds Renderer/MeshFilter shared-material/mesh/sortingOrder. Compile
loop then closed the revealed deps (3242 files). 9.1k -> 18 errors.
2026-06-05 20:38:56 -04:00

277 lines
9.4 KiB
C#

using System.Collections.Generic;
using Cute;
using UnityEngine;
using Wizard.RoomMatch;
namespace Wizard;
public class GatheringInvite : MonoBehaviour
{
[SerializeField]
private UIButton _userIdSearchButton;
[SerializeField]
private UIButton _friendInviteButton;
[SerializeField]
private GameObject _idInputDialogPrefab;
[SerializeField]
private GameObject _userDataDialogPrefab;
[SerializeField]
private GameObject _friendListDialogPrefab;
[SerializeField]
private UserListView _friendViewOriginal;
[SerializeField]
private GameObject _inviteNoneRoot;
[SerializeField]
private UIButton _twitterButton;
[SerializeField]
private UILabel _twitterButtonText;
private GatheringInviteUserListTask _inviteUserListTask;
private GatheringJoining _parent;
private GatheringGetSelfInfoTask _selfInfoTask;
private const int ID_INPUT_PANEL_DEPTH = 19;
private const int FRIEND_SELECT_PANEL_DEPTH = 30;
private const int FRIEND_INVITE_CONFIRM_PANEL_DEPTH = 30;
private void Start()
{
_userIdSearchButton.onClick.Add(new EventDelegate(delegate
{
OnClickUserIdSearch();
}));
_friendInviteButton.onClick.Add(new EventDelegate(delegate
{
OnClickFriendInviteButton();
}));
_twitterButtonText.text = Data.SystemText.Get("RoomBattle_0185");
_twitterButton.onClick.Add(new EventDelegate(delegate
{
CopyInviteText();
}));
}
public void Show(GatheringJoining parent)
{
_parent = parent;
_selfInfoTask = new GatheringGetSelfInfoTask(isDependGatheringInfo: true);
StartCoroutine(Toolbox.NetworkManager.Connect(_selfInfoTask, delegate
{
if (!parent.CheckChangeStatus(_selfInfoTask.Info))
{
GatheringInviteUserListTask inviteListTask = new GatheringInviteUserListTask();
StartCoroutine(Toolbox.NetworkManager.Connect(inviteListTask, delegate
{
OnReceiveInviteList(inviteListTask);
}));
}
}));
}
private void OnReceiveInviteList(GatheringInviteUserListTask task)
{
_inviteUserListTask = task;
_inviteNoneRoot.SetActive(task.InviteUserInfoList.Count == 0);
string actionButtonLabel = Data.SystemText.Get("Guild_List_0014");
List<UserInfoBase> list = new List<UserInfoBase>();
foreach (GatheringInviteUserListTask.InviteUserInfo inviteUserInfo in task.InviteUserInfoList)
{
list.Add(inviteUserInfo.userInfo);
}
UserListView.CreateView(_friendViewOriginal.gameObject, base.gameObject, list, OnClickInviteCancel, actionButtonLabel);
}
private void OnClickInviteCancel(UserInfoBase userInfo)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
SystemText systemText = Data.SystemText;
UserDataDialog userDataDialog = UserDataDialog.Create(_userDataDialogPrefab, userInfo, systemText.Get("Gathering_Invite_0002"));
DialogBase dialog = userDataDialog.Dialog;
userDataDialog.SetDiscriptionLabel(systemText.Get("Guild_List_0015"));
dialog.SetButtonText(systemText.Get("Guild_List_0016"));
dialog.SetPanelDepth(30);
dialog.onPushButton1 = delegate
{
InviteCancel(userInfo as GatheringUserInfo);
};
}
private void InviteCancel(GatheringUserInfo userInfo)
{
GatheringInviteCancelTask gatheringInviteCancelTask = new GatheringInviteCancelTask();
gatheringInviteCancelTask.SetParameter(_inviteUserListTask.GetInviteIdFromViewerId(userInfo.ViewerId));
StartCoroutine(Toolbox.NetworkManager.Connect(gatheringInviteCancelTask, delegate
{
_parent.ReOpenCurrentCategory();
}));
}
private void OnClickFriendInviteButton()
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
GatheringFriendListTask task = new GatheringFriendListTask();
StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
{
OnReceiveFriendList(task);
}));
}
private void OnReceiveFriendList(GatheringFriendListTask task)
{
if (task.InviteFriendList.Count <= 0)
{
ShowNoFriendDialog();
return;
}
List<UserInfoBase> list = new List<UserInfoBase>();
foreach (GatheringFriendListTask.InviteFriendData inviteFriend in task.InviteFriendList)
{
list.Add(inviteFriend);
}
string actionButtonLabel = Data.SystemText.Get("Guild_List_0007");
UserListView friendList = UserListView.CreateDialog(_friendListDialogPrefab, list, OnSelectInviteFriend, actionButtonLabel);
friendList.Dialog.SetPanelDepth(30);
friendList.Dialog.SetTitleLabel(Data.SystemText.Get("Guild_List_0006"));
friendList.PanelDepth = 31;
friendList.PlateCustomize = FriendListePlateCustomize;
friendList.OnSelect = delegate(UserInfoBase userInfo)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
OnSelectInviteFriend(userInfo);
friendList.Dialog.Close();
};
}
private void FriendListePlateCustomize(UserListViewPlate friendListPlate, UserInfoBase userInfoBase)
{
GatheringFriendListTask.InviteFriendData inviteData = userInfoBase as GatheringFriendListTask.InviteFriendData;
friendListPlate.gameObject.GetComponent<GatheringFriendInviteListPlate>().Initialize(inviteData);
}
private void OnSelectInviteFriend(UserInfoBase userInfo)
{
SystemText systemText = Data.SystemText;
UserDataDialog userDataDialog = UserDataDialog.Create(_userDataDialogPrefab, userInfo, systemText.Get("Gathering_Invite_0002"));
DialogBase dialog = userDataDialog.Dialog;
userDataDialog.SetDiscriptionLabel(systemText.Get("Gathering_Invite_0003"));
dialog.SetButtonText(Data.SystemText.Get("Guild_List_0011"));
dialog.SetPanelDepth(30);
dialog.onPushButton1 = delegate
{
Invite(userInfo as GatheringUserInfo);
};
}
private void ShowNoFriendDialog()
{
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetText(Data.SystemText.Get("Gathering_Invite_0005"));
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
dialogBase.SetSize(DialogBase.Size.S);
}
private void OnClickUserIdSearch()
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
GuildInputViewerIdDialog inputDialog = Object.Instantiate(_idInputDialogPrefab).GetComponent<GuildInputViewerIdDialog>();
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetTitleLabel(Data.SystemText.Get("Guild_List_0002"));
dialogBase.SetSize(DialogBase.Size.S);
dialogBase.SetObj(inputDialog.gameObject);
dialogBase.SetPanelDepth(19);
inputDialog.InitializeDialog(dialogBase);
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_CancelBtn);
dialogBase.SetButtonText(Data.SystemText.Get("Guild_List_0005"));
dialogBase.onPushButton1 = delegate
{
FindViewerIdUser(inputDialog.InputValue);
};
}
private void FindViewerIdUser(int search_viewer_id)
{
FriendUserSearchTask friendUserSearchTask = new FriendUserSearchTask();
friendUserSearchTask.SetParameter(search_viewer_id);
StartCoroutine(Toolbox.NetworkManager.Connect(friendUserSearchTask, delegate
{
GatheringUserInfo userInfo = new GatheringUserInfo(Data.SearchUserInfo.data.user);
SystemText systemText = Data.SystemText;
UserDataDialog userDataDialog = UserDataDialog.Create(_userDataDialogPrefab, userInfo, systemText.Get("Gathering_Invite_0002"));
DialogBase dialog = userDataDialog.Dialog;
userDataDialog.SetDiscriptionLabel(systemText.Get("Gathering_Invite_0003"));
dialog.SetButtonText(Data.SystemText.Get("Guild_List_0011"));
dialog.onPushButton1 = delegate
{
Invite(userInfo);
};
}));
}
private void Invite(GatheringUserInfo user)
{
GatheringInviteTask gatheringInviteTask = new GatheringInviteTask();
gatheringInviteTask.SetParameter(user.ViewerId.ToString());
StartCoroutine(Toolbox.NetworkManager.Connect(gatheringInviteTask, delegate
{
OnSuccessInvite();
}));
}
private void OnSuccessInvite()
{
UIManager.GetInstance().CreateConfirmationDialog(Data.SystemText.Get("Gathering_Invite_0004")).OnClose = delegate
{
_parent.ReOpenCurrentCategory();
};
}
private void CopyInviteText()
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
CreateDialog(Data.SystemText.Get("RoomBattle_0186"), Data.SystemText.Get("Gathering_0044"));
NativePluginWrapper.SetStringToClipboard(GetTweetText());
}
private string GetTweetText()
{
string hashTags = _selfInfoTask._hashTags;
GatheringInfo info = _selfInfoTask.Info;
string gatheringTypeString = GatheringUtility.GetGatheringTypeString(info);
string text = GetFormatTexForHashTag(info.Rule.BattleParameterInstance.DeckFormat) + "/" + RoomRuleSetting.GetWinTypeString(info.Rule.BattleParameterInstance.Rule);
return Data.SystemText.Get("Gathering_0043", hashTags, info.Id, gatheringTypeString, text, info.BattleStartTimeShort);
}
private string GetFormatTexForHashTag(Format deckFormat)
{
return deckFormat switch
{
Format.Hof => Data.SystemText.Get("RoomBattle_0188"),
Format.Windfall => Data.SystemText.Get("RoomBattle_0193"),
Format.Crossover => Data.SystemText.Get("RoomBattle_0194"),
Format.MyRotation => Data.SystemText.Get("RoomBattle_0205"),
Format.Avatar => Data.SystemText.Get("RoomBattle_0208"),
_ => FormatBehaviorManager.GetFormatName(deckFormat),
};
}
private void CreateDialog(string title, string msg)
{
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetTitleLabel(title);
dialogBase.SetText(msg);
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
}
}