2024-01-27 09:19:32 +00:00
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
2024-01-27 14:08:12 +00:00
|
|
|
using Firebase;
|
|
|
|
using Firebase.Database;
|
2024-01-27 09:19:32 +00:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
public class RoomManager : MonoBehaviour
|
|
|
|
{
|
2024-01-27 12:19:56 +00:00
|
|
|
private RoomState currentState;
|
2024-01-27 14:08:12 +00:00
|
|
|
private Room currentRoom = null;
|
2024-01-27 12:19:56 +00:00
|
|
|
private List<Player> players;
|
2024-01-27 09:19:32 +00:00
|
|
|
|
2024-01-27 12:19:56 +00:00
|
|
|
public float propositionTime = 60;
|
|
|
|
public float votingTime = 20;
|
|
|
|
|
|
|
|
private float propositionCurrentTime = 0;
|
|
|
|
private float votingCurrentTime = 0;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Contain the infos about the current displayed question (during votes)
|
|
|
|
/// </summary>
|
|
|
|
private Question currentQuestion;
|
|
|
|
|
|
|
|
private List<Question> questions;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// When this is equal to questions.Count, go to score page
|
|
|
|
/// </summary>
|
|
|
|
private int numberOfQuestionVoted = 0;
|
|
|
|
|
2024-01-27 14:08:12 +00:00
|
|
|
DatabaseReference realtimeDB;
|
|
|
|
|
|
|
|
private void Awake()
|
|
|
|
{
|
|
|
|
FirebaseInitializer.Instance.onFirebaseReady += Initialize;
|
|
|
|
}
|
|
|
|
|
2024-01-27 12:19:56 +00:00
|
|
|
|
|
|
|
private void Start()
|
|
|
|
{
|
2024-01-27 14:08:12 +00:00
|
|
|
|
2024-01-27 12:19:56 +00:00
|
|
|
propositionCurrentTime = propositionTime;
|
|
|
|
votingCurrentTime = votingTime;
|
2024-01-27 14:08:12 +00:00
|
|
|
|
|
|
|
//we need to call CreateNewRoom. but not yet
|
|
|
|
}
|
|
|
|
|
|
|
|
private void OnApplicationQuit()
|
|
|
|
{
|
|
|
|
realtimeDB.Child("rooms").Child(currentRoom.code).RemoveValueAsync();
|
|
|
|
Debug.Log($"delete room {currentRoom.code}");
|
|
|
|
currentRoom = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void Initialize()
|
|
|
|
{
|
|
|
|
FirebaseInitializer.Instance.onFirebaseReady -= Initialize;
|
|
|
|
realtimeDB = FirebaseDatabase.DefaultInstance.RootReference;
|
|
|
|
Debug.Log("Realtime DB initialized");
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Automatically called at start of game
|
|
|
|
/// </summary>
|
|
|
|
[ContextMenu("Create New Room")]
|
|
|
|
public void CreateNewRoom()
|
|
|
|
{
|
|
|
|
Room newRoom = new Room(Random.Range(0, 1000).ToString("D4"));
|
|
|
|
currentRoom = newRoom;
|
|
|
|
string JSON = JsonUtility.ToJson(newRoom);
|
|
|
|
realtimeDB.Child("rooms").Child(newRoom.code).SetRawJsonValueAsync(JSON);
|
|
|
|
Debug.Log($"room {currentRoom.code} has been created on the server");
|
2024-01-27 12:19:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public void PlayerSendProposition(Proposition _proposition)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Called when the first player clicked "Start"
|
|
|
|
/// </summary>
|
|
|
|
public void HostStartGame()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Start the proposition timer
|
|
|
|
/// </summary>
|
|
|
|
public void StartPropositionTimer()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Automatically called when the proposition timer has finished
|
|
|
|
/// </summary>
|
|
|
|
public void PropositionTimerFinished()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Start the voting timer
|
|
|
|
/// </summary>
|
|
|
|
public void StartVotingTimer()
|
2024-01-27 09:19:32 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2024-01-27 12:19:56 +00:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Automatically called when the voting timer has finished
|
|
|
|
/// </summary>
|
|
|
|
public void VotingTimerFinished()
|
2024-01-27 09:19:32 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
}
|
2024-01-27 12:19:56 +00:00
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Automatically called when a proposition is updated (someone has voted or a picture has been proposed)
|
|
|
|
/// </summary>
|
|
|
|
public void OnPropositionUpdate()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Will generate a question with a prompt and two owners
|
|
|
|
/// </summary>
|
|
|
|
public void GenerateQuestion()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Generate all the player pairs
|
|
|
|
/// (players should not play against themself.
|
|
|
|
/// (players should not play twice with the same person)
|
|
|
|
/// </summary>
|
|
|
|
public void GenerateCouples()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// is automatically called when a player connect to the room
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="_player"></param>
|
|
|
|
public void PlayerConnect(Player _player)
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
[ContextMenu("Fake Player Connection")]
|
|
|
|
private void FakePlayerConnection()
|
|
|
|
{
|
|
|
|
Player temp = new Player();
|
|
|
|
temp.id = System.Guid.NewGuid().ToString();
|
|
|
|
temp.SetName("Momo");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum RoomState
|
|
|
|
{
|
|
|
|
WaitingForPlayer,
|
|
|
|
WaitingForPropositions,
|
|
|
|
ShowPropositions,
|
|
|
|
ShowVoters,
|
|
|
|
Score
|
2024-01-27 09:19:32 +00:00
|
|
|
}
|