diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs
index 105a8f9..9dcccee 100644
--- a/Assets/Scripts/GameManager.cs
+++ b/Assets/Scripts/GameManager.cs
@@ -281,8 +281,11 @@ public void StartGame()
private void OnRoomUpdate(object sender, ValueChangedEventArgs e)
{
Debug.Log("begin OnRoomUpdate");
+ GameState lastState = (GameState)myRoom.currentState;
+
try
{
+
if (e?.Snapshot?.GetRawJsonValue() != null)
{
string JSON = e.Snapshot.GetRawJsonValue();
@@ -299,6 +302,33 @@ private void OnRoomUpdate(object sender, ValueChangedEventArgs e)
Debug.Log("myroom is null");
return;
}
+
+ if(myRoom.currentState != (int)lastState)
+ {
+ OnNewGameState();
+ }
+ else
+ {
+ //call this every time we are on this state
+ switch (myRoom.currentState)
+ {
+ case (int)GameState.WaitingForOtherPlayersToJoin:
+ {
+ CheckIfIAmTheFirst(myRoom.GetPlayerList());
+ UpdateDisplayedListUser(myRoom.GetPlayerList());
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ }
+
+ ///
+ /// Call this when Game state change
+ ///
+ private void OnNewGameState()
+ {
switch (myRoom.currentState)
{
case (int)GameState.EnteringName:
@@ -309,14 +339,6 @@ private void OnRoomUpdate(object sender, ValueChangedEventArgs e)
HomeConnection.SetActive(true);
}
- break;
- }
- case (int)GameState.WaitingForOtherPlayersToJoin:
- {
-
- CheckIfIAmTheFirst(myRoom.GetPlayerList());
- UpdateDisplayedListUser(myRoom.GetPlayerList());
-
break;
}
case (int)GameState.Explanation:
@@ -328,7 +350,6 @@ private void OnRoomUpdate(object sender, ValueChangedEventArgs e)
WaitingRoom.SetActive(false);
BeforeStart.SetActive(true);
endOfViewDate = DateTime.Now.AddSeconds(4);
-
break;
}
case (int)GameState.MakeProposition:
@@ -338,9 +359,7 @@ private void OnRoomUpdate(object sender, ValueChangedEventArgs e)
BeforeStart.SetActive(false);
TakePicture.SetActive(true);
endOfViewDate = DateTime.Now.AddSeconds(60);
-
}
-
break;
}
case (int)GameState.PropositionsSent:
@@ -477,7 +496,10 @@ public void onClickNewPlayers()
private void OnCurrentQuestionChanged(object sender, ValueChangedEventArgs onlineValue)
{
- Question q = myRoom.questions[onlineValue.Snapshot.Value.ConvertTo()];
+ int questionId = onlineValue.Snapshot.Value.ConvertTo();
+ Debug.Log($"new question ! Q{(onlineValue.Snapshot.Value.ConvertTo())}");
+
+ Question q = myRoom.questions[questionId];
if (WaitingOtherPlayers.activeInHierarchy)
{
diff --git a/Assets/Scripts/PropositionHandler.cs b/Assets/Scripts/PropositionHandler.cs
index 2495f70..5542af2 100644
--- a/Assets/Scripts/PropositionHandler.cs
+++ b/Assets/Scripts/PropositionHandler.cs
@@ -16,8 +16,11 @@ public class PropositionHandler : MonoBehaviour
public void ShowQuestion(Question currentQuestion)
{
+
List props = currentQuestion.propositions.Values.ToList();
- promptLabel.text = prompts.GetPromptById(currentQuestion.promptId).en;
+ string enPrompt = prompts.GetPromptById(currentQuestion.promptId).en;
+ promptLabel.text = enPrompt;
+ Debug.Log($"Showing Question ({currentQuestion.index}) : {enPrompt}");
for (int i = 0; i < 2; i++)
{
int index = i; // Capture la valeur de i pour cette itération
diff --git a/Assets/Scripts/QuestionHandler.cs b/Assets/Scripts/QuestionHandler.cs
index 5ed7fbe..e141cd3 100644
--- a/Assets/Scripts/QuestionHandler.cs
+++ b/Assets/Scripts/QuestionHandler.cs
@@ -2,13 +2,16 @@
using System.Linq;
using TMPro;
using UnityEngine;
+using UnityEngine.UI;
public class QuestionHandler : MonoBehaviour
{
public GameObject managers;
- private GameManager gameManager;
+ public Button submitButton;
public TextMeshProUGUI explainText;
public PromptList promptList;
+
+ private GameManager gameManager;
private List player2questions;
private int currentQuestion = 0;
@@ -42,34 +45,36 @@ int GetPropRef(Player player)
public void OnSubmitButton()
{
+ submitButton.interactable = false;
+ submitButton.GetComponent().text = "Uploading...";
+
managers.GetComponent().UploadPhoto(
gameManager.myRoom.code,
gameManager.currentPlayer.id,
currentQuestion,
- GetPropRef(gameManager.currentPlayer));
+ GetPropRef(gameManager.currentPlayer), succeed =>
+ {
+ if(!succeed)
+ {
+ Debug.LogError("Photo upload failed. please do something", this);
+ return;
+ }
- if (currentQuestion == 1)
- {
- gameManager.myRoom.currentState = (int)GameState.PropositionsSent;
- gameManager.WaitForPlayers();
- return;
- }
- else
- {
- currentQuestion++;
- Redraw(currentQuestion);
- }
- }
-
- // Start is called before the first frame update
- void Start()
- {
+ if (currentQuestion == 1)
+ {
+ gameManager.myRoom.currentState = (int)GameState.PropositionsSent;
+ gameManager.WaitForPlayers();
+ return;
+ }
+ else
+ {
+ submitButton.interactable = true;
+ submitButton.GetComponent().text = "Submit";
+ currentQuestion++;
+ Redraw(currentQuestion);
+ }
+ });
}
- // Update is called once per frame
- void Update()
- {
-
- }
}
diff --git a/Assets/Scripts/StorageManager.cs b/Assets/Scripts/StorageManager.cs
index fb02a5e..9f5c8d2 100644
--- a/Assets/Scripts/StorageManager.cs
+++ b/Assets/Scripts/StorageManager.cs
@@ -39,7 +39,7 @@ void Update()
}
- public void UploadPhoto(string roomCode, string playerId, int question, int proposition)
+ public void UploadPhoto(string roomCode, string playerId, int question, int proposition, Action callback_OnPhotoUploaded)
{
Texture2D photo = cameraManager.GetPhoto();
byte[] photoBytes = ImageConversion.EncodeToJPG(photo);
@@ -53,11 +53,13 @@ public void UploadPhoto(string roomCode, string playerId, int question, int prop
{
if (task.IsFaulted || task.IsCanceled)
{
+ callback_OnPhotoUploaded?.Invoke(false);
Debug.LogException(task.Exception);
// Uh-oh, an error occurred!
}
else
{
+ callback_OnPhotoUploaded?.Invoke(true);
realtimeDB
.Child("rooms")
.Child(roomCode)