private async void CreateLobby() { var lobby = await DiscordLobby.Create((ref LobbyTransaction transaction) => { transaction.SetType(LobbyType.Public); transaction.SetCapacity(2); }); NetplayGameManager.CreateMatch(lobby); _lobbyList.gameObject.SetActive(false); _createLobbyButton.gameObject.SetActive(false); }
private async void Update() { _timeSinceLastUpdate += Time.deltaTime; if (_timeSinceLastUpdate < _updateInterval) { return; } _timeSinceLastUpdate -= _updateInterval; var lobbies = await DiscordLobby.Search(); foreach (var fightRequest in _fightRequests) { Destroy(fightRequest); } _fightRequests.Clear(); foreach (var lobby in lobbies) { var gameObject = Instantiate(_fightRequestTemplate, _lobbyList); var button = gameObject.GetComponent <TextButton>(); var owner = await lobby.Owner; gameObject.SetActive(true); button.Label = $"{owner.Username}#{owner.Discriminator}"; if (owner.Id != DiscordManager.CurrentUser.Id) { button.OnClick += () => { NetplayGameManager.JoinMatch(lobby); _lobbyList.gameObject.SetActive(false); _createLobbyButton.gameObject.SetActive(false); }; } else { button.OnClick += () => { lobby.Delete(); }; } _fightRequests.Add(gameObject); } }
private void CreateMatchInternal(DiscordLobby lobby) { if (_lobby != null) { throw new NotImplementedException(); } _lobby = lobby; _lobby.ConnectNetwork(); _lobby.NetworkMessageReceived += NetworkMessageReceived; _synchronizer = new GameSynchronizer <GameState, InputState>(); _synchronizer.SimulateGame += SimulateGame; _synchronizer.SaveGame += SaveGame; _synchronizer.LoadGame += LoadGame; _synchronizer.BroadcastInput += BroadcastInput; _localPlayer = _synchronizer.AddPlayer(PlayerType.Local); _remotePlayer = _synchronizer.AddPlayer(PlayerType.Remote); }
private async void JoinMatchInternal(DiscordLobby lobby) { if (_lobby != null) { throw new NotImplementedException(); } await lobby.Connect(); _lobby = lobby; _lobby.ConnectNetwork(); _lobby.NetworkMessageReceived += NetworkMessageReceived; _synchronizer = new GameSynchronizer <GameState, InputState>(); _synchronizer.SimulateGame += SimulateGame; _synchronizer.SaveGame += SaveGame; _synchronizer.LoadGame += LoadGame; _synchronizer.BroadcastInput += BroadcastInput; _remotePlayer = _synchronizer.AddPlayer(PlayerType.Remote); _localPlayer = _synchronizer.AddPlayer(PlayerType.Local); _lobby.SendNetworkMessage(0, Encoding.UTF8.GetBytes("READY")); }
public static void CreateMatch(DiscordLobby lobby) => _instance.CreateMatchInternal(lobby);
public static void JoinMatch(DiscordLobby lobby) => _instance.JoinMatchInternal(lobby);