diff --git a/Assets/Music.meta b/Assets/Music.meta new file mode 100644 index 0000000..a6bc371 --- /dev/null +++ b/Assets/Music.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23eaa774a3a7d434183a4c336d52891f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Music/Ending.mp3 b/Assets/Music/Ending.mp3 new file mode 100644 index 0000000..7a2f9a5 --- /dev/null +++ b/Assets/Music/Ending.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71a004520c6ebb46f1966c6d35d4bb25853e303a88c111315010fb35b6ad2953 +size 7008143 diff --git a/Assets/Music/Ending.mp3.meta b/Assets/Music/Ending.mp3.meta new file mode 100644 index 0000000..ae2380c --- /dev/null +++ b/Assets/Music/Ending.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: e1135788bf319bd42b6ca512976f9028 +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Music/Menu.mp3 b/Assets/Music/Menu.mp3 new file mode 100644 index 0000000..74c2184 --- /dev/null +++ b/Assets/Music/Menu.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4fdb901d2d6e7627073d7645dd97658b0e819afac9fbb01f8de09e8591fce4c +size 5630543 diff --git a/Assets/Music/Menu.mp3.meta b/Assets/Music/Menu.mp3.meta new file mode 100644 index 0000000..f8d41cc --- /dev/null +++ b/Assets/Music/Menu.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 7ac3efdb5c840704aafbf19188b3e61e +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Music/Taking picture.mp3 b/Assets/Music/Taking picture.mp3 new file mode 100644 index 0000000..602e992 --- /dev/null +++ b/Assets/Music/Taking picture.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee4f9285dac6a7b0925aed9cbb8314b44d4a996fa255a5100f138df2db0f97ed +size 2427023 diff --git a/Assets/Music/Taking picture.mp3.meta b/Assets/Music/Taking picture.mp3.meta new file mode 100644 index 0000000..6a4e838 --- /dev/null +++ b/Assets/Music/Taking picture.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 0e86c0433979a2d4c884b368808d3cdf +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index cbebfea..508b7df 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using Firebase.Database; using Firebase.Extensions; using Newtonsoft.Json; @@ -11,9 +12,7 @@ /// public class GameManager : MonoBehaviour { - private GameState currentState; private List players = new(); - private bool isFirst = false; public Player currentPlayer = null; [Header("Other component")] @@ -57,15 +56,13 @@ private void Start() } private void OnApplicationQuit() { - myOnlineRoom.Child("players").Child(currentPlayer.id).RemoveValueAsync(); - Debug.Log($"delete player {currentPlayer.name}"); - myRoom = null; + myOnlineRoom.Child("players").Child(currentPlayer.id).RemoveValueAsync().ContinueWithOnMainThread(task => + { + Debug.Log($"delete player {currentPlayer.name}"); + myOnlineRoom.ValueChanged -= OnRoomUpdate; + }); } - public GameState GetCurrentState() - { - return currentState; - } private void Initialize() { @@ -124,7 +121,7 @@ public void PlayerValidateNameAndServerRoom(string _name, string _code) { //then subscribe to it myOnlineRoom.ValueChanged += OnRoomUpdate; - currentState = GameState.WaitingForOtherPlayersToJoin; + myRoom.currentState = (int)GameState.WaitingForOtherPlayersToJoin; players.Add(currentPlayer); WaitingRoom.SetActive(true); @@ -202,19 +199,13 @@ public void StartGame() Debug.Log(JSON); try { - myOnlineRoom.Child("currentState").SetValueAsync(2).ContinueWithOnMainThread(task => + sendCurrentState(GameState.Explanation, () => { - if (task.IsFaulted) - { - Debug.LogException(task.Exception); - } - else - { - Debug.Log($"start the game", this); - currentState = GameState.Explanation; - WaitingRoom.SetActive(false); - BeforeStart.SetActive(true); - } + Debug.Log($"start the game", this); + myRoom.currentState = (int)GameState.Explanation; + WaitingRoom.SetActive(false); + BeforeStart.SetActive(true); + }); } catch (Exception ex) @@ -232,7 +223,7 @@ public void StartGame() /// The prompt to display public void MakeAProposition(Prompt _prompt) { - currentState = GameState.MakeProposition; + //currentState = GameState.MakeProposition; } /// @@ -282,13 +273,30 @@ private void OnRoomUpdate(object sender, ValueChangedEventArgs e) { Debug.LogException(ex); } - - switch (currentState) + if(myRoom == null) { + return; + } + switch (myRoom.currentState) { - case GameState.WaitingForOtherPlayersToJoin: + case (int)GameState.WaitingForOtherPlayersToJoin: { CheckIfIAmTheFirst(myRoom.GetPlayerList()); UpdateDisplayedListUser(myRoom.GetPlayerList()); + break; + } + case (int)GameState.Explanation: + { + + break; + } + case (int)GameState.MakeProposition: + { + if (BeforeStart.activeInHierarchy) + { + BeforeStart.SetActive(false); + TakePicture.SetActive(true); + } + break; } } @@ -306,16 +314,38 @@ private void UpdateDisplayedListUser(List players) private void CheckIfIAmTheFirst(List players) { + bool isFirst = false; if (players.Count > 1) { - } - else - { + IOrderedEnumerable sortedList = players.OrderBy(x=>x.creationDate); + if(sortedList.Last().id == currentPlayer.id) + { + isFirst = true; + } + } + + if (isFirst) + { + submitStartGame.SetActive(true); } } + public void sendCurrentState(GameState state,Action callback_oncCurrentStateSent) + { + myOnlineRoom.Child("currentState").SetValueAsync((int)state).ContinueWithOnMainThread(task => + { + if (task.IsFaulted) + { + Debug.LogException(task.Exception); + } + else + { + callback_oncCurrentStateSent?.Invoke(); + } + }); ; + } public void OnClickSubmitSignIn() {