100 lines
2.5 KiB
C#
100 lines
2.5 KiB
C#
using HeathenEngineering.SteamApi.Foundation;
|
|
using Steamworks;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
using UnityEngine.UI;
|
|
|
|
namespace HeathenEngineering.SteamApi.Networking.Demo
|
|
{
|
|
public class FindMatchButton : MonoBehaviour
|
|
{
|
|
[FormerlySerializedAs("SteamSettings")]
|
|
public SteamSettings steamSettings;
|
|
|
|
[FormerlySerializedAs("LobbySettings")]
|
|
public SteamworksLobbySettings lobbySettings;
|
|
|
|
[FormerlySerializedAs("QuickMatchFilter")]
|
|
public LobbyHunterFilter quickMatchFilter;
|
|
|
|
public Button quickMatchButton;
|
|
|
|
public Text quickMatchLabel;
|
|
|
|
private void Update()
|
|
{
|
|
quickMatchButton.interactable = !lobbySettings.Manager.IsSearching && !lobbySettings.Manager.IsQuickSearching;
|
|
if (quickMatchButton.interactable)
|
|
{
|
|
if (!lobbySettings.InLobby)
|
|
{
|
|
quickMatchLabel.text = "Quick Match";
|
|
}
|
|
else
|
|
{
|
|
quickMatchLabel.text = "Leave Lobby";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
quickMatchLabel.text = "Searching";
|
|
}
|
|
}
|
|
|
|
public void SimpleFindMatch()
|
|
{
|
|
if (!lobbySettings.InLobby)
|
|
{
|
|
Debug.Log("[FindMatchButton.SimpleFindMatch] Startomg a quickmatch search for a lobby that matches the filter defined in [FindMatchButton.quickMatchFilter].");
|
|
lobbySettings.Manager.QuickMatch(quickMatchFilter);
|
|
}
|
|
else
|
|
{
|
|
lobbySettings.LeaveAllLobbies();
|
|
}
|
|
}
|
|
|
|
public void CreateMatch()
|
|
{
|
|
Debug.Log("[FindMatchButton.CreateMatch] Quick match found 0 matches, creating a new lobby with 4 slots.");
|
|
lobbySettings.CreateLobby(ELobbyType.k_ELobbyTypePublic, 4);
|
|
}
|
|
|
|
public void GetHelp()
|
|
{
|
|
Application.OpenURL("https://partner.steamgames.com/doc/features/multiplayer/matchmaking");
|
|
}
|
|
|
|
public void KickMember(string id)
|
|
{
|
|
lobbySettings.KickMember(new CSteamID(ulong.Parse(id)));
|
|
}
|
|
|
|
public void OnEnterLobby(SteamLobby lobby)
|
|
{
|
|
if (lobby.IsHost)
|
|
{
|
|
lobby.Name = steamSettings.client.user.DisplayName + "'s Lobby";
|
|
foreach (LobbyHunterStringFilter stringValue in quickMatchFilter.stringValues)
|
|
{
|
|
lobby[stringValue.key] = stringValue.value;
|
|
}
|
|
foreach (LobbyHunterNumericFilter numberValue in quickMatchFilter.numberValues)
|
|
{
|
|
lobby[numberValue.key] = numberValue.value.ToString();
|
|
}
|
|
foreach (LobbyHunterNearFilter nearValue in quickMatchFilter.nearValues)
|
|
{
|
|
lobby[nearValue.key] = nearValue.value.ToString();
|
|
}
|
|
}
|
|
Debug.Log("Entered lobby: " + lobby.Name);
|
|
}
|
|
|
|
public void OnExitLobby(SteamLobby lobby)
|
|
{
|
|
Debug.Log("Exiting lobby: " + lobby.Name);
|
|
}
|
|
}
|
|
}
|