public async void Matchmake(User user) { try { client = new Colyseus.Client("ws://10.57.30.20:2567"); room = await client.JoinOrCreate <State>("game"); await Task.Delay(1000); await room.Send( new { userInfo = new { user.DeviceID, user.Gender, user.Name, user.Star, user.Age } }); room.State.players.OnAdd += Players_OnAdd; room.State.players.OnChange += Players_OnChange; room.State.OnChange += State_OnChange; room.OnError += Room_OnError; numPlayers++; if (room.State.players.Count == 2) { playernumber = 2; USER value = ((PlayerSchema)(room.State.players.Items[0])).User; EnemyInfoReceived?.Invoke(new User() { Age = (int)value.Age, Name = value.Name, Star = value.Star, Gender = value.Gender }); PlayersConnected?.Invoke(true); } } catch (Exception e) { PlayersConnected?.Invoke(false); Debug.Log("Error: " + e.Message); } }
private void Players_OnChange(PlayerSchema value, string key) { Debug.Log("player state changed"); if (value.SessionID != room.SessionId && value.Choice != -1) { Debug.Log("choice received of the enemy"); EnemySelected?.Invoke((int)value.Choice); } if (value.SessionID != room.SessionId && value.User.Age != 0) { Debug.LogWarning(value.User.Name); EnemyInfoReceived?.Invoke(new User() { Age = (int)value.User.Age, Name = value.User.Name, Star = value.User.Star, Gender = value.User.Gender }); } }
private void Colyseus_EnemyInfoReceived(User obj) { EnemyInfoReceived?.Invoke(obj); }