Finish accounts Menu
- Make it so you can exit the accounts menu when logged in lol - Added changing username and password - Added saving and loading data
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -20,6 +20,7 @@ public class AccountMenu : MonoBehaviour
|
||||
public GameObject loggedOutPanel;
|
||||
public Button loggedOutLoginButton;
|
||||
public Button loggedOutRegisterButton;
|
||||
public Button loggedOutBackButton;
|
||||
|
||||
public GameObject loginPanel;
|
||||
public TMP_Text loginPanelStatusText;
|
||||
@@ -40,9 +41,24 @@ public class AccountMenu : MonoBehaviour
|
||||
public Button registerBackButton;
|
||||
public Button registerSubmitButton;
|
||||
|
||||
public GameObject changeUsernamePanel;
|
||||
public TMP_Text changeUsernameStatusText;
|
||||
public TMP_InputField changeUsernameCurrentUsernameInput;
|
||||
public TMP_InputField changeUsernameNewUsernameInput;
|
||||
public Button changeUsernameBackButton;
|
||||
public Button changeUsernameSubmitButton;
|
||||
|
||||
public GameObject changePasswordPanel;
|
||||
public TMP_Text changePasswordStatusText;
|
||||
public TMP_InputField changePasswordCurrentPasswordInput;
|
||||
public TMP_InputField changePasswordNewPasswordInput;
|
||||
public TMP_InputField changePasswordRetypeNewPasswordInput;
|
||||
public Button changePasswordBackButton;
|
||||
public Button changePasswordSubmitButton;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
if (PlayerPrefs.HasKey("gameSession") && PlayerPrefs.HasKey("userName"))
|
||||
if (PlayerPrefs.HasKey("gameSession") && PlayerPrefs.HasKey("userName") && PlayerPrefs.HasKey("userId"))
|
||||
{
|
||||
SwitchPanel(0);
|
||||
}
|
||||
@@ -51,24 +67,25 @@ public class AccountMenu : MonoBehaviour
|
||||
SwitchPanel(1);
|
||||
}
|
||||
|
||||
loggedInLogoutButton.onClick.AddListener(() =>
|
||||
{
|
||||
PlayerPrefs.DeleteKey("gameSession");
|
||||
PlayerPrefs.DeleteKey("userName");
|
||||
PlayerPrefs.SetInt("HighScore", 0);
|
||||
PlayerPrefs.SetInt("icon", 1);
|
||||
PlayerPrefs.SetInt("overlay", 0);
|
||||
SwitchPanel(1);
|
||||
});
|
||||
loggedInChangeUsernameButton.onClick.AddListener(() => SwitchPanel(4));
|
||||
loggedInChangePasswordButton.onClick.AddListener(() => SwitchPanel(5));
|
||||
loggedInSaveButton.onClick.AddListener(() => SaveAccount());
|
||||
loggedInLoadButton.onClick.AddListener(() => LoadAccount());
|
||||
loggedInLogoutButton.onClick.AddListener(() => SwitchPanel(1));
|
||||
loggedInBackButton.onClick.AddListener(() => SceneManager.LoadSceneAsync("MainMenu"));
|
||||
loggedOutLoginButton.onClick.AddListener(() => SwitchPanel(2));
|
||||
loggedOutRegisterButton.onClick.AddListener(() => SwitchPanel(3));
|
||||
loggedOutBackButton.onClick = loggedInBackButton.onClick;
|
||||
loginRegisterButton.onClick.AddListener(() => SwitchPanel(3));
|
||||
loginBackButton.onClick.AddListener(() => SwitchPanel(1));
|
||||
loginSubmitButton.onClick.AddListener(() => SubmitLogin());
|
||||
registerLoginButton.onClick.AddListener(() => SwitchPanel(2));
|
||||
registerBackButton.onClick.AddListener(() => SwitchPanel(1));
|
||||
registerSubmitButton.onClick.AddListener(() => SubmitRegister());
|
||||
changeUsernameBackButton.onClick.AddListener(() => SwitchPanel(0));
|
||||
changeUsernameSubmitButton.onClick.AddListener(() => ChangeUsername());
|
||||
changePasswordBackButton.onClick.AddListener(() => SwitchPanel(0));
|
||||
changePasswordSubmitButton.onClick.AddListener(() => ChangePassword());
|
||||
}
|
||||
|
||||
void SwitchPanel(int panel)
|
||||
@@ -76,17 +93,29 @@ public class AccountMenu : MonoBehaviour
|
||||
switch (panel)
|
||||
{
|
||||
case 0:
|
||||
loggedInSaveButton.interactable = true;
|
||||
loggedInLoadButton.interactable = true;
|
||||
loggedInText.text = "Logged in as: " + PlayerPrefs.GetString("userName");
|
||||
loggedInPanel.SetActive(true);
|
||||
loggedOutPanel.SetActive(false);
|
||||
loginPanel.SetActive(false);
|
||||
registerPanel.SetActive(false);
|
||||
changeUsernamePanel.SetActive(false);
|
||||
changePasswordPanel.SetActive(false);
|
||||
break;
|
||||
case 1:
|
||||
PlayerPrefs.DeleteKey("gameSession");
|
||||
PlayerPrefs.DeleteKey("userName");
|
||||
PlayerPrefs.DeleteKey("userId");
|
||||
PlayerPrefs.SetInt("HighScore", 0);
|
||||
PlayerPrefs.SetInt("icon", 1);
|
||||
PlayerPrefs.SetInt("overlay", 0);
|
||||
loggedInPanel.SetActive(false);
|
||||
loggedOutPanel.SetActive(true);
|
||||
loginPanel.SetActive(false);
|
||||
registerPanel.SetActive(false);
|
||||
changeUsernamePanel.SetActive(false);
|
||||
changePasswordPanel.SetActive(false);
|
||||
break;
|
||||
case 2:
|
||||
loginUsernameInput.text = "";
|
||||
@@ -96,6 +125,8 @@ public class AccountMenu : MonoBehaviour
|
||||
loggedOutPanel.SetActive(false);
|
||||
loginPanel.SetActive(true);
|
||||
registerPanel.SetActive(false);
|
||||
changeUsernamePanel.SetActive(false);
|
||||
changePasswordPanel.SetActive(false);
|
||||
break;
|
||||
case 3:
|
||||
registerUsernameInput.text = "";
|
||||
@@ -108,6 +139,31 @@ public class AccountMenu : MonoBehaviour
|
||||
loggedOutPanel.SetActive(false);
|
||||
loginPanel.SetActive(false);
|
||||
registerPanel.SetActive(true);
|
||||
changeUsernamePanel.SetActive(false);
|
||||
changePasswordPanel.SetActive(false);
|
||||
break;
|
||||
case 4:
|
||||
changeUsernameCurrentUsernameInput.text = "";
|
||||
changeUsernameNewUsernameInput.text = "";
|
||||
changeUsernameStatusText.text = "";
|
||||
loggedInPanel.SetActive(false);
|
||||
loggedOutPanel.SetActive(false);
|
||||
loginPanel.SetActive(false);
|
||||
registerPanel.SetActive(false);
|
||||
changeUsernamePanel.SetActive(true);
|
||||
changePasswordPanel.SetActive(false);
|
||||
break;
|
||||
case 5:
|
||||
changePasswordCurrentPasswordInput.text = "";
|
||||
changePasswordNewPasswordInput.text = "";
|
||||
changePasswordRetypeNewPasswordInput.text = "";
|
||||
changePasswordStatusText.text = "";
|
||||
loggedInPanel.SetActive(false);
|
||||
loggedOutPanel.SetActive(false);
|
||||
loginPanel.SetActive(false);
|
||||
registerPanel.SetActive(false);
|
||||
changeUsernamePanel.SetActive(false);
|
||||
changePasswordPanel.SetActive(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -129,21 +185,21 @@ public class AccountMenu : MonoBehaviour
|
||||
UpdateStatusText(registerPanelStatusText, "Username must be 3-16 characters, letters and numbers only", Color.red);
|
||||
return;
|
||||
}
|
||||
WWWForm wWWForm = new();
|
||||
wWWForm.AddField("username", registerUsernameInput.text);
|
||||
wWWForm.AddField("email", registerEmailInput.text);
|
||||
wWWForm.AddField("password", registerPasswordInput.text);
|
||||
using UnityWebRequest request = UnityWebRequest.Post("https://berrydash.lncvrt.xyz/database/registerAccount.php", wWWForm);
|
||||
WWWForm dataForm = new();
|
||||
dataForm.AddField("username", registerUsernameInput.text);
|
||||
dataForm.AddField("email", registerEmailInput.text);
|
||||
dataForm.AddField("password", registerPasswordInput.text);
|
||||
using UnityWebRequest request = UnityWebRequest.Post("https://berrydash.lncvrt.xyz/database/registerAccount.php", dataForm);
|
||||
request.SetRequestHeader("User-Agent", "BerryDashClient");
|
||||
request.SetRequestHeader("ClientVersion", PlayerPrefs.GetFloat("clientVersion").ToString());
|
||||
request.SetRequestHeader("ClientVersion", Application.version);
|
||||
await request.SendWebRequest();
|
||||
if (request.result != UnityWebRequest.Result.Success)
|
||||
{
|
||||
UpdateStatusText(registerPanelStatusText, "Failed to make HTTP request", Color.red);
|
||||
return;
|
||||
}
|
||||
string text = request.downloadHandler.text;
|
||||
switch (text)
|
||||
string response = request.downloadHandler.text;
|
||||
switch (response)
|
||||
{
|
||||
case "1":
|
||||
SwitchPanel(2);
|
||||
@@ -173,43 +229,45 @@ public class AccountMenu : MonoBehaviour
|
||||
UpdateStatusText(registerPanelStatusText, "Username or email already exists", Color.red);
|
||||
break;
|
||||
default:
|
||||
UpdateStatusText(registerPanelStatusText, "Unknown server response \"" + text + "\"", Color.red);
|
||||
UpdateStatusText(registerPanelStatusText, "Unknown server response", Color.red);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
async void SubmitLogin()
|
||||
{
|
||||
WWWForm wWWForm = new();
|
||||
wWWForm.AddField("username", loginUsernameInput.text);
|
||||
wWWForm.AddField("password", loginPasswordInput.text);
|
||||
wWWForm.AddField("currentHighScore", PlayerPrefs.GetInt("HighScore", 0).ToString());
|
||||
using UnityWebRequest request = UnityWebRequest.Post("https://berrydash.lncvrt.xyz/database/loginAccount.php", wWWForm);
|
||||
WWWForm dataForm = new();
|
||||
dataForm.AddField("username", loginUsernameInput.text);
|
||||
dataForm.AddField("password", loginPasswordInput.text);
|
||||
dataForm.AddField("currentHighScore", PlayerPrefs.GetInt("HighScore", 0).ToString());
|
||||
using UnityWebRequest request = UnityWebRequest.Post("https://berrydash.lncvrt.xyz/database/loginAccount.php", dataForm);
|
||||
request.SetRequestHeader("User-Agent", "BerryDashClient");
|
||||
request.SetRequestHeader("ClientVersion", PlayerPrefs.GetFloat("clientVersion").ToString());
|
||||
request.SetRequestHeader("ClientVersion", Application.version);
|
||||
await request.SendWebRequest();
|
||||
if (request.result != UnityWebRequest.Result.Success)
|
||||
{
|
||||
UpdateStatusText(loginPanelStatusText, "Failed to make HTTP request", Color.red);
|
||||
return;
|
||||
}
|
||||
string text = request.downloadHandler.text;
|
||||
if (!(text == "-1"))
|
||||
string response = request.downloadHandler.text;
|
||||
if (response != "-1")
|
||||
{
|
||||
if (text == "-2")
|
||||
if (response == "-2")
|
||||
{
|
||||
UpdateStatusText(loginPanelStatusText, "Incorrect username or password", Color.red);
|
||||
}
|
||||
else if (text.Split(":")[0] == "1")
|
||||
else if (response.Split(":")[0] == "1")
|
||||
{
|
||||
string[] array = text.Split(':');
|
||||
string[] array = response.Split(':');
|
||||
string session = array[1];
|
||||
string userName = array[2];
|
||||
int highScore = int.Parse(array[3]);
|
||||
int iconId = int.Parse(array[4]);
|
||||
int overlayId = int.Parse(array[5]);
|
||||
int userId = int.Parse(array[3]);
|
||||
int highScore = int.Parse(array[4]);
|
||||
int iconId = int.Parse(array[5]);
|
||||
int overlayId = int.Parse(array[6]);
|
||||
PlayerPrefs.SetString("gameSession", session);
|
||||
PlayerPrefs.SetString("userName", userName);
|
||||
PlayerPrefs.SetInt("userId", userId);
|
||||
PlayerPrefs.SetInt("HighScore", highScore);
|
||||
PlayerPrefs.SetInt("icon", iconId);
|
||||
PlayerPrefs.SetInt("overlay", overlayId);
|
||||
@@ -227,6 +285,189 @@ public class AccountMenu : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
async void ChangeUsername()
|
||||
{
|
||||
WWWForm dataForm = new();
|
||||
dataForm.AddField("inputUserName", changeUsernameCurrentUsernameInput.text);
|
||||
dataForm.AddField("inputNewUserName", changeUsernameNewUsernameInput.text);
|
||||
dataForm.AddField("session", PlayerPrefs.GetString("gameSession"));
|
||||
dataForm.AddField("userName", PlayerPrefs.GetString("userName"));
|
||||
using UnityWebRequest request = UnityWebRequest.Post("https://berrydash.lncvrt.xyz/database/changeAccountUsername.php", dataForm);
|
||||
request.SetRequestHeader("User-Agent", "BerryDashClient");
|
||||
request.SetRequestHeader("ClientVersion", Application.version);
|
||||
await request.SendWebRequest();
|
||||
if (request.result != UnityWebRequest.Result.Success)
|
||||
{
|
||||
UpdateStatusText(changeUsernameStatusText, "Failed to make HTTP request", Color.red);
|
||||
return;
|
||||
}
|
||||
string response = request.downloadHandler.text;
|
||||
switch (response)
|
||||
{
|
||||
case "1":
|
||||
PlayerPrefs.SetString("userName", changeUsernameNewUsernameInput.text);
|
||||
SwitchPanel(0);
|
||||
UpdateStatusText(loggedInText, "Username changed successfully", Color.green);
|
||||
break;
|
||||
case "-1":
|
||||
UpdateStatusText(changeUsernameStatusText, "Internal login server error", Color.red);
|
||||
break;
|
||||
case "-2":
|
||||
UpdateStatusText(changeUsernameStatusText, "New Username is too short or too long", Color.red);
|
||||
break;
|
||||
case "-3":
|
||||
UpdateStatusText(changeUsernameStatusText, "New Username does not match the required format", Color.red);
|
||||
break;
|
||||
case "-4":
|
||||
UpdateStatusText(changeUsernameStatusText, "New username already exists", Color.red);
|
||||
break;
|
||||
default:
|
||||
UpdateStatusText(changeUsernameStatusText, "Unknown server response", Color.red);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
async void ChangePassword()
|
||||
{
|
||||
if (changePasswordNewPasswordInput.text != changePasswordRetypeNewPasswordInput.text)
|
||||
{
|
||||
UpdateStatusText(changePasswordStatusText, "Passwords do not match", Color.red);
|
||||
return;
|
||||
}
|
||||
WWWForm dataForm = new();
|
||||
dataForm.AddField("inputPassword", changePasswordCurrentPasswordInput.text);
|
||||
dataForm.AddField("inputNewPassword", changePasswordNewPasswordInput.text);
|
||||
dataForm.AddField("session", PlayerPrefs.GetString("gameSession"));
|
||||
dataForm.AddField("userName", PlayerPrefs.GetString("userName"));
|
||||
using UnityWebRequest request = UnityWebRequest.Post("https://berrydash.lncvrt.xyz/database/changeAccountPassword.php", dataForm);
|
||||
request.SetRequestHeader("User-Agent", "BerryDashClient");
|
||||
request.SetRequestHeader("ClientVersion", Application.version);
|
||||
await request.SendWebRequest();
|
||||
if (request.result != UnityWebRequest.Result.Success)
|
||||
{
|
||||
UpdateStatusText(changePasswordStatusText, "Failed to make HTTP request", Color.red);
|
||||
return;
|
||||
}
|
||||
string response = request.downloadHandler.text;
|
||||
switch (response)
|
||||
{
|
||||
case "-1":
|
||||
UpdateStatusText(changePasswordStatusText, "Internal login server error", Color.red);
|
||||
break;
|
||||
case "-2":
|
||||
UpdateStatusText(changePasswordStatusText, "New Password, Password, or username is empty", Color.red);
|
||||
break;
|
||||
case "-3":
|
||||
UpdateStatusText(changePasswordStatusText, "New Password is too short or too long", Color.red);
|
||||
break;
|
||||
case "-4":
|
||||
UpdateStatusText(changePasswordStatusText, "Username must be 3-16 characters, letters and numbers only", Color.red);
|
||||
break;
|
||||
case "-5":
|
||||
UpdateStatusText(changePasswordStatusText, "Incorrect current password", Color.red);
|
||||
break;
|
||||
case "-6":
|
||||
UpdateStatusText(changePasswordStatusText, "Current username is incorrect", Color.red);
|
||||
break;
|
||||
case "-7":
|
||||
UpdateStatusText(changePasswordStatusText, "New password cannot be the same as your old password", Color.red);
|
||||
break;
|
||||
}
|
||||
if (Regex.IsMatch(response, "^[a-zA-Z0-9]{512}$"))
|
||||
{
|
||||
PlayerPrefs.SetString("gameSession", response);
|
||||
SwitchPanel(0);
|
||||
UpdateStatusText(loggedInText, "Password changed successfully", Color.green);
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateStatusText(changePasswordStatusText, "Unknown server response " + response, Color.red);
|
||||
}
|
||||
}
|
||||
|
||||
async void SaveAccount()
|
||||
{
|
||||
loggedInLoadButton.interactable = false;
|
||||
loggedInSaveButton.interactable = false;
|
||||
WWWForm dataForm = new();
|
||||
dataForm.AddField("userName", PlayerPrefs.GetString("userName", ""));
|
||||
dataForm.AddField("gameSession", PlayerPrefs.GetString("gameSession", ""));
|
||||
dataForm.AddField("highScore", PlayerPrefs.GetInt("HighScore", 0).ToString());
|
||||
dataForm.AddField("icon", PlayerPrefs.GetInt("icon", 1).ToString());
|
||||
dataForm.AddField("overlay", PlayerPrefs.GetInt("overlay", 0).ToString());
|
||||
using UnityWebRequest request = UnityWebRequest.Post("https://berrydash.lncvrt.xyz/database/saveAccount.php", dataForm);
|
||||
request.SetRequestHeader("User-Agent", "BerryDashClient");
|
||||
request.SetRequestHeader("ClientVersion", Application.version);
|
||||
await request.SendWebRequest();
|
||||
if (request.result != UnityWebRequest.Result.Success)
|
||||
{
|
||||
UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
|
||||
return;
|
||||
}
|
||||
string response = request.downloadHandler.text;
|
||||
switch (response)
|
||||
{
|
||||
case "1":
|
||||
UpdateStatusText(loggedInText, "Synced account", Color.green);
|
||||
break;
|
||||
case "-1":
|
||||
UpdateStatusText(loggedInText, "Internal login server error", Color.red);
|
||||
break;
|
||||
case "-2":
|
||||
SwitchPanel(0);
|
||||
break;
|
||||
default:
|
||||
UpdateStatusText(loggedInText, "Unknown server response", Color.red);
|
||||
break;
|
||||
}
|
||||
loggedInLoadButton.interactable = true;
|
||||
loggedInSaveButton.interactable = true;
|
||||
}
|
||||
|
||||
async void LoadAccount()
|
||||
{
|
||||
loggedInLoadButton.interactable = false;
|
||||
loggedInSaveButton.interactable = false;
|
||||
WWWForm dataForm = new();
|
||||
dataForm.AddField("userName", PlayerPrefs.GetString("userName", ""));
|
||||
dataForm.AddField("gameSession", PlayerPrefs.GetString("gameSession", ""));
|
||||
using UnityWebRequest request = UnityWebRequest.Post("https://berrydash.lncvrt.xyz/database/loadAccount.php", dataForm);
|
||||
request.SetRequestHeader("User-Agent", "BerryDashClient");
|
||||
request.SetRequestHeader("ClientVersion", Application.version);
|
||||
await request.SendWebRequest();
|
||||
if (request.result != UnityWebRequest.Result.Success)
|
||||
{
|
||||
UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
|
||||
return;
|
||||
}
|
||||
string response = request.downloadHandler.text;
|
||||
switch (response)
|
||||
{
|
||||
case "-1":
|
||||
UpdateStatusText(loggedInText, "Internal login server error", Color.red);
|
||||
break;
|
||||
case "-2":
|
||||
SwitchPanel(0);
|
||||
break;
|
||||
default:
|
||||
var split = response.Split(":");
|
||||
if (split[0] == "1")
|
||||
{
|
||||
PlayerPrefs.SetInt("HighScore", int.Parse(split[1]));
|
||||
PlayerPrefs.SetInt("icon", int.Parse(split[2]));
|
||||
PlayerPrefs.SetInt("overlay", int.Parse(split[3]));
|
||||
UpdateStatusText(loggedInText, "Loaded account data", Color.green);
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateStatusText(loggedInText, "Unknown server response", Color.red);
|
||||
}
|
||||
break;
|
||||
}
|
||||
loggedInLoadButton.interactable = true;
|
||||
loggedInSaveButton.interactable = true;
|
||||
}
|
||||
|
||||
void UpdateStatusText(TMP_Text statusText, string message, Color color)
|
||||
{
|
||||
statusText.text = message;
|
||||
|
||||
Reference in New Issue
Block a user