Public metody pro vlastní Menu.

This commit is contained in:
Dominik G.
2025-11-01 16:32:34 +01:00
parent fbe588c854
commit bec90a20a0
21 changed files with 14289 additions and 30450 deletions

View File

@@ -23,47 +23,47 @@ namespace MegaKoop.UI
private GameObject groupJoin;
private GameObject groupHost;
// Header & Code
private TMP_Text textStatus;
private TMP_Text textLobbyCodeValue;
private Button btnCopyCode;
[Header("Manual Wiring - Header & Code")]
[SerializeField] private TMP_Text textStatus;
[SerializeField] private TMP_Text textLobbyCodeValue;
[SerializeField] private Button btnCopyCode;
// Tabs
private Button btnHostTab;
private Button btnJoinTab;
[Header("Manual Wiring - Tabs")]
[SerializeField] private Button btnHostTab;
[SerializeField] private Button btnJoinTab;
// Join
private TMP_InputField inputLobbyCode;
private Button btnConnect;
[Header("Manual Wiring - Join Section")]
[SerializeField] private TMP_InputField inputLobbyCode;
[SerializeField] private Button btnConnect;
// Host
private TMP_Dropdown ddMaxPlayers;
private Toggle tgPublicLobby;
private Button btnCreateLobby;
[Header("Manual Wiring - Host Section")]
[SerializeField] private TMP_Dropdown ddMaxPlayers;
[SerializeField] private Toggle tgPublicLobby;
[SerializeField] private Button btnCreateLobby;
// Players
private TMP_Text textPlayerCount;
private ScrollRect scrollPlayers;
private Transform contentPlayers;
private GameObject playerItemTemplate;
private GameObject emptyPlayers;
[Header("Manual Wiring - Players List")]
[SerializeField] private TMP_Text textPlayerCount;
[SerializeField] private ScrollRect scrollPlayers;
[SerializeField] private Transform contentPlayers;
[SerializeField] private GameObject playerItemTemplate;
[SerializeField] private GameObject emptyPlayers;
// Friends picker (fallback when overlay unavailable)
private GameObject panelFriends;
private Transform contentFriends;
private GameObject emptyFriends;
private Button btnBackFromFriends;
private Button btnCloseFriendsOverlay;
[Header("Manual Wiring - Friends Picker")]
[SerializeField] private GameObject panelFriends;
[SerializeField] private Transform contentFriends;
[SerializeField] private GameObject emptyFriends;
[SerializeField] private Button btnBackFromFriends;
[SerializeField] private Button btnCloseFriendsOverlay;
// Host controls
private Button btnInviteFriends;
private Button btnKickSelected;
[Header("Manual Wiring - Host Controls")]
[SerializeField] private Button btnInviteFriends;
[SerializeField] private Button btnKickSelected;
// Ready & footer
private Button btnToggleReady;
private Button btnStartGame;
private Button btnLeaveLobby;
private Button btnBackFromLobby;
[Header("Manual Wiring - Footer")]
[SerializeField] private Button btnToggleReady;
[SerializeField] private Button btnStartGame;
[SerializeField] private Button btnLeaveLobby;
[SerializeField] private Button btnBackFromLobby;
[Header("Player Ready Styling")]
[SerializeField] private Color readyBorderColor = new Color(0.2f, 0.82f, 0.35f, 1f);
@@ -92,44 +92,44 @@ namespace MegaKoop.UI
private void Awake()
{
// Find UI (including inactive)
panelLobby = FindAnyGO("Panel_Lobby");
groupJoin = FindAnyGO("Group_Join");
groupHost = FindAnyGO("Group_Host");
panelLobby = EnsureGO(panelLobby, "Panel_Lobby");
groupJoin = EnsureGO(groupJoin, "Group_Join");
groupHost = EnsureGO(groupHost, "Group_Host");
textStatus = FindText("Text_Status");
textLobbyCodeValue = FindText("Text_LobbyCodeValue");
btnCopyCode = FindButton("Button_CopyCode");
textStatus = EnsureText(textStatus, "Text_Status");
textLobbyCodeValue = EnsureText(textLobbyCodeValue, "Text_LobbyCodeValue");
btnCopyCode = EnsureButton(btnCopyCode, "Button_CopyCode");
btnHostTab = FindButton("Button_HostTab");
btnJoinTab = FindButton("Button_JoinTab");
btnHostTab = EnsureButton(btnHostTab, "Button_HostTab");
btnJoinTab = EnsureButton(btnJoinTab, "Button_JoinTab");
inputLobbyCode = FindInput("Input_LobbyCode");
btnConnect = FindButton("Button_Connect");
inputLobbyCode = EnsureInput(inputLobbyCode, "Input_LobbyCode");
btnConnect = EnsureButton(btnConnect, "Button_Connect");
ddMaxPlayers = FindDropdown("Dropdown_MaxPlayers");
tgPublicLobby = FindToggle("Toggle_PublicLobby");
btnCreateLobby = FindButton("Button_CreateLobby");
ddMaxPlayers = EnsureDropdown(ddMaxPlayers, "Dropdown_MaxPlayers");
tgPublicLobby = EnsureToggle(tgPublicLobby, "Toggle_PublicLobby");
btnCreateLobby = EnsureButton(btnCreateLobby, "Button_CreateLobby");
textPlayerCount = FindText("Text_PlayerCount");
scrollPlayers = FindScroll("Scroll_Players");
contentPlayers = FindAnyGO("Content_PlayersList")?.transform;
emptyPlayers = FindAnyGO("Empty_Players");
playerItemTemplate = FindAnyGO("PlayerItemTemplate");
textPlayerCount = EnsureText(textPlayerCount, "Text_PlayerCount");
scrollPlayers = EnsureScroll(scrollPlayers, "Scroll_Players");
contentPlayers = EnsureTransform(contentPlayers, "Content_PlayersList");
emptyPlayers = EnsureGO(emptyPlayers, "Empty_Players");
playerItemTemplate = EnsureGO(playerItemTemplate, "PlayerItemTemplate");
btnInviteFriends = FindButton("Button_InviteFriends");
btnKickSelected = FindButton("Button_KickSelected");
btnInviteFriends = EnsureButton(btnInviteFriends, "Button_InviteFriends");
btnKickSelected = EnsureButton(btnKickSelected, "Button_KickSelected");
btnToggleReady = FindButton("Button_ToggleReady");
btnStartGame = FindButton("Button_StartGame");
btnLeaveLobby = FindButton("Button_LeaveLobby");
btnBackFromLobby = FindButton("Button_BackFromLobby");
btnToggleReady = EnsureButton(btnToggleReady, "Button_ToggleReady");
btnStartGame = EnsureButton(btnStartGame, "Button_StartGame");
btnLeaveLobby = EnsureButton(btnLeaveLobby, "Button_LeaveLobby");
btnBackFromLobby = EnsureButton(btnBackFromLobby, "Button_BackFromLobby");
// Friends picker
panelFriends = FindAnyGO("Panel_Friends");
contentFriends = FindAnyGO("Content_FriendsList")?.transform;
emptyFriends = FindAnyGO("Empty_Friends");
btnBackFromFriends = FindButton("Button_BackFromFriends");
btnCloseFriendsOverlay = FindButton("Button_CloseFriendsOverlay");
panelFriends = EnsureGO(panelFriends, "Panel_Friends");
contentFriends = EnsureTransform(contentFriends, "Content_FriendsList");
emptyFriends = EnsureGO(emptyFriends, "Empty_Friends");
btnBackFromFriends = EnsureButton(btnBackFromFriends, "Button_BackFromFriends");
btnCloseFriendsOverlay = EnsureButton(btnCloseFriendsOverlay, "Button_CloseFriendsOverlay");
EnsureSteamServices();
RegisterSteamEvents();
@@ -322,12 +322,78 @@ namespace MegaKoop.UI
panelLobbyRef = root;
}
private TMP_Text FindText(string name) => FindAnyComponent<TMP_Text>(name);
private Button FindButton(string name) => FindAnyComponent<Button>(name);
private Toggle FindToggle(string name) => FindAnyComponent<Toggle>(name);
private TMP_Dropdown FindDropdown(string name) => FindAnyComponent<TMP_Dropdown>(name);
private TMP_InputField FindInput(string name) => FindAnyComponent<TMP_InputField>(name);
private ScrollRect FindScroll(string name) => FindAnyComponent<ScrollRect>(name);
public void SetHostJoinGroups(GameObject hostGroup, GameObject joinGroup)
{
groupHost = hostGroup;
groupJoin = joinGroup;
}
public void SetHeaderControls(TMP_Text status, TMP_Text lobbyCode, Button copyCode)
{
textStatus = status;
textLobbyCodeValue = lobbyCode;
btnCopyCode = copyCode;
}
public void SetTabButtons(Button hostTab, Button joinTab)
{
btnHostTab = hostTab;
btnJoinTab = joinTab;
}
public void SetJoinSection(TMP_InputField lobbyCodeInput, Button connectButton)
{
inputLobbyCode = lobbyCodeInput;
btnConnect = connectButton;
}
public void SetHostSection(TMP_Dropdown maxPlayersDropdown, Toggle publicToggle, Button createLobbyButton)
{
ddMaxPlayers = maxPlayersDropdown;
tgPublicLobby = publicToggle;
btnCreateLobby = createLobbyButton;
}
public void SetPlayersList(TMP_Text playerCountText, ScrollRect playersScroll, Transform playersContent, GameObject itemTemplate, GameObject emptyState)
{
textPlayerCount = playerCountText;
scrollPlayers = playersScroll;
contentPlayers = playersContent;
playerItemTemplate = itemTemplate;
emptyPlayers = emptyState;
}
public void SetFriendsPicker(GameObject friendsPanel, Transform friendsContent, GameObject friendsEmpty, Button backButton, Button closeOverlayButton)
{
panelFriends = friendsPanel;
contentFriends = friendsContent;
emptyFriends = friendsEmpty;
btnBackFromFriends = backButton;
btnCloseFriendsOverlay = closeOverlayButton;
}
public void SetHostControls(Button inviteFriendsButton, Button kickSelectedButton)
{
btnInviteFriends = inviteFriendsButton;
btnKickSelected = kickSelectedButton;
}
public void SetFooterControls(Button toggleReadyButton, Button startGameButton, Button leaveLobbyButton, Button backButton)
{
btnToggleReady = toggleReadyButton;
btnStartGame = startGameButton;
btnLeaveLobby = leaveLobbyButton;
btnBackFromLobby = backButton;
}
private TMP_Text EnsureText(TMP_Text existing, string name) => existing ? existing : FindAnyComponent<TMP_Text>(name);
private Button EnsureButton(Button existing, string name) => existing ? existing : FindAnyComponent<Button>(name);
private Toggle EnsureToggle(Toggle existing, string name) => existing ? existing : FindAnyComponent<Toggle>(name);
private TMP_Dropdown EnsureDropdown(TMP_Dropdown existing, string name) => existing ? existing : FindAnyComponent<TMP_Dropdown>(name);
private TMP_InputField EnsureInput(TMP_InputField existing, string name) => existing ? existing : FindAnyComponent<TMP_InputField>(name);
private ScrollRect EnsureScroll(ScrollRect existing, string name) => existing ? existing : FindAnyComponent<ScrollRect>(name);
private Transform EnsureTransform(Transform existing, string name) => existing ? existing : FindAnyGO(name)?.transform;
private GameObject EnsureGO(GameObject existing, string name) => existing ? existing : FindAnyGO(name);
#region Steam
private void EnsureSteamServices()