Closed nickmattinson closed 2 months ago
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using Dan.Main;
public class Leaderboard : MonoBehaviour
{
[SerializeField] List<TextMeshProUGUI> names;
[SerializeField] List<TextMeshProUGUI> scores;
//[SerializeField] private Player player;
private string publicLeaderboardKey = "e3ba01794dd0b95ea3dd5b187b2ec726b9ce525067840c327b0a780e8261344f";
private void Start(){
GetLeaderboard();
}
public void GetLeaderboard()
{
LeaderboardCreator.GetLeaderboard(publicLeaderboardKey, ((msg) =>
{
int loopLength = (msg.Length < names.Count) ? msg.Length : names.Count;
for (int i = 0; i < loopLength; ++i)
{
names[i].text = msg[i].Username;
scores[i].text = msg[i].Score.ToString();
}
}));
}
public void SetLeaderboardEntry(string username, int score)
{
LeaderboardCreator.UploadNewEntry(publicLeaderboardKey, username, score, ((msg) =>
{
// limit username length...
// check for and remove bad words
// update leader board
GetLeaderboard();
}));
}
}
using UnityEngine;
using TMPro;
using UnityEngine.Events;
public class ScoreManager : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI inputScore;
[SerializeField] private TMP_InputField inputName;
public UnityEvent<string, int> submitScoreEvent;
public void SubmitScore(){
submitScoreEvent.Invoke(inputName.text, int.Parse(inputScore.text));
}
}
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;
using UnityEngine.UIElements;
public class StateManager : MonoBehaviour
{
public bool gameEnded;
[SerializeField] GameObject mainMenuCanvas;
[SerializeField] GameObject settingsCanvas;
[SerializeField] GameObject gameOverCanvas;
[SerializeField] GameObject gameCanvas;
[SerializeField] GameObject leaderboardCanvas;
[SerializeField] private Player player;
public UnityEvent<string, int> submitScoreEvent;
//[SerializeField] private TextMeshProUGUI scoreValue;
[SerializeField] private TMP_InputField usernameInput;
[SerializeField] private TextMeshProUGUI usernameIngame; // display
//[SerializeField] private TextMeshProUGUI playerprefText;
// Start is called before the first frame update
void Start()
{
// Check if PlayerPrefs has a stored username
player = FindObjectOfType<Player>();
string storedUsername = PlayerPrefs.GetString("PlayerUserName");
if (!string.IsNullOrEmpty(storedUsername))
{
// Set usernameInput and usernameIngame
usernameInput.text = storedUsername;
usernameIngame.text = storedUsername;
}
// setup the canvas
gameEnded = false;
Time.timeScale = 0f;
mainMenuCanvas.SetActive(true);
settingsCanvas.SetActive(false);
gameOverCanvas.SetActive(false);
gameCanvas.SetActive(false);
leaderboardCanvas.SetActive(false);
}
public void loadGame()
{
//Check if input is provided in usernameInput
if (!string.IsNullOrEmpty(usernameInput.text))
{
// Set player.username using usernameInput
player.username = usernameInput.text;
PlayerPrefs.SetString("PlayerUserName", player.username);
}
else
{
// Set a default username
player.username = "Player";
PlayerPrefs.SetString("PlayerUserName", player.username);
}
// Update usernameIngame
usernameIngame.text = player.username;
// Debug logs to check values
Debug.Log("Player Username to save: " + player.username);
Debug.Log("Player Username saved in PlayerPrefs: " + PlayerPrefs.GetString("PlayerUserName"));
// Rest of your code...
Time.timeScale = 1f;
gameCanvas.SetActive(true);
mainMenuCanvas.SetActive(false);
settingsCanvas.SetActive(false);
gameOverCanvas.SetActive(false);
leaderboardCanvas.SetActive(false);
}
public void loadGameOver()
{
gameEnded = true;
Time.timeScale = 0f;
gameOverCanvas.SetActive(true);
mainMenuCanvas.SetActive(false);
settingsCanvas.SetActive(false);
gameCanvas.SetActive(false);
leaderboardCanvas.SetActive(false);
}
public void loadSettings()
{
Time.timeScale = 0f;
settingsCanvas.SetActive(true);
gameOverCanvas.SetActive(false);
mainMenuCanvas.SetActive(false);
gameCanvas.SetActive(false);
leaderboardCanvas.SetActive(false);
}
public void loadLeaderboard()
{
//Check if input is provided in usernameInput
if (!string.IsNullOrEmpty(usernameInput.text))
{
// Set player.username using usernameInput
player.username = usernameInput.text;
PlayerPrefs.SetString("PlayerUserName", player.username);
}
else
{
// Set a default username
player.username = "Player";
PlayerPrefs.SetString("PlayerUserName", player.username);
}
if (!string.IsNullOrEmpty(player.username))
{
// Update high score
submitScoreEvent.Invoke(player.username, player.score);
Debug.Log($"Loading leaderboard - Player: {player.username}, Score: {player.score}");
leaderboardCanvas.SetActive(true);
settingsCanvas.SetActive(false);
gameOverCanvas.SetActive(false);
mainMenuCanvas.SetActive(false);
gameCanvas.SetActive(false);
}
else
{
Debug.LogError("Player username is null or empty when loading leaderboard!");
}
}
public void quitGame()
{
Application.Quit();
}
}
This is working but for some reason didn't get a pull request.