Compare commits

..

No commits in common. "fe44ced9f8cc1eadba68ff4da7b36d7b65d9e8ba" and "872f3f263e16c709c672fd64108e9d8ddf809c6e" have entirely different histories.

8 changed files with 102 additions and 88 deletions

View file

@ -1,5 +1,6 @@
using System; using System;
using System.Net.Mail; using System.Net.Mail;
using Firebase.Auth;
using UnityEngine; using UnityEngine;
using UnityEngine.Assertions; using UnityEngine.Assertions;
using UnityEngine.UIElements; using UnityEngine.UIElements;
@ -375,8 +376,6 @@ public class AccountUI : MonoBehaviour
_ => "An error occurred updating the username. Please try again." _ => "An error occurred updating the username. Please try again."
}; };
}); });
// TODO: update lpdata
} }
/// <summary> /// <summary>
@ -409,8 +408,6 @@ public class AccountUI : MonoBehaviour
_ => "An error occurred updating the email. Please try again." _ => "An error occurred updating the email. Please try again."
}; };
}); });
// TODO: update lpdata
} }
/// <summary> /// <summary>

View file

@ -57,12 +57,6 @@ public class Backend
Password Password
} }
/// <summary>
/// callback functions to be invoked when the user signs in
/// </summary>
/// <returns></returns>
private readonly List<Action<FirebaseConnectionStatus>> _onConnectionStatusChangedCallbacks = new();
/// <summary> /// <summary>
/// callback functions to be invoked when the user signs in /// callback functions to be invoked when the user signs in
/// </summary> /// </summary>
@ -73,6 +67,12 @@ public class Backend
/// </summary> /// </summary>
private readonly List<Action> _onSignOutCallbacks = new(); private readonly List<Action> _onSignOutCallbacks = new();
/// <summary>
/// callback functions to be invoked when the user signs in
/// </summary>
/// <returns></returns>
private readonly List<Action<FirebaseConnectionStatus>> _onConnectionStatusChangedCallbacks = new ();
/// <summary> /// <summary>
/// the firebase authentication object /// the firebase authentication object
/// </summary> /// </summary>
@ -88,16 +88,16 @@ public class Backend
/// </summary> /// </summary>
private FirebaseUser _user; private FirebaseUser _user;
/// <summary>
/// the current user's username, if authenticated
/// </summary>
private string _username;
/// <summary> /// <summary>
/// whether the user is signed in /// whether the user is signed in
/// </summary> /// </summary>
public bool IsSignedIn; public bool IsSignedIn;
/// <summary>
/// the current user's username, if authenticated
/// </summary>
private string _username;
/// <summary> /// <summary>
/// whether the backend is connected to the firebase backend /// whether the backend is connected to the firebase backend
/// </summary> /// </summary>
@ -159,6 +159,7 @@ public class Backend
{ {
Debug.Log($"firing OnSignInCallbacks ({_onSignInCallbacks.Count})"); Debug.Log($"firing OnSignInCallbacks ({_onSignInCallbacks.Count})");
foreach (var callback in _onSignInCallbacks) foreach (var callback in _onSignInCallbacks)
{
try try
{ {
callback.Invoke(_user); callback.Invoke(_user);
@ -168,6 +169,7 @@ public class Backend
Debug.LogError($"error invoking OnSignInCallback: {e.Message}"); Debug.LogError($"error invoking OnSignInCallback: {e.Message}");
} }
} }
}
/// <summary> /// <summary>
/// function to fire all on sign-out callbacks /// function to fire all on sign-out callbacks
@ -176,6 +178,7 @@ public class Backend
{ {
Debug.Log($"firing OnSignOutCallbacks ({_onSignOutCallbacks.Count})"); Debug.Log($"firing OnSignOutCallbacks ({_onSignOutCallbacks.Count})");
foreach (var callback in _onSignOutCallbacks) foreach (var callback in _onSignOutCallbacks)
{
try try
{ {
callback.Invoke(); callback.Invoke();
@ -185,6 +188,7 @@ public class Backend
Debug.LogError($"error invoking OnSignOutCallback: {e.Message}"); Debug.LogError($"error invoking OnSignOutCallback: {e.Message}");
} }
} }
}
/// <summary> /// <summary>
/// async function to retry initialisation after a delay /// async function to retry initialisation after a delay
@ -230,7 +234,10 @@ public class Backend
if (!IsSignedIn) return; if (!IsSignedIn) return;
Debug.Log($"signed in successfully as {_user?.UserId}"); Debug.Log($"signed in successfully as {_user?.UserId}");
RetrieveUsernameWithCallback((_, _) => { FireOnSignInCallbacks(); }); RetrieveUsernameWithCallback((_, _) =>
{
FireOnSignInCallbacks();
});
} }
/// <summary> /// <summary>
@ -475,12 +482,11 @@ public class Backend
/// abstraction function to get the user's recent scores from the database /// abstraction function to get the user's recent scores from the database
/// </summary> /// </summary>
/// <param name="callback"> /// <param name="callback">
/// callback function that takes in a <c>DatabaseTransactionResult</c> enum and a /// callback function that takes in a <c>DatabaseTransactionResult</c> enum and a <c>List&lt;LocalPlayerData.Score&gt;</c>
/// <c>List&lt;LocalPlayerData.Score&gt;</c>
/// </param> /// </param>
public void GetRecentScores(Action<DatabaseTransactionResult, List<LocalPlayerData.Score>> callback) public void GetRecentScores(Action<DatabaseTransactionResult, List<LocalPlayerData.Score>> callback)
{ {
// TODO: implement this // TODO
callback(DatabaseTransactionResult.Error, new List<LocalPlayerData.Score>(0)); callback(DatabaseTransactionResult.Error, new List<LocalPlayerData.Score>(0));
} }
@ -500,10 +506,7 @@ public class Backend
/// abstraction function to get and calculate the user's rating from the database /// abstraction function to get and calculate the user's rating from the database
/// calculation is done locally, call UpdateUserRating to update the user's rating in the database /// calculation is done locally, call UpdateUserRating to update the user's rating in the database
/// </summary> /// </summary>
/// <param name="callback"> /// <param name="callback">callback function that takes in a <c>DatabaseTransactionResult</c> enum and a user rating <c>float</c></param>
/// callback function that takes in a <c>DatabaseTransactionResult</c> enum and a user rating
/// <c>float</c>
/// </param>
public void CalculateUserRating( public void CalculateUserRating(
Action<DatabaseTransactionResult, float> callback) Action<DatabaseTransactionResult, float> callback)
{ {

View file

@ -18,26 +18,26 @@ public class GameManager : MonoBehaviour
/// </summary> /// </summary>
public UIManager ui; public UIManager ui;
/// <summary>
/// list of callbacks to call when the local player data changes
/// </summary>
private readonly List<Action<LocalPlayerData>> _onLocalPlayerDataChangeCallbacks = new();
/// <summary> /// <summary>
/// the local player data object for storing player data /// the local player data object for storing player data
/// </summary> /// </summary>
private LocalPlayerData _data; private LocalPlayerData _data;
/// <summary>
/// backend object for handling communication with the firebase backend
/// </summary>
public Backend Backend;
/// <summary> /// <summary>
/// read-only property for accessing the local player data outside of this class /// read-only property for accessing the local player data outside of this class
/// </summary> /// </summary>
public LocalPlayerData Data => _data; public LocalPlayerData Data => _data;
/// <summary>
/// list of callbacks to call when the local player data changes
/// </summary>
private readonly List<Action<LocalPlayerData>> _onLocalPlayerDataChangeCallbacks = new List<Action<LocalPlayerData>>();
/// <summary>
/// backend object for handling communication with the firebase backend
/// </summary>
public Backend Backend;
/// <summary> /// <summary>
/// enforces singleton behaviour; sets doesn't destroy on load and checks for multiple instances /// enforces singleton behaviour; sets doesn't destroy on load and checks for multiple instances
/// </summary> /// </summary>
@ -59,16 +59,7 @@ public class GameManager : MonoBehaviour
} }
/// <summary> /// <summary>
/// start modifying state /// called when the game object is enabled, initialises variables
/// </summary>
private void Start()
{
Debug.Log("GameManager starts here");
_data.LoadFromTheWorld(FireLocalPlayerDataChangeCallbacks);
}
/// <summary>
/// initialise variables and ui elements
/// </summary> /// </summary>
private void OnEnable() private void OnEnable()
{ {
@ -109,6 +100,15 @@ public class GameManager : MonoBehaviour
}); });
} }
/// <summary>
/// load in stuff
/// </summary>
private void Start()
{
Debug.Log("GameManager starts here");
_data.LoadFromTheWorld(FireLocalPlayerDataChangeCallbacks);
}
/// <summary> /// <summary>
/// called when the application is quitting, saves the local player data /// called when the application is quitting, saves the local player data
/// </summary> /// </summary>
@ -136,6 +136,7 @@ public class GameManager : MonoBehaviour
{ {
Debug.Log($"firing LocalPlayerDataChangeCallbacks ({_onLocalPlayerDataChangeCallbacks.Count})"); Debug.Log($"firing LocalPlayerDataChangeCallbacks ({_onLocalPlayerDataChangeCallbacks.Count})");
foreach (var callback in _onLocalPlayerDataChangeCallbacks) foreach (var callback in _onLocalPlayerDataChangeCallbacks)
{
try try
{ {
callback.Invoke(data); callback.Invoke(data);
@ -145,4 +146,5 @@ public class GameManager : MonoBehaviour
Debug.LogError($"error invoking LocalPlayerDataChangeCallback: {e.Message}"); Debug.LogError($"error invoking LocalPlayerDataChangeCallback: {e.Message}");
} }
} }
}
} }

View file

@ -43,7 +43,7 @@ public class OklchColourPickerUI : MonoBehaviour
private VisualElement _responseColour; private VisualElement _responseColour;
/// <summary> /// <summary>
/// modify state of initialised variables /// function to set the initial values of the sliders
/// </summary> /// </summary>
private void Start() private void Start()
{ {
@ -53,7 +53,7 @@ public class OklchColourPickerUI : MonoBehaviour
} }
/// <summary> /// <summary>
/// initialise the ui elements and register change event callbacks functions /// function to subscribe slider events to their respective functions
/// </summary> /// </summary>
public void OnEnable() public void OnEnable()
{ {

View file

@ -0,0 +1,18 @@
using UnityEngine;
public class Playground
{
private float _score;
private void SomethingSomethingScore()
{
var score = 0.0f;
_score = score;
}
private void ShowTheScore()
{
Debug.Log(_score);
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 662d126b54a54d9ebe6a1dc716d199e3
timeCreated: 1731830473

View file

@ -1,3 +1,4 @@
using System;
using UnityEngine; using UnityEngine;
using UnityEngine.UIElements; using UnityEngine.UIElements;
@ -11,36 +12,21 @@ public class SideViewUI : MonoBehaviour
/// </summary> /// </summary>
private Button _accountButton; private Button _accountButton;
/// <summary>
/// text label for showing the player's stable-ish chroma accuracy
/// </summary>
private Label _chromaAccuracyText;
/// <summary>
/// connection status label for showing the connection status
/// </summary>
private Label _connectionStatusLabel;
/// <summary>
/// text label for showing the player's stable-ish hue accuracy
/// </summary>
private Label _hueAccuracyText;
/// <summary> /// <summary>
/// leaderboard button for showing the leaderboard /// leaderboard button for showing the leaderboard
/// </summary> /// </summary>
private Button _leaderboardButton; private Button _leaderboardButton;
/// <summary>
/// text label for showing the player's stable-ish lightness accuracy
/// </summary>
private Label _lightnessAccuracyText;
/// <summary> /// <summary>
/// play button for starting the game /// play button for starting the game
/// </summary> /// </summary>
private Button _playButton; private Button _playButton;
/// <summary>
/// connection status label for showing the connection status
/// </summary>
private Label _connectionStatusLabel;
/// <summary> /// <summary>
/// text label for showing the player's known name /// text label for showing the player's known name
/// </summary> /// </summary>
@ -52,7 +38,22 @@ public class SideViewUI : MonoBehaviour
private Label _ratingText; private Label _ratingText;
/// <summary> /// <summary>
/// initialise the ui elements and register the button click event functions /// text label for showing the player's stable-ish lightness accuracy
/// </summary>
private Label _lightnessAccuracyText;
/// <summary>
/// text label for showing the player's stable-ish chroma accuracy
/// </summary>
private Label _chromaAccuracyText;
/// <summary>
/// text label for showing the player's stable-ish hue accuracy
/// </summary>
private Label _hueAccuracyText;
/// <summary>
/// function to subscribe button events to their respective functions
/// </summary> /// </summary>
private void OnEnable() private void OnEnable()
{ {

View file

@ -51,20 +51,10 @@ public class UIManager : MonoBehaviour
} }
} }
/// <summary>
/// modify state of initial variables
/// </summary>
private void Start()
{
SetDisplayState(DisplayState.Nothing);
}
/// <summary>
/// initialise variables
/// </summary>
private void OnEnable() private void OnEnable()
{ {
UI = GetComponent<UIDocument>().rootVisualElement; UI = GetComponent<UIDocument>().rootVisualElement;
SetDisplayState(DisplayState.Nothing);
} }
/// <summary> /// <summary>