Files
source/Assets/Scripts/AccountMenu/AccountLoggedIn.cs

121 lines
5.8 KiB
C#

using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class AccountLoggedIn : MonoBehaviour
{
public TMP_Text loggedInText;
public Button loggedInChangeUsernameButton;
public Button loggedInChangePasswordButton;
public Button loggedInSaveButton;
public Button loggedInLoadButton;
public Button loggedInRefreshLoginButton;
public Button loggedInLogoutButton;
public Button loggedInBackButton;
void Awake()
{
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.SwitchPanel(1));
loggedInBackButton.onClick.AddListener(async () => await SceneManager.LoadSceneAsync("MainMenu"));
}
void OnEnable()
{
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInText.text = "Logged in as: " + PlayerPrefs.GetString("userName");
}
async void SaveAccount()
{
loggedInLoadButton.interactable = false;
loggedInSaveButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("userName", SensitiveInfo.Encrypt(PlayerPrefs.GetString("userName", ""), SensitiveInfo.SERVER_SEND_TRANSFER_KEY));
dataForm.AddField("gameSession", SensitiveInfo.Encrypt(PlayerPrefs.GetString("gameSession", ""), SensitiveInfo.SERVER_SEND_TRANSFER_KEY));
dataForm.AddField("highScore", SensitiveInfo.Encrypt(PlayerPrefs.GetString("HighScoreV2", "0"), SensitiveInfo.SERVER_SEND_TRANSFER_KEY));
dataForm.AddField("icon", SensitiveInfo.Encrypt(PlayerPrefs.GetInt("icon", 1).ToString(), SensitiveInfo.SERVER_SEND_TRANSFER_KEY));
dataForm.AddField("overlay", SensitiveInfo.Encrypt(PlayerPrefs.GetInt("overlay", 0).ToString(), SensitiveInfo.SERVER_SEND_TRANSFER_KEY));
using UnityWebRequest request = UnityWebRequest.Post(SensitiveInfo.SERVER_DATABASE_PREFIX + "saveAccount.php", dataForm);
request.SetRequestHeader("User-Agent", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
AccountHandler.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
return;
}
string response = SensitiveInfo.Decrypt(request.downloadHandler.text, SensitiveInfo.SERVER_RECEIVE_TRANSFER_KEY);
switch (response)
{
case "1":
AccountHandler.UpdateStatusText(loggedInText, "Synced account", Color.green);
break;
case "-1":
AccountHandler.UpdateStatusText(loggedInText, "Internal login server error", Color.red);
break;
case "-2":
AccountHandler.instance.SwitchPanel(0);
break;
default:
AccountHandler.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", SensitiveInfo.Encrypt(PlayerPrefs.GetString("userName", ""), SensitiveInfo.SERVER_SEND_TRANSFER_KEY));
dataForm.AddField("gameSession", SensitiveInfo.Encrypt(PlayerPrefs.GetString("gameSession", ""), SensitiveInfo.SERVER_SEND_TRANSFER_KEY));
using UnityWebRequest request = UnityWebRequest.Post(SensitiveInfo.SERVER_DATABASE_PREFIX + "loadAccount.php", dataForm);
request.SetRequestHeader("User-Agent", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
AccountHandler.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
return;
}
string response = SensitiveInfo.Decrypt(request.downloadHandler.text, SensitiveInfo.SERVER_RECEIVE_TRANSFER_KEY);
switch (response)
{
case "-1":
AccountHandler.UpdateStatusText(loggedInText, "Internal login server error", Color.red);
break;
case "-2":
AccountHandler.instance.SwitchPanel(0);
break;
default:
var split = response.Split(":");
if (split[0] == "1")
{
PlayerPrefs.SetString("HighScoreV2", split[1]);
PlayerPrefs.SetInt("icon", int.Parse(split[2]));
PlayerPrefs.SetInt("overlay", int.Parse(split[3]));
AccountHandler.UpdateStatusText(loggedInText, "Loaded account data", Color.green);
}
else
{
AccountHandler.UpdateStatusText(loggedInText, "Unknown server response", Color.red);
}
break;
}
loggedInLoadButton.interactable = true;
loggedInSaveButton.interactable = true;
}
}