Make user search, chatroom, leaderboards and icon marketplace into a popup

This commit is contained in:
Lncvrt committed 2026-03-16 21:43:00 -07:00
1 parent 70687c2856
commit 06ba845790
52 files changed
+30178 -31455

No files matched your search

@@ -0,0 +1,59 @@
using Newtonsoft.Json.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountChangePassword : MonoBehaviour {
[SerializeField] private TMP_Text changePasswordStatusText;
[SerializeField] private TMP_InputField changePasswordNewPasswordInput;
[SerializeField] private TMP_InputField changePasswordRetypeNewPasswordInput;
[SerializeField] private Button changePasswordSubmitButton;
void Awake() {
changePasswordNewPasswordInput.onSelect.AddListener((_) => changePasswordNewPasswordInput.caretPosition = changePasswordNewPasswordInput.text.Length);
changePasswordRetypeNewPasswordInput.onSelect.AddListener((_) => changePasswordRetypeNewPasswordInput.caretPosition = changePasswordRetypeNewPasswordInput.text.Length);
}
void OnEnable() {
changePasswordNewPasswordInput.text = "";
changePasswordRetypeNewPasswordInput.text = "";
changePasswordStatusText.text = "";
changePasswordSubmitButton.onClick.RemoveAllListeners();
AccountHandler.Instance.backButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(0));
changePasswordSubmitButton.onClick.AddListener(() => ChangePassword());
}
async void ChangePassword() {
if (changePasswordNewPasswordInput.text != changePasswordRetypeNewPasswordInput.text) {
Tools.UpdateStatusText(changePasswordStatusText, "Passwords do not match", Color.red);
return;
}
AccountHandler.Instance.backButton.interactable = false;
changePasswordSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("newPassword", changePasswordNewPasswordInput.text);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_CHANGE_PASSWORD_ENDPOINT, dataForm);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
AccountHandler.Instance.backButton.interactable = true;
changePasswordSubmitButton.interactable = true;
Tools.UpdateStatusText(changePasswordStatusText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]);
AccountHandler.Instance.SwitchPanel(0);
Tools.UpdateStatusText(AccountHandler.Instance.accountLoggedIn.loggedInText, "Password changed successfully", Color.green);
} else {
Tools.UpdateStatusText(changePasswordStatusText, (string)jsonResponse["message"], Color.red);
}
AccountHandler.Instance.backButton.interactable = true;
changePasswordSubmitButton.interactable = true;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ae8dc061a6b24a14f81e1024c84f6695
@@ -0,0 +1,53 @@
using Newtonsoft.Json.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountChangeUsername : MonoBehaviour {
[SerializeField] private TMP_Text changeUsernameStatusText;
[SerializeField] private TMP_InputField changeUsernameNewUsernameInput;
[SerializeField] private Button changeUsernameSubmitButton;
void Awake() {
changeUsernameNewUsernameInput.onSelect.AddListener((_) => changeUsernameNewUsernameInput.caretPosition = changeUsernameNewUsernameInput.text.Length);
}
void OnEnable() {
changeUsernameNewUsernameInput.text = "";
changeUsernameStatusText.text = "";
changeUsernameSubmitButton.onClick.RemoveAllListeners();
AccountHandler.Instance.backButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(0));
changeUsernameSubmitButton.onClick.AddListener(() => ChangeUsername());
}
async void ChangeUsername() {
AccountHandler.Instance.backButton.interactable = false;
changeUsernameSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("newUsername", changeUsernameNewUsernameInput.text);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_CHANGE_USERNAME_ENDPOINT, dataForm);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
AccountHandler.Instance.backButton.interactable = true;
changeUsernameSubmitButton.interactable = true;
Tools.UpdateStatusText(changeUsernameStatusText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BazookaManager.Instance.SetAccountName(changeUsernameNewUsernameInput.text);
BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]);
AccountHandler.Instance.SwitchPanel(0);
Tools.UpdateStatusText(AccountHandler.Instance.accountLoggedIn.loggedInText, "Username changed successfully", Color.green);
} else {
Tools.UpdateStatusText(changeUsernameStatusText, (string)jsonResponse["message"], Color.red);
}
AccountHandler.Instance.backButton.interactable = true;
changeUsernameSubmitButton.interactable = true;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: be362dee96ceba548be09c7fede7bf16
@@ -0,0 +1,58 @@
using Newtonsoft.Json.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountForgotDetails : MonoBehaviour {
[SerializeField] internal TMP_Text forgotDetailsTitleText;
[SerializeField] private TMP_Text forgotDetailsStatusText;
[SerializeField] private TMP_InputField forgotDetailsEmailInput;
[SerializeField] private TMP_InputField forgotDetailsVerifyCodeInput;
[SerializeField] internal Button forgotDetailsSubmitButton;
internal int mode = 0;
void Awake() {
forgotDetailsEmailInput.onSelect.AddListener((_) => forgotDetailsEmailInput.caretPosition = forgotDetailsEmailInput.text.Length);
forgotDetailsVerifyCodeInput.onSelect.AddListener((_) => forgotDetailsVerifyCodeInput.caretPosition = forgotDetailsVerifyCodeInput.text.Length);
}
void OnEnable() {
forgotDetailsEmailInput.text = "";
forgotDetailsVerifyCodeInput.text = "";
forgotDetailsSubmitButton.onClick.RemoveAllListeners();
AccountHandler.Instance.backButton.onClick.AddListener(() => {
forgotDetailsSubmitButton.interactable = false;
mode = 0;
forgotDetailsTitleText.text = "";
forgotDetailsStatusText.text = "";
AccountHandler.Instance.SwitchPanel(2);
});
forgotDetailsSubmitButton.onClick.AddListener(() => ForgotDetails());
}
async void ForgotDetails() {
AccountHandler.Instance.backButton.interactable = false;
forgotDetailsSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("email", forgotDetailsEmailInput.text);
dataForm.AddField("verifyCode", forgotDetailsVerifyCodeInput.text);
forgotDetailsVerifyCodeInput.text = "";
using UnityWebRequest request = UnityWebRequest.Post(mode == 0 ? Endpoints.ACCOUNT_FORGOT_USERNAME_ENDPOINT : Endpoints.ACCOUNT_FORGOT_PASSWORD_ENDPOINT, dataForm);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
AccountHandler.Instance.backButton.interactable = true;
forgotDetailsSubmitButton.interactable = true;
Tools.UpdateStatusText(forgotDetailsStatusText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) Tools.UpdateStatusText(forgotDetailsStatusText, "An email has been sent to your inbox", Color.green);
else Tools.UpdateStatusText(forgotDetailsStatusText, (string)jsonResponse["message"], Color.red);
AccountHandler.Instance.backButton.interactable = true;
forgotDetailsSubmitButton.interactable = true;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 8e73b40d4fe6b41dd9b73f1334fd3e78
@@ -0,0 +1,147 @@
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public class AccountHandler : MonoBehaviour {
public static AccountHandler Instance;
public AccountLoggedIn accountLoggedIn;
[SerializeField] internal Button exitButton;
[SerializeField] internal Button backButton;
[SerializeField] private AccountLoggedOut accountLoggedOut;
[SerializeField] private AccountLogin accountLogin;
[SerializeField] private AccountRegister accountRegister;
[SerializeField] private AccountChangeUsername accountChangeUsername;
[SerializeField] private AccountChangePassword accountChangePassword;
[SerializeField] private AccountRefreshLogin accountRefreshLogin;
[SerializeField] internal AccountForgotDetails accountForgotDetails;
void Awake() {
Instance = this;
exitButton.onClick.AddListener(() => Destroy(gameObject));
}
void Start() {
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
SwitchPanel(0);
} else {
SwitchPanel(1);
}
}
public void SwitchPanel(int panel) {
switch (panel) {
case 0:
backButton.onClick.RemoveAllListeners();
exitButton.gameObject.SetActive(true);
backButton.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
accountLoggedIn.gameObject.SetActive(true);
break;
case 1:
backButton.onClick.RemoveAllListeners();
exitButton.gameObject.SetActive(true);
backButton.gameObject.SetActive(false);
accountLoggedIn.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(true);
break;
case 2:
backButton.onClick.RemoveAllListeners();
exitButton.gameObject.SetActive(false);
backButton.gameObject.SetActive(true);
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(true);
break;
case 3:
backButton.onClick.RemoveAllListeners();
exitButton.gameObject.SetActive(false);
backButton.gameObject.SetActive(true);
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(true);
break;
case 4:
backButton.onClick.RemoveAllListeners();
exitButton.gameObject.SetActive(false);
backButton.gameObject.SetActive(true);
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(true);
break;
case 5:
backButton.onClick.RemoveAllListeners();
exitButton.gameObject.SetActive(false);
backButton.gameObject.SetActive(true);
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(true);
break;
case 6:
backButton.onClick.RemoveAllListeners();
exitButton.gameObject.SetActive(false);
backButton.gameObject.SetActive(true);
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(true);
break;
case 7:
backButton.onClick.RemoveAllListeners();
exitButton.gameObject.SetActive(false);
backButton.gameObject.SetActive(true);
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(true);
break;
}
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
}
void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
if (exitButton.gameObject.activeSelf && exitButton.interactable) exitButton.onClick.Invoke();
else if (backButton.gameObject.activeSelf && backButton.interactable) backButton.onClick.Invoke();
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1d3604e648db0614cb2265963d39721b
@@ -0,0 +1,151 @@
using System;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class AccountLoggedIn : MonoBehaviour {
public TMP_Text loggedInText;
[SerializeField] private AccountLoggedOut accountLoggedOut;
[SerializeField] private Button loggedInChangeUsernameButton;
[SerializeField] private Button loggedInChangePasswordButton;
[SerializeField] private Button loggedInSaveButton;
[SerializeField] private Button loggedInLoadButton;
[SerializeField] private Button loggedInRefreshLoginButton;
[SerializeField] private Button loggedInLogoutButton;
void OnEnable() {
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
var textColor = BazookaManager.Instance.GetColorSettingText();
Tools.UpdateStatusText(loggedInText, "Logged in as: " + BazookaManager.Instance.GetAccountName(), new Color(int.Parse(textColor[0].ToString()) / 255f, int.Parse(textColor[1].ToString()) / 255f, int.Parse(textColor[2].ToString()) / 255f));
loggedInChangeUsernameButton.onClick.RemoveAllListeners();
loggedInChangePasswordButton.onClick.RemoveAllListeners();
loggedInSaveButton.onClick.RemoveAllListeners();
loggedInLoadButton.onClick.RemoveAllListeners();
loggedInRefreshLoginButton.onClick.RemoveAllListeners();
loggedInLogoutButton.onClick.RemoveAllListeners();
loggedInChangeUsernameButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(4));
loggedInChangePasswordButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(5));
loggedInSaveButton.onClick.AddListener(() => SaveAccount());
loggedInLoadButton.onClick.AddListener(() => LoadAccount());
loggedInRefreshLoginButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(6));
loggedInLogoutButton.onClick.AddListener(() => {
AccountHandler.Instance.exitButton.interactable = false;
BazookaManager.Instance.ResetSave();
DontDestroyOnLoad(AccountHandler.Instance.gameObject);
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
SceneManager.sceneLoaded += OnSceneLoaded;
AccountHandler.Instance.SwitchPanel(1);
AccountHandler.Instance.exitButton.interactable = true;
});
}
async void SaveAccount() {
loggedInChangeUsernameButton.interactable = false;
loggedInChangePasswordButton.interactable = false;
loggedInSaveButton.interactable = false;
loggedInLoadButton.interactable = false;
loggedInRefreshLoginButton.interactable = false;
loggedInLogoutButton.interactable = false;
AccountHandler.Instance.exitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("saveData", Convert.ToBase64String(Encoding.UTF8.GetBytes(BazookaManager.Instance.saveFile.ToString(Formatting.None))));
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_SAVE_ENDPOINT, dataForm);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
AccountHandler.Instance.exitButton.interactable = true;
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
Tools.UpdateStatusText(loggedInText, (string)jsonResponse["message"], (bool)jsonResponse["success"] ? Color.green : Color.red);
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
AccountHandler.Instance.exitButton.interactable = true;
}
async void LoadAccount() {
loggedInChangeUsernameButton.interactable = false;
loggedInChangePasswordButton.interactable = false;
loggedInSaveButton.interactable = false;
loggedInLoadButton.interactable = false;
loggedInRefreshLoginButton.interactable = false;
loggedInLogoutButton.interactable = false;
AccountHandler.Instance.exitButton.interactable = false;
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ACCOUNT_SAVE_ENDPOINT);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
AccountHandler.Instance.exitButton.interactable = true;
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BazookaManager.Instance.saveFile = JObject.FromObject(jsonResponse["data"]);
DontDestroyOnLoad(AccountHandler.Instance.gameObject);
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
SceneManager.sceneLoaded += OnSceneLoaded;
if (!Application.isMobilePlatform) {
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, BazookaManager.Instance.GetSettingFullScreen());
QualitySettings.vSyncCount = BazookaManager.Instance.GetSettingVsync() ? 1 : -1;
} else {
Application.targetFrameRate = 360;
QualitySettings.vSyncCount = 0;
}
MenuMusic.Instance.GetComponent<AudioSource>().volume = BazookaManager.Instance.GetSettingMusicVolume();
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
}
Tools.UpdateStatusText(loggedInText, (string)jsonResponse["message"], (bool)jsonResponse["success"] ? Color.green : Color.red);
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
AccountHandler.Instance.exitButton.interactable = true;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
SceneManager.MoveGameObjectToScene(AccountHandler.Instance.gameObject, scene);
SceneManager.sceneLoaded -= OnSceneLoaded;
var canvas = AccountHandler.Instance.GetComponentInChildren<Canvas>();
canvas.enabled = false;
canvas.enabled = true;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 2f7c13bcd16e34840be5ed44f70b3824
@@ -0,0 +1,14 @@
using UnityEngine;
using UnityEngine.UI;
public class AccountLoggedOut : MonoBehaviour {
[SerializeField] private Button loggedOutLoginButton;
[SerializeField] private Button loggedOutRegisterButton;
void OnEnable() {
loggedOutLoginButton.onClick.RemoveAllListeners();
loggedOutRegisterButton.onClick.RemoveAllListeners();
loggedOutLoginButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(2));
loggedOutRegisterButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(3));
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9d660b01e28b0234bb44f79e71fba5b3
@@ -0,0 +1,80 @@
using Newtonsoft.Json.Linq;
using System.Numerics;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountLogin : MonoBehaviour {
[SerializeField] private TMP_Text loginPanelStatusText;
[SerializeField] private TMP_InputField loginUsernameInput;
[SerializeField] private TMP_InputField loginPasswordInput;
[SerializeField] private Button forgotUsernameButton;
[SerializeField] private Button forgotPasswordButton;
[SerializeField] private Button loginSubmitButton;
void Awake() {
loginUsernameInput.onSelect.AddListener((_) => loginUsernameInput.caretPosition = loginUsernameInput.text.Length);
loginPasswordInput.onSelect.AddListener((_) => loginPasswordInput.caretPosition = loginPasswordInput.text.Length);
}
void OnEnable() {
loginUsernameInput.text = "";
loginPasswordInput.text = "";
loginPanelStatusText.text = "";
loginSubmitButton.onClick.RemoveAllListeners();
forgotUsernameButton.onClick.RemoveAllListeners();
forgotPasswordButton.onClick.RemoveAllListeners();
AccountHandler.Instance.backButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(1));
loginSubmitButton.onClick.AddListener(() => SubmitLogin());
forgotUsernameButton.onClick.AddListener(() => {
AccountHandler.Instance.SwitchPanel(7);
AccountHandler.Instance.accountForgotDetails.mode = 0;
AccountHandler.Instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot username";
AccountHandler.Instance.backButton.interactable = true;
AccountHandler.Instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
});
forgotPasswordButton.onClick.AddListener(() => {
AccountHandler.Instance.SwitchPanel(7);
AccountHandler.Instance.accountForgotDetails.mode = 1;
AccountHandler.Instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot password";
AccountHandler.Instance.backButton.interactable = true;
AccountHandler.Instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
});
}
async void SubmitLogin() {
AccountHandler.Instance.backButton.interactable = false;
loginSubmitButton.interactable = false;
if (loginUsernameInput.text == string.Empty || loginPasswordInput.text == string.Empty) {
Tools.UpdateStatusText(loginPanelStatusText, "All input fields must be filled", Color.red);
return;
}
WWWForm dataForm = new();
dataForm.AddField("username", loginUsernameInput.text);
dataForm.AddField("password", loginPasswordInput.text);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_LOGIN_ENDPOINT, dataForm);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
AccountHandler.Instance.backButton.interactable = true;
loginSubmitButton.interactable = true;
Tools.UpdateStatusText(loginPanelStatusText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]["session"]);
BazookaManager.Instance.SetAccountName((string)jsonResponse["data"]["username"]);
BazookaManager.Instance.SetAccountID(BigInteger.Parse((string)jsonResponse["data"]["id"]));
AccountHandler.Instance.SwitchPanel(0);
Tools.UpdateStatusText(loginPanelStatusText, "", Color.red);
} else {
Tools.UpdateStatusText(loginPanelStatusText, (string)jsonResponse["message"], Color.red);
}
AccountHandler.Instance.backButton.interactable = true;
loginSubmitButton.interactable = true;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 396f21a29cb8a2844884c0daac1a67ee
@@ -0,0 +1,57 @@
using System.Numerics;
using Newtonsoft.Json.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountRefreshLogin : MonoBehaviour {
[SerializeField] private TMP_Text refreshLoginStatusText;
[SerializeField] private TMP_InputField refreshLoginUsernameInput;
[SerializeField] private TMP_InputField refreshLoginPasswordInput;
[SerializeField] private Button refreshLoginSubmitButton;
void Awake() {
refreshLoginUsernameInput.onSelect.AddListener((_) => refreshLoginUsernameInput.caretPosition = refreshLoginUsernameInput.text.Length);
refreshLoginPasswordInput.onSelect.AddListener((_) => refreshLoginPasswordInput.caretPosition = refreshLoginPasswordInput.text.Length);
}
void OnEnable() {
refreshLoginUsernameInput.text = "";
refreshLoginPasswordInput.text = "";
refreshLoginSubmitButton.onClick.RemoveAllListeners();
AccountHandler.Instance.backButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(0));
refreshLoginSubmitButton.onClick.AddListener(() => RefreshLogin());
}
async void RefreshLogin() {
AccountHandler.Instance.backButton.interactable = false;
refreshLoginSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("username", refreshLoginUsernameInput.text);
dataForm.AddField("password", refreshLoginPasswordInput.text);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_LOGIN_ENDPOINT, dataForm);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
AccountHandler.Instance.backButton.interactable = true;
refreshLoginSubmitButton.interactable = true;
Tools.UpdateStatusText(refreshLoginStatusText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]["session"]);
BazookaManager.Instance.SetAccountName((string)jsonResponse["data"]["username"]);
BazookaManager.Instance.SetAccountID(BigInteger.Parse((string)jsonResponse["data"]["id"]));
AccountHandler.Instance.SwitchPanel(0);
Tools.UpdateStatusText(refreshLoginStatusText, "", Color.red);
} else {
Tools.UpdateStatusText(refreshLoginStatusText, (string)jsonResponse["message"], Color.red);
}
AccountHandler.Instance.backButton.interactable = true;
refreshLoginSubmitButton.interactable = true;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0cfd036ba0d22324d8dd09b06d7bcf75
@@ -0,0 +1,78 @@
using Newtonsoft.Json.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountRegister : MonoBehaviour {
[SerializeField] private TMP_Text registerPanelStatusText;
[SerializeField] private TMP_InputField registerUsernameInput;
[SerializeField] private TMP_InputField registerEmailInput;
[SerializeField] private TMP_InputField registerPasswordInput;
[SerializeField] private TMP_InputField registerRetypePasswordInput;
[SerializeField] private TMP_InputField registerVerifyCodeInput;
[SerializeField] private Button registerSubmitButton;
void Awake() {
registerUsernameInput.onSelect.AddListener((_) => registerUsernameInput.caretPosition = registerUsernameInput.text.Length);
registerEmailInput.onSelect.AddListener((_) => registerEmailInput.caretPosition = registerEmailInput.text.Length);
registerPasswordInput.onSelect.AddListener((_) => registerPasswordInput.caretPosition = registerPasswordInput.text.Length);
registerRetypePasswordInput.onSelect.AddListener((_) => registerRetypePasswordInput.caretPosition = registerRetypePasswordInput.text.Length);
registerVerifyCodeInput.onSelect.AddListener((_) => registerVerifyCodeInput.caretPosition = registerVerifyCodeInput.text.Length);
}
void OnEnable() {
registerUsernameInput.text = "";
registerEmailInput.text = "";
registerPasswordInput.text = "";
registerRetypePasswordInput.text = "";
registerVerifyCodeInput.text = "";
registerPanelStatusText.text = "";
AccountHandler.Instance.backButton.onClick.AddListener(() => AccountHandler.Instance.SwitchPanel(1));
registerSubmitButton.onClick.AddListener(() => SubmitRegister());
}
async void SubmitRegister() {
if (
registerUsernameInput.text == string.Empty ||
registerEmailInput.text == string.Empty ||
registerPasswordInput.text == string.Empty ||
registerRetypePasswordInput.text == string.Empty ||
registerVerifyCodeInput.text == string.Empty
) {
Tools.UpdateStatusText(registerPanelStatusText, "All input fields must be filled", Color.red);
return;
}
if (registerPasswordInput.text != registerRetypePasswordInput.text) {
Tools.UpdateStatusText(registerPanelStatusText, "Passwords don't match", Color.red);
return;
}
AccountHandler.Instance.backButton.interactable = false;
registerSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("username", registerUsernameInput.text);
dataForm.AddField("email", registerEmailInput.text);
dataForm.AddField("password", registerPasswordInput.text);
dataForm.AddField("verifyCode", registerVerifyCodeInput.text);
registerVerifyCodeInput.text = "";
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_REGISTER_ENDPOINT, dataForm);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
AccountHandler.Instance.backButton.interactable = true;
registerSubmitButton.interactable = true;
Tools.UpdateStatusText(registerPanelStatusText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
AccountHandler.Instance.SwitchPanel(2);
} else {
Tools.UpdateStatusText(registerPanelStatusText, (string)jsonResponse["message"], Color.red);
}
AccountHandler.Instance.backButton.interactable = true;
registerSubmitButton.interactable = true;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 15b428d2b1e250a4385f3a56d0b4d43e