player can connect WIP

This commit is contained in:
Morgan - 6 Freedom 2024-01-27 16:32:12 +01:00
parent 449c0829ae
commit 9d8019556c
2 changed files with 55 additions and 4 deletions

View File

@ -1,5 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using Firebase.Database;
using Firebase.Extensions;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
@ -20,6 +22,14 @@ public class GameManager : MonoBehaviour
public InputField playerNameField;
public TextMeshProUGUI nameError;
private DatabaseReference realtimeDB;
private Room myRoom;
private void Awake()
{
FirebaseInitializer.Instance.onFirebaseReady += Initialize;
}
private void Start()
{
currentExplanationTime = explanationTime;
@ -30,12 +40,43 @@ public GameState GetCurrentState()
return currentState;
}
private void Initialize()
{
FirebaseInitializer.Instance.onFirebaseReady -= Initialize;
realtimeDB = FirebaseDatabase.DefaultInstance.RootReference;
Debug.Log("Realtime DB initialized");
//TODO MARINE : enable the submit button here. Disabled it at start
}
/// <summary>
/// Send your name and game room to the server
/// </summary>
public void PlayerValidateNameAndServerRoom()
public void PlayerValidateNameAndServerRoom(string _name, string _code)
{
//check if the room exists, if not display an error message
realtimeDB.Child("rooms").Child(_code).GetValueAsync().ContinueWithOnMainThread(task =>
{
if (task.IsFaulted)
{
Debug.LogException(task.Exception);
}
else if (task.IsCompleted)
{
DataSnapshot snapshot = task.Result;
if (snapshot == null)
{
Debug.LogError("The room doesn't exists");
roomError.text = "Error: the room doesn't exists";
roomError.gameObject.SetActive(true);
}
else
{
myRoom = JsonUtility.FromJson<Room>(snapshot.GetRawJsonValue());
realtimeDB.Child("rooms").Child(_code).ChildChanged += OnRoomUpdate;
}
}
});
//if succeed, then the player to the server
@ -99,8 +140,9 @@ public void DisplayEndScreen()
/// <summary>
/// Automatically called when something change in your room
/// </summary>
private void OnRoomUpdate()
private void OnRoomUpdate(object sender, ChildChangedEventArgs e)
{
myRoom = JsonUtility.FromJson<Room>(e.Snapshot.GetRawJsonValue());
}

View File

@ -46,7 +46,6 @@ private void Awake()
private void Start()
{
propositionCurrentTime = propositionTime;
votingCurrentTime = votingTime;
}
@ -106,6 +105,7 @@ public void CreateNewRoom()
realtimeDB.Child("rooms").Child(newRoom.code).SetRawJsonValueAsync(JSON).ContinueWithOnMainThread(task =>
{
Debug.Log($"room {currentRoom.code} has been created on the server");
realtimeDB.Child("rooms").Child(newRoom.code).Child("players").ChildAdded += PlayerConnect;
//TODO MARINE : uncomment and reference the correct game object
//roomCodeLabel.text = currentRoom.code;
});
@ -210,9 +210,18 @@ public void GenerateCouples()
/// is automatically called when a player connect to the room
/// </summary>
/// <param name="_player"></param>
public void PlayerConnect(Player _player)
public void PlayerConnect(object sender, ChildChangedEventArgs args)
{
if (args.DatabaseError != null)
{
Debug.LogError(args.DatabaseError.Message);
return;
}
string JSON = args.Snapshot.GetRawJsonValue();
Player joinedPlayer = JsonUtility.FromJson<Player>(JSON);
Debug.Log($"{joinedPlayer.name} has joined the room");
//TODO Marine : do somtethjing with the newly joinde player
}
[ContextMenu("Fake Player Connection")]