Format again
This commit is contained in:
93 files changed
+7328
-7323
No files matched your search
@@ -7,3 +7,5 @@ charset = utf-8
|
|||||||
csharp_new_line_before_open_brace = none
|
csharp_new_line_before_open_brace = none
|
||||||
csharp_new_line_before_else = false
|
csharp_new_line_before_else = false
|
||||||
dotnet_diagnostic.IDE0005.severity = warning
|
dotnet_diagnostic.IDE0005.severity = warning
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
@@ -5,56 +5,56 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AccountChangePassword : MonoBehaviour {
|
public class AccountChangePassword : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text changePasswordStatusText;
|
[SerializeField] private TMP_Text changePasswordStatusText;
|
||||||
[SerializeField] private TMP_InputField changePasswordNewPasswordInput;
|
[SerializeField] private TMP_InputField changePasswordNewPasswordInput;
|
||||||
[SerializeField] private TMP_InputField changePasswordRetypeNewPasswordInput;
|
[SerializeField] private TMP_InputField changePasswordRetypeNewPasswordInput;
|
||||||
[SerializeField] private Button changePasswordBackButton;
|
[SerializeField] private Button changePasswordBackButton;
|
||||||
[SerializeField] private Button changePasswordSubmitButton;
|
[SerializeField] private Button changePasswordSubmitButton;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
changePasswordNewPasswordInput.onSelect.AddListener((_) => changePasswordNewPasswordInput.caretPosition = changePasswordNewPasswordInput.text.Length);
|
changePasswordNewPasswordInput.onSelect.AddListener((_) => changePasswordNewPasswordInput.caretPosition = changePasswordNewPasswordInput.text.Length);
|
||||||
changePasswordRetypeNewPasswordInput.onSelect.AddListener((_) => changePasswordRetypeNewPasswordInput.caretPosition = changePasswordRetypeNewPasswordInput.text.Length);
|
changePasswordRetypeNewPasswordInput.onSelect.AddListener((_) => changePasswordRetypeNewPasswordInput.caretPosition = changePasswordRetypeNewPasswordInput.text.Length);
|
||||||
|
|
||||||
changePasswordBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
|
changePasswordBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
|
||||||
changePasswordSubmitButton.onClick.AddListener(() => ChangePassword());
|
changePasswordSubmitButton.onClick.AddListener(() => ChangePassword());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEnable() {
|
||||||
|
changePasswordNewPasswordInput.text = "";
|
||||||
|
changePasswordRetypeNewPasswordInput.text = "";
|
||||||
|
changePasswordStatusText.text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async void ChangePassword() {
|
||||||
|
if (changePasswordNewPasswordInput.text != changePasswordRetypeNewPasswordInput.text) {
|
||||||
|
Tools.UpdateStatusText(changePasswordStatusText, "Passwords do not match", Color.red);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
changePasswordBackButton.interactable = false;
|
||||||
void OnEnable() {
|
changePasswordSubmitButton.interactable = false;
|
||||||
changePasswordNewPasswordInput.text = "";
|
WWWForm dataForm = new();
|
||||||
changePasswordRetypeNewPasswordInput.text = "";
|
dataForm.AddField("newPassword", changePasswordNewPasswordInput.text);
|
||||||
changePasswordStatusText.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) {
|
||||||
|
changePasswordBackButton.interactable = true;
|
||||||
|
changePasswordSubmitButton.interactable = true;
|
||||||
|
Tools.UpdateStatusText(changePasswordStatusText, "Failed to make HTTP request", Color.red);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
async void ChangePassword() {
|
if ((bool)jsonResponse["success"]) {
|
||||||
if (changePasswordNewPasswordInput.text != changePasswordRetypeNewPasswordInput.text) {
|
BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]);
|
||||||
Tools.UpdateStatusText(changePasswordStatusText, "Passwords do not match", Color.red);
|
AccountHandler.instance.SwitchPanel(0);
|
||||||
return;
|
Tools.UpdateStatusText(AccountHandler.instance.accountLoggedIn.loggedInText, "Password changed successfully", Color.green);
|
||||||
}
|
} else {
|
||||||
changePasswordBackButton.interactable = false;
|
Tools.UpdateStatusText(changePasswordStatusText, (string)jsonResponse["message"], Color.red);
|
||||||
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) {
|
|
||||||
changePasswordBackButton.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);
|
|
||||||
}
|
|
||||||
changePasswordBackButton.interactable = true;
|
|
||||||
changePasswordSubmitButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
changePasswordBackButton.interactable = true;
|
||||||
|
changePasswordSubmitButton.interactable = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -5,50 +5,50 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AccountChangeUsername : MonoBehaviour {
|
public class AccountChangeUsername : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text changeUsernameStatusText;
|
[SerializeField] private TMP_Text changeUsernameStatusText;
|
||||||
[SerializeField] private TMP_InputField changeUsernameNewUsernameInput;
|
[SerializeField] private TMP_InputField changeUsernameNewUsernameInput;
|
||||||
[SerializeField] private Button changeUsernameBackButton;
|
[SerializeField] private Button changeUsernameBackButton;
|
||||||
[SerializeField] private Button changeUsernameSubmitButton;
|
[SerializeField] private Button changeUsernameSubmitButton;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
changeUsernameNewUsernameInput.onSelect.AddListener((_) => changeUsernameNewUsernameInput.caretPosition = changeUsernameNewUsernameInput.text.Length);
|
changeUsernameNewUsernameInput.onSelect.AddListener((_) => changeUsernameNewUsernameInput.caretPosition = changeUsernameNewUsernameInput.text.Length);
|
||||||
|
|
||||||
changeUsernameBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
|
changeUsernameBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
|
||||||
changeUsernameSubmitButton.onClick.AddListener(() => ChangeUsername());
|
changeUsernameSubmitButton.onClick.AddListener(() => ChangeUsername());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEnable() {
|
||||||
|
changeUsernameNewUsernameInput.text = "";
|
||||||
|
changeUsernameStatusText.text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async void ChangeUsername() {
|
||||||
|
changeUsernameBackButton.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) {
|
||||||
|
changeUsernameBackButton.interactable = true;
|
||||||
|
changeUsernameSubmitButton.interactable = true;
|
||||||
|
Tools.UpdateStatusText(changeUsernameStatusText, "Failed to make HTTP request", Color.red);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
void OnEnable() {
|
if ((bool)jsonResponse["success"]) {
|
||||||
changeUsernameNewUsernameInput.text = "";
|
BazookaManager.Instance.SetAccountName(changeUsernameNewUsernameInput.text);
|
||||||
changeUsernameStatusText.text = "";
|
BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]);
|
||||||
}
|
AccountHandler.instance.SwitchPanel(0);
|
||||||
|
Tools.UpdateStatusText(AccountHandler.instance.accountLoggedIn.loggedInText, "Username changed successfully", Color.green);
|
||||||
async void ChangeUsername() {
|
} else {
|
||||||
changeUsernameBackButton.interactable = false;
|
Tools.UpdateStatusText(changeUsernameStatusText, (string)jsonResponse["message"], Color.red);
|
||||||
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) {
|
|
||||||
changeUsernameBackButton.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);
|
|
||||||
}
|
|
||||||
changeUsernameBackButton.interactable = true;
|
|
||||||
changeUsernameSubmitButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
changeUsernameBackButton.interactable = true;
|
||||||
|
changeUsernameSubmitButton.interactable = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -5,56 +5,56 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AccountForgotDetails : MonoBehaviour {
|
public class AccountForgotDetails : MonoBehaviour {
|
||||||
[SerializeField] internal TMP_Text forgotDetailsTitleText;
|
[SerializeField] internal TMP_Text forgotDetailsTitleText;
|
||||||
[SerializeField] private TMP_Text forgotDetailsStatusText;
|
[SerializeField] private TMP_Text forgotDetailsStatusText;
|
||||||
[SerializeField] private TMP_InputField forgotDetailsEmailInput;
|
[SerializeField] private TMP_InputField forgotDetailsEmailInput;
|
||||||
[SerializeField] private TMP_InputField forgotDetailsVerifyCodeInput;
|
[SerializeField] private TMP_InputField forgotDetailsVerifyCodeInput;
|
||||||
[SerializeField] internal Button forgotDetailsBackButton;
|
[SerializeField] internal Button forgotDetailsBackButton;
|
||||||
[SerializeField] internal Button forgotDetailsSubmitButton;
|
[SerializeField] internal Button forgotDetailsSubmitButton;
|
||||||
internal int mode = 0;
|
internal int mode = 0;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
forgotDetailsEmailInput.onSelect.AddListener((_) => forgotDetailsEmailInput.caretPosition = forgotDetailsEmailInput.text.Length);
|
forgotDetailsEmailInput.onSelect.AddListener((_) => forgotDetailsEmailInput.caretPosition = forgotDetailsEmailInput.text.Length);
|
||||||
forgotDetailsVerifyCodeInput.onSelect.AddListener((_) => forgotDetailsVerifyCodeInput.caretPosition = forgotDetailsVerifyCodeInput.text.Length);
|
forgotDetailsVerifyCodeInput.onSelect.AddListener((_) => forgotDetailsVerifyCodeInput.caretPosition = forgotDetailsVerifyCodeInput.text.Length);
|
||||||
|
|
||||||
forgotDetailsBackButton.onClick.AddListener(() => {
|
forgotDetailsBackButton.onClick.AddListener(() => {
|
||||||
forgotDetailsBackButton.interactable = false;
|
forgotDetailsBackButton.interactable = false;
|
||||||
forgotDetailsSubmitButton.interactable = false;
|
forgotDetailsSubmitButton.interactable = false;
|
||||||
mode = 0;
|
mode = 0;
|
||||||
forgotDetailsTitleText.text = "";
|
forgotDetailsTitleText.text = "";
|
||||||
forgotDetailsStatusText.text = "";
|
forgotDetailsStatusText.text = "";
|
||||||
AccountHandler.instance.SwitchPanel(2);
|
AccountHandler.instance.SwitchPanel(2);
|
||||||
});
|
});
|
||||||
forgotDetailsSubmitButton.onClick.AddListener(() => ForgotDetails());
|
forgotDetailsSubmitButton.onClick.AddListener(() => ForgotDetails());
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnEnable() {
|
void OnEnable() {
|
||||||
forgotDetailsEmailInput.text = "";
|
forgotDetailsEmailInput.text = "";
|
||||||
forgotDetailsVerifyCodeInput.text = "";
|
forgotDetailsVerifyCodeInput.text = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
async void ForgotDetails() {
|
async void ForgotDetails() {
|
||||||
forgotDetailsBackButton.interactable = false;
|
forgotDetailsBackButton.interactable = false;
|
||||||
forgotDetailsSubmitButton.interactable = false;
|
forgotDetailsSubmitButton.interactable = false;
|
||||||
WWWForm dataForm = new();
|
WWWForm dataForm = new();
|
||||||
dataForm.AddField("email", forgotDetailsEmailInput.text);
|
dataForm.AddField("email", forgotDetailsEmailInput.text);
|
||||||
dataForm.AddField("verifyCode", forgotDetailsVerifyCodeInput.text);
|
dataForm.AddField("verifyCode", forgotDetailsVerifyCodeInput.text);
|
||||||
forgotDetailsVerifyCodeInput.text = "";
|
forgotDetailsVerifyCodeInput.text = "";
|
||||||
using UnityWebRequest request = UnityWebRequest.Post(mode == 0 ? Endpoints.ACCOUNT_FORGOT_USERNAME_ENDPOINT : Endpoints.ACCOUNT_FORGOT_PASSWORD_ENDPOINT, dataForm);
|
using UnityWebRequest request = UnityWebRequest.Post(mode == 0 ? Endpoints.ACCOUNT_FORGOT_USERNAME_ENDPOINT : Endpoints.ACCOUNT_FORGOT_PASSWORD_ENDPOINT, dataForm);
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
if (request.downloadHandler.text == null) {
|
if (request.downloadHandler.text == null) {
|
||||||
forgotDetailsBackButton.interactable = true;
|
forgotDetailsBackButton.interactable = true;
|
||||||
forgotDetailsSubmitButton.interactable = true;
|
forgotDetailsSubmitButton.interactable = true;
|
||||||
Tools.UpdateStatusText(forgotDetailsStatusText, "Failed to make HTTP request", Color.red);
|
Tools.UpdateStatusText(forgotDetailsStatusText, "Failed to make HTTP request", Color.red);
|
||||||
return;
|
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);
|
|
||||||
forgotDetailsBackButton.interactable = true;
|
|
||||||
forgotDetailsSubmitButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
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);
|
||||||
|
forgotDetailsBackButton.interactable = true;
|
||||||
|
forgotDetailsSubmitButton.interactable = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -3,120 +3,120 @@ using UnityEngine.InputSystem;
|
|||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
public class AccountHandler : MonoBehaviour {
|
public class AccountHandler : MonoBehaviour {
|
||||||
public static AccountHandler instance;
|
public static AccountHandler instance;
|
||||||
public AccountLoggedIn accountLoggedIn;
|
public AccountLoggedIn accountLoggedIn;
|
||||||
[SerializeField] private AccountLoggedOut accountLoggedOut;
|
[SerializeField] private AccountLoggedOut accountLoggedOut;
|
||||||
[SerializeField] private AccountLogin accountLogin;
|
[SerializeField] private AccountLogin accountLogin;
|
||||||
[SerializeField] private AccountRegister accountRegister;
|
[SerializeField] private AccountRegister accountRegister;
|
||||||
[SerializeField] private AccountChangeUsername accountChangeUsername;
|
[SerializeField] private AccountChangeUsername accountChangeUsername;
|
||||||
[SerializeField] private AccountChangePassword accountChangePassword;
|
[SerializeField] private AccountChangePassword accountChangePassword;
|
||||||
[SerializeField] private AccountRefreshLogin accountRefreshLogin;
|
[SerializeField] private AccountRefreshLogin accountRefreshLogin;
|
||||||
[SerializeField] internal AccountForgotDetails accountForgotDetails;
|
[SerializeField] internal AccountForgotDetails accountForgotDetails;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
instance = this;
|
instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
|
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
|
||||||
SwitchPanel(0);
|
SwitchPanel(0);
|
||||||
} else {
|
} else {
|
||||||
SwitchPanel(1);
|
SwitchPanel(1);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void SwitchPanel(int panel) {
|
public void SwitchPanel(int panel) {
|
||||||
switch (panel) {
|
switch (panel) {
|
||||||
case 0:
|
case 0:
|
||||||
accountLoggedIn.gameObject.SetActive(true);
|
accountLoggedIn.gameObject.SetActive(true);
|
||||||
accountLoggedOut.gameObject.SetActive(false);
|
accountLoggedOut.gameObject.SetActive(false);
|
||||||
accountLogin.gameObject.SetActive(false);
|
accountLogin.gameObject.SetActive(false);
|
||||||
accountRegister.gameObject.SetActive(false);
|
accountRegister.gameObject.SetActive(false);
|
||||||
accountChangeUsername.gameObject.SetActive(false);
|
accountChangeUsername.gameObject.SetActive(false);
|
||||||
accountChangePassword.gameObject.SetActive(false);
|
accountChangePassword.gameObject.SetActive(false);
|
||||||
accountRefreshLogin.gameObject.SetActive(false);
|
accountRefreshLogin.gameObject.SetActive(false);
|
||||||
accountForgotDetails.gameObject.SetActive(false);
|
accountForgotDetails.gameObject.SetActive(false);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
accountLoggedIn.gameObject.SetActive(false);
|
accountLoggedIn.gameObject.SetActive(false);
|
||||||
accountLoggedOut.gameObject.SetActive(true);
|
accountLoggedOut.gameObject.SetActive(true);
|
||||||
accountLogin.gameObject.SetActive(false);
|
accountLogin.gameObject.SetActive(false);
|
||||||
accountRegister.gameObject.SetActive(false);
|
accountRegister.gameObject.SetActive(false);
|
||||||
accountChangeUsername.gameObject.SetActive(false);
|
accountChangeUsername.gameObject.SetActive(false);
|
||||||
accountChangePassword.gameObject.SetActive(false);
|
accountChangePassword.gameObject.SetActive(false);
|
||||||
accountRefreshLogin.gameObject.SetActive(false);
|
accountRefreshLogin.gameObject.SetActive(false);
|
||||||
accountForgotDetails.gameObject.SetActive(false);
|
accountForgotDetails.gameObject.SetActive(false);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
accountLoggedIn.gameObject.SetActive(false);
|
accountLoggedIn.gameObject.SetActive(false);
|
||||||
accountLoggedOut.gameObject.SetActive(false);
|
accountLoggedOut.gameObject.SetActive(false);
|
||||||
accountLogin.gameObject.SetActive(true);
|
accountLogin.gameObject.SetActive(true);
|
||||||
accountRegister.gameObject.SetActive(false);
|
accountRegister.gameObject.SetActive(false);
|
||||||
accountChangeUsername.gameObject.SetActive(false);
|
accountChangeUsername.gameObject.SetActive(false);
|
||||||
accountChangePassword.gameObject.SetActive(false);
|
accountChangePassword.gameObject.SetActive(false);
|
||||||
accountRefreshLogin.gameObject.SetActive(false);
|
accountRefreshLogin.gameObject.SetActive(false);
|
||||||
accountForgotDetails.gameObject.SetActive(false);
|
accountForgotDetails.gameObject.SetActive(false);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
accountLoggedIn.gameObject.SetActive(false);
|
accountLoggedIn.gameObject.SetActive(false);
|
||||||
accountLoggedOut.gameObject.SetActive(false);
|
accountLoggedOut.gameObject.SetActive(false);
|
||||||
accountLogin.gameObject.SetActive(false);
|
accountLogin.gameObject.SetActive(false);
|
||||||
accountRegister.gameObject.SetActive(true);
|
accountRegister.gameObject.SetActive(true);
|
||||||
accountChangeUsername.gameObject.SetActive(false);
|
accountChangeUsername.gameObject.SetActive(false);
|
||||||
accountChangePassword.gameObject.SetActive(false);
|
accountChangePassword.gameObject.SetActive(false);
|
||||||
accountRefreshLogin.gameObject.SetActive(false);
|
accountRefreshLogin.gameObject.SetActive(false);
|
||||||
accountForgotDetails.gameObject.SetActive(false);
|
accountForgotDetails.gameObject.SetActive(false);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
accountLoggedIn.gameObject.SetActive(false);
|
accountLoggedIn.gameObject.SetActive(false);
|
||||||
accountLoggedOut.gameObject.SetActive(false);
|
accountLoggedOut.gameObject.SetActive(false);
|
||||||
accountLogin.gameObject.SetActive(false);
|
accountLogin.gameObject.SetActive(false);
|
||||||
accountRegister.gameObject.SetActive(false);
|
accountRegister.gameObject.SetActive(false);
|
||||||
accountChangeUsername.gameObject.SetActive(true);
|
accountChangeUsername.gameObject.SetActive(true);
|
||||||
accountChangePassword.gameObject.SetActive(false);
|
accountChangePassword.gameObject.SetActive(false);
|
||||||
accountRefreshLogin.gameObject.SetActive(false);
|
accountRefreshLogin.gameObject.SetActive(false);
|
||||||
accountForgotDetails.gameObject.SetActive(false);
|
accountForgotDetails.gameObject.SetActive(false);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
accountLoggedIn.gameObject.SetActive(false);
|
accountLoggedIn.gameObject.SetActive(false);
|
||||||
accountLoggedOut.gameObject.SetActive(false);
|
accountLoggedOut.gameObject.SetActive(false);
|
||||||
accountLogin.gameObject.SetActive(false);
|
accountLogin.gameObject.SetActive(false);
|
||||||
accountRegister.gameObject.SetActive(false);
|
accountRegister.gameObject.SetActive(false);
|
||||||
accountChangeUsername.gameObject.SetActive(false);
|
accountChangeUsername.gameObject.SetActive(false);
|
||||||
accountChangePassword.gameObject.SetActive(true);
|
accountChangePassword.gameObject.SetActive(true);
|
||||||
accountRefreshLogin.gameObject.SetActive(false);
|
accountRefreshLogin.gameObject.SetActive(false);
|
||||||
accountForgotDetails.gameObject.SetActive(false);
|
accountForgotDetails.gameObject.SetActive(false);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
accountLoggedIn.gameObject.SetActive(false);
|
accountLoggedIn.gameObject.SetActive(false);
|
||||||
accountLoggedOut.gameObject.SetActive(false);
|
accountLoggedOut.gameObject.SetActive(false);
|
||||||
accountLogin.gameObject.SetActive(false);
|
accountLogin.gameObject.SetActive(false);
|
||||||
accountRegister.gameObject.SetActive(false);
|
accountRegister.gameObject.SetActive(false);
|
||||||
accountChangeUsername.gameObject.SetActive(false);
|
accountChangeUsername.gameObject.SetActive(false);
|
||||||
accountChangePassword.gameObject.SetActive(false);
|
accountChangePassword.gameObject.SetActive(false);
|
||||||
accountRefreshLogin.gameObject.SetActive(true);
|
accountRefreshLogin.gameObject.SetActive(true);
|
||||||
accountForgotDetails.gameObject.SetActive(false);
|
accountForgotDetails.gameObject.SetActive(false);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
accountLoggedIn.gameObject.SetActive(false);
|
accountLoggedIn.gameObject.SetActive(false);
|
||||||
accountLoggedOut.gameObject.SetActive(false);
|
accountLoggedOut.gameObject.SetActive(false);
|
||||||
accountLogin.gameObject.SetActive(false);
|
accountLogin.gameObject.SetActive(false);
|
||||||
accountRegister.gameObject.SetActive(false);
|
accountRegister.gameObject.SetActive(false);
|
||||||
accountChangeUsername.gameObject.SetActive(false);
|
accountChangeUsername.gameObject.SetActive(false);
|
||||||
accountChangePassword.gameObject.SetActive(false);
|
accountChangePassword.gameObject.SetActive(false);
|
||||||
accountRefreshLogin.gameObject.SetActive(false);
|
accountRefreshLogin.gameObject.SetActive(false);
|
||||||
accountForgotDetails.gameObject.SetActive(true);
|
accountForgotDetails.gameObject.SetActive(true);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
|
|
||||||
}
|
}
|
||||||
|
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
|
||||||
|
}
|
||||||
|
|
||||||
async void Update() {
|
async void Update() {
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
|
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
|
||||||
if (accountChangePassword.gameObject.activeSelf || accountChangeUsername.gameObject.activeSelf || accountRefreshLogin.gameObject.activeSelf) SwitchPanel(0);
|
if (accountChangePassword.gameObject.activeSelf || accountChangeUsername.gameObject.activeSelf || accountRefreshLogin.gameObject.activeSelf) SwitchPanel(0);
|
||||||
else if (accountLogin.gameObject.activeSelf || accountRegister.gameObject.activeSelf) SwitchPanel(1);
|
else if (accountLogin.gameObject.activeSelf || accountRegister.gameObject.activeSelf) SwitchPanel(1);
|
||||||
else if (accountForgotDetails.gameObject.activeSelf) accountForgotDetails.forgotDetailsBackButton.onClick.Invoke();
|
else if (accountForgotDetails.gameObject.activeSelf) accountForgotDetails.forgotDetailsBackButton.onClick.Invoke();
|
||||||
else await SceneManager.LoadSceneAsync("MainMenu");
|
else await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -8,120 +8,120 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AccountLoggedIn : MonoBehaviour {
|
public class AccountLoggedIn : MonoBehaviour {
|
||||||
public TMP_Text loggedInText;
|
public TMP_Text loggedInText;
|
||||||
[SerializeField] private AccountLoggedOut accountLoggedOut;
|
[SerializeField] private AccountLoggedOut accountLoggedOut;
|
||||||
[SerializeField] private Button loggedInChangeUsernameButton;
|
[SerializeField] private Button loggedInChangeUsernameButton;
|
||||||
[SerializeField] private Button loggedInChangePasswordButton;
|
[SerializeField] private Button loggedInChangePasswordButton;
|
||||||
[SerializeField] private Button loggedInSaveButton;
|
[SerializeField] private Button loggedInSaveButton;
|
||||||
[SerializeField] private Button loggedInLoadButton;
|
[SerializeField] private Button loggedInLoadButton;
|
||||||
[SerializeField] private Button loggedInRefreshLoginButton;
|
[SerializeField] private Button loggedInRefreshLoginButton;
|
||||||
[SerializeField] private Button loggedInLogoutButton;
|
[SerializeField] private Button loggedInLogoutButton;
|
||||||
[SerializeField] private Button loggedInBackButton;
|
[SerializeField] private Button loggedInBackButton;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
loggedInChangeUsernameButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(4));
|
loggedInChangeUsernameButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(4));
|
||||||
loggedInChangePasswordButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(5));
|
loggedInChangePasswordButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(5));
|
||||||
loggedInSaveButton.onClick.AddListener(() => SaveAccount());
|
loggedInSaveButton.onClick.AddListener(() => SaveAccount());
|
||||||
loggedInLoadButton.onClick.AddListener(() => LoadAccount());
|
loggedInLoadButton.onClick.AddListener(() => LoadAccount());
|
||||||
loggedInRefreshLoginButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(6));
|
loggedInRefreshLoginButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(6));
|
||||||
loggedInLogoutButton.onClick.AddListener(() => {
|
loggedInLogoutButton.onClick.AddListener(() => {
|
||||||
BazookaManager.Instance.ResetSave();
|
BazookaManager.Instance.ResetSave();
|
||||||
AccountHandler.instance.SwitchPanel(1);
|
AccountHandler.instance.SwitchPanel(1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnEnable() {
|
void OnEnable() {
|
||||||
loggedInSaveButton.interactable = true;
|
loggedInSaveButton.interactable = true;
|
||||||
loggedInLoadButton.interactable = true;
|
loggedInLoadButton.interactable = true;
|
||||||
var textColor = BazookaManager.Instance.GetColorSettingText();
|
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));
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
async void SaveAccount() {
|
async void SaveAccount() {
|
||||||
loggedInChangeUsernameButton.interactable = false;
|
loggedInChangeUsernameButton.interactable = false;
|
||||||
loggedInChangePasswordButton.interactable = false;
|
loggedInChangePasswordButton.interactable = false;
|
||||||
loggedInSaveButton.interactable = false;
|
loggedInSaveButton.interactable = false;
|
||||||
loggedInLoadButton.interactable = false;
|
loggedInLoadButton.interactable = false;
|
||||||
loggedInRefreshLoginButton.interactable = false;
|
loggedInRefreshLoginButton.interactable = false;
|
||||||
loggedInLogoutButton.interactable = false;
|
loggedInLogoutButton.interactable = false;
|
||||||
loggedInBackButton.interactable = false;
|
loggedInBackButton.interactable = false;
|
||||||
WWWForm dataForm = new();
|
WWWForm dataForm = new();
|
||||||
dataForm.AddField("saveData", Convert.ToBase64String(Encoding.UTF8.GetBytes(BazookaManager.Instance.saveFile.ToString(Formatting.None))));
|
dataForm.AddField("saveData", Convert.ToBase64String(Encoding.UTF8.GetBytes(BazookaManager.Instance.saveFile.ToString(Formatting.None))));
|
||||||
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_SAVE_ENDPOINT, dataForm);
|
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_SAVE_ENDPOINT, dataForm);
|
||||||
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
if (request.downloadHandler.text == null) {
|
if (request.downloadHandler.text == null) {
|
||||||
loggedInChangeUsernameButton.interactable = true;
|
loggedInChangeUsernameButton.interactable = true;
|
||||||
loggedInChangePasswordButton.interactable = true;
|
loggedInChangePasswordButton.interactable = true;
|
||||||
loggedInSaveButton.interactable = true;
|
loggedInSaveButton.interactable = true;
|
||||||
loggedInLoadButton.interactable = true;
|
loggedInLoadButton.interactable = true;
|
||||||
loggedInRefreshLoginButton.interactable = true;
|
loggedInRefreshLoginButton.interactable = true;
|
||||||
loggedInLogoutButton.interactable = true;
|
loggedInLogoutButton.interactable = true;
|
||||||
loggedInBackButton.interactable = true;
|
loggedInBackButton.interactable = true;
|
||||||
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
|
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
|
||||||
return;
|
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;
|
|
||||||
loggedInBackButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
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;
|
||||||
|
loggedInBackButton.interactable = true;
|
||||||
|
}
|
||||||
|
|
||||||
async void LoadAccount() {
|
async void LoadAccount() {
|
||||||
loggedInChangeUsernameButton.interactable = false;
|
loggedInChangeUsernameButton.interactable = false;
|
||||||
loggedInChangePasswordButton.interactable = false;
|
loggedInChangePasswordButton.interactable = false;
|
||||||
loggedInSaveButton.interactable = false;
|
loggedInSaveButton.interactable = false;
|
||||||
loggedInLoadButton.interactable = false;
|
loggedInLoadButton.interactable = false;
|
||||||
loggedInRefreshLoginButton.interactable = false;
|
loggedInRefreshLoginButton.interactable = false;
|
||||||
loggedInLogoutButton.interactable = false;
|
loggedInLogoutButton.interactable = false;
|
||||||
loggedInBackButton.interactable = false;
|
loggedInBackButton.interactable = false;
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ACCOUNT_SAVE_ENDPOINT);
|
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ACCOUNT_SAVE_ENDPOINT);
|
||||||
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
if (request.downloadHandler.text == null) {
|
if (request.downloadHandler.text == null) {
|
||||||
loggedInChangeUsernameButton.interactable = true;
|
loggedInChangeUsernameButton.interactable = true;
|
||||||
loggedInChangePasswordButton.interactable = true;
|
loggedInChangePasswordButton.interactable = true;
|
||||||
loggedInSaveButton.interactable = true;
|
loggedInSaveButton.interactable = true;
|
||||||
loggedInLoadButton.interactable = true;
|
loggedInLoadButton.interactable = true;
|
||||||
loggedInRefreshLoginButton.interactable = true;
|
loggedInRefreshLoginButton.interactable = true;
|
||||||
loggedInLogoutButton.interactable = true;
|
loggedInLogoutButton.interactable = true;
|
||||||
loggedInBackButton.interactable = true;
|
loggedInBackButton.interactable = true;
|
||||||
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
|
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
|
||||||
if ((bool)jsonResponse["success"]) {
|
|
||||||
BazookaManager.Instance.saveFile = JObject.FromObject(jsonResponse["data"]);
|
|
||||||
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;
|
|
||||||
loggedInBackButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
|
if ((bool)jsonResponse["success"]) {
|
||||||
|
BazookaManager.Instance.saveFile = JObject.FromObject(jsonResponse["data"]);
|
||||||
|
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;
|
||||||
|
loggedInBackButton.interactable = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -2,11 +2,11 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AccountLoggedOut : MonoBehaviour {
|
public class AccountLoggedOut : MonoBehaviour {
|
||||||
[SerializeField] private Button loggedOutLoginButton;
|
[SerializeField] private Button loggedOutLoginButton;
|
||||||
[SerializeField] private Button loggedOutRegisterButton;
|
[SerializeField] private Button loggedOutRegisterButton;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
loggedOutLoginButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(2));
|
loggedOutLoginButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(2));
|
||||||
loggedOutRegisterButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(3));
|
loggedOutRegisterButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(3));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,74 +6,74 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AccountLogin : MonoBehaviour {
|
public class AccountLogin : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text loginPanelStatusText;
|
[SerializeField] private TMP_Text loginPanelStatusText;
|
||||||
[SerializeField] private TMP_InputField loginUsernameInput;
|
[SerializeField] private TMP_InputField loginUsernameInput;
|
||||||
[SerializeField] private TMP_InputField loginPasswordInput;
|
[SerializeField] private TMP_InputField loginPasswordInput;
|
||||||
[SerializeField] private Button forgotUsernameButton;
|
[SerializeField] private Button forgotUsernameButton;
|
||||||
[SerializeField] private Button forgotPasswordButton;
|
[SerializeField] private Button forgotPasswordButton;
|
||||||
[SerializeField] private Button loginBackButton;
|
[SerializeField] private Button loginBackButton;
|
||||||
[SerializeField] private Button loginSubmitButton;
|
[SerializeField] private Button loginSubmitButton;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
loginUsernameInput.onSelect.AddListener((_) => loginUsernameInput.caretPosition = loginUsernameInput.text.Length);
|
loginUsernameInput.onSelect.AddListener((_) => loginUsernameInput.caretPosition = loginUsernameInput.text.Length);
|
||||||
loginPasswordInput.onSelect.AddListener((_) => loginPasswordInput.caretPosition = loginPasswordInput.text.Length);
|
loginPasswordInput.onSelect.AddListener((_) => loginPasswordInput.caretPosition = loginPasswordInput.text.Length);
|
||||||
|
|
||||||
loginBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1));
|
loginBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1));
|
||||||
loginSubmitButton.onClick.AddListener(() => SubmitLogin());
|
loginSubmitButton.onClick.AddListener(() => SubmitLogin());
|
||||||
forgotUsernameButton.onClick.AddListener(() => {
|
forgotUsernameButton.onClick.AddListener(() => {
|
||||||
AccountHandler.instance.SwitchPanel(7);
|
AccountHandler.instance.SwitchPanel(7);
|
||||||
AccountHandler.instance.accountForgotDetails.mode = 0;
|
AccountHandler.instance.accountForgotDetails.mode = 0;
|
||||||
AccountHandler.instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot username";
|
AccountHandler.instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot username";
|
||||||
AccountHandler.instance.accountForgotDetails.forgotDetailsBackButton.interactable = true;
|
AccountHandler.instance.accountForgotDetails.forgotDetailsBackButton.interactable = true;
|
||||||
AccountHandler.instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
|
AccountHandler.instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
|
||||||
});
|
});
|
||||||
forgotPasswordButton.onClick.AddListener(() => {
|
forgotPasswordButton.onClick.AddListener(() => {
|
||||||
AccountHandler.instance.SwitchPanel(7);
|
AccountHandler.instance.SwitchPanel(7);
|
||||||
AccountHandler.instance.accountForgotDetails.mode = 1;
|
AccountHandler.instance.accountForgotDetails.mode = 1;
|
||||||
AccountHandler.instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot password";
|
AccountHandler.instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot password";
|
||||||
AccountHandler.instance.accountForgotDetails.forgotDetailsBackButton.interactable = true;
|
AccountHandler.instance.accountForgotDetails.forgotDetailsBackButton.interactable = true;
|
||||||
AccountHandler.instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
|
AccountHandler.instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEnable() {
|
||||||
|
loginUsernameInput.text = "";
|
||||||
|
loginPasswordInput.text = "";
|
||||||
|
loginPanelStatusText.text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async void SubmitLogin() {
|
||||||
|
loginBackButton.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();
|
||||||
void OnEnable() {
|
dataForm.AddField("username", loginUsernameInput.text);
|
||||||
loginUsernameInput.text = "";
|
dataForm.AddField("password", loginPasswordInput.text);
|
||||||
loginPasswordInput.text = "";
|
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_LOGIN_ENDPOINT, dataForm);
|
||||||
loginPanelStatusText.text = "";
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
|
await request.SendWebRequest();
|
||||||
|
if (request.downloadHandler.text == null) {
|
||||||
|
loginBackButton.interactable = true;
|
||||||
|
loginSubmitButton.interactable = true;
|
||||||
|
Tools.UpdateStatusText(loginPanelStatusText, "Failed to make HTTP request", Color.red);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
async void SubmitLogin() {
|
if ((bool)jsonResponse["success"]) {
|
||||||
loginBackButton.interactable = false;
|
BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]["session"]);
|
||||||
loginSubmitButton.interactable = false;
|
BazookaManager.Instance.SetAccountName((string)jsonResponse["data"]["username"]);
|
||||||
if (loginUsernameInput.text == string.Empty || loginPasswordInput.text == string.Empty) {
|
BazookaManager.Instance.SetAccountID(BigInteger.Parse((string)jsonResponse["data"]["id"]));
|
||||||
Tools.UpdateStatusText(loginPanelStatusText, "All input fields must be filled", Color.red);
|
AccountHandler.instance.SwitchPanel(0);
|
||||||
return;
|
Tools.UpdateStatusText(loginPanelStatusText, "", Color.red);
|
||||||
}
|
} else {
|
||||||
WWWForm dataForm = new();
|
Tools.UpdateStatusText(loginPanelStatusText, (string)jsonResponse["message"], Color.red);
|
||||||
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) {
|
|
||||||
loginBackButton.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);
|
|
||||||
}
|
|
||||||
loginBackButton.interactable = true;
|
|
||||||
loginSubmitButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
loginBackButton.interactable = true;
|
||||||
|
loginSubmitButton.interactable = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -6,53 +6,53 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AccountRefreshLogin : MonoBehaviour {
|
public class AccountRefreshLogin : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text refreshLoginStatusText;
|
[SerializeField] private TMP_Text refreshLoginStatusText;
|
||||||
[SerializeField] private TMP_InputField refreshLoginUsernameInput;
|
[SerializeField] private TMP_InputField refreshLoginUsernameInput;
|
||||||
[SerializeField] private TMP_InputField refreshLoginPasswordInput;
|
[SerializeField] private TMP_InputField refreshLoginPasswordInput;
|
||||||
[SerializeField] private Button refreshLoginBackButton;
|
[SerializeField] private Button refreshLoginBackButton;
|
||||||
[SerializeField] private Button refreshLoginSubmitButton;
|
[SerializeField] private Button refreshLoginSubmitButton;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
refreshLoginUsernameInput.onSelect.AddListener((_) => refreshLoginUsernameInput.caretPosition = refreshLoginUsernameInput.text.Length);
|
refreshLoginUsernameInput.onSelect.AddListener((_) => refreshLoginUsernameInput.caretPosition = refreshLoginUsernameInput.text.Length);
|
||||||
refreshLoginPasswordInput.onSelect.AddListener((_) => refreshLoginPasswordInput.caretPosition = refreshLoginPasswordInput.text.Length);
|
refreshLoginPasswordInput.onSelect.AddListener((_) => refreshLoginPasswordInput.caretPosition = refreshLoginPasswordInput.text.Length);
|
||||||
|
|
||||||
refreshLoginBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
|
refreshLoginBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
|
||||||
refreshLoginSubmitButton.onClick.AddListener(() => RefreshLogin());
|
refreshLoginSubmitButton.onClick.AddListener(() => RefreshLogin());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEnable() {
|
||||||
|
refreshLoginUsernameInput.text = "";
|
||||||
|
refreshLoginPasswordInput.text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async void RefreshLogin() {
|
||||||
|
refreshLoginBackButton.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) {
|
||||||
|
refreshLoginBackButton.interactable = true;
|
||||||
|
refreshLoginSubmitButton.interactable = true;
|
||||||
|
Tools.UpdateStatusText(refreshLoginStatusText, "Failed to make HTTP request", Color.red);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
void OnEnable() {
|
if ((bool)jsonResponse["success"]) {
|
||||||
refreshLoginUsernameInput.text = "";
|
BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]["session"]);
|
||||||
refreshLoginPasswordInput.text = "";
|
BazookaManager.Instance.SetAccountName((string)jsonResponse["data"]["username"]);
|
||||||
}
|
BazookaManager.Instance.SetAccountID(BigInteger.Parse((string)jsonResponse["data"]["id"]));
|
||||||
|
AccountHandler.instance.SwitchPanel(0);
|
||||||
async void RefreshLogin() {
|
Tools.UpdateStatusText(refreshLoginStatusText, "", Color.red);
|
||||||
refreshLoginBackButton.interactable = false;
|
} else {
|
||||||
refreshLoginSubmitButton.interactable = false;
|
Tools.UpdateStatusText(refreshLoginStatusText, (string)jsonResponse["message"], Color.red);
|
||||||
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) {
|
|
||||||
refreshLoginBackButton.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);
|
|
||||||
}
|
|
||||||
refreshLoginBackButton.interactable = true;
|
|
||||||
refreshLoginSubmitButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
refreshLoginBackButton.interactable = true;
|
||||||
|
refreshLoginSubmitButton.interactable = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -5,84 +5,84 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AccountRegister : MonoBehaviour {
|
public class AccountRegister : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text registerPanelStatusText;
|
[SerializeField] private TMP_Text registerPanelStatusText;
|
||||||
[SerializeField] private TMP_InputField registerUsernameInput;
|
[SerializeField] private TMP_InputField registerUsernameInput;
|
||||||
[SerializeField] private TMP_InputField registerEmailInput;
|
[SerializeField] private TMP_InputField registerEmailInput;
|
||||||
[SerializeField] private TMP_InputField registerRetypeEmailInput;
|
[SerializeField] private TMP_InputField registerRetypeEmailInput;
|
||||||
[SerializeField] private TMP_InputField registerPasswordInput;
|
[SerializeField] private TMP_InputField registerPasswordInput;
|
||||||
[SerializeField] private TMP_InputField registerRetypePasswordInput;
|
[SerializeField] private TMP_InputField registerRetypePasswordInput;
|
||||||
[SerializeField] private TMP_InputField registerVerifyCodeInput;
|
[SerializeField] private TMP_InputField registerVerifyCodeInput;
|
||||||
[SerializeField] private Button registerBackButton;
|
[SerializeField] private Button registerBackButton;
|
||||||
[SerializeField] private Button registerSubmitButton;
|
[SerializeField] private Button registerSubmitButton;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
registerUsernameInput.onSelect.AddListener((_) => registerUsernameInput.caretPosition = registerUsernameInput.text.Length);
|
registerUsernameInput.onSelect.AddListener((_) => registerUsernameInput.caretPosition = registerUsernameInput.text.Length);
|
||||||
registerEmailInput.onSelect.AddListener((_) => registerEmailInput.caretPosition = registerEmailInput.text.Length);
|
registerEmailInput.onSelect.AddListener((_) => registerEmailInput.caretPosition = registerEmailInput.text.Length);
|
||||||
registerRetypeEmailInput.onSelect.AddListener((_) => registerRetypeEmailInput.caretPosition = registerRetypeEmailInput.text.Length);
|
registerRetypeEmailInput.onSelect.AddListener((_) => registerRetypeEmailInput.caretPosition = registerRetypeEmailInput.text.Length);
|
||||||
registerPasswordInput.onSelect.AddListener((_) => registerPasswordInput.caretPosition = registerPasswordInput.text.Length);
|
registerPasswordInput.onSelect.AddListener((_) => registerPasswordInput.caretPosition = registerPasswordInput.text.Length);
|
||||||
registerRetypePasswordInput.onSelect.AddListener((_) => registerRetypePasswordInput.caretPosition = registerRetypePasswordInput.text.Length);
|
registerRetypePasswordInput.onSelect.AddListener((_) => registerRetypePasswordInput.caretPosition = registerRetypePasswordInput.text.Length);
|
||||||
registerVerifyCodeInput.onSelect.AddListener((_) => registerVerifyCodeInput.caretPosition = registerVerifyCodeInput.text.Length);
|
registerVerifyCodeInput.onSelect.AddListener((_) => registerVerifyCodeInput.caretPosition = registerVerifyCodeInput.text.Length);
|
||||||
|
|
||||||
registerBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1));
|
registerBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1));
|
||||||
registerSubmitButton.onClick.AddListener(() => SubmitRegister());
|
registerSubmitButton.onClick.AddListener(() => SubmitRegister());
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEnable() {
|
||||||
|
registerUsernameInput.text = "";
|
||||||
|
registerEmailInput.text = "";
|
||||||
|
registerRetypeEmailInput.text = "";
|
||||||
|
registerPasswordInput.text = "";
|
||||||
|
registerRetypePasswordInput.text = "";
|
||||||
|
registerVerifyCodeInput.text = "";
|
||||||
|
registerPanelStatusText.text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
async void SubmitRegister() {
|
||||||
|
if (
|
||||||
|
registerUsernameInput.text == string.Empty ||
|
||||||
|
registerEmailInput.text == string.Empty ||
|
||||||
|
registerRetypeEmailInput.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 (registerEmailInput.text != registerRetypeEmailInput.text) {
|
||||||
void OnEnable() {
|
Tools.UpdateStatusText(registerPanelStatusText, "Emails don't match", Color.red);
|
||||||
registerUsernameInput.text = "";
|
return;
|
||||||
registerEmailInput.text = "";
|
|
||||||
registerRetypeEmailInput.text = "";
|
|
||||||
registerPasswordInput.text = "";
|
|
||||||
registerRetypePasswordInput.text = "";
|
|
||||||
registerVerifyCodeInput.text = "";
|
|
||||||
registerPanelStatusText.text = "";
|
|
||||||
}
|
}
|
||||||
|
if (registerPasswordInput.text != registerRetypePasswordInput.text) {
|
||||||
async void SubmitRegister() {
|
Tools.UpdateStatusText(registerPanelStatusText, "Passwords don't match", Color.red);
|
||||||
if (
|
return;
|
||||||
registerUsernameInput.text == string.Empty ||
|
|
||||||
registerEmailInput.text == string.Empty ||
|
|
||||||
registerRetypeEmailInput.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 (registerEmailInput.text != registerRetypeEmailInput.text) {
|
|
||||||
Tools.UpdateStatusText(registerPanelStatusText, "Emails don't match", Color.red);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (registerPasswordInput.text != registerRetypePasswordInput.text) {
|
|
||||||
Tools.UpdateStatusText(registerPanelStatusText, "Passwords don't match", Color.red);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
registerBackButton.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) {
|
|
||||||
registerBackButton.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);
|
|
||||||
}
|
|
||||||
registerBackButton.interactable = true;
|
|
||||||
registerSubmitButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
registerBackButton.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) {
|
||||||
|
registerBackButton.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);
|
||||||
|
}
|
||||||
|
registerBackButton.interactable = true;
|
||||||
|
registerSubmitButton.interactable = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+337
-337
@@ -13,359 +13,359 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class ChatroomMenu : MonoBehaviour {
|
public class ChatroomMenu : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text statusText;
|
[SerializeField] private TMP_Text statusText;
|
||||||
[SerializeField] private Button backButton;
|
[SerializeField] private Button backButton;
|
||||||
[SerializeField] private Button sendButton;
|
[SerializeField] private Button sendButton;
|
||||||
[SerializeField] private TMP_InputField messageInputField;
|
[SerializeField] private TMP_InputField messageInputField;
|
||||||
[SerializeField] private GameObject content;
|
[SerializeField] private GameObject content;
|
||||||
[SerializeField] private GameObject sampleObject;
|
[SerializeField] private GameObject sampleObject;
|
||||||
[SerializeField] private Button downButton;
|
[SerializeField] private Button downButton;
|
||||||
[SerializeField] private ProfileMenu profilePrefab;
|
[SerializeField] private ProfileMenu profilePrefab;
|
||||||
|
|
||||||
[SerializeField] private GameObject optionsPanel;
|
[SerializeField] private GameObject optionsPanel;
|
||||||
[SerializeField] private Button optionsPanelExitButton;
|
[SerializeField] private Button optionsPanelExitButton;
|
||||||
[SerializeField] private Button optionsPanelDeleteButton;
|
[SerializeField] private Button optionsPanelDeleteButton;
|
||||||
[SerializeField] private Button optionsPanelEditButton;
|
[SerializeField] private Button optionsPanelEditButton;
|
||||||
[SerializeField] private Button optionsPanelReportButton;
|
[SerializeField] private Button optionsPanelReportButton;
|
||||||
[SerializeField] private Button optionsPanelCopyButton;
|
[SerializeField] private Button optionsPanelCopyButton;
|
||||||
private ChatroomMessage selectedMessageForOptions;
|
private ChatroomMessage selectedMessageForOptions;
|
||||||
|
|
||||||
[SerializeField] private GameObject editMessagePanelSample;
|
[SerializeField] private GameObject editMessagePanelSample;
|
||||||
private GameObject editMessagePanelCurrent;
|
private GameObject editMessagePanelCurrent;
|
||||||
|
|
||||||
[SerializeField] private GameObject reportMessagePanel;
|
[SerializeField] private GameObject reportMessagePanel;
|
||||||
[SerializeField] private Button reportMessagePanelExitButton;
|
[SerializeField] private Button reportMessagePanelExitButton;
|
||||||
[SerializeField] private Button reportMessagePanelSubmitButton;
|
[SerializeField] private Button reportMessagePanelSubmitButton;
|
||||||
[SerializeField] private TMP_InputField reportMessagePanelReportReason;
|
[SerializeField] private TMP_InputField reportMessagePanelReportReason;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
messageInputField.onSelect.AddListener((_) => messageInputField.caretPosition = messageInputField.text.Length);
|
messageInputField.onSelect.AddListener((_) => messageInputField.caretPosition = messageInputField.text.Length);
|
||||||
reportMessagePanelReportReason.onSelect.AddListener((_) => reportMessagePanelReportReason.caretPosition = reportMessagePanelReportReason.text.Length);
|
reportMessagePanelReportReason.onSelect.AddListener((_) => reportMessagePanelReportReason.caretPosition = reportMessagePanelReportReason.text.Length);
|
||||||
|
|
||||||
WebsocketHandler.Instance._Connection.StateChanged += OnStateChanged;
|
WebsocketHandler.Instance._Connection.StateChanged += OnStateChanged;
|
||||||
WebsocketHandler.Instance._Connection.MessageReceived += OnMessageReceived;
|
WebsocketHandler.Instance._Connection.MessageReceived += OnMessageReceived;
|
||||||
if (WebsocketHandler.Instance._Connection.State == WebSocketState.Connected) {
|
if (WebsocketHandler.Instance._Connection.State == WebSocketState.Connected) {
|
||||||
statusText.text = "Loading messages";
|
statusText.text = "Loading messages";
|
||||||
RequestInfoMessage msg = new() {
|
RequestInfoMessage msg = new() {
|
||||||
kind = "chatroom_messages"
|
kind = "chatroom_messages"
|
||||||
};
|
};
|
||||||
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void OnStateChanged(WebSocketConnection connection, WebSocketState oldState, WebSocketState newState) {
|
private void OnStateChanged(WebSocketConnection connection, WebSocketState oldState, WebSocketState newState) {
|
||||||
if (newState == WebSocketState.Connected) {
|
if (newState == WebSocketState.Connected) {
|
||||||
statusText.text = "Loading messages";
|
statusText.text = "Loading messages";
|
||||||
RequestInfoMessage msg = new() {
|
RequestInfoMessage msg = new() {
|
||||||
kind = "chatroom_messages"
|
kind = "chatroom_messages"
|
||||||
};
|
};
|
||||||
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void OnMessageReceived(WebSocketConnection connection, WebSocketMessage message) {
|
private void OnMessageReceived(WebSocketConnection connection, WebSocketMessage message) {
|
||||||
if (message.String != null && connection.State == WebSocketState.Connected) {
|
if (message.String != null && connection.State == WebSocketState.Connected) {
|
||||||
JToken data = JToken.Parse(message.String);
|
JToken data = JToken.Parse(message.String);
|
||||||
if (data["for"] != null) {
|
if (data["for"] != null) {
|
||||||
if (data["for"].ToString() == "info_request:chatroom_messages") {
|
if (data["for"].ToString() == "info_request:chatroom_messages") {
|
||||||
var userId = BazookaManager.Instance.GetAccountID();
|
var userId = BazookaManager.Instance.GetAccountID();
|
||||||
foreach (Transform item in content.transform) {
|
foreach (Transform item in content.transform) {
|
||||||
if (!item.gameObject.activeSelf) continue;
|
if (!item.gameObject.activeSelf) continue;
|
||||||
Destroy(item.gameObject);
|
Destroy(item.gameObject);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
foreach (var chatMessage in data["data"].ToObject<ChatroomMessage[]>()) {
|
foreach (var chatMessage in data["data"].ToObject<ChatroomMessage[]>()) {
|
||||||
InsertMessage(chatMessage, userId);
|
InsertMessage(chatMessage, userId);
|
||||||
}
|
}
|
||||||
statusText.text = "";
|
statusText.text = "";
|
||||||
StartCoroutine(ScrollToBottom());
|
StartCoroutine(ScrollToBottom());
|
||||||
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
||||||
} else if (data["for"].ToString() == "upload:chatroom_message") {
|
} else if (data["for"].ToString() == "upload:chatroom_message") {
|
||||||
var userId = BazookaManager.Instance.GetAccountID();
|
var userId = BazookaManager.Instance.GetAccountID();
|
||||||
var chatMessage = data["data"].ToObject<ChatroomMessage>();
|
var chatMessage = data["data"].ToObject<ChatroomMessage>();
|
||||||
Destroy(content.transform.GetChild(1).gameObject);
|
Destroy(content.transform.GetChild(1).gameObject);
|
||||||
InsertMessage(chatMessage, userId);
|
InsertMessage(chatMessage, userId);
|
||||||
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
||||||
} else if (data["for"].ToString() == "delete:chatroom_message") {
|
} else if (data["for"].ToString() == "delete:chatroom_message") {
|
||||||
Destroy(content.transform.Find("ChatroomRow_" + data["data"]["id"].ToString() ?? "").gameObject);
|
Destroy(content.transform.Find("ChatroomRow_" + data["data"]["id"].ToString() ?? "").gameObject);
|
||||||
if (data["data"]["fillerMessage"].ToString() != null) {
|
if (data["data"]["fillerMessage"].ToString() != null) {
|
||||||
var userId = BazookaManager.Instance.GetAccountID();
|
var userId = BazookaManager.Instance.GetAccountID();
|
||||||
var chatMessage = data["data"]["fillerMessage"].ToObject<ChatroomMessage>();
|
var chatMessage = data["data"]["fillerMessage"].ToObject<ChatroomMessage>();
|
||||||
var row = InsertMessage(chatMessage, userId);
|
var row = InsertMessage(chatMessage, userId);
|
||||||
row.transform.SetSiblingIndex(1);
|
row.transform.SetSiblingIndex(1);
|
||||||
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
|
||||||
}
|
|
||||||
} else if (data["for"].ToString() == "edit:chatroom_message") {
|
|
||||||
if (data["data"]["newContent"].ToString() != null) {
|
|
||||||
var rowInfo = content.transform.Find("ChatroomRow_" + data["data"]["id"].ToString());
|
|
||||||
var usernameText = rowInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
|
||||||
if (!usernameText.text.EndsWith(">(edited)</color>")) {
|
|
||||||
var color = BazookaManager.Instance.GetColorSettingText();
|
|
||||||
string hex = new Color((((float)color[0]) - 100f) / 255f, (((float)color[1]) - 100f) / 255f, (((float)color[2]) - 100f) / 255f).ToHexString();
|
|
||||||
rowInfo.transform.GetChild(0).GetComponent<TMP_Text>().text += $" <color=#{hex}>(edited)</color>";
|
|
||||||
}
|
|
||||||
rowInfo.transform.GetChild(2).GetComponent<TMP_Text>().text = data["data"]["newContent"].ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
GameObject InsertMessage(ChatroomMessage message, BigInteger? localUserId) {
|
|
||||||
var obj = content.transform.Find("ChatroomRow_" + message.ID);
|
|
||||||
|
|
||||||
var rowInfo = Instantiate(sampleObject, content.transform);
|
|
||||||
rowInfo.transform.SetSiblingIndex(content.transform.childCount - 1);
|
|
||||||
var usernameText = rowInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
|
||||||
var playerIcon = rowInfo.transform.GetChild(1).GetComponent<Image>();
|
|
||||||
var playerOverlayIcon = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
var playerIconButton = rowInfo.transform.GetChild(1).GetComponent<Button>();
|
|
||||||
var messageText = rowInfo.transform.GetChild(2).GetComponent<TMP_Text>();
|
|
||||||
var optionsButton = rowInfo.transform.GetChild(3).GetComponent<Button>();
|
|
||||||
|
|
||||||
var color = BazookaManager.Instance.GetColorSettingText();
|
|
||||||
string hex1 = new Color((((float)color[0]) - 50f) / 255f, (((float)color[1]) - 50f) / 255f, (((float)color[2]) - 50f) / 255f).ToHexString();
|
|
||||||
string hex2 = new Color((((float)color[0]) - 100f) / 255f, (((float)color[1]) - 100f) / 255f, (((float)color[2]) - 100f) / 255f).ToHexString();
|
|
||||||
|
|
||||||
usernameText.text = $"{message.Username} <color=#{hex1}>{Tools.FormatHumanTime(message.Timestamp)}</color>" + (message.EditedAt != 0 ? $" <color=#{hex2}>(edited)</color>" : null);
|
|
||||||
messageText.text = message.Content;
|
|
||||||
if (message.CustomIcon == null) {
|
|
||||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + message.Icon);
|
|
||||||
if (message.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(message.UserID);
|
|
||||||
playerOverlayIcon.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + message.Overlay);
|
|
||||||
if (message.Overlay != 0) playerOverlayIcon.gameObject.SetActive(true);
|
|
||||||
if (message.Overlay == 8) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
|
|
||||||
else if (message.Overlay == 11) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
|
|
||||||
else if (message.Overlay == 13) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
|
|
||||||
try {
|
|
||||||
playerIcon.color = new Color(message.BirdColor[0] / 255f, message.BirdColor[1] / 255f, message.BirdColor[2] / 255f);
|
|
||||||
playerOverlayIcon.color = new Color(message.OverlayColor[0] / 255f, message.OverlayColor[1] / 255f, message.OverlayColor[2] / 255f);
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
playerIcon.color = Color.white;
|
|
||||||
playerOverlayIcon.color = Color.white;
|
|
||||||
}
|
|
||||||
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = message.CustomIcon;
|
|
||||||
playerIconButton.onClick.AddListener(async () => {
|
|
||||||
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
|
||||||
clone.SetActive(true);
|
|
||||||
await clone.GetComponent<ProfileMenu>().Init(message.UserID);
|
|
||||||
});
|
|
||||||
optionsButton.onClick.AddListener(() => OptionsButtonClick(message, localUserId ?? 0));
|
|
||||||
rowInfo.name = "ChatroomRow_" + message.ID;
|
|
||||||
var entryComponet = rowInfo.AddComponent<ChatroomMenuEntry>();
|
|
||||||
entryComponet.Init(optionsButton);
|
|
||||||
rowInfo.SetActive(true);
|
|
||||||
return rowInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnDestroy() {
|
|
||||||
WebsocketHandler.Instance._Connection.StateChanged -= OnStateChanged;
|
|
||||||
WebsocketHandler.Instance._Connection.MessageReceived -= OnMessageReceived;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Start() {
|
|
||||||
reportMessagePanelReportReason.transform.GetChild(0).GetChild(1).GetComponent<TMP_Text>().textWrappingMode = TextWrappingModes.Normal;
|
|
||||||
if (BazookaManager.Instance.GetAccountID() == null || BazookaManager.Instance.GetAccountName() == null || BazookaManager.Instance.GetAccountSession() == null) {
|
|
||||||
sendButton.interactable = false;
|
|
||||||
messageInputField.interactable = false;
|
|
||||||
}
|
|
||||||
sendButton.onClick.AddListener(HandleMessageSubmit);
|
|
||||||
downButton.onClick.AddListener(() => StartCoroutine(ScrollToBottom()));
|
|
||||||
messageInputField.textComponent.textWrappingMode = TextWrappingModes.Normal;
|
|
||||||
messageInputField.onSubmit.AddListener(_ => HandleMessageSubmit());
|
|
||||||
|
|
||||||
optionsPanelExitButton.onClick.AddListener(() => {
|
|
||||||
optionsPanel.SetActive(false);
|
|
||||||
selectedMessageForOptions = null;
|
|
||||||
});
|
|
||||||
optionsPanelDeleteButton.onClick.AddListener(() => { if (selectedMessageForOptions != null) HandleMessageDelete(); });
|
|
||||||
optionsPanelDeleteButton.onClick.AddListener(optionsPanelExitButton.onClick.Invoke);
|
|
||||||
optionsPanelEditButton.onClick.AddListener(() => {
|
|
||||||
var editMessage = Instantiate(editMessagePanelSample, editMessagePanelSample.transform.parent);
|
|
||||||
editMessagePanelCurrent = editMessage;
|
|
||||||
var editMessageChild = editMessage.transform.GetChild(0);
|
|
||||||
var editMessageChildExitButton = editMessageChild.GetChild(0).GetComponent<Button>();
|
|
||||||
var editMessageChildSubmitButton = editMessageChild.GetChild(1).GetComponent<Button>();
|
|
||||||
var editMessageChildOriginalPreview = editMessageChild.GetChild(2).gameObject;
|
|
||||||
var editMessageChildEditedPreview = editMessageChild.GetChild(3).gameObject;
|
|
||||||
var editMessageChildNewContentInputBox = editMessageChild.GetChild(4).GetComponent<TMP_InputField>();
|
|
||||||
editMessageChildNewContentInputBox.onSelect.AddListener((_) => editMessageChildNewContentInputBox.caretPosition = editMessageChildNewContentInputBox.text.Length);
|
|
||||||
editMessageChildNewContentInputBox.text = selectedMessageForOptions.Content;
|
|
||||||
editMessageChildExitButton.onClick.AddListener(() => {
|
|
||||||
editMessagePanelCurrent = null;
|
|
||||||
Destroy(editMessage);
|
|
||||||
optionsPanel.SetActive(true);
|
|
||||||
});
|
|
||||||
editMessageChildSubmitButton.onClick.AddListener(() => {
|
|
||||||
HandleMessageEdit();
|
|
||||||
editMessagePanelCurrent = null;
|
|
||||||
Destroy(editMessage);
|
|
||||||
selectedMessageForOptions = null;
|
|
||||||
});
|
|
||||||
|
|
||||||
var rowInfo = editMessageChild.GetChild(2);
|
|
||||||
var usernameText = rowInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
|
||||||
var playerIcon = rowInfo.transform.GetChild(2).GetComponent<Image>();
|
|
||||||
var playerOverlayIcon = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
var messageText = rowInfo.transform.GetChild(3).GetComponent<TMP_Text>();
|
|
||||||
|
|
||||||
usernameText.text = selectedMessageForOptions.Username;
|
|
||||||
messageText.text = selectedMessageForOptions.Content;
|
|
||||||
if (selectedMessageForOptions.CustomIcon == null) {
|
|
||||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + selectedMessageForOptions.Icon);
|
|
||||||
if (selectedMessageForOptions.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID);
|
|
||||||
playerOverlayIcon.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay);
|
|
||||||
if (selectedMessageForOptions.Overlay != 0) playerOverlayIcon.gameObject.SetActive(true);
|
|
||||||
if (selectedMessageForOptions.Overlay == 8) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
|
|
||||||
else if (selectedMessageForOptions.Overlay == 11) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
|
|
||||||
else if (selectedMessageForOptions.Overlay == 13) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
|
|
||||||
try {
|
|
||||||
playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f);
|
|
||||||
playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f);
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
playerIcon.color = Color.white;
|
|
||||||
playerOverlayIcon.color = Color.white;
|
|
||||||
}
|
|
||||||
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = selectedMessageForOptions.CustomIcon;
|
|
||||||
|
|
||||||
rowInfo = editMessageChild.GetChild(3);
|
|
||||||
usernameText = rowInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
|
||||||
playerIcon = rowInfo.transform.GetChild(2).GetComponent<Image>();
|
|
||||||
playerOverlayIcon = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
messageText = rowInfo.transform.GetChild(3).GetComponent<TMP_Text>();
|
|
||||||
|
|
||||||
usernameText.text = selectedMessageForOptions.Username;
|
|
||||||
messageText.text = selectedMessageForOptions.Content;
|
|
||||||
editMessageChildNewContentInputBox.onValueChanged.AddListener((value) => messageText.text = value);
|
|
||||||
if (selectedMessageForOptions.CustomIcon == null) {
|
|
||||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + selectedMessageForOptions.Icon);
|
|
||||||
if (selectedMessageForOptions.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID);
|
|
||||||
playerOverlayIcon.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay);
|
|
||||||
if (selectedMessageForOptions.Overlay != 0) playerOverlayIcon.gameObject.SetActive(true);
|
|
||||||
if (selectedMessageForOptions.Overlay == 8) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
|
|
||||||
else if (selectedMessageForOptions.Overlay == 11) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
|
|
||||||
else if (selectedMessageForOptions.Overlay == 13) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
|
|
||||||
try {
|
|
||||||
playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f);
|
|
||||||
playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f);
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
playerIcon.color = Color.white;
|
|
||||||
playerOverlayIcon.color = Color.white;
|
|
||||||
}
|
|
||||||
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = selectedMessageForOptions.CustomIcon;
|
|
||||||
|
|
||||||
optionsPanel.SetActive(false);
|
|
||||||
editMessage.SetActive(true);
|
|
||||||
|
|
||||||
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
||||||
});
|
}
|
||||||
optionsPanelReportButton.onClick.AddListener(() => {
|
} else if (data["for"].ToString() == "edit:chatroom_message") {
|
||||||
reportMessagePanelReportReason.text = "";
|
if (data["data"]["newContent"].ToString() != null) {
|
||||||
optionsPanel.SetActive(false);
|
var rowInfo = content.transform.Find("ChatroomRow_" + data["data"]["id"].ToString());
|
||||||
reportMessagePanel.SetActive(true);
|
var usernameText = rowInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||||
});
|
if (!usernameText.text.EndsWith(">(edited)</color>")) {
|
||||||
reportMessagePanelExitButton.onClick.AddListener(() => {
|
var color = BazookaManager.Instance.GetColorSettingText();
|
||||||
editMessagePanelCurrent = null;
|
string hex = new Color((((float)color[0]) - 100f) / 255f, (((float)color[1]) - 100f) / 255f, (((float)color[2]) - 100f) / 255f).ToHexString();
|
||||||
reportMessagePanel.SetActive(false);
|
rowInfo.transform.GetChild(0).GetComponent<TMP_Text>().text += $" <color=#{hex}>(edited)</color>";
|
||||||
optionsPanel.SetActive(true);
|
|
||||||
});
|
|
||||||
reportMessagePanelSubmitButton.onClick.AddListener(async () => {
|
|
||||||
reportMessagePanel.SetActive(false);
|
|
||||||
await HandleMessageReport();
|
|
||||||
editMessagePanelCurrent = null;
|
|
||||||
selectedMessageForOptions = null;
|
|
||||||
});
|
|
||||||
optionsPanelCopyButton.onClick.AddListener(() => {
|
|
||||||
if (selectedMessageForOptions != null) GUIUtility.systemCopyBuffer = selectedMessageForOptions.Content;
|
|
||||||
});
|
|
||||||
optionsPanelCopyButton.onClick.AddListener(optionsPanelExitButton.onClick.Invoke);
|
|
||||||
}
|
|
||||||
|
|
||||||
void HandleMessageSubmit() {
|
|
||||||
if (messageInputField.text.Trim() == string.Empty) return;
|
|
||||||
sendButton.interactable = false;
|
|
||||||
backButton.interactable = false;
|
|
||||||
messageInputField.interactable = false;
|
|
||||||
UploadMessage msg = new() {
|
|
||||||
kind = "chatroom_message",
|
|
||||||
data = new JObject() {
|
|
||||||
["content"] = messageInputField.text,
|
|
||||||
["auth"] = BazookaManager.Instance.GetAccountSession()
|
|
||||||
}
|
}
|
||||||
};
|
rowInfo.transform.GetChild(2).GetComponent<TMP_Text>().text = data["data"]["newContent"].ToString();
|
||||||
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonConvert.SerializeObject(msg));
|
}
|
||||||
sendButton.interactable = true;
|
|
||||||
backButton.interactable = true;
|
|
||||||
messageInputField.text = string.Empty;
|
|
||||||
messageInputField.interactable = true;
|
|
||||||
StartCoroutine(ScrollToBottom());
|
|
||||||
}
|
|
||||||
|
|
||||||
void HandleMessageDelete() {
|
|
||||||
DeleteMessage msg = new() {
|
|
||||||
kind = "chatroom_message",
|
|
||||||
data = new JObject() {
|
|
||||||
["id"] = (int)selectedMessageForOptions.ID,
|
|
||||||
["auth"] = BazookaManager.Instance.GetAccountSession()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonConvert.SerializeObject(msg));
|
|
||||||
StartCoroutine(ScrollToBottom());
|
|
||||||
}
|
|
||||||
|
|
||||||
void HandleMessageEdit() {
|
|
||||||
var newContent = editMessagePanelCurrent.transform.GetChild(0).GetChild(4).GetComponent<TMP_InputField>().text;
|
|
||||||
selectedMessageForOptions.Content = newContent;
|
|
||||||
EditMessage msg = new() {
|
|
||||||
kind = "chatroom_message",
|
|
||||||
data = new JObject() {
|
|
||||||
["id"] = (int)selectedMessageForOptions.ID,
|
|
||||||
["newContent"] = newContent,
|
|
||||||
["auth"] = BazookaManager.Instance.GetAccountSession()
|
|
||||||
}
|
|
||||||
};
|
|
||||||
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonConvert.SerializeObject(msg));
|
|
||||||
StartCoroutine(ScrollToBottom());
|
|
||||||
}
|
|
||||||
|
|
||||||
async Task HandleMessageReport() {
|
|
||||||
WWWForm dataForm = new();
|
|
||||||
dataForm.AddField("id", selectedMessageForOptions.ID.ToString());
|
|
||||||
dataForm.AddField("reason", reportMessagePanelReportReason.text);
|
|
||||||
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.CHATROOM_REPORT_MESSAGE_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();
|
|
||||||
StartCoroutine(ScrollToBottom());
|
|
||||||
}
|
|
||||||
|
|
||||||
async void Update() {
|
|
||||||
var max = content.GetComponent<RectTransform>().sizeDelta.y;
|
|
||||||
var current = content.transform.localPosition.y;
|
|
||||||
downButton.gameObject.SetActive(Mathf.Abs(max - current) > 0.1f * max);
|
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame && FindFirstObjectByType<ProfileMenu>() == null) {
|
|
||||||
if (optionsPanel.activeSelf) optionsPanelExitButton.onClick.Invoke();
|
|
||||||
else if (reportMessagePanel.activeSelf) reportMessagePanelExitButton.onClick.Invoke();
|
|
||||||
else if (editMessagePanelCurrent != null) editMessagePanelCurrent.transform.GetChild(0).GetChild(0).GetComponent<Button>().onClick.Invoke();
|
|
||||||
else await SceneManager.LoadSceneAsync("MainMenu");
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
IEnumerator ScrollToBottom() {
|
GameObject InsertMessage(ChatroomMessage message, BigInteger? localUserId) {
|
||||||
yield return new WaitForEndOfFrame();
|
var obj = content.transform.Find("ChatroomRow_" + message.ID);
|
||||||
content.transform.localPosition = new UnityEngine.Vector2(0f, content.GetComponent<RectTransform>().sizeDelta.y);
|
|
||||||
|
var rowInfo = Instantiate(sampleObject, content.transform);
|
||||||
|
rowInfo.transform.SetSiblingIndex(content.transform.childCount - 1);
|
||||||
|
var usernameText = rowInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||||
|
var playerIcon = rowInfo.transform.GetChild(1).GetComponent<Image>();
|
||||||
|
var playerOverlayIcon = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
var playerIconButton = rowInfo.transform.GetChild(1).GetComponent<Button>();
|
||||||
|
var messageText = rowInfo.transform.GetChild(2).GetComponent<TMP_Text>();
|
||||||
|
var optionsButton = rowInfo.transform.GetChild(3).GetComponent<Button>();
|
||||||
|
|
||||||
|
var color = BazookaManager.Instance.GetColorSettingText();
|
||||||
|
string hex1 = new Color((((float)color[0]) - 50f) / 255f, (((float)color[1]) - 50f) / 255f, (((float)color[2]) - 50f) / 255f).ToHexString();
|
||||||
|
string hex2 = new Color((((float)color[0]) - 100f) / 255f, (((float)color[1]) - 100f) / 255f, (((float)color[2]) - 100f) / 255f).ToHexString();
|
||||||
|
|
||||||
|
usernameText.text = $"{message.Username} <color=#{hex1}>{Tools.FormatHumanTime(message.Timestamp)}</color>" + (message.EditedAt != 0 ? $" <color=#{hex2}>(edited)</color>" : null);
|
||||||
|
messageText.text = message.Content;
|
||||||
|
if (message.CustomIcon == null) {
|
||||||
|
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + message.Icon);
|
||||||
|
if (message.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(message.UserID);
|
||||||
|
playerOverlayIcon.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + message.Overlay);
|
||||||
|
if (message.Overlay != 0) playerOverlayIcon.gameObject.SetActive(true);
|
||||||
|
if (message.Overlay == 8) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
|
||||||
|
else if (message.Overlay == 11) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
|
||||||
|
else if (message.Overlay == 13) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
|
||||||
|
try {
|
||||||
|
playerIcon.color = new Color(message.BirdColor[0] / 255f, message.BirdColor[1] / 255f, message.BirdColor[2] / 255f);
|
||||||
|
playerOverlayIcon.color = new Color(message.OverlayColor[0] / 255f, message.OverlayColor[1] / 255f, message.OverlayColor[2] / 255f);
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
playerIcon.color = Color.white;
|
||||||
|
playerOverlayIcon.color = Color.white;
|
||||||
|
}
|
||||||
|
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = message.CustomIcon;
|
||||||
|
playerIconButton.onClick.AddListener(async () => {
|
||||||
|
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
||||||
|
clone.SetActive(true);
|
||||||
|
await clone.GetComponent<ProfileMenu>().Init(message.UserID);
|
||||||
|
});
|
||||||
|
optionsButton.onClick.AddListener(() => OptionsButtonClick(message, localUserId ?? 0));
|
||||||
|
rowInfo.name = "ChatroomRow_" + message.ID;
|
||||||
|
var entryComponet = rowInfo.AddComponent<ChatroomMenuEntry>();
|
||||||
|
entryComponet.Init(optionsButton);
|
||||||
|
rowInfo.SetActive(true);
|
||||||
|
return rowInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDestroy() {
|
||||||
|
WebsocketHandler.Instance._Connection.StateChanged -= OnStateChanged;
|
||||||
|
WebsocketHandler.Instance._Connection.MessageReceived -= OnMessageReceived;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Start() {
|
||||||
|
reportMessagePanelReportReason.transform.GetChild(0).GetChild(1).GetComponent<TMP_Text>().textWrappingMode = TextWrappingModes.Normal;
|
||||||
|
if (BazookaManager.Instance.GetAccountID() == null || BazookaManager.Instance.GetAccountName() == null || BazookaManager.Instance.GetAccountSession() == null) {
|
||||||
|
sendButton.interactable = false;
|
||||||
|
messageInputField.interactable = false;
|
||||||
}
|
}
|
||||||
|
sendButton.onClick.AddListener(HandleMessageSubmit);
|
||||||
|
downButton.onClick.AddListener(() => StartCoroutine(ScrollToBottom()));
|
||||||
|
messageInputField.textComponent.textWrappingMode = TextWrappingModes.Normal;
|
||||||
|
messageInputField.onSubmit.AddListener(_ => HandleMessageSubmit());
|
||||||
|
|
||||||
void OptionsButtonClick(ChatroomMessage message, BigInteger localUserId) {
|
optionsPanelExitButton.onClick.AddListener(() => {
|
||||||
selectedMessageForOptions = message;
|
optionsPanel.SetActive(false);
|
||||||
optionsPanelDeleteButton.transform.parent.gameObject.SetActive(localUserId != 0 && message.UserID == localUserId);
|
selectedMessageForOptions = null;
|
||||||
optionsPanelEditButton.transform.parent.gameObject.SetActive(localUserId != 0 && message.UserID == localUserId);
|
});
|
||||||
optionsPanelReportButton.transform.parent.gameObject.SetActive(localUserId != 0 && message.UserID != localUserId);
|
optionsPanelDeleteButton.onClick.AddListener(() => { if (selectedMessageForOptions != null) HandleMessageDelete(); });
|
||||||
|
optionsPanelDeleteButton.onClick.AddListener(optionsPanelExitButton.onClick.Invoke);
|
||||||
|
optionsPanelEditButton.onClick.AddListener(() => {
|
||||||
|
var editMessage = Instantiate(editMessagePanelSample, editMessagePanelSample.transform.parent);
|
||||||
|
editMessagePanelCurrent = editMessage;
|
||||||
|
var editMessageChild = editMessage.transform.GetChild(0);
|
||||||
|
var editMessageChildExitButton = editMessageChild.GetChild(0).GetComponent<Button>();
|
||||||
|
var editMessageChildSubmitButton = editMessageChild.GetChild(1).GetComponent<Button>();
|
||||||
|
var editMessageChildOriginalPreview = editMessageChild.GetChild(2).gameObject;
|
||||||
|
var editMessageChildEditedPreview = editMessageChild.GetChild(3).gameObject;
|
||||||
|
var editMessageChildNewContentInputBox = editMessageChild.GetChild(4).GetComponent<TMP_InputField>();
|
||||||
|
editMessageChildNewContentInputBox.onSelect.AddListener((_) => editMessageChildNewContentInputBox.caretPosition = editMessageChildNewContentInputBox.text.Length);
|
||||||
|
editMessageChildNewContentInputBox.text = selectedMessageForOptions.Content;
|
||||||
|
editMessageChildExitButton.onClick.AddListener(() => {
|
||||||
|
editMessagePanelCurrent = null;
|
||||||
|
Destroy(editMessage);
|
||||||
optionsPanel.SetActive(true);
|
optionsPanel.SetActive(true);
|
||||||
|
});
|
||||||
|
editMessageChildSubmitButton.onClick.AddListener(() => {
|
||||||
|
HandleMessageEdit();
|
||||||
|
editMessagePanelCurrent = null;
|
||||||
|
Destroy(editMessage);
|
||||||
|
selectedMessageForOptions = null;
|
||||||
|
});
|
||||||
|
|
||||||
|
var rowInfo = editMessageChild.GetChild(2);
|
||||||
|
var usernameText = rowInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
||||||
|
var playerIcon = rowInfo.transform.GetChild(2).GetComponent<Image>();
|
||||||
|
var playerOverlayIcon = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
var messageText = rowInfo.transform.GetChild(3).GetComponent<TMP_Text>();
|
||||||
|
|
||||||
|
usernameText.text = selectedMessageForOptions.Username;
|
||||||
|
messageText.text = selectedMessageForOptions.Content;
|
||||||
|
if (selectedMessageForOptions.CustomIcon == null) {
|
||||||
|
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + selectedMessageForOptions.Icon);
|
||||||
|
if (selectedMessageForOptions.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID);
|
||||||
|
playerOverlayIcon.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay);
|
||||||
|
if (selectedMessageForOptions.Overlay != 0) playerOverlayIcon.gameObject.SetActive(true);
|
||||||
|
if (selectedMessageForOptions.Overlay == 8) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
|
||||||
|
else if (selectedMessageForOptions.Overlay == 11) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
|
||||||
|
else if (selectedMessageForOptions.Overlay == 13) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
|
||||||
|
try {
|
||||||
|
playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f);
|
||||||
|
playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f);
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
playerIcon.color = Color.white;
|
||||||
|
playerOverlayIcon.color = Color.white;
|
||||||
|
}
|
||||||
|
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = selectedMessageForOptions.CustomIcon;
|
||||||
|
|
||||||
|
rowInfo = editMessageChild.GetChild(3);
|
||||||
|
usernameText = rowInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
||||||
|
playerIcon = rowInfo.transform.GetChild(2).GetComponent<Image>();
|
||||||
|
playerOverlayIcon = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
messageText = rowInfo.transform.GetChild(3).GetComponent<TMP_Text>();
|
||||||
|
|
||||||
|
usernameText.text = selectedMessageForOptions.Username;
|
||||||
|
messageText.text = selectedMessageForOptions.Content;
|
||||||
|
editMessageChildNewContentInputBox.onValueChanged.AddListener((value) => messageText.text = value);
|
||||||
|
if (selectedMessageForOptions.CustomIcon == null) {
|
||||||
|
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + selectedMessageForOptions.Icon);
|
||||||
|
if (selectedMessageForOptions.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID);
|
||||||
|
playerOverlayIcon.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay);
|
||||||
|
if (selectedMessageForOptions.Overlay != 0) playerOverlayIcon.gameObject.SetActive(true);
|
||||||
|
if (selectedMessageForOptions.Overlay == 8) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
|
||||||
|
else if (selectedMessageForOptions.Overlay == 11) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
|
||||||
|
else if (selectedMessageForOptions.Overlay == 13) playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
|
||||||
|
try {
|
||||||
|
playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f);
|
||||||
|
playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f);
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
playerIcon.color = Color.white;
|
||||||
|
playerOverlayIcon.color = Color.white;
|
||||||
|
}
|
||||||
|
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = selectedMessageForOptions.CustomIcon;
|
||||||
|
|
||||||
|
optionsPanel.SetActive(false);
|
||||||
|
editMessage.SetActive(true);
|
||||||
|
|
||||||
|
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
||||||
|
});
|
||||||
|
optionsPanelReportButton.onClick.AddListener(() => {
|
||||||
|
reportMessagePanelReportReason.text = "";
|
||||||
|
optionsPanel.SetActive(false);
|
||||||
|
reportMessagePanel.SetActive(true);
|
||||||
|
});
|
||||||
|
reportMessagePanelExitButton.onClick.AddListener(() => {
|
||||||
|
editMessagePanelCurrent = null;
|
||||||
|
reportMessagePanel.SetActive(false);
|
||||||
|
optionsPanel.SetActive(true);
|
||||||
|
});
|
||||||
|
reportMessagePanelSubmitButton.onClick.AddListener(async () => {
|
||||||
|
reportMessagePanel.SetActive(false);
|
||||||
|
await HandleMessageReport();
|
||||||
|
editMessagePanelCurrent = null;
|
||||||
|
selectedMessageForOptions = null;
|
||||||
|
});
|
||||||
|
optionsPanelCopyButton.onClick.AddListener(() => {
|
||||||
|
if (selectedMessageForOptions != null) GUIUtility.systemCopyBuffer = selectedMessageForOptions.Content;
|
||||||
|
});
|
||||||
|
optionsPanelCopyButton.onClick.AddListener(optionsPanelExitButton.onClick.Invoke);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleMessageSubmit() {
|
||||||
|
if (messageInputField.text.Trim() == string.Empty) return;
|
||||||
|
sendButton.interactable = false;
|
||||||
|
backButton.interactable = false;
|
||||||
|
messageInputField.interactable = false;
|
||||||
|
UploadMessage msg = new() {
|
||||||
|
kind = "chatroom_message",
|
||||||
|
data = new JObject() {
|
||||||
|
["content"] = messageInputField.text,
|
||||||
|
["auth"] = BazookaManager.Instance.GetAccountSession()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonConvert.SerializeObject(msg));
|
||||||
|
sendButton.interactable = true;
|
||||||
|
backButton.interactable = true;
|
||||||
|
messageInputField.text = string.Empty;
|
||||||
|
messageInputField.interactable = true;
|
||||||
|
StartCoroutine(ScrollToBottom());
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleMessageDelete() {
|
||||||
|
DeleteMessage msg = new() {
|
||||||
|
kind = "chatroom_message",
|
||||||
|
data = new JObject() {
|
||||||
|
["id"] = (int)selectedMessageForOptions.ID,
|
||||||
|
["auth"] = BazookaManager.Instance.GetAccountSession()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonConvert.SerializeObject(msg));
|
||||||
|
StartCoroutine(ScrollToBottom());
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleMessageEdit() {
|
||||||
|
var newContent = editMessagePanelCurrent.transform.GetChild(0).GetChild(4).GetComponent<TMP_InputField>().text;
|
||||||
|
selectedMessageForOptions.Content = newContent;
|
||||||
|
EditMessage msg = new() {
|
||||||
|
kind = "chatroom_message",
|
||||||
|
data = new JObject() {
|
||||||
|
["id"] = (int)selectedMessageForOptions.ID,
|
||||||
|
["newContent"] = newContent,
|
||||||
|
["auth"] = BazookaManager.Instance.GetAccountSession()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonConvert.SerializeObject(msg));
|
||||||
|
StartCoroutine(ScrollToBottom());
|
||||||
|
}
|
||||||
|
|
||||||
|
async Task HandleMessageReport() {
|
||||||
|
WWWForm dataForm = new();
|
||||||
|
dataForm.AddField("id", selectedMessageForOptions.ID.ToString());
|
||||||
|
dataForm.AddField("reason", reportMessagePanelReportReason.text);
|
||||||
|
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.CHATROOM_REPORT_MESSAGE_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();
|
||||||
|
StartCoroutine(ScrollToBottom());
|
||||||
|
}
|
||||||
|
|
||||||
|
async void Update() {
|
||||||
|
var max = content.GetComponent<RectTransform>().sizeDelta.y;
|
||||||
|
var current = content.transform.localPosition.y;
|
||||||
|
downButton.gameObject.SetActive(Mathf.Abs(max - current) > 0.1f * max);
|
||||||
|
if (Keyboard.current.escapeKey.wasPressedThisFrame && FindFirstObjectByType<ProfileMenu>() == null) {
|
||||||
|
if (optionsPanel.activeSelf) optionsPanelExitButton.onClick.Invoke();
|
||||||
|
else if (reportMessagePanel.activeSelf) reportMessagePanelExitButton.onClick.Invoke();
|
||||||
|
else if (editMessagePanelCurrent != null) editMessagePanelCurrent.transform.GetChild(0).GetChild(0).GetComponent<Button>().onClick.Invoke();
|
||||||
|
else await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator ScrollToBottom() {
|
||||||
|
yield return new WaitForEndOfFrame();
|
||||||
|
content.transform.localPosition = new UnityEngine.Vector2(0f, content.GetComponent<RectTransform>().sizeDelta.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OptionsButtonClick(ChatroomMessage message, BigInteger localUserId) {
|
||||||
|
selectedMessageForOptions = message;
|
||||||
|
optionsPanelDeleteButton.transform.parent.gameObject.SetActive(localUserId != 0 && message.UserID == localUserId);
|
||||||
|
optionsPanelEditButton.transform.parent.gameObject.SetActive(localUserId != 0 && message.UserID == localUserId);
|
||||||
|
optionsPanelReportButton.transform.parent.gameObject.SetActive(localUserId != 0 && message.UserID != localUserId);
|
||||||
|
optionsPanel.SetActive(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -3,64 +3,64 @@ using UnityEngine.EventSystems;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class ChatroomMenuEntry : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler {
|
public class ChatroomMenuEntry : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler {
|
||||||
private Button optionsButton;
|
private Button optionsButton;
|
||||||
private static ChatroomMenuEntry activeEntry;
|
private static ChatroomMenuEntry activeEntry;
|
||||||
|
|
||||||
public void Init(Button optionsButtonArg) {
|
public void Init(Button optionsButtonArg) {
|
||||||
optionsButton = optionsButtonArg;
|
optionsButton = optionsButtonArg;
|
||||||
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
||||||
gameObject.GetComponent<Image>().color = new Color((((float)color[0]) + 24f) / 255f, (((float)color[1]) + 24f) / 255f, (((float)color[2]) + 24f) / 255f);
|
gameObject.GetComponent<Image>().color = new Color((((float)color[0]) + 24f) / 255f, (((float)color[1]) + 24f) / 255f, (((float)color[2]) + 24f) / 255f);
|
||||||
optionsButton.gameObject.SetActive(false);
|
optionsButton.gameObject.SetActive(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnPointerEnter(PointerEventData e) {
|
public void OnPointerEnter(PointerEventData e) {
|
||||||
if (!Application.isMobilePlatform) {
|
if (!Application.isMobilePlatform) {
|
||||||
if (activeEntry != null && activeEntry != this) {
|
if (activeEntry != null && activeEntry != this) {
|
||||||
activeEntry.Deactivate();
|
activeEntry.Deactivate();
|
||||||
}
|
}
|
||||||
if (activeEntry != this) {
|
if (activeEntry != this) {
|
||||||
Activate();
|
Activate();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void OnPointerExit(PointerEventData e) {
|
public void OnPointerExit(PointerEventData e) {
|
||||||
if (!Application.isMobilePlatform) {
|
if (!Application.isMobilePlatform) {
|
||||||
if (activeEntry != null && activeEntry != this) {
|
if (activeEntry != null && activeEntry != this) {
|
||||||
activeEntry.Deactivate();
|
activeEntry.Deactivate();
|
||||||
}
|
}
|
||||||
if (activeEntry == this) {
|
if (activeEntry == this) {
|
||||||
Deactivate();
|
Deactivate();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void OnPointerClick(PointerEventData e) {
|
public void OnPointerClick(PointerEventData e) {
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
if (activeEntry != null && activeEntry != this) {
|
if (activeEntry != null && activeEntry != this) {
|
||||||
activeEntry.Deactivate();
|
activeEntry.Deactivate();
|
||||||
}
|
}
|
||||||
if (activeEntry == this) {
|
if (activeEntry == this) {
|
||||||
Deactivate();
|
Deactivate();
|
||||||
} else {
|
} else {
|
||||||
Activate();
|
Activate();
|
||||||
}
|
}
|
||||||
} else if (e.button == PointerEventData.InputButton.Right) {
|
} else if (e.button == PointerEventData.InputButton.Right) {
|
||||||
optionsButton.onClick?.Invoke();
|
optionsButton.onClick?.Invoke();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Activate() {
|
private void Activate() {
|
||||||
activeEntry = this;
|
activeEntry = this;
|
||||||
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
||||||
gameObject.GetComponent<Image>().color = new Color((((float)color[0]) + 36f) / 255f, (((float)color[1]) + 36f) / 255f, (((float)color[2]) + 36f) / 255f);
|
gameObject.GetComponent<Image>().color = new Color((((float)color[0]) + 36f) / 255f, (((float)color[1]) + 36f) / 255f, (((float)color[2]) + 36f) / 255f);
|
||||||
optionsButton.gameObject.SetActive(true);
|
optionsButton.gameObject.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Deactivate() {
|
private void Deactivate() {
|
||||||
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
var color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
||||||
gameObject.GetComponent<Image>().color = new Color((((float)color[0]) + 24f) / 255f, (((float)color[1]) + 24f) / 255f, (((float)color[2]) + 24f) / 255f);
|
gameObject.GetComponent<Image>().color = new Color((((float)color[0]) + 24f) / 255f, (((float)color[1]) + 24f) / 255f, (((float)color[2]) + 24f) / 255f);
|
||||||
optionsButton.gameObject.SetActive(false);
|
optionsButton.gameObject.SetActive(false);
|
||||||
if (activeEntry == this) activeEntry = null;
|
if (activeEntry == this) activeEntry = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,54 +2,54 @@ using UnityEngine;
|
|||||||
|
|
||||||
[RequireComponent(typeof(AudioSource))]
|
[RequireComponent(typeof(AudioSource))]
|
||||||
public class GameMusicHandler : MonoBehaviour {
|
public class GameMusicHandler : MonoBehaviour {
|
||||||
[SerializeField] private AudioClip[] audioClips;
|
[SerializeField] private AudioClip[] audioClips;
|
||||||
private AudioSource audioSource;
|
private AudioSource audioSource;
|
||||||
private int lastIndex = -1;
|
private int lastIndex = -1;
|
||||||
private int currentIndex = 0;
|
private int currentIndex = 0;
|
||||||
private bool isPaused = false;
|
private bool isPaused = false;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
audioSource = GetComponent<AudioSource>();
|
audioSource = GetComponent<AudioSource>();
|
||||||
PlayNextClip();
|
PlayNextClip();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update() {
|
||||||
|
if (!audioSource.isPlaying && !isPaused) PlayNextClip();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayNextClip() {
|
||||||
|
if (audioClips.Length == 0) return;
|
||||||
|
|
||||||
|
int index;
|
||||||
|
if (BazookaManager.Instance.GetSettingRandomMusic()) {
|
||||||
|
do index = Random.Range(0, audioClips.Length);
|
||||||
|
while (audioClips.Length > 1 && index == lastIndex);
|
||||||
|
} else {
|
||||||
|
index = currentIndex;
|
||||||
|
currentIndex = (currentIndex + 1) % audioClips.Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update() {
|
lastIndex = index;
|
||||||
if (!audioSource.isPlaying && !isPaused) PlayNextClip();
|
audioSource.clip = audioClips[index];
|
||||||
|
audioSource.Play();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PauseMusic() {
|
||||||
|
if (audioSource.isPlaying) {
|
||||||
|
audioSource.Pause();
|
||||||
|
isPaused = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void PlayNextClip() {
|
public void ResumeMusic() {
|
||||||
if (audioClips.Length == 0) return;
|
if (isPaused) {
|
||||||
|
audioSource.Play();
|
||||||
int index;
|
isPaused = false;
|
||||||
if (BazookaManager.Instance.GetSettingRandomMusic()) {
|
|
||||||
do index = Random.Range(0, audioClips.Length);
|
|
||||||
while (audioClips.Length > 1 && index == lastIndex);
|
|
||||||
} else {
|
|
||||||
index = currentIndex;
|
|
||||||
currentIndex = (currentIndex + 1) % audioClips.Length;
|
|
||||||
}
|
|
||||||
|
|
||||||
lastIndex = index;
|
|
||||||
audioSource.clip = audioClips[index];
|
|
||||||
audioSource.Play();
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void PauseMusic() {
|
public void RestartMusic() {
|
||||||
if (audioSource.isPlaying) {
|
audioSource.Stop();
|
||||||
audioSource.Pause();
|
audioSource.Play();
|
||||||
isPaused = true;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ResumeMusic() {
|
|
||||||
if (isPaused) {
|
|
||||||
audioSource.Play();
|
|
||||||
isPaused = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RestartMusic() {
|
|
||||||
audioSource.Stop();
|
|
||||||
audioSource.Play();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -4,137 +4,137 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class AutoGamePlayerPauseMenu : MonoBehaviour {
|
public class AutoGamePlayerPauseMenu : MonoBehaviour {
|
||||||
public static AutoGamePlayerPauseMenu Instance;
|
public static AutoGamePlayerPauseMenu Instance;
|
||||||
[SerializeField] private Button backButton;
|
[SerializeField] private Button backButton;
|
||||||
[SerializeField] private Button continueButton;
|
[SerializeField] private Button continueButton;
|
||||||
[SerializeField] private Button statsButton;
|
[SerializeField] private Button statsButton;
|
||||||
[SerializeField] private Button editUiButton;
|
[SerializeField] private Button editUiButton;
|
||||||
[SerializeField] private Button resetUiButton;
|
[SerializeField] private Button resetUiButton;
|
||||||
[SerializeField] private AudioSource songLoop;
|
[SerializeField] private AudioSource songLoop;
|
||||||
[SerializeField] private TMP_Text scoreText;
|
[SerializeField] private TMP_Text scoreText;
|
||||||
[SerializeField] private TMP_Text highScoreText;
|
[SerializeField] private TMP_Text highScoreText;
|
||||||
[SerializeField] private TMP_Text boostText;
|
[SerializeField] private TMP_Text boostText;
|
||||||
[SerializeField] private TMP_Text levelText;
|
[SerializeField] private TMP_Text levelText;
|
||||||
[SerializeField] private Button pauseButton;
|
[SerializeField] private Button pauseButton;
|
||||||
internal bool editingUI = false;
|
internal bool editingUI = false;
|
||||||
|
|
||||||
public GameObject statsMenu;
|
public GameObject statsMenu;
|
||||||
public Button statsMenuExitButton;
|
public Button statsMenuExitButton;
|
||||||
[SerializeField] private TMP_Text statsText;
|
[SerializeField] private TMP_Text statsText;
|
||||||
|
|
||||||
[SerializeField] private Toggle settingFullscreenToggle;
|
[SerializeField] private Toggle settingFullscreenToggle;
|
||||||
[SerializeField] private Toggle settingVSyncToggle;
|
[SerializeField] private Toggle settingVSyncToggle;
|
||||||
[SerializeField] private Toggle settingRandomMusicToggle;
|
[SerializeField] private Toggle settingRandomMusicToggle;
|
||||||
[SerializeField] private Slider musicSlider;
|
[SerializeField] private Slider musicSlider;
|
||||||
[SerializeField] private Slider sfxSlider;
|
[SerializeField] private Slider sfxSlider;
|
||||||
[SerializeField] private TMP_Text musicSliderText;
|
[SerializeField] private TMP_Text musicSliderText;
|
||||||
[SerializeField] private TMP_Text sfxSliderText;
|
[SerializeField] private TMP_Text sfxSliderText;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
Instance = this;
|
Instance = this;
|
||||||
continueButton.onClick.AddListener(AutoGamePlayer.Instance.DisablePause);
|
continueButton.onClick.AddListener(AutoGamePlayer.Instance.DisablePause);
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
songLoop.volume = value;
|
songLoop.volume = value;
|
||||||
});
|
});
|
||||||
sfxSlider.onValueChanged.AddListener(value => {
|
sfxSlider.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingSFXVolume(value);
|
BazookaManager.Instance.SetSettingSFXVolume(value);
|
||||||
});
|
});
|
||||||
editUiButton.onClick.AddListener(() => {
|
editUiButton.onClick.AddListener(() => {
|
||||||
ToggleEditingUI();
|
ToggleEditingUI();
|
||||||
});
|
});
|
||||||
resetUiButton.onClick.AddListener(() => {
|
resetUiButton.onClick.AddListener(() => {
|
||||||
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
|
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
|
||||||
highScoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
|
highScoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
|
||||||
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -190f);
|
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -190f);
|
||||||
levelText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-290f, 85f);
|
levelText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-290f, 85f);
|
||||||
PlayerPrefs.DeleteKey("DraggedUIScoreText");
|
PlayerPrefs.DeleteKey("DraggedUIScoreText");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIHighScoreText");
|
PlayerPrefs.DeleteKey("DraggedUIHighScoreText");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIBoostText");
|
PlayerPrefs.DeleteKey("DraggedUIBoostText");
|
||||||
PlayerPrefs.DeleteKey("DraggedUICoinsText");
|
PlayerPrefs.DeleteKey("DraggedUICoinsText");
|
||||||
PlayerPrefs.DeleteKey("DraggedUILevelText");
|
PlayerPrefs.DeleteKey("DraggedUILevelText");
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
|
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
|
||||||
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
|
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
|
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
|
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIRightButton");
|
PlayerPrefs.DeleteKey("DraggedUIRightButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUILeftButton");
|
PlayerPrefs.DeleteKey("DraggedUILeftButton");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
statsButton.onClick.AddListener(() => {
|
statsButton.onClick.AddListener(() => {
|
||||||
statsMenu.SetActive(true);
|
statsMenu.SetActive(true);
|
||||||
var text = new StringBuilder();
|
var text = new StringBuilder();
|
||||||
text.AppendLine("High Score: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.highscore));
|
text.AppendLine("High Score: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.highscore));
|
||||||
text.AppendLine("Total Normal Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalNormalBerries));
|
text.AppendLine("Total Normal Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalNormalBerries));
|
||||||
text.AppendLine("Total Poison Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalPoisonBerries));
|
text.AppendLine("Total Poison Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalPoisonBerries));
|
||||||
text.AppendLine("Total Slow Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalSlowBerries));
|
text.AppendLine("Total Slow Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalSlowBerries));
|
||||||
text.AppendLine("Total Ultra Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalUltraBerries));
|
text.AppendLine("Total Ultra Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalUltraBerries));
|
||||||
text.AppendLine("Total Speedy Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalSpeedyBerries));
|
text.AppendLine("Total Speedy Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalSpeedyBerries));
|
||||||
text.AppendLine("Total Random Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalRandomBerries));
|
text.AppendLine("Total Random Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalRandomBerries));
|
||||||
text.AppendLine("Total Anti Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalAntiBerries));
|
text.AppendLine("Total Anti Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalAntiBerries));
|
||||||
text.AppendLine("Total Golden Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalGoldenBerries));
|
text.AppendLine("Total Golden Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalGoldenBerries));
|
||||||
text.AppendLine("Total Attempts: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalAttempts));
|
text.AppendLine("Total Attempts: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalAttempts));
|
||||||
text.AppendLine("Note: This is the AI stats");
|
text.AppendLine("Note: This is the AI stats");
|
||||||
statsText.text = text.ToString();
|
statsText.text = text.ToString();
|
||||||
});
|
});
|
||||||
statsMenuExitButton.onClick.AddListener(() => {
|
statsMenuExitButton.onClick.AddListener(() => {
|
||||||
statsMenu.SetActive(false);
|
statsMenu.SetActive(false);
|
||||||
statsText.text = string.Empty;
|
statsText.text = string.Empty;
|
||||||
});
|
});
|
||||||
|
|
||||||
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
||||||
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
||||||
if (!Application.isMobilePlatform) {
|
if (!Application.isMobilePlatform) {
|
||||||
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
||||||
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
||||||
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
settingFullscreenToggle.onValueChanged.AddListener(value => {
|
settingFullscreenToggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingFullScreen(value);
|
BazookaManager.Instance.SetSettingFullScreen(value);
|
||||||
var width = Display.main.systemWidth;
|
var width = Display.main.systemWidth;
|
||||||
var height = Display.main.systemHeight;
|
var height = Display.main.systemHeight;
|
||||||
Screen.SetResolution(width, height, value);
|
Screen.SetResolution(width, height, value);
|
||||||
});
|
});
|
||||||
settingVSyncToggle.onValueChanged.AddListener(value => {
|
settingVSyncToggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingVsync(value);
|
BazookaManager.Instance.SetSettingVsync(value);
|
||||||
QualitySettings.vSyncCount = value ? 1 : -1;
|
QualitySettings.vSyncCount = value ? 1 : -1;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
settingFullscreenToggle.interactable = false;
|
settingFullscreenToggle.interactable = false;
|
||||||
settingVSyncToggle.interactable = false;
|
settingVSyncToggle.interactable = false;
|
||||||
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
}
|
|
||||||
settingRandomMusicToggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
|
||||||
AutoGamePlayer.Instance.backgroundMusic.volume = value;
|
|
||||||
});
|
|
||||||
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
|
||||||
}
|
}
|
||||||
|
settingRandomMusicToggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
||||||
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
|
AutoGamePlayer.Instance.backgroundMusic.volume = value;
|
||||||
|
});
|
||||||
|
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
||||||
|
}
|
||||||
|
|
||||||
public void ToggleEditingUI() {
|
public void ToggleEditingUI() {
|
||||||
editingUI = !editingUI;
|
editingUI = !editingUI;
|
||||||
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
|
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
|
||||||
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
|
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
|
||||||
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
|
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
|
||||||
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
|
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
|
||||||
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
|
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
|
||||||
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
|
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
|
||||||
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
|
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
|
||||||
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
|
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
|
||||||
continueButton.gameObject.SetActive(!continueButton.gameObject.activeSelf);
|
continueButton.gameObject.SetActive(!continueButton.gameObject.activeSelf);
|
||||||
statsButton.gameObject.SetActive(!statsButton.gameObject.activeSelf);
|
statsButton.gameObject.SetActive(!statsButton.gameObject.activeSelf);
|
||||||
editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text = editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text == "Edit UI" ? "Done" : "Edit UI";
|
editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text = editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text == "Edit UI" ? "Done" : "Edit UI";
|
||||||
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
|
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
|
||||||
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
|
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
|
||||||
highScoreText.GetComponent<DraggableUI>().canDrag = !highScoreText.GetComponent<DraggableUI>().canDrag;
|
highScoreText.GetComponent<DraggableUI>().canDrag = !highScoreText.GetComponent<DraggableUI>().canDrag;
|
||||||
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
|
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
|
||||||
levelText.GetComponent<DraggableUI>().canDrag = !levelText.GetComponent<DraggableUI>().canDrag;
|
levelText.GetComponent<DraggableUI>().canDrag = !levelText.GetComponent<DraggableUI>().canDrag;
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
|
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
|
||||||
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
|
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
|
||||||
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
|
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
|
||||||
pauseButton.interactable = !pauseDraggableUI.canDrag;
|
pauseButton.interactable = !pauseDraggableUI.canDrag;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -3,124 +3,124 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class CustomGamePlayerPauseMenu : MonoBehaviour {
|
public class CustomGamePlayerPauseMenu : MonoBehaviour {
|
||||||
public static CustomGamePlayerPauseMenu Instance;
|
public static CustomGamePlayerPauseMenu Instance;
|
||||||
[SerializeField] private Button backButton;
|
[SerializeField] private Button backButton;
|
||||||
[SerializeField] private Button continueButton;
|
[SerializeField] private Button continueButton;
|
||||||
[SerializeField] private Button editUiButton;
|
[SerializeField] private Button editUiButton;
|
||||||
[SerializeField] private Button resetUiButton;
|
[SerializeField] private Button resetUiButton;
|
||||||
[SerializeField] private AudioSource songLoop;
|
[SerializeField] private AudioSource songLoop;
|
||||||
[SerializeField] private TMP_Text scoreText;
|
[SerializeField] private TMP_Text scoreText;
|
||||||
[SerializeField] private TMP_Text boostText;
|
[SerializeField] private TMP_Text boostText;
|
||||||
[SerializeField] private Button pauseButton;
|
[SerializeField] private Button pauseButton;
|
||||||
[SerializeField] private Button restartButton;
|
[SerializeField] private Button restartButton;
|
||||||
[SerializeField] private Button jumpButton;
|
[SerializeField] private Button jumpButton;
|
||||||
[SerializeField] private Button rightButton;
|
[SerializeField] private Button rightButton;
|
||||||
[SerializeField] private Button leftButton;
|
[SerializeField] private Button leftButton;
|
||||||
internal bool editingUI = false;
|
internal bool editingUI = false;
|
||||||
|
|
||||||
[SerializeField] private Toggle settingFullscreenToggle;
|
[SerializeField] private Toggle settingFullscreenToggle;
|
||||||
[SerializeField] private Toggle settingVSyncToggle;
|
[SerializeField] private Toggle settingVSyncToggle;
|
||||||
[SerializeField] private Toggle settingRandomMusicToggle;
|
[SerializeField] private Toggle settingRandomMusicToggle;
|
||||||
[SerializeField] private Slider musicSlider;
|
[SerializeField] private Slider musicSlider;
|
||||||
[SerializeField] private Slider sfxSlider;
|
[SerializeField] private Slider sfxSlider;
|
||||||
[SerializeField] private TMP_Text musicSliderText;
|
[SerializeField] private TMP_Text musicSliderText;
|
||||||
[SerializeField] private TMP_Text sfxSliderText;
|
[SerializeField] private TMP_Text sfxSliderText;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
Instance = this;
|
Instance = this;
|
||||||
continueButton.onClick.AddListener(CustomGamePlayer.Instance.DisablePause);
|
continueButton.onClick.AddListener(CustomGamePlayer.Instance.DisablePause);
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
songLoop.volume = value;
|
songLoop.volume = value;
|
||||||
});
|
});
|
||||||
sfxSlider.onValueChanged.AddListener(value => {
|
sfxSlider.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingSFXVolume(value);
|
BazookaManager.Instance.SetSettingSFXVolume(value);
|
||||||
});
|
});
|
||||||
editUiButton.onClick.AddListener(() => {
|
editUiButton.onClick.AddListener(() => {
|
||||||
ToggleEditingUI();
|
ToggleEditingUI();
|
||||||
});
|
});
|
||||||
resetUiButton.onClick.AddListener(() => {
|
resetUiButton.onClick.AddListener(() => {
|
||||||
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
|
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
|
||||||
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
|
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
|
||||||
PlayerPrefs.DeleteKey("DraggedUIScoreTextCustom");
|
PlayerPrefs.DeleteKey("DraggedUIScoreTextCustom");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIBoostTextCustom");
|
PlayerPrefs.DeleteKey("DraggedUIBoostTextCustom");
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
|
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
|
||||||
restartButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, -128f);
|
restartButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, -128f);
|
||||||
jumpButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 288f);
|
jumpButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 288f);
|
||||||
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
|
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
|
||||||
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
|
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
|
||||||
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
|
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
|
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
|
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIRightButton");
|
PlayerPrefs.DeleteKey("DraggedUIRightButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUILeftButton");
|
PlayerPrefs.DeleteKey("DraggedUILeftButton");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
||||||
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
||||||
if (!Application.isMobilePlatform) {
|
if (!Application.isMobilePlatform) {
|
||||||
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
||||||
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
||||||
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
settingFullscreenToggle.onValueChanged.AddListener(value => {
|
settingFullscreenToggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingFullScreen(value);
|
BazookaManager.Instance.SetSettingFullScreen(value);
|
||||||
var width = Display.main.systemWidth;
|
var width = Display.main.systemWidth;
|
||||||
var height = Display.main.systemHeight;
|
var height = Display.main.systemHeight;
|
||||||
Screen.SetResolution(width, height, value);
|
Screen.SetResolution(width, height, value);
|
||||||
});
|
});
|
||||||
settingVSyncToggle.onValueChanged.AddListener(value => {
|
settingVSyncToggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingVsync(value);
|
BazookaManager.Instance.SetSettingVsync(value);
|
||||||
QualitySettings.vSyncCount = value ? 1 : -1;
|
QualitySettings.vSyncCount = value ? 1 : -1;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
settingFullscreenToggle.interactable = false;
|
settingFullscreenToggle.interactable = false;
|
||||||
settingVSyncToggle.interactable = false;
|
settingVSyncToggle.interactable = false;
|
||||||
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
}
|
|
||||||
settingRandomMusicToggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
|
||||||
CustomGamePlayer.Instance.backgroundMusic.volume = value;
|
|
||||||
});
|
|
||||||
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
|
||||||
}
|
}
|
||||||
|
settingRandomMusicToggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
||||||
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
|
CustomGamePlayer.Instance.backgroundMusic.volume = value;
|
||||||
|
});
|
||||||
|
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
||||||
|
}
|
||||||
|
|
||||||
public void ToggleEditingUI() {
|
public void ToggleEditingUI() {
|
||||||
editingUI = !editingUI;
|
editingUI = !editingUI;
|
||||||
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
|
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
|
||||||
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
|
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
|
||||||
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
|
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
|
||||||
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
|
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
|
||||||
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
|
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
|
||||||
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
|
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
|
||||||
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
|
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
|
||||||
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
|
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
|
||||||
continueButton.gameObject.SetActive(!continueButton.gameObject.activeSelf);
|
continueButton.gameObject.SetActive(!continueButton.gameObject.activeSelf);
|
||||||
editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text = editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text == "Edit UI" ? "Done" : "Edit UI";
|
editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text = editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text == "Edit UI" ? "Done" : "Edit UI";
|
||||||
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
|
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
|
||||||
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
|
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
|
||||||
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
|
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
|
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
|
||||||
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
|
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
|
||||||
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
|
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
|
||||||
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
|
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
|
||||||
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
|
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
|
||||||
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
|
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
|
||||||
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
|
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
|
||||||
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
|
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
|
||||||
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
|
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
|
||||||
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
|
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
|
||||||
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
|
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
|
||||||
pauseButton.interactable = !pauseDraggableUI.canDrag;
|
pauseButton.interactable = !pauseDraggableUI.canDrag;
|
||||||
restartButton.interactable = !restartDraggableUI.canDrag;
|
restartButton.interactable = !restartDraggableUI.canDrag;
|
||||||
jumpButton.interactable = !jumpDraggableUI.canDrag;
|
jumpButton.interactable = !jumpDraggableUI.canDrag;
|
||||||
rightButton.interactable = !rightDraggableUI.canDrag;
|
rightButton.interactable = !rightDraggableUI.canDrag;
|
||||||
leftButton.interactable = !leftDraggableUI.canDrag;
|
leftButton.interactable = !leftDraggableUI.canDrag;
|
||||||
jumpButton.transform.GetChild(0).GetComponent<TMP_Text>().color = !jumpDraggableUI.canDrag ? CustomGamePlayer.Instance.IsGrounded() ? Color.white : Color.red : Color.white;
|
jumpButton.transform.GetChild(0).GetComponent<TMP_Text>().color = !jumpDraggableUI.canDrag ? CustomGamePlayer.Instance.IsGrounded() ? Color.white : Color.red : Color.white;
|
||||||
restartButton.interactable = CustomGamePlayer.Instance.score != 0;
|
restartButton.interactable = CustomGamePlayer.Instance.score != 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class CustomGameTempData : MonoBehaviour {
|
public class CustomGameTempData : MonoBehaviour {
|
||||||
public float normalBerryChance;
|
public float normalBerryChance;
|
||||||
public float poisonBerryChance;
|
public float poisonBerryChance;
|
||||||
public float slowBerryChance;
|
public float slowBerryChance;
|
||||||
public float ultraBerryChance;
|
public float ultraBerryChance;
|
||||||
public float speedyBerryChance;
|
public float speedyBerryChance;
|
||||||
public float randomBerryChance;
|
public float randomBerryChance;
|
||||||
public float antiBerryChance;
|
public float antiBerryChance;
|
||||||
public float goldenBerryChance;
|
public float goldenBerryChance;
|
||||||
public float nothingBerryChance;
|
public float nothingBerryChance;
|
||||||
public bool useAI;
|
public bool useAI;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
DontDestroyOnLoad(gameObject);
|
DontDestroyOnLoad(gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,481 +8,482 @@ using UnityEngine.InputSystem;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class GamePlayer : MonoBehaviour {
|
public class GamePlayer : MonoBehaviour {
|
||||||
public static GamePlayer Instance;
|
public static GamePlayer Instance;
|
||||||
private readonly float spawnRate = 1f;
|
private readonly float spawnRate = 1f;
|
||||||
private float nextSpawnTime;
|
private float nextSpawnTime;
|
||||||
internal BigInteger score;
|
internal BigInteger score;
|
||||||
private BigInteger attempts;
|
private BigInteger attempts;
|
||||||
internal BigInteger highscore;
|
internal BigInteger highscore;
|
||||||
internal BigInteger totalNormalBerries;
|
internal BigInteger totalNormalBerries;
|
||||||
internal BigInteger totalPoisonBerries;
|
internal BigInteger totalPoisonBerries;
|
||||||
internal BigInteger totalSlowBerries;
|
internal BigInteger totalSlowBerries;
|
||||||
internal BigInteger totalUltraBerries;
|
internal BigInteger totalUltraBerries;
|
||||||
internal BigInteger totalSpeedyBerries;
|
internal BigInteger totalSpeedyBerries;
|
||||||
internal BigInteger totalCoinBerries;
|
internal BigInteger totalCoinBerries;
|
||||||
internal BigInteger totalRandomBerries;
|
internal BigInteger totalRandomBerries;
|
||||||
internal BigInteger totalAntiBerries;
|
internal BigInteger totalAntiBerries;
|
||||||
internal BigInteger totalGoldenBerries;
|
internal BigInteger totalGoldenBerries;
|
||||||
internal BigInteger totalAttempts;
|
internal BigInteger totalAttempts;
|
||||||
private BigInteger totalCoins;
|
private BigInteger totalCoins;
|
||||||
private float boostLeft;
|
private float boostLeft;
|
||||||
private float slownessLeft;
|
private float slownessLeft;
|
||||||
private float speedyLeft;
|
private float speedyLeft;
|
||||||
private float antiLeft;
|
private float antiLeft;
|
||||||
private float goldenLeft;
|
private float goldenLeft;
|
||||||
[SerializeField] private TMP_Text scoreText;
|
[SerializeField] private TMP_Text scoreText;
|
||||||
[SerializeField] private TMP_Text highScoreText;
|
[SerializeField] private TMP_Text highScoreText;
|
||||||
[SerializeField] private TMP_Text boostText;
|
[SerializeField] private TMP_Text boostText;
|
||||||
[SerializeField] private TMP_Text coinText;
|
[SerializeField] private TMP_Text coinText;
|
||||||
[SerializeField] private GameObject pausePanel;
|
[SerializeField] private GameObject pausePanel;
|
||||||
[SerializeField] internal AudioSource backgroundMusic;
|
[SerializeField] internal AudioSource backgroundMusic;
|
||||||
[SerializeField] private GameObject berryParent;
|
[SerializeField] private GameObject berryParent;
|
||||||
[SerializeField] private TMP_Text levelText;
|
[SerializeField] private TMP_Text levelText;
|
||||||
|
|
||||||
[SerializeField] private GameObject mobileButtons;
|
[SerializeField] private GameObject mobileButtons;
|
||||||
[SerializeField] private Button pauseButton;
|
[SerializeField] private Button pauseButton;
|
||||||
[SerializeField] private Button restartButton;
|
[SerializeField] private Button restartButton;
|
||||||
[SerializeField] private Button jumpButton;
|
[SerializeField] private Button jumpButton;
|
||||||
[SerializeField] private Button rightButton;
|
[SerializeField] private Button rightButton;
|
||||||
[SerializeField] private Button leftButton;
|
[SerializeField] private Button leftButton;
|
||||||
|
|
||||||
[SerializeField] private Image bird;
|
[SerializeField] private Image bird;
|
||||||
[SerializeField] private GameObject berryTemplate;
|
[SerializeField] private GameObject berryTemplate;
|
||||||
[SerializeField] private Rigidbody2D rb;
|
[SerializeField] private Rigidbody2D rb;
|
||||||
[SerializeField] private RectTransform canvasRect;
|
[SerializeField] private RectTransform canvasRect;
|
||||||
[SerializeField] private BoxCollider2D groundCollider;
|
[SerializeField] private BoxCollider2D groundCollider;
|
||||||
private UnityEngine.Vector2 velocityBeforePause = new();
|
private UnityEngine.Vector2 velocityBeforePause = new();
|
||||||
private readonly List<int> noGravityBerries = new();
|
private readonly List<int> noGravityBerries = new();
|
||||||
|
|
||||||
internal bool IsGrounded() => Physics2D.Distance(bird.GetComponent<CircleCollider2D>(), groundCollider).distance <= 0.1f;
|
internal bool IsGrounded() => Physics2D.Distance(bird.GetComponent<CircleCollider2D>(), groundCollider).distance <= 0.1f;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
Instance = this;
|
Instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Start() {
|
||||||
|
var backgroundColor = BazookaManager.Instance.GetColorSettingBackground();
|
||||||
|
Camera.main.backgroundColor = new Color(
|
||||||
|
int.Parse(backgroundColor[0].ToString()) / 255f,
|
||||||
|
int.Parse(backgroundColor[1].ToString()) / 255f,
|
||||||
|
int.Parse(backgroundColor[2].ToString()) / 255f
|
||||||
|
);
|
||||||
|
|
||||||
|
Tools.LoadIcon(
|
||||||
|
bird,
|
||||||
|
bird.transform.GetChild(0).GetComponent<Image>(),
|
||||||
|
BazookaManager.Instance.GetBirdIcon(),
|
||||||
|
BazookaManager.Instance.GetBirdOverlay(),
|
||||||
|
BazookaManager.Instance.GetColorSettingIcon(),
|
||||||
|
BazookaManager.Instance.GetColorSettingOverlay(),
|
||||||
|
BazookaManager.Instance.GetCustomBirdIconData().Selected,
|
||||||
|
BazookaManager.Instance.GetAccountID() ?? 0
|
||||||
|
);
|
||||||
|
|
||||||
|
UnityEngine.InputSystem.EnhancedTouch.EnhancedTouchSupport.Enable();
|
||||||
|
highscore = BazookaManager.Instance.GetGameStoreHighScore();
|
||||||
|
totalNormalBerries = BazookaManager.Instance.GetGameStoreTotalNormalBerries();
|
||||||
|
totalPoisonBerries = BazookaManager.Instance.GetGameStoreTotalPoisonBerries();
|
||||||
|
totalSlowBerries = BazookaManager.Instance.GetGameStoreTotalSlowBerries();
|
||||||
|
totalUltraBerries = BazookaManager.Instance.GetGameStoreTotalUltraBerries();
|
||||||
|
totalSpeedyBerries = BazookaManager.Instance.GetGameStoreTotalSpeedyBerries();
|
||||||
|
totalCoinBerries = BazookaManager.Instance.GetGameStoreTotalCoinBerries();
|
||||||
|
totalRandomBerries = BazookaManager.Instance.GetGameStoreTotalRandomBerries();
|
||||||
|
totalAntiBerries = BazookaManager.Instance.GetGameStoreTotalAntiBerries();
|
||||||
|
totalGoldenBerries = BazookaManager.Instance.GetGameStoreTotalGoldenBerries();
|
||||||
|
totalAttempts = BazookaManager.Instance.GetGameStoreTotalAttepts();
|
||||||
|
totalCoins = BazookaManager.Instance.GetCustomBirdIconData().Balance;
|
||||||
|
|
||||||
|
Cursor.visible = false;
|
||||||
|
Cursor.lockState = CursorLockMode.Locked;
|
||||||
|
backgroundMusic.volume = BazookaManager.Instance.GetSettingMusicVolume();
|
||||||
|
if (Application.isMobilePlatform) mobileButtons.SetActive(true);
|
||||||
|
UpdateStats(0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MoveBird() {
|
||||||
|
float speedModifier = 1f;
|
||||||
|
bool doMoveRight = false;
|
||||||
|
bool doMoveLeft = false;
|
||||||
|
bool doJump = false;
|
||||||
|
bool doRestart = false;
|
||||||
|
bool doBack = false;
|
||||||
|
if (boostLeft > 0f || speedyLeft > 0f) speedModifier = 1.39f;
|
||||||
|
else if (slownessLeft > 0f) speedModifier = 0.56f;
|
||||||
|
bool controllerLeft = Gamepad.current != null && (Gamepad.current.leftStick.left.isPressed || Gamepad.current.dpad.left.isPressed || Gamepad.current.rightStick.left.isPressed);
|
||||||
|
bool controllerRight = Gamepad.current != null && (Gamepad.current.leftStick.right.isPressed || Gamepad.current.dpad.right.isPressed || Gamepad.current.rightStick.right.isPressed);
|
||||||
|
bool controllerJump = Gamepad.current != null && (Gamepad.current.leftStick.up.isPressed || Gamepad.current.leftStick.down.isPressed || Gamepad.current.dpad.up.isPressed || Gamepad.current.dpad.down.isPressed || Gamepad.current.rightStick.up.isPressed || Gamepad.current.rightStick.down.isPressed);
|
||||||
|
if (!Application.isMobilePlatform) {
|
||||||
|
if (controllerLeft || Keyboard.current.leftArrowKey.isPressed || Keyboard.current.aKey.isPressed || Keyboard.current.jKey.isPressed) {
|
||||||
|
doMoveLeft = true;
|
||||||
|
}
|
||||||
|
if (controllerRight || Keyboard.current.rightArrowKey.isPressed || Keyboard.current.dKey.isPressed || Keyboard.current.lKey.isPressed) {
|
||||||
|
doMoveRight = true;
|
||||||
|
}
|
||||||
|
if (controllerJump || Keyboard.current.spaceKey.isPressed || Keyboard.current.upArrowKey.isPressed || Keyboard.current.wKey.isPressed || Keyboard.current.downArrowKey.isPressed || Keyboard.current.sKey.isPressed || Keyboard.current.kKey.isPressed || Keyboard.current.iKey.isPressed || Mouse.current.leftButton.isPressed || (Gamepad.current != null && Gamepad.current.buttonSouth.isPressed)) {
|
||||||
|
doJump = true;
|
||||||
|
}
|
||||||
|
if (Keyboard.current.rKey.isPressed) {
|
||||||
|
doRestart = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var touches = UnityEngine.InputSystem.EnhancedTouch.Touch.activeTouches;
|
||||||
|
for (int i = 0; i < touches.Count; i++) {
|
||||||
|
var pos = touches[i].screenPosition;
|
||||||
|
UnityEngine.Vector3 clickPosition = Camera.main.ScreenToWorldPoint(new UnityEngine.Vector3(pos.x, pos.y, 0f));
|
||||||
|
clickPosition.z = 0f;
|
||||||
|
if (leftButton.GetComponent<HoldableButton>().isPressed) doMoveLeft = true;
|
||||||
|
if (rightButton.GetComponent<HoldableButton>().isPressed) doMoveRight = true;
|
||||||
|
if (jumpButton.GetComponent<HoldableButton>().isPressed) doJump = true;
|
||||||
|
if (restartButton.GetComponent<HoldableButton>().isPressed) doRestart = true;
|
||||||
|
if (pauseButton.GetComponent<HoldableButton>().isPressed) doBack = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (doMoveLeft && !doMoveRight) {
|
||||||
void Start() {
|
bird.transform.position += new UnityEngine.Vector3(-(2.4f * (speedModifier * canvasRect.lossyScale.x)), 0f, 0f);
|
||||||
var backgroundColor = BazookaManager.Instance.GetColorSettingBackground();
|
ClampPosition(bird);
|
||||||
Camera.main.backgroundColor = new Color(
|
bird.transform.localScale = new UnityEngine.Vector3(1f, 1f, 1f);
|
||||||
int.Parse(backgroundColor[0].ToString()) / 255f,
|
|
||||||
int.Parse(backgroundColor[1].ToString()) / 255f,
|
|
||||||
int.Parse(backgroundColor[2].ToString()) / 255f
|
|
||||||
);
|
|
||||||
|
|
||||||
Tools.LoadIcon(
|
|
||||||
bird,
|
|
||||||
bird.transform.GetChild(0).GetComponent<Image>(),
|
|
||||||
BazookaManager.Instance.GetBirdIcon(),
|
|
||||||
BazookaManager.Instance.GetBirdOverlay(),
|
|
||||||
BazookaManager.Instance.GetColorSettingIcon(),
|
|
||||||
BazookaManager.Instance.GetColorSettingOverlay(),
|
|
||||||
BazookaManager.Instance.GetCustomBirdIconData().Selected,
|
|
||||||
BazookaManager.Instance.GetAccountID() ?? 0
|
|
||||||
);
|
|
||||||
|
|
||||||
UnityEngine.InputSystem.EnhancedTouch.EnhancedTouchSupport.Enable();
|
|
||||||
highscore = BazookaManager.Instance.GetGameStoreHighScore();
|
|
||||||
totalNormalBerries = BazookaManager.Instance.GetGameStoreTotalNormalBerries();
|
|
||||||
totalPoisonBerries = BazookaManager.Instance.GetGameStoreTotalPoisonBerries();
|
|
||||||
totalSlowBerries = BazookaManager.Instance.GetGameStoreTotalSlowBerries();
|
|
||||||
totalUltraBerries = BazookaManager.Instance.GetGameStoreTotalUltraBerries();
|
|
||||||
totalSpeedyBerries = BazookaManager.Instance.GetGameStoreTotalSpeedyBerries();
|
|
||||||
totalCoinBerries = BazookaManager.Instance.GetGameStoreTotalCoinBerries();
|
|
||||||
totalRandomBerries = BazookaManager.Instance.GetGameStoreTotalRandomBerries();
|
|
||||||
totalAntiBerries = BazookaManager.Instance.GetGameStoreTotalAntiBerries();
|
|
||||||
totalGoldenBerries = BazookaManager.Instance.GetGameStoreTotalGoldenBerries();
|
|
||||||
totalAttempts = BazookaManager.Instance.GetGameStoreTotalAttepts();
|
|
||||||
totalCoins = BazookaManager.Instance.GetCustomBirdIconData().Balance;
|
|
||||||
|
|
||||||
Cursor.visible = false;
|
|
||||||
Cursor.lockState = CursorLockMode.Locked;
|
|
||||||
backgroundMusic.volume = BazookaManager.Instance.GetSettingMusicVolume();
|
|
||||||
if (Application.isMobilePlatform) mobileButtons.SetActive(true);
|
|
||||||
UpdateStats(0, 1);
|
|
||||||
}
|
}
|
||||||
|
if (doMoveRight && !doMoveLeft) {
|
||||||
|
bird.transform.position += new UnityEngine.Vector3(2.4f * (speedModifier * canvasRect.lossyScale.x), 0f, 0f);
|
||||||
|
ClampPosition(bird);
|
||||||
|
bird.transform.localScale = new UnityEngine.Vector3(-1f, 1f, 1f);
|
||||||
|
}
|
||||||
|
if (doMoveLeft || doMoveRight) groundCollider.transform.position = new(bird.transform.position.x, groundCollider.transform.position.y);
|
||||||
|
if (doJump && IsGrounded()) {
|
||||||
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Jump"), Camera.main.transform.position, 0.75f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
|
if (boostLeft > 0f || speedyLeft > 0f) rb.linearVelocity = new UnityEngine.Vector2(rb.linearVelocity.x, 480f * canvasRect.lossyScale.y);
|
||||||
|
else if (slownessLeft > 0f) rb.linearVelocity = new UnityEngine.Vector2(rb.linearVelocity.x, 300f * canvasRect.lossyScale.y);
|
||||||
|
else rb.linearVelocity = new UnityEngine.Vector2(rb.linearVelocity.x, 380f * canvasRect.lossyScale.y);
|
||||||
|
}
|
||||||
|
if (doBack) {
|
||||||
|
TogglePause();
|
||||||
|
}
|
||||||
|
if (doRestart) {
|
||||||
|
if (score != 0) Respawn();
|
||||||
|
}
|
||||||
|
if (antiLeft > 0f || goldenLeft > 0f) {
|
||||||
|
List<string> berryTags = new() { "NormalBerry", "SlowBerry", "UltraBerry", "SpeedyBerry", "CoinBerry", "RandomBerry", "AntiBerry", "GoldenBerry" };
|
||||||
|
if (antiLeft > 0f) berryTags.Add("PoisonBerry");
|
||||||
|
|
||||||
void MoveBird() {
|
float scale = (canvasRect.lossyScale.x + canvasRect.lossyScale.y) / 2f;
|
||||||
float speedModifier = 1f;
|
float radius = antiLeft > 0f ? 250f * scale : 325f * scale;
|
||||||
bool doMoveRight = false;
|
float speed = antiLeft > 0f ? 1.25f * scale : -1.75f * scale;
|
||||||
bool doMoveLeft = false;
|
|
||||||
bool doJump = false;
|
foreach (string tag in berryTags) {
|
||||||
bool doRestart = false;
|
foreach (var berry in GameObject.FindGameObjectsWithTag(tag)) {
|
||||||
bool doBack = false;
|
RectTransform berryRect = berry.GetComponent<RectTransform>();
|
||||||
if (boostLeft > 0f || speedyLeft > 0f) speedModifier = 1.39f;
|
UnityEngine.Vector3 dir = berryRect.position - bird.GetComponent<RectTransform>().position;
|
||||||
else if (slownessLeft > 0f) speedModifier = 0.56f;
|
|
||||||
bool controllerLeft = Gamepad.current != null && (Gamepad.current.leftStick.left.isPressed || Gamepad.current.dpad.left.isPressed || Gamepad.current.rightStick.left.isPressed);
|
if (dir.magnitude < radius) {
|
||||||
bool controllerRight = Gamepad.current != null && (Gamepad.current.leftStick.right.isPressed || Gamepad.current.dpad.right.isPressed || Gamepad.current.rightStick.right.isPressed);
|
berryRect.position += speed * dir.normalized;
|
||||||
bool controllerJump = Gamepad.current != null && (Gamepad.current.leftStick.up.isPressed || Gamepad.current.leftStick.down.isPressed || Gamepad.current.dpad.up.isPressed || Gamepad.current.dpad.down.isPressed || Gamepad.current.rightStick.up.isPressed || Gamepad.current.rightStick.down.isPressed);
|
ClampPosition(berry.GetComponent<Image>());
|
||||||
if (!Application.isMobilePlatform) {
|
noGravityBerries.Add(berry.GetInstanceID());
|
||||||
if (controllerLeft || Keyboard.current.leftArrowKey.isPressed || Keyboard.current.aKey.isPressed || Keyboard.current.jKey.isPressed) {
|
} else noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
doMoveLeft = true;
|
|
||||||
}
|
|
||||||
if (controllerRight || Keyboard.current.rightArrowKey.isPressed || Keyboard.current.dKey.isPressed || Keyboard.current.lKey.isPressed) {
|
|
||||||
doMoveRight = true;
|
|
||||||
}
|
|
||||||
if (controllerJump || Keyboard.current.spaceKey.isPressed || Keyboard.current.upArrowKey.isPressed || Keyboard.current.wKey.isPressed || Keyboard.current.downArrowKey.isPressed || Keyboard.current.sKey.isPressed || Keyboard.current.kKey.isPressed || Keyboard.current.iKey.isPressed || Mouse.current.leftButton.isPressed || (Gamepad.current != null && Gamepad.current.buttonSouth.isPressed)) {
|
|
||||||
doJump = true;
|
|
||||||
}
|
|
||||||
if (Keyboard.current.rKey.isPressed) {
|
|
||||||
doRestart = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var touches = UnityEngine.InputSystem.EnhancedTouch.Touch.activeTouches;
|
|
||||||
for (int i = 0; i < touches.Count; i++) {
|
|
||||||
var pos = touches[i].screenPosition;
|
|
||||||
UnityEngine.Vector3 clickPosition = Camera.main.ScreenToWorldPoint(new UnityEngine.Vector3(pos.x, pos.y, 0f));
|
|
||||||
clickPosition.z = 0f;
|
|
||||||
if (leftButton.GetComponent<HoldableButton>().isPressed) doMoveLeft = true;
|
|
||||||
if (rightButton.GetComponent<HoldableButton>().isPressed) doMoveRight = true;
|
|
||||||
if (jumpButton.GetComponent<HoldableButton>().isPressed) doJump = true;
|
|
||||||
if (restartButton.GetComponent<HoldableButton>().isPressed) doRestart = true;
|
|
||||||
if (pauseButton.GetComponent<HoldableButton>().isPressed) doBack = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (doMoveLeft && !doMoveRight) {
|
}
|
||||||
bird.transform.position += new UnityEngine.Vector3(-(2.4f * (speedModifier * canvasRect.lossyScale.x)), 0f, 0f);
|
} else if (noGravityBerries.Count() != 0) noGravityBerries.Clear();
|
||||||
ClampPosition(bird);
|
}
|
||||||
bird.transform.localScale = new UnityEngine.Vector3(1f, 1f, 1f);
|
|
||||||
|
void ClampPosition(Image image) {
|
||||||
|
RectTransform birdRect = image.GetComponent<RectTransform>();
|
||||||
|
float halfW = canvasRect.rect.width / 2f;
|
||||||
|
float halfBirdW = birdRect.rect.width / 2f;
|
||||||
|
|
||||||
|
UnityEngine.Vector2 pos = birdRect.anchoredPosition;
|
||||||
|
pos.x = Mathf.Clamp(pos.x, -halfW + halfBirdW, halfW - halfBirdW);
|
||||||
|
birdRect.anchoredPosition = pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FixedUpdate() {
|
||||||
|
SpawnBerries();
|
||||||
|
if (!pausePanel.activeSelf) {
|
||||||
|
MoveBird();
|
||||||
|
if (boostLeft > 0f) {
|
||||||
|
boostLeft -= Time.deltaTime;
|
||||||
|
boostText.text = "Boost expires in " + string.Format("{0:0.0}", boostLeft) + "s";
|
||||||
|
} else if (slownessLeft > 0f) {
|
||||||
|
slownessLeft -= Time.deltaTime;
|
||||||
|
boostText.text = "Slowness expires in " + string.Format("{0:0.0}", slownessLeft) + "s";
|
||||||
|
} else if (speedyLeft > 0f) {
|
||||||
|
speedyLeft -= Time.deltaTime;
|
||||||
|
boostText.text = "Speed expires in " + string.Format("{0:0.0}", speedyLeft) + "s";
|
||||||
|
} else if (antiLeft > 0f) {
|
||||||
|
antiLeft -= Time.deltaTime;
|
||||||
|
boostText.text = "Berry repellent expires in " + string.Format("{0:0.0}", antiLeft) + "s";
|
||||||
|
} else if (goldenLeft > 0f) {
|
||||||
|
goldenLeft -= Time.deltaTime;
|
||||||
|
boostText.text = "Berry magnet expires in " + string.Format("{0:0.0}", goldenLeft) + "s";
|
||||||
|
} else {
|
||||||
|
boostText.text = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SpawnBerries() {
|
||||||
|
if (Time.time < nextSpawnTime) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (speedyLeft > 0) {
|
||||||
|
nextSpawnTime = Time.time + 1f / (spawnRate * 1.875f);
|
||||||
|
} else {
|
||||||
|
nextSpawnTime = Time.time + 1f / spawnRate;
|
||||||
|
}
|
||||||
|
float spawnProbability = UnityEngine.Random.value;
|
||||||
|
if (!pausePanel.activeSelf) {
|
||||||
|
Image newBerry = Instantiate(berryTemplate).GetComponent<Image>();
|
||||||
|
newBerry.transform.SetParent(berryParent.transform, false);
|
||||||
|
|
||||||
|
if (spawnProbability <= 0.375f) {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/Berry");
|
||||||
|
newBerry.tag = "NormalBerry";
|
||||||
|
} else if (spawnProbability <= 0.55f) {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/PoisonBerry");
|
||||||
|
newBerry.tag = "PoisonBerry";
|
||||||
|
} else if (spawnProbability <= 0.60f) {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/SlowBerry");
|
||||||
|
newBerry.tag = "SlowBerry";
|
||||||
|
} else if (spawnProbability <= 0.70f) {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/UltraBerry");
|
||||||
|
newBerry.tag = "UltraBerry";
|
||||||
|
} else if (spawnProbability <= 0.80f) {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/SpeedyBerry");
|
||||||
|
newBerry.tag = "SpeedyBerry";
|
||||||
|
} else if (spawnProbability <= 0.85f) {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/CoinBerry");
|
||||||
|
newBerry.tag = "CoinBerry";
|
||||||
|
} else if (spawnProbability <= 0.90f) {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/BerryNoColor");
|
||||||
|
newBerry.tag = "RandomBerry";
|
||||||
|
RainbowImage randomBerryRainbowImage = newBerry.gameObject.AddComponent<RainbowImage>();
|
||||||
|
randomBerryRainbowImage.frequency = 5f;
|
||||||
|
} else if (spawnProbability <= 0.95f) {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/AntiBerry");
|
||||||
|
newBerry.tag = "AntiBerry";
|
||||||
|
} else {
|
||||||
|
newBerry.sprite = Resources.Load<Sprite>("Berries/GoldenBerry");
|
||||||
|
newBerry.tag = "GoldenBerry";
|
||||||
|
}
|
||||||
|
|
||||||
|
float spawnPositionX = UnityEngine.Random.Range(-(canvasRect.rect.width / 2 - newBerry.rectTransform.rect.width), canvasRect.rect.width / 2 - newBerry.rectTransform.rect.width);
|
||||||
|
newBerry.transform.localPosition = new UnityEngine.Vector3(spawnPositionX, (canvasRect.rect.height / 2) + newBerry.rectTransform.rect.height, 0f);
|
||||||
|
newBerry.gameObject.SetActive(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update() {
|
||||||
|
if (!pausePanel.activeSelf && rb.gravityScale != 100f * canvasRect.lossyScale.y) rb.gravityScale = 100f * canvasRect.lossyScale.y;
|
||||||
|
foreach (AudioSource audio in FindObjectsByType<AudioSource>(FindObjectsSortMode.None)) audio.pitch = speedyLeft > 0f ? 1.3f : 1f;
|
||||||
|
|
||||||
|
var allBerries = Tools.GetAllBerries(berryParent.transform);
|
||||||
|
|
||||||
|
if (!pausePanel.activeSelf)
|
||||||
|
foreach (GameObject berry in allBerries) {
|
||||||
|
if (berry.GetComponent<RectTransform>().anchoredPosition.y < -(canvasRect.rect.height / 2) - berry.GetComponent<RectTransform>().rect.height) {
|
||||||
|
noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
|
Destroy(berry);
|
||||||
|
} else if (Physics2D.Distance(bird.GetComponent<CircleCollider2D>(), berry.GetComponent<CircleCollider2D>()).distance <= 0.1f) {
|
||||||
|
switch (berry.tag) {
|
||||||
|
case "NormalBerry":
|
||||||
|
DoNormalBerry(berry, true);
|
||||||
|
break;
|
||||||
|
case "PoisonBerry":
|
||||||
|
DoPoisonBerry();
|
||||||
|
break;
|
||||||
|
case "SlowBerry":
|
||||||
|
DoSlowBerry(berry, true);
|
||||||
|
break;
|
||||||
|
case "UltraBerry":
|
||||||
|
DoUltraBerry(berry, true);
|
||||||
|
break;
|
||||||
|
case "SpeedyBerry":
|
||||||
|
DoSpeedyBerry(berry, true);
|
||||||
|
break;
|
||||||
|
case "CoinBerry":
|
||||||
|
DoCoinBerry(berry, true);
|
||||||
|
break;
|
||||||
|
case "RandomBerry":
|
||||||
|
DoRandomBerry(berry);
|
||||||
|
break;
|
||||||
|
case "AntiBerry":
|
||||||
|
DoAntiBerry(berry, true);
|
||||||
|
break;
|
||||||
|
case "GoldenBerry":
|
||||||
|
DoGoldenBerry(berry, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (doMoveRight && !doMoveLeft) {
|
if (berry != null) berry.GetComponent<Rigidbody2D>().linearVelocity = noGravityBerries.Contains(berry.GetInstanceID()) ? UnityEngine.Vector2.zero : new UnityEngine.Vector2(0f, speedyLeft == 0.0f ? (-300f * canvasRect.lossyScale.y) : (-550f * canvasRect.lossyScale.y));
|
||||||
bird.transform.position += new UnityEngine.Vector3(2.4f * (speedModifier * canvasRect.lossyScale.x), 0f, 0f);
|
}
|
||||||
ClampPosition(bird);
|
else foreach (GameObject berry in allBerries) berry.GetComponent<Rigidbody2D>().linearVelocity = UnityEngine.Vector2.zero;
|
||||||
bird.transform.localScale = new UnityEngine.Vector3(-1f, 1f, 1f);
|
if ((Application.platform == RuntimePlatform.Android && Keyboard.current.escapeKey.wasPressedThisFrame) || !Application.isMobilePlatform && (Keyboard.current.escapeKey.wasPressedThisFrame || (Gamepad.current != null && (Gamepad.current.startButton.wasPressedThisFrame || Gamepad.current.buttonEast.wasPressedThisFrame)))) TogglePause();
|
||||||
}
|
}
|
||||||
if (doMoveLeft || doMoveRight) groundCollider.transform.position = new(bird.transform.position.x, groundCollider.transform.position.y);
|
|
||||||
if (doJump && IsGrounded()) {
|
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Jump"), Camera.main.transform.position, 0.75f * BazookaManager.Instance.GetSettingSFXVolume());
|
|
||||||
if (boostLeft > 0f || speedyLeft > 0f) rb.linearVelocity = new UnityEngine.Vector2(rb.linearVelocity.x, 480f * canvasRect.lossyScale.y);
|
|
||||||
else if (slownessLeft > 0f) rb.linearVelocity = new UnityEngine.Vector2(rb.linearVelocity.x, 300f * canvasRect.lossyScale.y);
|
|
||||||
else rb.linearVelocity = new UnityEngine.Vector2(rb.linearVelocity.x, 380f * canvasRect.lossyScale.y);
|
|
||||||
}
|
|
||||||
if (doBack) {
|
|
||||||
TogglePause();
|
|
||||||
}
|
|
||||||
if (doRestart) {
|
|
||||||
if (score != 0) Respawn();
|
|
||||||
}
|
|
||||||
if (antiLeft > 0f || goldenLeft > 0f) {
|
|
||||||
List<string> berryTags = new() { "NormalBerry", "SlowBerry", "UltraBerry", "SpeedyBerry", "CoinBerry", "RandomBerry", "AntiBerry", "GoldenBerry" };
|
|
||||||
if (antiLeft > 0f) berryTags.Add("PoisonBerry");
|
|
||||||
|
|
||||||
float scale = (canvasRect.lossyScale.x + canvasRect.lossyScale.y) / 2f;
|
void Respawn() {
|
||||||
float radius = antiLeft > 0f ? 250f * scale : 325f * scale;
|
bird.GetComponent<RectTransform>().anchoredPosition = new UnityEngine.Vector3(0f, 64f, 0f);
|
||||||
float speed = antiLeft > 0f ? 1.25f * scale : -1.75f * scale;
|
groundCollider.GetComponent<RectTransform>().anchoredPosition = new(0f, -2.5f);
|
||||||
|
bird.transform.localScale = new UnityEngine.Vector3(1f, 1f, 1f);
|
||||||
|
rb.linearVelocity = new();
|
||||||
|
score = 0;
|
||||||
|
boostLeft = 0f;
|
||||||
|
slownessLeft = 0f;
|
||||||
|
speedyLeft = 0f;
|
||||||
|
antiLeft = 0f;
|
||||||
|
UpdateStats(0, 1);
|
||||||
|
|
||||||
foreach (string tag in berryTags) {
|
foreach (GameObject berry in Tools.GetAllBerries(berryParent.transform)) Destroy(berry);
|
||||||
foreach (var berry in GameObject.FindGameObjectsWithTag(tag)) {
|
}
|
||||||
RectTransform berryRect = berry.GetComponent<RectTransform>();
|
|
||||||
UnityEngine.Vector3 dir = berryRect.position - bird.GetComponent<RectTransform>().position;
|
|
||||||
|
|
||||||
if (dir.magnitude < radius) {
|
void UpdateStats(BigInteger scoreAddAmount, BigInteger attemptAddAmount) {
|
||||||
berryRect.position += speed * dir.normalized;
|
var levelBefore = Tools.GetLevelInfo().level;
|
||||||
ClampPosition(berry.GetComponent<Image>());
|
var prefix = "";
|
||||||
noGravityBerries.Add(berry.GetInstanceID());
|
var suffix = "";
|
||||||
} else noGravityBerries.Remove(berry.GetInstanceID());
|
score += scoreAddAmount;
|
||||||
}
|
totalAttempts += attemptAddAmount;
|
||||||
}
|
attempts += attemptAddAmount;
|
||||||
} else if (noGravityBerries.Count() != 0) noGravityBerries.Clear();
|
if (score >= highscore) {
|
||||||
|
highscore = score;
|
||||||
|
prefix = "<color=#7FFFD4>";
|
||||||
|
suffix = "</color>";
|
||||||
}
|
}
|
||||||
|
BazookaManager.Instance.SetGameStoreHighScore(highscore);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalNormalBerries(totalNormalBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalPoisonBerries(totalPoisonBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalSlowBerries(totalSlowBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalUltraBerries(totalUltraBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalSpeedyBerries(totalSpeedyBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalCoinBerries(totalCoinBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalRandomBerries(totalRandomBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalAntiBerries(totalAntiBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalGoldenBerries(totalGoldenBerries);
|
||||||
|
BazookaManager.Instance.SetGameStoreTotalAttepts(totalAttempts);
|
||||||
|
var customBirdIconData = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
|
customBirdIconData.Balance = totalCoins;
|
||||||
|
BazookaManager.Instance.SetCustomBirdIconData(customBirdIconData);
|
||||||
|
scoreText.text = $"Score: {Tools.FormatWithCommas(score)} \\u2022 Attempts: {Tools.FormatWithCommas(attempts)}";
|
||||||
|
highScoreText.text = prefix + $"High Score: {Tools.FormatWithCommas(highscore) + suffix} \\u2022 Total Attempts: {Tools.FormatWithCommas(totalAttempts)}";
|
||||||
|
coinText.text = $"Coins: {Tools.FormatWithCommas(totalCoins)}";
|
||||||
|
if (Application.isMobilePlatform) restartButton.interactable = score != 0;
|
||||||
|
if (DiscordRPCHandler.Instance != null)
|
||||||
|
DiscordRPCHandler.Instance.UpdateRPC("Playing in normal mode", $"Score: {Tools.FormatWithCommas(score)} | High Score: {Tools.FormatWithCommas(highscore)}");
|
||||||
|
var (_, level, currentXpInLevel, totalXpForLevel, percentDone) = Tools.GetLevelInfo();
|
||||||
|
levelText.text = $"Level: {Tools.FormatWithCommas(level.ToString())}" + (Application.isMobilePlatform ? " \\u2022 " : "\n") + $"XP: {Tools.FormatWithCommas(currentXpInLevel.ToString())}/{Tools.FormatWithCommas(totalXpForLevel.ToString())} ({Math.Floor(percentDone)}%)";
|
||||||
|
if (level != levelBefore) AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Levelup"), Camera.main.transform.position, 1f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
|
}
|
||||||
|
|
||||||
void ClampPosition(Image image) {
|
internal void TogglePause() {
|
||||||
RectTransform birdRect = image.GetComponent<RectTransform>();
|
if (pausePanel.activeSelf) DisablePause();
|
||||||
float halfW = canvasRect.rect.width / 2f;
|
else EnablePause();
|
||||||
float halfBirdW = birdRect.rect.width / 2f;
|
}
|
||||||
|
|
||||||
UnityEngine.Vector2 pos = birdRect.anchoredPosition;
|
internal void EnablePause() {
|
||||||
pos.x = Mathf.Clamp(pos.x, -halfW + halfBirdW, halfW - halfBirdW);
|
velocityBeforePause = rb.linearVelocity;
|
||||||
birdRect.anchoredPosition = pos;
|
rb.linearVelocity = new();
|
||||||
|
rb.gravityScale = 0f;
|
||||||
|
Cursor.visible = true;
|
||||||
|
Cursor.lockState = CursorLockMode.None;
|
||||||
|
backgroundMusic.GetComponent<GameMusicHandler>().PauseMusic();
|
||||||
|
pausePanel.SetActive(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void DisablePause() {
|
||||||
|
rb.gravityScale = 100f * canvasRect.lossyScale.y;
|
||||||
|
rb.linearVelocity = velocityBeforePause;
|
||||||
|
velocityBeforePause = new();
|
||||||
|
if (GamePlayerPauseMenu.Instance.statsMenu.activeSelf) {
|
||||||
|
GamePlayerPauseMenu.Instance.statsMenuExitButton.onClick.Invoke();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
if (GamePlayerPauseMenu.Instance.editingUI == true) {
|
||||||
void FixedUpdate() {
|
GamePlayerPauseMenu.Instance.ToggleEditingUI();
|
||||||
SpawnBerries();
|
return;
|
||||||
if (!pausePanel.activeSelf) {
|
|
||||||
MoveBird();
|
|
||||||
if (boostLeft > 0f) {
|
|
||||||
boostLeft -= Time.deltaTime;
|
|
||||||
boostText.text = "Boost expires in " + string.Format("{0:0.0}", boostLeft) + "s";
|
|
||||||
} else if (slownessLeft > 0f) {
|
|
||||||
slownessLeft -= Time.deltaTime;
|
|
||||||
boostText.text = "Slowness expires in " + string.Format("{0:0.0}", slownessLeft) + "s";
|
|
||||||
} else if (speedyLeft > 0f) {
|
|
||||||
speedyLeft -= Time.deltaTime;
|
|
||||||
boostText.text = "Speed expires in " + string.Format("{0:0.0}", speedyLeft) + "s";
|
|
||||||
} else if (antiLeft > 0f) {
|
|
||||||
antiLeft -= Time.deltaTime;
|
|
||||||
boostText.text = "Berry repellent expires in " + string.Format("{0:0.0}", antiLeft) + "s";
|
|
||||||
} else if (goldenLeft > 0f) {
|
|
||||||
goldenLeft -= Time.deltaTime;
|
|
||||||
boostText.text = "Berry magnet expires in " + string.Format("{0:0.0}", goldenLeft) + "s";
|
|
||||||
} else {
|
|
||||||
boostText.text = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Cursor.visible = false;
|
||||||
|
Cursor.lockState = CursorLockMode.Locked;
|
||||||
|
backgroundMusic.GetComponent<GameMusicHandler>().ResumeMusic();
|
||||||
|
pausePanel.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
void SpawnBerries() {
|
void OnApplicationPause(bool pause) {
|
||||||
if (Time.time < nextSpawnTime) {
|
if (pause) EnablePause();
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
if (speedyLeft > 0) {
|
|
||||||
nextSpawnTime = Time.time + 1f / (spawnRate * 1.875f);
|
|
||||||
} else {
|
|
||||||
nextSpawnTime = Time.time + 1f / spawnRate;
|
|
||||||
}
|
|
||||||
float spawnProbability = UnityEngine.Random.value;
|
|
||||||
if (!pausePanel.activeSelf) {
|
|
||||||
Image newBerry = Instantiate(berryTemplate).GetComponent<Image>();
|
|
||||||
newBerry.transform.SetParent(berryParent.transform, false);
|
|
||||||
|
|
||||||
if (spawnProbability <= 0.375f) {
|
void OnApplicationQuit() {
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/Berry");
|
Cursor.visible = true;
|
||||||
newBerry.tag = "NormalBerry";
|
Cursor.lockState = CursorLockMode.None;
|
||||||
} else if (spawnProbability <= 0.55f) {
|
}
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/PoisonBerry");
|
|
||||||
newBerry.tag = "PoisonBerry";
|
|
||||||
} else if (spawnProbability <= 0.60f) {
|
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/SlowBerry");
|
|
||||||
newBerry.tag = "SlowBerry";
|
|
||||||
} else if (spawnProbability <= 0.70f) {
|
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/UltraBerry");
|
|
||||||
newBerry.tag = "UltraBerry";
|
|
||||||
} else if (spawnProbability <= 0.80f) {
|
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/SpeedyBerry");
|
|
||||||
newBerry.tag = "SpeedyBerry";
|
|
||||||
} else if (spawnProbability <= 0.85f) {
|
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/CoinBerry");
|
|
||||||
newBerry.tag = "CoinBerry";
|
|
||||||
} else if (spawnProbability <= 0.90f) {
|
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/BerryNoColor");
|
|
||||||
newBerry.tag = "RandomBerry";
|
|
||||||
RainbowImage randomBerryRainbowImage = newBerry.gameObject.AddComponent<RainbowImage>();
|
|
||||||
randomBerryRainbowImage.frequency = 5f;
|
|
||||||
} else if (spawnProbability <= 0.95f) {
|
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/AntiBerry");
|
|
||||||
newBerry.tag = "AntiBerry";
|
|
||||||
} else {
|
|
||||||
newBerry.sprite = Resources.Load<Sprite>("Berries/GoldenBerry");
|
|
||||||
newBerry.tag = "GoldenBerry";
|
|
||||||
}
|
|
||||||
|
|
||||||
float spawnPositionX = UnityEngine.Random.Range(-(canvasRect.rect.width / 2 - newBerry.rectTransform.rect.width), canvasRect.rect.width / 2 - newBerry.rectTransform.rect.width);
|
void DoNormalBerry(GameObject berry, bool increment) {
|
||||||
newBerry.transform.localPosition = new UnityEngine.Vector3(spawnPositionX, (canvasRect.rect.height / 2) + newBerry.rectTransform.rect.height, 0f);
|
if (increment) totalNormalBerries++;
|
||||||
newBerry.gameObject.SetActive(true);
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Eat"), Camera.main.transform.position, 1.2f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
}
|
noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
|
Destroy(berry);
|
||||||
|
UpdateStats(1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DoPoisonBerry() {
|
||||||
|
totalPoisonBerries++;
|
||||||
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Death"), Camera.main.transform.position, 1.2f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
|
Respawn();
|
||||||
|
UpdateStats(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DoSlowBerry(GameObject berry, bool increment) {
|
||||||
|
if (increment) totalSlowBerries++;
|
||||||
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Downgrade"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
|
noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
|
Destroy(berry);
|
||||||
|
boostLeft = 0f;
|
||||||
|
slownessLeft = 10f;
|
||||||
|
speedyLeft = 0f;
|
||||||
|
antiLeft = 0f;
|
||||||
|
goldenLeft = 0f;
|
||||||
|
if (score > 0) {
|
||||||
|
UpdateStats(-1, 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Update() {
|
void DoUltraBerry(GameObject berry, bool increment) {
|
||||||
if (!pausePanel.activeSelf && rb.gravityScale != 100f * canvasRect.lossyScale.y) rb.gravityScale = 100f * canvasRect.lossyScale.y;
|
if (increment) totalUltraBerries++;
|
||||||
foreach (AudioSource audio in FindObjectsByType<AudioSource>(FindObjectsSortMode.None)) audio.pitch = speedyLeft > 0f ? 1.3f : 1f;
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Powerup"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
|
noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
var allBerries = Tools.GetAllBerries(berryParent.transform);
|
Destroy(berry);
|
||||||
|
speedyLeft = 0f;
|
||||||
if (!pausePanel.activeSelf) foreach (GameObject berry in allBerries) {
|
antiLeft = 0f;
|
||||||
if (berry.GetComponent<RectTransform>().anchoredPosition.y < -(canvasRect.rect.height / 2) - berry.GetComponent<RectTransform>().rect.height) {
|
goldenLeft = 0f;
|
||||||
noGravityBerries.Remove(berry.GetInstanceID());
|
if (slownessLeft > 0f) {
|
||||||
Destroy(berry);
|
slownessLeft = 0f;
|
||||||
} else if (Physics2D.Distance(bird.GetComponent<CircleCollider2D>(), berry.GetComponent<CircleCollider2D>()).distance <= 0.1f) {
|
UpdateStats(1, 0);
|
||||||
switch (berry.tag) {
|
} else {
|
||||||
case "NormalBerry":
|
boostLeft += 10f;
|
||||||
DoNormalBerry(berry, true);
|
UpdateStats(5, 0);
|
||||||
break;
|
|
||||||
case "PoisonBerry":
|
|
||||||
DoPoisonBerry();
|
|
||||||
break;
|
|
||||||
case "SlowBerry":
|
|
||||||
DoSlowBerry(berry, true);
|
|
||||||
break;
|
|
||||||
case "UltraBerry":
|
|
||||||
DoUltraBerry(berry, true);
|
|
||||||
break;
|
|
||||||
case "SpeedyBerry":
|
|
||||||
DoSpeedyBerry(berry, true);
|
|
||||||
break;
|
|
||||||
case "CoinBerry":
|
|
||||||
DoCoinBerry(berry, true);
|
|
||||||
break;
|
|
||||||
case "RandomBerry":
|
|
||||||
DoRandomBerry(berry);
|
|
||||||
break;
|
|
||||||
case "AntiBerry":
|
|
||||||
DoAntiBerry(berry, true);
|
|
||||||
break;
|
|
||||||
case "GoldenBerry":
|
|
||||||
DoGoldenBerry(berry, true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (berry != null) berry.GetComponent<Rigidbody2D>().linearVelocity = noGravityBerries.Contains(berry.GetInstanceID()) ? UnityEngine.Vector2.zero : new UnityEngine.Vector2(0f, speedyLeft == 0.0f ? (-300f * canvasRect.lossyScale.y) : (-550f * canvasRect.lossyScale.y));
|
|
||||||
}
|
|
||||||
else foreach (GameObject berry in allBerries) berry.GetComponent<Rigidbody2D>().linearVelocity = UnityEngine.Vector2.zero;
|
|
||||||
if ((Application.platform == RuntimePlatform.Android && Keyboard.current.escapeKey.wasPressedThisFrame) || !Application.isMobilePlatform && (Keyboard.current.escapeKey.wasPressedThisFrame || (Gamepad.current != null && (Gamepad.current.startButton.wasPressedThisFrame || Gamepad.current.buttonEast.wasPressedThisFrame)))) TogglePause();
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Respawn() {
|
void DoSpeedyBerry(GameObject berry, bool increment) {
|
||||||
bird.GetComponent<RectTransform>().anchoredPosition = new UnityEngine.Vector3(0f, 64f, 0f);
|
if (increment) totalSpeedyBerries++;
|
||||||
groundCollider.GetComponent<RectTransform>().anchoredPosition = new(0f, -2.5f);
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/SpeedyPowerup"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
bird.transform.localScale = new UnityEngine.Vector3(1f, 1f, 1f);
|
noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
rb.linearVelocity = new();
|
Destroy(berry);
|
||||||
score = 0;
|
boostLeft = 0f;
|
||||||
boostLeft = 0f;
|
slownessLeft = 0f;
|
||||||
slownessLeft = 0f;
|
speedyLeft = 10f;
|
||||||
speedyLeft = 0f;
|
antiLeft = 0f;
|
||||||
antiLeft = 0f;
|
goldenLeft = 0f;
|
||||||
UpdateStats(0, 1);
|
UpdateStats(10, 0);
|
||||||
|
}
|
||||||
|
|
||||||
foreach (GameObject berry in Tools.GetAllBerries(berryParent.transform)) Destroy(berry);
|
void DoCoinBerry(GameObject berry, bool increment) {
|
||||||
}
|
if (increment) totalCoinBerries++;
|
||||||
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/CoinCollect"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
|
noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
|
Destroy(berry);
|
||||||
|
totalCoins += 10;
|
||||||
|
UpdateStats(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
void UpdateStats(BigInteger scoreAddAmount, BigInteger attemptAddAmount) {
|
void DoRandomBerry(GameObject berry) {
|
||||||
var levelBefore = Tools.GetLevelInfo().level;
|
totalRandomBerries++;
|
||||||
var prefix = "";
|
Action[] funcs = {
|
||||||
var suffix = "";
|
|
||||||
score += scoreAddAmount;
|
|
||||||
totalAttempts += attemptAddAmount;
|
|
||||||
attempts += attemptAddAmount;
|
|
||||||
if (score >= highscore) {
|
|
||||||
highscore = score;
|
|
||||||
prefix = "<color=#7FFFD4>";
|
|
||||||
suffix = "</color>";
|
|
||||||
}
|
|
||||||
BazookaManager.Instance.SetGameStoreHighScore(highscore);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalNormalBerries(totalNormalBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalPoisonBerries(totalPoisonBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalSlowBerries(totalSlowBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalUltraBerries(totalUltraBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalSpeedyBerries(totalSpeedyBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalCoinBerries(totalCoinBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalRandomBerries(totalRandomBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalAntiBerries(totalAntiBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalGoldenBerries(totalGoldenBerries);
|
|
||||||
BazookaManager.Instance.SetGameStoreTotalAttepts(totalAttempts);
|
|
||||||
var customBirdIconData = BazookaManager.Instance.GetCustomBirdIconData();
|
|
||||||
customBirdIconData.Balance = totalCoins;
|
|
||||||
BazookaManager.Instance.SetCustomBirdIconData(customBirdIconData);
|
|
||||||
scoreText.text = $"Score: {Tools.FormatWithCommas(score)} \\u2022 Attempts: {Tools.FormatWithCommas(attempts)}";
|
|
||||||
highScoreText.text = prefix + $"High Score: {Tools.FormatWithCommas(highscore) + suffix} \\u2022 Total Attempts: {Tools.FormatWithCommas(totalAttempts)}";
|
|
||||||
coinText.text = $"Coins: {Tools.FormatWithCommas(totalCoins)}";
|
|
||||||
if (Application.isMobilePlatform) restartButton.interactable = score != 0;
|
|
||||||
if (DiscordRPCHandler.Instance != null)
|
|
||||||
DiscordRPCHandler.Instance.UpdateRPC("Playing in normal mode", $"Score: {Tools.FormatWithCommas(score)} | High Score: {Tools.FormatWithCommas(highscore)}");
|
|
||||||
var (_, level, currentXpInLevel, totalXpForLevel, percentDone) = Tools.GetLevelInfo();
|
|
||||||
levelText.text = $"Level: {Tools.FormatWithCommas(level.ToString())}" + (Application.isMobilePlatform ? " \\u2022 " : "\n") + $"XP: {Tools.FormatWithCommas(currentXpInLevel.ToString())}/{Tools.FormatWithCommas(totalXpForLevel.ToString())} ({Math.Floor(percentDone)}%)";
|
|
||||||
if (level != levelBefore) AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Levelup"), Camera.main.transform.position, 1f * BazookaManager.Instance.GetSettingSFXVolume());
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void TogglePause() {
|
|
||||||
if (pausePanel.activeSelf) DisablePause();
|
|
||||||
else EnablePause();
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void EnablePause() {
|
|
||||||
velocityBeforePause = rb.linearVelocity;
|
|
||||||
rb.linearVelocity = new();
|
|
||||||
rb.gravityScale = 0f;
|
|
||||||
Cursor.visible = true;
|
|
||||||
Cursor.lockState = CursorLockMode.None;
|
|
||||||
backgroundMusic.GetComponent<GameMusicHandler>().PauseMusic();
|
|
||||||
pausePanel.SetActive(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void DisablePause() {
|
|
||||||
rb.gravityScale = 100f * canvasRect.lossyScale.y;
|
|
||||||
rb.linearVelocity = velocityBeforePause;
|
|
||||||
velocityBeforePause = new();
|
|
||||||
if (GamePlayerPauseMenu.Instance.statsMenu.activeSelf) {
|
|
||||||
GamePlayerPauseMenu.Instance.statsMenuExitButton.onClick.Invoke();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (GamePlayerPauseMenu.Instance.editingUI == true) {
|
|
||||||
GamePlayerPauseMenu.Instance.ToggleEditingUI();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Cursor.visible = false;
|
|
||||||
Cursor.lockState = CursorLockMode.Locked;
|
|
||||||
backgroundMusic.GetComponent<GameMusicHandler>().ResumeMusic();
|
|
||||||
pausePanel.SetActive(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnApplicationPause(bool pause) {
|
|
||||||
if (pause) EnablePause();
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnApplicationQuit() {
|
|
||||||
Cursor.visible = true;
|
|
||||||
Cursor.lockState = CursorLockMode.None;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DoNormalBerry(GameObject berry, bool increment) {
|
|
||||||
if (increment) totalNormalBerries++;
|
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Eat"), Camera.main.transform.position, 1.2f * BazookaManager.Instance.GetSettingSFXVolume());
|
|
||||||
noGravityBerries.Remove(berry.GetInstanceID());
|
|
||||||
Destroy(berry);
|
|
||||||
UpdateStats(1, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DoPoisonBerry() {
|
|
||||||
totalPoisonBerries++;
|
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Death"), Camera.main.transform.position, 1.2f * BazookaManager.Instance.GetSettingSFXVolume());
|
|
||||||
Respawn();
|
|
||||||
UpdateStats(0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DoSlowBerry(GameObject berry, bool increment) {
|
|
||||||
if (increment) totalSlowBerries++;
|
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Downgrade"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
|
||||||
noGravityBerries.Remove(berry.GetInstanceID());
|
|
||||||
Destroy(berry);
|
|
||||||
boostLeft = 0f;
|
|
||||||
slownessLeft = 10f;
|
|
||||||
speedyLeft = 0f;
|
|
||||||
antiLeft = 0f;
|
|
||||||
goldenLeft = 0f;
|
|
||||||
if (score > 0) {
|
|
||||||
UpdateStats(-1, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DoUltraBerry(GameObject berry, bool increment) {
|
|
||||||
if (increment) totalUltraBerries++;
|
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Powerup"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
|
||||||
noGravityBerries.Remove(berry.GetInstanceID());
|
|
||||||
Destroy(berry);
|
|
||||||
speedyLeft = 0f;
|
|
||||||
antiLeft = 0f;
|
|
||||||
goldenLeft = 0f;
|
|
||||||
if (slownessLeft > 0f) {
|
|
||||||
slownessLeft = 0f;
|
|
||||||
UpdateStats(1, 0);
|
|
||||||
} else {
|
|
||||||
boostLeft += 10f;
|
|
||||||
UpdateStats(5, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DoSpeedyBerry(GameObject berry, bool increment) {
|
|
||||||
if (increment) totalSpeedyBerries++;
|
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/SpeedyPowerup"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
|
||||||
noGravityBerries.Remove(berry.GetInstanceID());
|
|
||||||
Destroy(berry);
|
|
||||||
boostLeft = 0f;
|
|
||||||
slownessLeft = 0f;
|
|
||||||
speedyLeft = 10f;
|
|
||||||
antiLeft = 0f;
|
|
||||||
goldenLeft = 0f;
|
|
||||||
UpdateStats(10, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DoCoinBerry(GameObject berry, bool increment) {
|
|
||||||
if (increment) totalCoinBerries++;
|
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/CoinCollect"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
|
||||||
noGravityBerries.Remove(berry.GetInstanceID());
|
|
||||||
Destroy(berry);
|
|
||||||
totalCoins += 10;
|
|
||||||
UpdateStats(0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DoRandomBerry(GameObject berry) {
|
|
||||||
totalRandomBerries++;
|
|
||||||
Action[] funcs = {
|
|
||||||
() => DoNormalBerry(berry, false),
|
() => DoNormalBerry(berry, false),
|
||||||
() => DoSlowBerry(berry, false),
|
() => DoSlowBerry(berry, false),
|
||||||
() => DoUltraBerry(berry, false),
|
() => DoUltraBerry(berry, false),
|
||||||
@@ -491,32 +492,32 @@ public class GamePlayer : MonoBehaviour {
|
|||||||
() => DoAntiBerry(berry, false),
|
() => DoAntiBerry(berry, false),
|
||||||
() => DoGoldenBerry(berry, false)
|
() => DoGoldenBerry(berry, false)
|
||||||
};
|
};
|
||||||
funcs[UnityEngine.Random.Range(0, funcs.Length)]();
|
funcs[UnityEngine.Random.Range(0, funcs.Length)]();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoAntiBerry(GameObject berry, bool increment) {
|
void DoAntiBerry(GameObject berry, bool increment) {
|
||||||
if (increment) totalAntiBerries++;
|
if (increment) totalAntiBerries++;
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Downgrade"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Downgrade"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
noGravityBerries.Remove(berry.GetInstanceID());
|
noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
Destroy(berry);
|
Destroy(berry);
|
||||||
boostLeft = 0f;
|
boostLeft = 0f;
|
||||||
slownessLeft = 0f;
|
slownessLeft = 0f;
|
||||||
speedyLeft = 0f;
|
speedyLeft = 0f;
|
||||||
antiLeft = 10f;
|
antiLeft = 10f;
|
||||||
goldenLeft = 0f;
|
goldenLeft = 0f;
|
||||||
UpdateStats(0, 0);
|
UpdateStats(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoGoldenBerry(GameObject berry, bool increment) {
|
void DoGoldenBerry(GameObject berry, bool increment) {
|
||||||
if (increment) totalGoldenBerries++;
|
if (increment) totalGoldenBerries++;
|
||||||
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Powerup"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Powerup"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
|
||||||
noGravityBerries.Remove(berry.GetInstanceID());
|
noGravityBerries.Remove(berry.GetInstanceID());
|
||||||
Destroy(berry);
|
Destroy(berry);
|
||||||
boostLeft = 0f;
|
boostLeft = 0f;
|
||||||
slownessLeft = 0f;
|
slownessLeft = 0f;
|
||||||
speedyLeft = 0f;
|
speedyLeft = 0f;
|
||||||
antiLeft = 0f;
|
antiLeft = 0f;
|
||||||
goldenLeft = 10f;
|
goldenLeft = 10f;
|
||||||
UpdateStats(4, 0);
|
UpdateStats(4, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,162 +4,162 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class GamePlayerPauseMenu : MonoBehaviour {
|
public class GamePlayerPauseMenu : MonoBehaviour {
|
||||||
public static GamePlayerPauseMenu Instance;
|
public static GamePlayerPauseMenu Instance;
|
||||||
[SerializeField] private Button backButton;
|
[SerializeField] private Button backButton;
|
||||||
[SerializeField] private Button continueButton;
|
[SerializeField] private Button continueButton;
|
||||||
[SerializeField] private Button statsButton;
|
[SerializeField] private Button statsButton;
|
||||||
[SerializeField] private Button editUiButton;
|
[SerializeField] private Button editUiButton;
|
||||||
[SerializeField] private Button resetUiButton;
|
[SerializeField] private Button resetUiButton;
|
||||||
[SerializeField] private AudioSource songLoop;
|
[SerializeField] private AudioSource songLoop;
|
||||||
[SerializeField] private TMP_Text scoreText;
|
[SerializeField] private TMP_Text scoreText;
|
||||||
[SerializeField] private TMP_Text highScoreText;
|
[SerializeField] private TMP_Text highScoreText;
|
||||||
[SerializeField] private TMP_Text boostText;
|
[SerializeField] private TMP_Text boostText;
|
||||||
[SerializeField] private TMP_Text coinsText;
|
[SerializeField] private TMP_Text coinsText;
|
||||||
[SerializeField] private TMP_Text levelText;
|
[SerializeField] private TMP_Text levelText;
|
||||||
[SerializeField] private Button pauseButton;
|
[SerializeField] private Button pauseButton;
|
||||||
[SerializeField] private Button restartButton;
|
[SerializeField] private Button restartButton;
|
||||||
[SerializeField] private Button jumpButton;
|
[SerializeField] private Button jumpButton;
|
||||||
[SerializeField] private Button rightButton;
|
[SerializeField] private Button rightButton;
|
||||||
[SerializeField] private Button leftButton;
|
[SerializeField] private Button leftButton;
|
||||||
internal bool editingUI = false;
|
internal bool editingUI = false;
|
||||||
|
|
||||||
public GameObject statsMenu;
|
public GameObject statsMenu;
|
||||||
public Button statsMenuExitButton;
|
public Button statsMenuExitButton;
|
||||||
[SerializeField] private TMP_Text statsText;
|
[SerializeField] private TMP_Text statsText;
|
||||||
|
|
||||||
[SerializeField] private Toggle settingFullscreenToggle;
|
[SerializeField] private Toggle settingFullscreenToggle;
|
||||||
[SerializeField] private Toggle settingVSyncToggle;
|
[SerializeField] private Toggle settingVSyncToggle;
|
||||||
[SerializeField] private Toggle settingRandomMusicToggle;
|
[SerializeField] private Toggle settingRandomMusicToggle;
|
||||||
[SerializeField] private Slider musicSlider;
|
[SerializeField] private Slider musicSlider;
|
||||||
[SerializeField] private Slider sfxSlider;
|
[SerializeField] private Slider sfxSlider;
|
||||||
[SerializeField] private TMP_Text musicSliderText;
|
[SerializeField] private TMP_Text musicSliderText;
|
||||||
[SerializeField] private TMP_Text sfxSliderText;
|
[SerializeField] private TMP_Text sfxSliderText;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
Instance = this;
|
Instance = this;
|
||||||
continueButton.onClick.AddListener(GamePlayer.Instance.DisablePause);
|
continueButton.onClick.AddListener(GamePlayer.Instance.DisablePause);
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
songLoop.volume = value;
|
songLoop.volume = value;
|
||||||
});
|
});
|
||||||
sfxSlider.onValueChanged.AddListener(value => {
|
sfxSlider.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingSFXVolume(value);
|
BazookaManager.Instance.SetSettingSFXVolume(value);
|
||||||
});
|
});
|
||||||
editUiButton.onClick.AddListener(() => {
|
editUiButton.onClick.AddListener(() => {
|
||||||
ToggleEditingUI();
|
ToggleEditingUI();
|
||||||
});
|
});
|
||||||
resetUiButton.onClick.AddListener(() => {
|
resetUiButton.onClick.AddListener(() => {
|
||||||
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
|
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
|
||||||
highScoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
|
highScoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
|
||||||
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -190f);
|
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -190f);
|
||||||
coinsText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(260f, 47.5f);
|
coinsText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(260f, 47.5f);
|
||||||
levelText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-290f, 85f);
|
levelText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-290f, 85f);
|
||||||
PlayerPrefs.DeleteKey("DraggedUIScoreText");
|
PlayerPrefs.DeleteKey("DraggedUIScoreText");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIHighScoreText");
|
PlayerPrefs.DeleteKey("DraggedUIHighScoreText");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIBoostText");
|
PlayerPrefs.DeleteKey("DraggedUIBoostText");
|
||||||
PlayerPrefs.DeleteKey("DraggedUICoinsText");
|
PlayerPrefs.DeleteKey("DraggedUICoinsText");
|
||||||
PlayerPrefs.DeleteKey("DraggedUILevelText");
|
PlayerPrefs.DeleteKey("DraggedUILevelText");
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
|
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
|
||||||
restartButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, -128f);
|
restartButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, -128f);
|
||||||
jumpButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 288f);
|
jumpButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 288f);
|
||||||
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
|
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
|
||||||
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
|
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
|
||||||
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
|
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
|
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
|
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIRightButton");
|
PlayerPrefs.DeleteKey("DraggedUIRightButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUILeftButton");
|
PlayerPrefs.DeleteKey("DraggedUILeftButton");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
statsButton.onClick.AddListener(() => {
|
statsButton.onClick.AddListener(() => {
|
||||||
statsMenu.SetActive(true);
|
statsMenu.SetActive(true);
|
||||||
var text = new StringBuilder();
|
var text = new StringBuilder();
|
||||||
text.AppendLine("High Score: " + Tools.FormatWithCommas(GamePlayer.Instance.highscore));
|
text.AppendLine("High Score: " + Tools.FormatWithCommas(GamePlayer.Instance.highscore));
|
||||||
text.AppendLine("Total Normal Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalNormalBerries));
|
text.AppendLine("Total Normal Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalNormalBerries));
|
||||||
text.AppendLine("Total Poison Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalPoisonBerries));
|
text.AppendLine("Total Poison Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalPoisonBerries));
|
||||||
text.AppendLine("Total Slow Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalSlowBerries));
|
text.AppendLine("Total Slow Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalSlowBerries));
|
||||||
text.AppendLine("Total Ultra Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalUltraBerries));
|
text.AppendLine("Total Ultra Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalUltraBerries));
|
||||||
text.AppendLine("Total Coin Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalCoinBerries));
|
text.AppendLine("Total Coin Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalCoinBerries));
|
||||||
text.AppendLine("Total Speedy Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalSpeedyBerries));
|
text.AppendLine("Total Speedy Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalSpeedyBerries));
|
||||||
text.AppendLine("Total Random Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalRandomBerries));
|
text.AppendLine("Total Random Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalRandomBerries));
|
||||||
text.AppendLine("Total Anti Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalAntiBerries));
|
text.AppendLine("Total Anti Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalAntiBerries));
|
||||||
text.AppendLine("Total Golden Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalGoldenBerries));
|
text.AppendLine("Total Golden Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalGoldenBerries));
|
||||||
text.AppendLine("Total Attempts: " + Tools.FormatWithCommas(GamePlayer.Instance.totalAttempts));
|
text.AppendLine("Total Attempts: " + Tools.FormatWithCommas(GamePlayer.Instance.totalAttempts));
|
||||||
statsText.text = text.ToString();
|
statsText.text = text.ToString();
|
||||||
});
|
});
|
||||||
statsMenuExitButton.onClick.AddListener(() => {
|
statsMenuExitButton.onClick.AddListener(() => {
|
||||||
statsMenu.SetActive(false);
|
statsMenu.SetActive(false);
|
||||||
statsText.text = string.Empty;
|
statsText.text = string.Empty;
|
||||||
});
|
});
|
||||||
|
|
||||||
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
||||||
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
||||||
if (!Application.isMobilePlatform) {
|
if (!Application.isMobilePlatform) {
|
||||||
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
||||||
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
||||||
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
settingFullscreenToggle.onValueChanged.AddListener(value => {
|
settingFullscreenToggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingFullScreen(value);
|
BazookaManager.Instance.SetSettingFullScreen(value);
|
||||||
var width = Display.main.systemWidth;
|
var width = Display.main.systemWidth;
|
||||||
var height = Display.main.systemHeight;
|
var height = Display.main.systemHeight;
|
||||||
Screen.SetResolution(width, height, value);
|
Screen.SetResolution(width, height, value);
|
||||||
});
|
});
|
||||||
settingVSyncToggle.onValueChanged.AddListener(value => {
|
settingVSyncToggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingVsync(value);
|
BazookaManager.Instance.SetSettingVsync(value);
|
||||||
QualitySettings.vSyncCount = value ? 1 : -1;
|
QualitySettings.vSyncCount = value ? 1 : -1;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
settingFullscreenToggle.interactable = false;
|
settingFullscreenToggle.interactable = false;
|
||||||
settingVSyncToggle.interactable = false;
|
settingVSyncToggle.interactable = false;
|
||||||
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
}
|
|
||||||
settingRandomMusicToggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
|
||||||
GamePlayer.Instance.backgroundMusic.volume = value;
|
|
||||||
});
|
|
||||||
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
|
||||||
}
|
}
|
||||||
|
settingRandomMusicToggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
||||||
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
|
GamePlayer.Instance.backgroundMusic.volume = value;
|
||||||
|
});
|
||||||
|
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
||||||
|
}
|
||||||
|
|
||||||
public void ToggleEditingUI() {
|
public void ToggleEditingUI() {
|
||||||
editingUI = !editingUI;
|
editingUI = !editingUI;
|
||||||
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
|
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
|
||||||
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
|
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
|
||||||
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
|
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
|
||||||
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
|
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
|
||||||
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
|
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
|
||||||
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
|
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
|
||||||
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
|
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
|
||||||
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
|
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
|
||||||
continueButton.gameObject.SetActive(!continueButton.gameObject.activeSelf);
|
continueButton.gameObject.SetActive(!continueButton.gameObject.activeSelf);
|
||||||
statsButton.gameObject.SetActive(!statsButton.gameObject.activeSelf);
|
statsButton.gameObject.SetActive(!statsButton.gameObject.activeSelf);
|
||||||
editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text = editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text == "Edit UI" ? "Done" : "Edit UI";
|
editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text = editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text == "Edit UI" ? "Done" : "Edit UI";
|
||||||
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
|
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
|
||||||
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
|
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
|
||||||
highScoreText.GetComponent<DraggableUI>().canDrag = !highScoreText.GetComponent<DraggableUI>().canDrag;
|
highScoreText.GetComponent<DraggableUI>().canDrag = !highScoreText.GetComponent<DraggableUI>().canDrag;
|
||||||
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
|
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
|
||||||
coinsText.GetComponent<DraggableUI>().canDrag = !coinsText.GetComponent<DraggableUI>().canDrag;
|
coinsText.GetComponent<DraggableUI>().canDrag = !coinsText.GetComponent<DraggableUI>().canDrag;
|
||||||
levelText.GetComponent<DraggableUI>().canDrag = !levelText.GetComponent<DraggableUI>().canDrag;
|
levelText.GetComponent<DraggableUI>().canDrag = !levelText.GetComponent<DraggableUI>().canDrag;
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
|
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
|
||||||
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
|
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
|
||||||
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
|
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
|
||||||
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
|
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
|
||||||
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
|
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
|
||||||
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
|
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
|
||||||
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
|
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
|
||||||
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
|
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
|
||||||
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
|
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
|
||||||
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
|
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
|
||||||
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
|
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
|
||||||
pauseButton.interactable = !pauseDraggableUI.canDrag;
|
pauseButton.interactable = !pauseDraggableUI.canDrag;
|
||||||
restartButton.interactable = !restartDraggableUI.canDrag;
|
restartButton.interactable = !restartDraggableUI.canDrag;
|
||||||
jumpButton.interactable = !jumpDraggableUI.canDrag;
|
jumpButton.interactable = !jumpDraggableUI.canDrag;
|
||||||
rightButton.interactable = !rightDraggableUI.canDrag;
|
rightButton.interactable = !rightDraggableUI.canDrag;
|
||||||
leftButton.interactable = !leftDraggableUI.canDrag;
|
leftButton.interactable = !leftDraggableUI.canDrag;
|
||||||
jumpButton.transform.GetChild(0).GetComponent<TMP_Text>().color = !jumpDraggableUI.canDrag ? GamePlayer.Instance.IsGrounded() ? Color.white : Color.red : Color.white;
|
jumpButton.transform.GetChild(0).GetComponent<TMP_Text>().color = !jumpDraggableUI.canDrag ? GamePlayer.Instance.IsGrounded() ? Color.white : Color.red : Color.white;
|
||||||
restartButton.interactable = GamePlayer.Instance.score != 0;
|
restartButton.interactable = GamePlayer.Instance.score != 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -3,125 +3,125 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class MultiplayerGamePlayerPauseMenu : MonoBehaviour {
|
public class MultiplayerGamePlayerPauseMenu : MonoBehaviour {
|
||||||
public static MultiplayerGamePlayerPauseMenu Instance;
|
public static MultiplayerGamePlayerPauseMenu Instance;
|
||||||
[SerializeField] private Button leaveButton;
|
[SerializeField] private Button leaveButton;
|
||||||
[SerializeField] private Button continueButton;
|
[SerializeField] private Button continueButton;
|
||||||
[SerializeField] private Button editUiButton;
|
[SerializeField] private Button editUiButton;
|
||||||
[SerializeField] private Button resetUiButton;
|
[SerializeField] private Button resetUiButton;
|
||||||
[SerializeField] private AudioSource songLoop;
|
[SerializeField] private AudioSource songLoop;
|
||||||
[SerializeField] private TMP_Text scoreText;
|
[SerializeField] private TMP_Text scoreText;
|
||||||
[SerializeField] private TMP_Text boostText;
|
[SerializeField] private TMP_Text boostText;
|
||||||
[SerializeField] private Button pauseButton;
|
[SerializeField] private Button pauseButton;
|
||||||
[SerializeField] private Button restartButton;
|
[SerializeField] private Button restartButton;
|
||||||
[SerializeField] private Button jumpButton;
|
[SerializeField] private Button jumpButton;
|
||||||
[SerializeField] private Button rightButton;
|
[SerializeField] private Button rightButton;
|
||||||
[SerializeField] private Button leftButton;
|
[SerializeField] private Button leftButton;
|
||||||
internal bool editingUI = false;
|
internal bool editingUI = false;
|
||||||
|
|
||||||
[SerializeField] private Toggle settingFullscreenToggle;
|
[SerializeField] private Toggle settingFullscreenToggle;
|
||||||
[SerializeField] private Toggle settingVSyncToggle;
|
[SerializeField] private Toggle settingVSyncToggle;
|
||||||
[SerializeField] private Toggle settingRandomMusicToggle;
|
[SerializeField] private Toggle settingRandomMusicToggle;
|
||||||
[SerializeField] private Slider musicSlider;
|
[SerializeField] private Slider musicSlider;
|
||||||
[SerializeField] private Slider sfxSlider;
|
[SerializeField] private Slider sfxSlider;
|
||||||
[SerializeField] private TMP_Text musicSliderText;
|
[SerializeField] private TMP_Text musicSliderText;
|
||||||
[SerializeField] private TMP_Text sfxSliderText;
|
[SerializeField] private TMP_Text sfxSliderText;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
Instance = this;
|
Instance = this;
|
||||||
leaveButton.onClick.AddListener(MultiplayerGamePlayer.Instance.Disconnect);
|
leaveButton.onClick.AddListener(MultiplayerGamePlayer.Instance.Disconnect);
|
||||||
continueButton.onClick.AddListener(MultiplayerGamePlayer.Instance.DisablePause);
|
continueButton.onClick.AddListener(MultiplayerGamePlayer.Instance.DisablePause);
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
songLoop.volume = value;
|
songLoop.volume = value;
|
||||||
});
|
});
|
||||||
sfxSlider.onValueChanged.AddListener(value => {
|
sfxSlider.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingSFXVolume(value);
|
BazookaManager.Instance.SetSettingSFXVolume(value);
|
||||||
});
|
});
|
||||||
editUiButton.onClick.AddListener(() => {
|
editUiButton.onClick.AddListener(() => {
|
||||||
ToggleEditingUI();
|
ToggleEditingUI();
|
||||||
});
|
});
|
||||||
resetUiButton.onClick.AddListener(() => {
|
resetUiButton.onClick.AddListener(() => {
|
||||||
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
|
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
|
||||||
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
|
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
|
||||||
PlayerPrefs.DeleteKey("DraggedUIScoreTextCustom");
|
PlayerPrefs.DeleteKey("DraggedUIScoreTextCustom");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIBoostTextCustom");
|
PlayerPrefs.DeleteKey("DraggedUIBoostTextCustom");
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
|
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
|
||||||
restartButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, -128f);
|
restartButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, -128f);
|
||||||
jumpButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 288f);
|
jumpButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 288f);
|
||||||
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
|
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
|
||||||
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
|
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
|
||||||
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
|
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
|
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
|
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUIRightButton");
|
PlayerPrefs.DeleteKey("DraggedUIRightButton");
|
||||||
PlayerPrefs.DeleteKey("DraggedUILeftButton");
|
PlayerPrefs.DeleteKey("DraggedUILeftButton");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
||||||
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
||||||
if (!Application.isMobilePlatform) {
|
if (!Application.isMobilePlatform) {
|
||||||
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
||||||
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
||||||
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
settingFullscreenToggle.onValueChanged.AddListener(value => {
|
settingFullscreenToggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingFullScreen(value);
|
BazookaManager.Instance.SetSettingFullScreen(value);
|
||||||
var width = Display.main.systemWidth;
|
var width = Display.main.systemWidth;
|
||||||
var height = Display.main.systemHeight;
|
var height = Display.main.systemHeight;
|
||||||
Screen.SetResolution(width, height, value);
|
Screen.SetResolution(width, height, value);
|
||||||
});
|
});
|
||||||
settingVSyncToggle.onValueChanged.AddListener(value => {
|
settingVSyncToggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingVsync(value);
|
BazookaManager.Instance.SetSettingVsync(value);
|
||||||
QualitySettings.vSyncCount = value ? 1 : -1;
|
QualitySettings.vSyncCount = value ? 1 : -1;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
settingFullscreenToggle.interactable = false;
|
settingFullscreenToggle.interactable = false;
|
||||||
settingVSyncToggle.interactable = false;
|
settingVSyncToggle.interactable = false;
|
||||||
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
}
|
|
||||||
settingRandomMusicToggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
|
||||||
MultiplayerGamePlayer.Instance.backgroundMusic.volume = value;
|
|
||||||
});
|
|
||||||
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
|
||||||
}
|
}
|
||||||
|
settingRandomMusicToggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
||||||
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
|
MultiplayerGamePlayer.Instance.backgroundMusic.volume = value;
|
||||||
|
});
|
||||||
|
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
||||||
|
}
|
||||||
|
|
||||||
public void ToggleEditingUI() {
|
public void ToggleEditingUI() {
|
||||||
editingUI = !editingUI;
|
editingUI = !editingUI;
|
||||||
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
|
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
|
||||||
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
|
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
|
||||||
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
|
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
|
||||||
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
|
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
|
||||||
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
|
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
|
||||||
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
|
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
|
||||||
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
|
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
|
||||||
leaveButton.gameObject.SetActive(!leaveButton.gameObject.activeSelf);
|
leaveButton.gameObject.SetActive(!leaveButton.gameObject.activeSelf);
|
||||||
continueButton.gameObject.SetActive(!continueButton.gameObject.activeSelf);
|
continueButton.gameObject.SetActive(!continueButton.gameObject.activeSelf);
|
||||||
editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text = editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text == "Edit UI" ? "Done" : "Edit UI";
|
editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text = editUiButton.transform.GetChild(0).GetComponent<TMP_Text>().text == "Edit UI" ? "Done" : "Edit UI";
|
||||||
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
|
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
|
||||||
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
|
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
|
||||||
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
|
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
|
||||||
if (Application.isMobilePlatform) {
|
if (Application.isMobilePlatform) {
|
||||||
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
|
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
|
||||||
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
|
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
|
||||||
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
|
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
|
||||||
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
|
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
|
||||||
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
|
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
|
||||||
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
|
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
|
||||||
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
|
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
|
||||||
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
|
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
|
||||||
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
|
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
|
||||||
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
|
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
|
||||||
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
|
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
|
||||||
pauseButton.interactable = !pauseDraggableUI.canDrag;
|
pauseButton.interactable = !pauseDraggableUI.canDrag;
|
||||||
restartButton.interactable = !restartDraggableUI.canDrag;
|
restartButton.interactable = !restartDraggableUI.canDrag;
|
||||||
jumpButton.interactable = !jumpDraggableUI.canDrag;
|
jumpButton.interactable = !jumpDraggableUI.canDrag;
|
||||||
rightButton.interactable = !rightDraggableUI.canDrag;
|
rightButton.interactable = !rightDraggableUI.canDrag;
|
||||||
leftButton.interactable = !leftDraggableUI.canDrag;
|
leftButton.interactable = !leftDraggableUI.canDrag;
|
||||||
jumpButton.transform.GetChild(0).GetComponent<TMP_Text>().color = !jumpDraggableUI.canDrag ? MultiplayerGamePlayer.Instance.IsGrounded() ? Color.white : Color.red : Color.white;
|
jumpButton.transform.GetChild(0).GetComponent<TMP_Text>().color = !jumpDraggableUI.canDrag ? MultiplayerGamePlayer.Instance.IsGrounded() ? Color.white : Color.red : Color.white;
|
||||||
restartButton.interactable = MultiplayerGamePlayer.Instance.score != 0;
|
restartButton.interactable = MultiplayerGamePlayer.Instance.score != 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class MultiplayerGameTempData : MonoBehaviour {
|
public class MultiplayerGameTempData : MonoBehaviour {
|
||||||
public MultiplayerPlayerFromResponse[] players;
|
public MultiplayerPlayerFromResponse[] players;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
DontDestroyOnLoad(gameObject);
|
DontDestroyOnLoad(gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,33 +3,33 @@ using UnityEngine;
|
|||||||
|
|
||||||
[RequireComponent(typeof(TMP_Text))]
|
[RequireComponent(typeof(TMP_Text))]
|
||||||
public class GlobalFPSText : MonoBehaviour {
|
public class GlobalFPSText : MonoBehaviour {
|
||||||
private TMP_Text text;
|
private TMP_Text text;
|
||||||
private float timer;
|
private float timer;
|
||||||
private int frames;
|
private int frames;
|
||||||
private float fps;
|
private float fps;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
if (FindObjectsByType<GlobalFPSText>(FindObjectsSortMode.None).Length > 1) {
|
if (FindObjectsByType<GlobalFPSText>(FindObjectsSortMode.None).Length > 1) {
|
||||||
Destroy(gameObject.transform.parent.gameObject);
|
Destroy(gameObject.transform.parent.gameObject);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
DontDestroyOnLoad(transform.parent.gameObject);
|
|
||||||
text = GetComponent<TMP_Text>();
|
|
||||||
}
|
}
|
||||||
|
DontDestroyOnLoad(transform.parent.gameObject);
|
||||||
|
text = GetComponent<TMP_Text>();
|
||||||
|
}
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
var enabled = BazookaManager.Instance.GetSettingShowFPS();
|
var enabled = BazookaManager.Instance.GetSettingShowFPS();
|
||||||
if (!enabled && text.text != "") {
|
if (!enabled && text.text != "") {
|
||||||
text.text = "";
|
text.text = "";
|
||||||
return;
|
return;
|
||||||
} else if (!enabled) return;
|
} else if (!enabled) return;
|
||||||
frames++;
|
frames++;
|
||||||
timer += Time.unscaledDeltaTime;
|
timer += Time.unscaledDeltaTime;
|
||||||
if (timer >= 0.25f) {
|
if (timer >= 0.25f) {
|
||||||
fps = frames / timer;
|
fps = frames / timer;
|
||||||
text.text = "FPS: " + Mathf.RoundToInt(fps);
|
text.text = "FPS: " + Mathf.RoundToInt(fps);
|
||||||
frames = 0;
|
frames = 0;
|
||||||
timer = 0;
|
timer = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -11,273 +11,273 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class IconMarketplaceDownloadIcon : MonoBehaviour {
|
public class IconMarketplaceDownloadIcon : MonoBehaviour {
|
||||||
private readonly static WaitForSeconds _waitForSeconds2 = new(2f);
|
private readonly static WaitForSeconds _waitForSeconds2 = new(2f);
|
||||||
[SerializeField] private IconMarketplaceManager marketplaceManager;
|
[SerializeField] private IconMarketplaceManager marketplaceManager;
|
||||||
[SerializeField] private TMP_Text statusText;
|
[SerializeField] private TMP_Text statusText;
|
||||||
[SerializeField] private TMP_Text balanceText;
|
[SerializeField] private TMP_Text balanceText;
|
||||||
[SerializeField] private Button backButton;
|
[SerializeField] private Button backButton;
|
||||||
public GameObject content;
|
public GameObject content;
|
||||||
[SerializeField] private GameObject sample;
|
[SerializeField] private GameObject sample;
|
||||||
private string statusMessage;
|
private string statusMessage;
|
||||||
private Coroutine statusRoutine;
|
private Coroutine statusRoutine;
|
||||||
public AudioSource iconPurchaseSound;
|
public AudioSource iconPurchaseSound;
|
||||||
[SerializeField] internal Button refreshButton;
|
[SerializeField] internal Button refreshButton;
|
||||||
[SerializeField] private Button optionsButton;
|
[SerializeField] private Button optionsButton;
|
||||||
[SerializeField] internal GameObject optionsPanel;
|
[SerializeField] internal GameObject optionsPanel;
|
||||||
[SerializeField] internal Button optionsPanelSubmitButton;
|
[SerializeField] internal Button optionsPanelSubmitButton;
|
||||||
[SerializeField] private Button optionsPanelResetButton;
|
[SerializeField] private Button optionsPanelResetButton;
|
||||||
|
|
||||||
public TMP_Dropdown optionsPanelSortByDropdown;
|
public TMP_Dropdown optionsPanelSortByDropdown;
|
||||||
|
|
||||||
public Toggle optionsPanelPriceRangeToggle;
|
public Toggle optionsPanelPriceRangeToggle;
|
||||||
[SerializeField] private TMP_InputField optionsPanelPriceRangeMinInput;
|
[SerializeField] private TMP_InputField optionsPanelPriceRangeMinInput;
|
||||||
[SerializeField] private TMP_InputField optionsPanelPriceRangeMaxInput;
|
[SerializeField] private TMP_InputField optionsPanelPriceRangeMaxInput;
|
||||||
internal string priceRangeMin = "10";
|
internal string priceRangeMin = "10";
|
||||||
internal string priceRangeMax = "250";
|
internal string priceRangeMax = "250";
|
||||||
|
|
||||||
public Toggle optionsPanelSearchForToggle;
|
public Toggle optionsPanelSearchForToggle;
|
||||||
[SerializeField] private TMP_InputField optionsPanelSearchForInputField;
|
[SerializeField] private TMP_InputField optionsPanelSearchForInputField;
|
||||||
internal string searchForValue = "";
|
internal string searchForValue = "";
|
||||||
|
|
||||||
[SerializeField] private Toggle optionsPanelOnlyShowToggle;
|
[SerializeField] private Toggle optionsPanelOnlyShowToggle;
|
||||||
[SerializeField] private TMP_Dropdown optionsPanelOnlyShowDropdown;
|
[SerializeField] private TMP_Dropdown optionsPanelOnlyShowDropdown;
|
||||||
|
|
||||||
internal bool anyChanges = false;
|
internal bool anyChanges = false;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
optionsPanelPriceRangeMinInput.onSelect.AddListener((_) => optionsPanelPriceRangeMinInput.caretPosition = optionsPanelPriceRangeMinInput.text.Length);
|
optionsPanelPriceRangeMinInput.onSelect.AddListener((_) => optionsPanelPriceRangeMinInput.caretPosition = optionsPanelPriceRangeMinInput.text.Length);
|
||||||
optionsPanelPriceRangeMaxInput.onSelect.AddListener((_) => optionsPanelPriceRangeMaxInput.caretPosition = optionsPanelPriceRangeMaxInput.text.Length);
|
optionsPanelPriceRangeMaxInput.onSelect.AddListener((_) => optionsPanelPriceRangeMaxInput.caretPosition = optionsPanelPriceRangeMaxInput.text.Length);
|
||||||
optionsPanelSearchForInputField.onSelect.AddListener((_) => optionsPanelSearchForInputField.caretPosition = optionsPanelSearchForInputField.text.Length);
|
optionsPanelSearchForInputField.onSelect.AddListener((_) => optionsPanelSearchForInputField.caretPosition = optionsPanelSearchForInputField.text.Length);
|
||||||
|
|
||||||
backButton.onClick.AddListener(() => marketplaceManager.SwitchPanel(0));
|
backButton.onClick.AddListener(() => marketplaceManager.SwitchPanel(0));
|
||||||
refreshButton.onClick.AddListener(GetIcons);
|
refreshButton.onClick.AddListener(GetIcons);
|
||||||
optionsButton.onClick.AddListener(() => optionsPanel.SetActive(true));
|
optionsButton.onClick.AddListener(() => optionsPanel.SetActive(true));
|
||||||
optionsPanelSubmitButton.onClick.AddListener(() => {
|
optionsPanelSubmitButton.onClick.AddListener(() => {
|
||||||
optionsPanel.SetActive(false);
|
optionsPanel.SetActive(false);
|
||||||
if (anyChanges) {
|
if (anyChanges) {
|
||||||
anyChanges = false;
|
anyChanges = false;
|
||||||
GetIcons();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
optionsPanelResetButton.onClick.AddListener(() => {
|
|
||||||
optionsPanelSortByDropdown.value = 3;
|
|
||||||
optionsPanelPriceRangeToggle.isOn = false;
|
|
||||||
optionsPanelSearchForToggle.isOn = false;
|
|
||||||
optionsPanelOnlyShowToggle.isOn = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
optionsPanelPriceRangeToggle.onValueChanged.AddListener((on) => {
|
|
||||||
anyChanges = true;
|
|
||||||
if (!on) {
|
|
||||||
optionsPanelPriceRangeMinInput.text = "10";
|
|
||||||
optionsPanelPriceRangeMaxInput.text = "250";
|
|
||||||
}
|
|
||||||
optionsPanelPriceRangeMinInput.interactable = on;
|
|
||||||
optionsPanelPriceRangeMaxInput.interactable = on;
|
|
||||||
});
|
|
||||||
optionsPanelSearchForToggle.onValueChanged.AddListener((on) => {
|
|
||||||
anyChanges = true;
|
|
||||||
if (!on) optionsPanelSearchForInputField.text = "";
|
|
||||||
optionsPanelSearchForInputField.interactable = on;
|
|
||||||
});
|
|
||||||
optionsPanelOnlyShowToggle.onValueChanged.AddListener((on) => {
|
|
||||||
anyChanges = true;
|
|
||||||
if (!on) optionsPanelOnlyShowDropdown.value = 0;
|
|
||||||
optionsPanelOnlyShowDropdown.interactable = on;
|
|
||||||
});
|
|
||||||
|
|
||||||
optionsPanelSortByDropdown.onValueChanged.AddListener((_) => anyChanges = true);
|
|
||||||
optionsPanelPriceRangeMinInput.onValueChanged.AddListener((value) => {
|
|
||||||
anyChanges = true;
|
|
||||||
priceRangeMin = value;
|
|
||||||
});
|
|
||||||
optionsPanelPriceRangeMaxInput.onValueChanged.AddListener((value) => {
|
|
||||||
anyChanges = true;
|
|
||||||
priceRangeMax = value;
|
|
||||||
});
|
|
||||||
optionsPanelSearchForInputField.onValueChanged.AddListener((value) => {
|
|
||||||
anyChanges = true;
|
|
||||||
searchForValue = value;
|
|
||||||
});
|
|
||||||
optionsPanelOnlyShowDropdown.onValueChanged.AddListener((_) => anyChanges = true);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void Load() {
|
|
||||||
GetIcons();
|
GetIcons();
|
||||||
balanceText.text = Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance);
|
}
|
||||||
|
});
|
||||||
|
optionsPanelResetButton.onClick.AddListener(() => {
|
||||||
|
optionsPanelSortByDropdown.value = 3;
|
||||||
|
optionsPanelPriceRangeToggle.isOn = false;
|
||||||
|
optionsPanelSearchForToggle.isOn = false;
|
||||||
|
optionsPanelOnlyShowToggle.isOn = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
optionsPanelPriceRangeToggle.onValueChanged.AddListener((on) => {
|
||||||
|
anyChanges = true;
|
||||||
|
if (!on) {
|
||||||
|
optionsPanelPriceRangeMinInput.text = "10";
|
||||||
|
optionsPanelPriceRangeMaxInput.text = "250";
|
||||||
|
}
|
||||||
|
optionsPanelPriceRangeMinInput.interactable = on;
|
||||||
|
optionsPanelPriceRangeMaxInput.interactable = on;
|
||||||
|
});
|
||||||
|
optionsPanelSearchForToggle.onValueChanged.AddListener((on) => {
|
||||||
|
anyChanges = true;
|
||||||
|
if (!on) optionsPanelSearchForInputField.text = "";
|
||||||
|
optionsPanelSearchForInputField.interactable = on;
|
||||||
|
});
|
||||||
|
optionsPanelOnlyShowToggle.onValueChanged.AddListener((on) => {
|
||||||
|
anyChanges = true;
|
||||||
|
if (!on) optionsPanelOnlyShowDropdown.value = 0;
|
||||||
|
optionsPanelOnlyShowDropdown.interactable = on;
|
||||||
|
});
|
||||||
|
|
||||||
|
optionsPanelSortByDropdown.onValueChanged.AddListener((_) => anyChanges = true);
|
||||||
|
optionsPanelPriceRangeMinInput.onValueChanged.AddListener((value) => {
|
||||||
|
anyChanges = true;
|
||||||
|
priceRangeMin = value;
|
||||||
|
});
|
||||||
|
optionsPanelPriceRangeMaxInput.onValueChanged.AddListener((value) => {
|
||||||
|
anyChanges = true;
|
||||||
|
priceRangeMax = value;
|
||||||
|
});
|
||||||
|
optionsPanelSearchForInputField.onValueChanged.AddListener((value) => {
|
||||||
|
anyChanges = true;
|
||||||
|
searchForValue = value;
|
||||||
|
});
|
||||||
|
optionsPanelOnlyShowDropdown.onValueChanged.AddListener((_) => anyChanges = true);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void Load() {
|
||||||
|
GetIcons();
|
||||||
|
balanceText.text = Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal async void GetIcons() {
|
||||||
|
refreshButton.interactable = false;
|
||||||
|
optionsButton.interactable = false;
|
||||||
|
backButton.interactable = false;
|
||||||
|
foreach (Transform item in content.transform) {
|
||||||
|
if (item.gameObject.activeSelf) {
|
||||||
|
Destroy(item.gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var currentIcons = new JArray();
|
||||||
|
foreach (var icon in BazookaManager.Instance.GetCustomBirdIconData().Purchased) {
|
||||||
|
currentIcons.Add(icon);
|
||||||
|
}
|
||||||
|
ShowStatus("Loading...");
|
||||||
|
WWWForm dataForm = new();
|
||||||
|
dataForm.AddField("sortBy", optionsPanelSortByDropdown.value.ToString());
|
||||||
|
dataForm.AddField("priceRangeEnabled", optionsPanelPriceRangeToggle.isOn.ToString());
|
||||||
|
dataForm.AddField("priceRangeMin", priceRangeMin);
|
||||||
|
dataForm.AddField("priceRangeMax", priceRangeMax);
|
||||||
|
dataForm.AddField("searchForEnabled", optionsPanelSearchForToggle.isOn.ToString());
|
||||||
|
dataForm.AddField("searchForValue", searchForValue);
|
||||||
|
dataForm.AddField("onlyShowEnabled", optionsPanelOnlyShowToggle.isOn.ToString());
|
||||||
|
dataForm.AddField("onlyShowValue", optionsPanelOnlyShowDropdown.value.ToString());
|
||||||
|
dataForm.AddField("currentIcons", Convert.ToBase64String(Encoding.UTF8.GetBytes(currentIcons.ToString(Formatting.None))));
|
||||||
|
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ICON_MARKETPLACE_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) {
|
||||||
|
refreshButton.interactable = true;
|
||||||
|
optionsButton.interactable = true;
|
||||||
|
backButton.interactable = true;
|
||||||
|
ShowStatus("Failed to make HTTP request");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ShowStatus(null);
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
|
var icons = JsonConvert.DeserializeObject<MarketplaceTempIcon[]>(jsonResponse["data"].ToString());
|
||||||
|
var localUserID = BazookaManager.Instance.GetAccountID();
|
||||||
|
foreach (var entry in icons) {
|
||||||
|
GameObject newIcon = Instantiate(sample, content.transform);
|
||||||
|
newIcon.name = "IconEntry";
|
||||||
|
newIcon.transform.GetChild(0).GetChild(0).gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.ID;
|
||||||
|
newIcon.transform.GetChild(1).GetComponent<TMP_Text>().text = "Icon Name: " + entry.Name;
|
||||||
|
newIcon.transform.GetChild(2).GetComponent<TMP_Text>().text = "Price " + Tools.FormatWithCommas(entry.Price) + " coins";
|
||||||
|
newIcon.transform.GetChild(3).GetComponent<TMP_Text>().text = "Designer Name: " + entry.CreatorUsername;
|
||||||
|
|
||||||
|
var BtnGrid = newIcon.transform.GetChild(4);
|
||||||
|
var buyBtn = BtnGrid.transform.GetChild(0).GetComponent<Button>();
|
||||||
|
var buyBtnText = buyBtn.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||||
|
var sellBtn = BtnGrid.transform.GetChild(1).GetComponent<Button>();
|
||||||
|
var sellBtnText = sellBtn.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||||
|
|
||||||
|
sellBtn.onClick.AddListener(() => {
|
||||||
|
HandleSell(entry, buyBtn, buyBtnText, sellBtn, localUserID);
|
||||||
|
Tools.RefreshHierarchy(newIcon);
|
||||||
|
});
|
||||||
|
buyBtn.onClick.AddListener(() => {
|
||||||
|
HandlePurchase(entry, buyBtn, sellBtn, localUserID);
|
||||||
|
Tools.RefreshHierarchy(newIcon);
|
||||||
|
});
|
||||||
|
bool alreadyBought = BazookaManager.Instance.GetCustomBirdIconData().Purchased.Any(d => d == entry.ID);
|
||||||
|
if (alreadyBought) {
|
||||||
|
buyBtn.interactable = false;
|
||||||
|
sellBtn.gameObject.SetActive(true);
|
||||||
|
if (localUserID != entry.CreatorUserID)
|
||||||
|
buyBtnText.text = "Purchased";
|
||||||
|
else {
|
||||||
|
buyBtnText.text = "Claimed";
|
||||||
|
sellBtnText.text = "Unclaim";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (localUserID != entry.CreatorUserID) buyBtnText.text = "Purchase";
|
||||||
|
else buyBtnText.text = "Claim";
|
||||||
|
}
|
||||||
|
|
||||||
|
newIcon.SetActive(true);
|
||||||
|
Tools.RefreshHierarchy(newIcon);
|
||||||
|
}
|
||||||
|
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
||||||
|
refreshButton.interactable = true;
|
||||||
|
optionsButton.interactable = true;
|
||||||
|
backButton.interactable = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandlePurchase(MarketplaceTempIcon data, Button button, Button sellButton, BigInteger? localUserID) {
|
||||||
|
button.interactable = false;
|
||||||
|
MarketplaceIconStorageType marketplaceIconStorage = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
|
if (localUserID != data.CreatorUserID) {
|
||||||
|
if (data.Price > marketplaceIconStorage.Balance) {
|
||||||
|
button.interactable = true;
|
||||||
|
ShowStatus("You can't afford this icon! You need " + Tools.FormatWithCommas(data.Price - marketplaceIconStorage.Balance) + " more coins");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
marketplaceIconStorage.Balance -= data.Price;
|
||||||
|
iconPurchaseSound.Stop();
|
||||||
|
iconPurchaseSound.Play();
|
||||||
|
}
|
||||||
|
marketplaceIconStorage.Purchased.Add(data.ID);
|
||||||
|
sellButton.gameObject.SetActive(true);
|
||||||
|
if (localUserID != data.CreatorUserID) {
|
||||||
|
button.transform.GetChild(0).GetComponent<TMP_Text>().text = "Purchased";
|
||||||
|
} else {
|
||||||
|
button.transform.GetChild(0).GetComponent<TMP_Text>().text = "Claimed";
|
||||||
|
sellButton.transform.GetChild(0).GetComponent<TMP_Text>().text = "Unclaim";
|
||||||
|
}
|
||||||
|
balanceText.text = Tools.FormatWithCommas(marketplaceIconStorage.Balance);
|
||||||
|
BazookaManager.Instance.SetCustomBirdIconData(marketplaceIconStorage);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleSell(MarketplaceTempIcon data, Button buyBtn, TMP_Text buyBtnText, Button sellButton, BigInteger? localUserID) {
|
||||||
|
MarketplaceIconStorageType marketplaceIconStorage = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
|
var owned = marketplaceIconStorage.Purchased.Contains(data.ID);
|
||||||
|
if (owned) {
|
||||||
|
marketplaceIconStorage.Purchased.Remove(data.ID);
|
||||||
|
if (data.CreatorUserID != (BazookaManager.Instance.GetAccountID() ?? 0)) {
|
||||||
|
marketplaceIconStorage.Balance += data.Price;
|
||||||
|
iconPurchaseSound.Stop();
|
||||||
|
iconPurchaseSound.Play();
|
||||||
|
}
|
||||||
|
if (data.ID == marketplaceIconStorage.Selected) marketplaceIconStorage.Selected = null;
|
||||||
|
balanceText.text = Tools.FormatWithCommas(marketplaceIconStorage.Balance);
|
||||||
|
BazookaManager.Instance.SetCustomBirdIconData(marketplaceIconStorage);
|
||||||
|
if (localUserID != data.CreatorUserID) buyBtnText.text = "Purchase";
|
||||||
|
else {
|
||||||
|
buyBtnText.text = "Claim";
|
||||||
|
buyBtnText.text = "Claim";
|
||||||
|
}
|
||||||
|
buyBtn.interactable = true;
|
||||||
|
sellButton.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowStatus(string content) {
|
||||||
|
if (content == null) {
|
||||||
|
if (statusRoutine != null) StopCoroutine(statusRoutine);
|
||||||
|
statusText.gameObject.SetActive(false);
|
||||||
|
statusText.text = "";
|
||||||
|
}
|
||||||
|
statusMessage = content;
|
||||||
|
if (statusRoutine != null) StopCoroutine(statusRoutine);
|
||||||
|
statusRoutine = StartCoroutine(StatusRoutine());
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator StatusRoutine() {
|
||||||
|
statusText.gameObject.SetActive(true);
|
||||||
|
statusText.text = statusMessage;
|
||||||
|
statusText.color = new Color(statusText.color.r, statusText.color.g, statusText.color.b, 0f);
|
||||||
|
|
||||||
|
float t = 0f;
|
||||||
|
while (t < 0.5f) {
|
||||||
|
t += Time.deltaTime;
|
||||||
|
float a = t / 0.5f;
|
||||||
|
statusText.color = new Color(statusText.color.r, statusText.color.g, statusText.color.b, a);
|
||||||
|
yield return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async void GetIcons() {
|
yield return _waitForSeconds2;
|
||||||
refreshButton.interactable = false;
|
|
||||||
optionsButton.interactable = false;
|
|
||||||
backButton.interactable = false;
|
|
||||||
foreach (Transform item in content.transform) {
|
|
||||||
if (item.gameObject.activeSelf) {
|
|
||||||
Destroy(item.gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var currentIcons = new JArray();
|
|
||||||
foreach (var icon in BazookaManager.Instance.GetCustomBirdIconData().Purchased) {
|
|
||||||
currentIcons.Add(icon);
|
|
||||||
}
|
|
||||||
ShowStatus("Loading...");
|
|
||||||
WWWForm dataForm = new();
|
|
||||||
dataForm.AddField("sortBy", optionsPanelSortByDropdown.value.ToString());
|
|
||||||
dataForm.AddField("priceRangeEnabled", optionsPanelPriceRangeToggle.isOn.ToString());
|
|
||||||
dataForm.AddField("priceRangeMin", priceRangeMin);
|
|
||||||
dataForm.AddField("priceRangeMax", priceRangeMax);
|
|
||||||
dataForm.AddField("searchForEnabled", optionsPanelSearchForToggle.isOn.ToString());
|
|
||||||
dataForm.AddField("searchForValue", searchForValue);
|
|
||||||
dataForm.AddField("onlyShowEnabled", optionsPanelOnlyShowToggle.isOn.ToString());
|
|
||||||
dataForm.AddField("onlyShowValue", optionsPanelOnlyShowDropdown.value.ToString());
|
|
||||||
dataForm.AddField("currentIcons", Convert.ToBase64String(Encoding.UTF8.GetBytes(currentIcons.ToString(Formatting.None))));
|
|
||||||
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ICON_MARKETPLACE_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) {
|
|
||||||
refreshButton.interactable = true;
|
|
||||||
optionsButton.interactable = true;
|
|
||||||
backButton.interactable = true;
|
|
||||||
ShowStatus("Failed to make HTTP request");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ShowStatus(null);
|
|
||||||
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
|
||||||
var icons = JsonConvert.DeserializeObject<MarketplaceTempIcon[]>(jsonResponse["data"].ToString());
|
|
||||||
var localUserID = BazookaManager.Instance.GetAccountID();
|
|
||||||
foreach (var entry in icons) {
|
|
||||||
GameObject newIcon = Instantiate(sample, content.transform);
|
|
||||||
newIcon.name = "IconEntry";
|
|
||||||
newIcon.transform.GetChild(0).GetChild(0).gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.ID;
|
|
||||||
newIcon.transform.GetChild(1).GetComponent<TMP_Text>().text = "Icon Name: " + entry.Name;
|
|
||||||
newIcon.transform.GetChild(2).GetComponent<TMP_Text>().text = "Price " + Tools.FormatWithCommas(entry.Price) + " coins";
|
|
||||||
newIcon.transform.GetChild(3).GetComponent<TMP_Text>().text = "Designer Name: " + entry.CreatorUsername;
|
|
||||||
|
|
||||||
var BtnGrid = newIcon.transform.GetChild(4);
|
t = 0f;
|
||||||
var buyBtn = BtnGrid.transform.GetChild(0).GetComponent<Button>();
|
while (t < 0.5f) {
|
||||||
var buyBtnText = buyBtn.transform.GetChild(0).GetComponent<TMP_Text>();
|
t += Time.deltaTime;
|
||||||
var sellBtn = BtnGrid.transform.GetChild(1).GetComponent<Button>();
|
float a = 1f - (t / 0.5f);
|
||||||
var sellBtnText = sellBtn.transform.GetChild(0).GetComponent<TMP_Text>();
|
statusText.color = new Color(statusText.color.r, statusText.color.g, statusText.color.b, a);
|
||||||
|
yield return null;
|
||||||
sellBtn.onClick.AddListener(() => {
|
|
||||||
HandleSell(entry, buyBtn, buyBtnText, sellBtn, localUserID);
|
|
||||||
Tools.RefreshHierarchy(newIcon);
|
|
||||||
});
|
|
||||||
buyBtn.onClick.AddListener(() => {
|
|
||||||
HandlePurchase(entry, buyBtn, sellBtn, localUserID);
|
|
||||||
Tools.RefreshHierarchy(newIcon);
|
|
||||||
});
|
|
||||||
bool alreadyBought = BazookaManager.Instance.GetCustomBirdIconData().Purchased.Any(d => d == entry.ID);
|
|
||||||
if (alreadyBought) {
|
|
||||||
buyBtn.interactable = false;
|
|
||||||
sellBtn.gameObject.SetActive(true);
|
|
||||||
if (localUserID != entry.CreatorUserID)
|
|
||||||
buyBtnText.text = "Purchased";
|
|
||||||
else {
|
|
||||||
buyBtnText.text = "Claimed";
|
|
||||||
sellBtnText.text = "Unclaim";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (localUserID != entry.CreatorUserID) buyBtnText.text = "Purchase";
|
|
||||||
else buyBtnText.text = "Claim";
|
|
||||||
}
|
|
||||||
|
|
||||||
newIcon.SetActive(true);
|
|
||||||
Tools.RefreshHierarchy(newIcon);
|
|
||||||
}
|
|
||||||
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
|
||||||
refreshButton.interactable = true;
|
|
||||||
optionsButton.interactable = true;
|
|
||||||
backButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandlePurchase(MarketplaceTempIcon data, Button button, Button sellButton, BigInteger? localUserID) {
|
statusText.gameObject.SetActive(false);
|
||||||
button.interactable = false;
|
statusText.text = "";
|
||||||
MarketplaceIconStorageType marketplaceIconStorage = BazookaManager.Instance.GetCustomBirdIconData();
|
statusRoutine = null;
|
||||||
if (localUserID != data.CreatorUserID) {
|
}
|
||||||
if (data.Price > marketplaceIconStorage.Balance) {
|
|
||||||
button.interactable = true;
|
|
||||||
ShowStatus("You can't afford this icon! You need " + Tools.FormatWithCommas(data.Price - marketplaceIconStorage.Balance) + " more coins");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
marketplaceIconStorage.Balance -= data.Price;
|
|
||||||
iconPurchaseSound.Stop();
|
|
||||||
iconPurchaseSound.Play();
|
|
||||||
}
|
|
||||||
marketplaceIconStorage.Purchased.Add(data.ID);
|
|
||||||
sellButton.gameObject.SetActive(true);
|
|
||||||
if (localUserID != data.CreatorUserID) {
|
|
||||||
button.transform.GetChild(0).GetComponent<TMP_Text>().text = "Purchased";
|
|
||||||
} else {
|
|
||||||
button.transform.GetChild(0).GetComponent<TMP_Text>().text = "Claimed";
|
|
||||||
sellButton.transform.GetChild(0).GetComponent<TMP_Text>().text = "Unclaim";
|
|
||||||
}
|
|
||||||
balanceText.text = Tools.FormatWithCommas(marketplaceIconStorage.Balance);
|
|
||||||
BazookaManager.Instance.SetCustomBirdIconData(marketplaceIconStorage);
|
|
||||||
}
|
|
||||||
|
|
||||||
void HandleSell(MarketplaceTempIcon data, Button buyBtn, TMP_Text buyBtnText, Button sellButton, BigInteger? localUserID) {
|
|
||||||
MarketplaceIconStorageType marketplaceIconStorage = BazookaManager.Instance.GetCustomBirdIconData();
|
|
||||||
var owned = marketplaceIconStorage.Purchased.Contains(data.ID);
|
|
||||||
if (owned) {
|
|
||||||
marketplaceIconStorage.Purchased.Remove(data.ID);
|
|
||||||
if (data.CreatorUserID != (BazookaManager.Instance.GetAccountID() ?? 0)) {
|
|
||||||
marketplaceIconStorage.Balance += data.Price;
|
|
||||||
iconPurchaseSound.Stop();
|
|
||||||
iconPurchaseSound.Play();
|
|
||||||
}
|
|
||||||
if (data.ID == marketplaceIconStorage.Selected) marketplaceIconStorage.Selected = null;
|
|
||||||
balanceText.text = Tools.FormatWithCommas(marketplaceIconStorage.Balance);
|
|
||||||
BazookaManager.Instance.SetCustomBirdIconData(marketplaceIconStorage);
|
|
||||||
if (localUserID != data.CreatorUserID) buyBtnText.text = "Purchase";
|
|
||||||
else {
|
|
||||||
buyBtnText.text = "Claim";
|
|
||||||
buyBtnText.text = "Claim";
|
|
||||||
}
|
|
||||||
buyBtn.interactable = true;
|
|
||||||
sellButton.gameObject.SetActive(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShowStatus(string content) {
|
|
||||||
if (content == null) {
|
|
||||||
if (statusRoutine != null) StopCoroutine(statusRoutine);
|
|
||||||
statusText.gameObject.SetActive(false);
|
|
||||||
statusText.text = "";
|
|
||||||
}
|
|
||||||
statusMessage = content;
|
|
||||||
if (statusRoutine != null) StopCoroutine(statusRoutine);
|
|
||||||
statusRoutine = StartCoroutine(StatusRoutine());
|
|
||||||
}
|
|
||||||
|
|
||||||
IEnumerator StatusRoutine() {
|
|
||||||
statusText.gameObject.SetActive(true);
|
|
||||||
statusText.text = statusMessage;
|
|
||||||
statusText.color = new Color(statusText.color.r, statusText.color.g, statusText.color.b, 0f);
|
|
||||||
|
|
||||||
float t = 0f;
|
|
||||||
while (t < 0.5f) {
|
|
||||||
t += Time.deltaTime;
|
|
||||||
float a = t / 0.5f;
|
|
||||||
statusText.color = new Color(statusText.color.r, statusText.color.g, statusText.color.b, a);
|
|
||||||
yield return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
yield return _waitForSeconds2;
|
|
||||||
|
|
||||||
t = 0f;
|
|
||||||
while (t < 0.5f) {
|
|
||||||
t += Time.deltaTime;
|
|
||||||
float a = 1f - (t / 0.5f);
|
|
||||||
statusText.color = new Color(statusText.color.r, statusText.color.g, statusText.color.b, a);
|
|
||||||
yield return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
statusText.gameObject.SetActive(false);
|
|
||||||
statusText.text = "";
|
|
||||||
statusRoutine = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -6,72 +6,72 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class IconMarketplaceManager : MonoBehaviour {
|
public class IconMarketplaceManager : MonoBehaviour {
|
||||||
[SerializeField] private GameObject normalPanel;
|
[SerializeField] private GameObject normalPanel;
|
||||||
[SerializeField] private GameObject downloadPanel;
|
[SerializeField] private GameObject downloadPanel;
|
||||||
[SerializeField] private GameObject uploadPanel;
|
[SerializeField] private GameObject uploadPanel;
|
||||||
|
|
||||||
[SerializeField] private IconMarketplaceUploadIcon uploadPanelScript;
|
[SerializeField] private IconMarketplaceUploadIcon uploadPanelScript;
|
||||||
[SerializeField] private IconMarketplaceDownloadIcon downloadPanelScript;
|
[SerializeField] private IconMarketplaceDownloadIcon downloadPanelScript;
|
||||||
|
|
||||||
[SerializeField] private Button downloadButton;
|
[SerializeField] private Button downloadButton;
|
||||||
[SerializeField] private Button uploadButton;
|
[SerializeField] private Button uploadButton;
|
||||||
[SerializeField] private TMP_Text coinText;
|
[SerializeField] private TMP_Text coinText;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
downloadPanelScript.iconPurchaseSound.volume = BazookaManager.Instance.GetSettingSFXVolume();
|
downloadPanelScript.iconPurchaseSound.volume = BazookaManager.Instance.GetSettingSFXVolume();
|
||||||
downloadButton.onClick.AddListener(() => SwitchPanel(1));
|
downloadButton.onClick.AddListener(() => SwitchPanel(1));
|
||||||
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
|
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
|
||||||
uploadButton.onClick.AddListener(() => SwitchPanel(2));
|
uploadButton.onClick.AddListener(() => SwitchPanel(2));
|
||||||
} else {
|
} else {
|
||||||
uploadButton.interactable = false;
|
uploadButton.interactable = false;
|
||||||
uploadButton.transform.GetChild(0).transform.localPosition = new Vector3(0, 10, 0);
|
uploadButton.transform.GetChild(0).transform.localPosition = new Vector3(0, 10, 0);
|
||||||
uploadButton.transform.GetChild(1).GetComponent<TMP_Text>().text = "Not logged in to an account";
|
uploadButton.transform.GetChild(1).GetComponent<TMP_Text>().text = "Not logged in to an account";
|
||||||
|
}
|
||||||
|
SwitchPanel(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SwitchPanel(int panelIndex) {
|
||||||
|
downloadPanelScript.iconPurchaseSound.Stop();
|
||||||
|
downloadPanelScript.anyChanges = false;
|
||||||
|
downloadPanelScript.optionsPanelSortByDropdown.value = 3;
|
||||||
|
downloadPanelScript.optionsPanelPriceRangeToggle.isOn = false;
|
||||||
|
downloadPanelScript.optionsPanelSearchForToggle.isOn = false;
|
||||||
|
switch (panelIndex) {
|
||||||
|
case 0:
|
||||||
|
coinText.text = "You have " + Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance) + " coins";
|
||||||
|
normalPanel.SetActive(true);
|
||||||
|
downloadPanel.SetActive(false);
|
||||||
|
uploadPanel.SetActive(false);
|
||||||
|
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC("Choosing what to do in the icon marketplace", null);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
foreach (Transform item in downloadPanelScript.content.transform) {
|
||||||
|
if (item.gameObject.activeSelf) {
|
||||||
|
Destroy(item.gameObject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SwitchPanel(0);
|
normalPanel.SetActive(false);
|
||||||
|
downloadPanel.SetActive(true);
|
||||||
|
uploadPanel.SetActive(false);
|
||||||
|
downloadPanelScript.Load();
|
||||||
|
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC("Browsing the icon marketplace", "They have " + Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance) + " coins");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
uploadPanelScript.Reset();
|
||||||
|
normalPanel.SetActive(false);
|
||||||
|
downloadPanel.SetActive(false);
|
||||||
|
uploadPanel.SetActive(true);
|
||||||
|
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC("Uploading an icon to the icon marketplace", null);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal void SwitchPanel(int panelIndex) {
|
async void Update() {
|
||||||
downloadPanelScript.iconPurchaseSound.Stop();
|
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
|
||||||
downloadPanelScript.anyChanges = false;
|
if (downloadPanelScript.optionsPanel.activeSelf) downloadPanelScript.optionsPanelSubmitButton.onClick.Invoke();
|
||||||
downloadPanelScript.optionsPanelSortByDropdown.value = 3;
|
else if (uploadPanel.activeSelf && FileBrowser.IsOpen) return;
|
||||||
downloadPanelScript.optionsPanelPriceRangeToggle.isOn = false;
|
else if (downloadPanel.activeSelf || uploadPanel.activeSelf) SwitchPanel(0);
|
||||||
downloadPanelScript.optionsPanelSearchForToggle.isOn = false;
|
else await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
switch (panelIndex) {
|
} else if (Keyboard.current.rKey.wasPressedThisFrame && downloadPanel.activeSelf && downloadPanelScript.refreshButton.interactable) downloadPanelScript.GetIcons();
|
||||||
case 0:
|
}
|
||||||
coinText.text = "You have " + Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance) + " coins";
|
|
||||||
normalPanel.SetActive(true);
|
|
||||||
downloadPanel.SetActive(false);
|
|
||||||
uploadPanel.SetActive(false);
|
|
||||||
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC("Choosing what to do in the icon marketplace", null);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
foreach (Transform item in downloadPanelScript.content.transform) {
|
|
||||||
if (item.gameObject.activeSelf) {
|
|
||||||
Destroy(item.gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
normalPanel.SetActive(false);
|
|
||||||
downloadPanel.SetActive(true);
|
|
||||||
uploadPanel.SetActive(false);
|
|
||||||
downloadPanelScript.Load();
|
|
||||||
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC("Browsing the icon marketplace", "They have " + Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance) + " coins");
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
uploadPanelScript.Reset();
|
|
||||||
normalPanel.SetActive(false);
|
|
||||||
downloadPanel.SetActive(false);
|
|
||||||
uploadPanel.SetActive(true);
|
|
||||||
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC("Uploading an icon to the icon marketplace", null);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async void Update() {
|
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
|
|
||||||
if (downloadPanelScript.optionsPanel.activeSelf) downloadPanelScript.optionsPanelSubmitButton.onClick.Invoke();
|
|
||||||
else if (uploadPanel.activeSelf && FileBrowser.IsOpen) return;
|
|
||||||
else if (downloadPanel.activeSelf || uploadPanel.activeSelf) SwitchPanel(0);
|
|
||||||
else await SceneManager.LoadSceneAsync("MainMenu");
|
|
||||||
} else if (Keyboard.current.rKey.wasPressedThisFrame && downloadPanel.activeSelf && downloadPanelScript.refreshButton.interactable) downloadPanelScript.GetIcons();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -9,110 +9,110 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class IconMarketplaceUploadIcon : MonoBehaviour {
|
public class IconMarketplaceUploadIcon : MonoBehaviour {
|
||||||
[SerializeField] private IconMarketplaceManager marketplaceManager;
|
[SerializeField] private IconMarketplaceManager marketplaceManager;
|
||||||
[SerializeField] private TMP_Text statusText;
|
[SerializeField] private TMP_Text statusText;
|
||||||
[SerializeField] private Button backButton;
|
[SerializeField] private Button backButton;
|
||||||
[SerializeField] private Button uploadButton;
|
[SerializeField] private Button uploadButton;
|
||||||
[SerializeField] private Button selectButton;
|
[SerializeField] private Button selectButton;
|
||||||
[SerializeField] private TMP_InputField verifyCodeInput;
|
[SerializeField] private TMP_InputField verifyCodeInput;
|
||||||
[SerializeField] private TMP_InputField birdPriceInput;
|
[SerializeField] private TMP_InputField birdPriceInput;
|
||||||
[SerializeField] private TMP_InputField birdNameInput;
|
[SerializeField] private TMP_InputField birdNameInput;
|
||||||
[SerializeField] private Image birdImage;
|
[SerializeField] private Image birdImage;
|
||||||
[SerializeField] private GameObject birdImageNone;
|
[SerializeField] private GameObject birdImageNone;
|
||||||
private string birdData = null;
|
private string birdData = null;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
verifyCodeInput.onSelect.AddListener((_) => verifyCodeInput.caretPosition = verifyCodeInput.text.Length);
|
verifyCodeInput.onSelect.AddListener((_) => verifyCodeInput.caretPosition = verifyCodeInput.text.Length);
|
||||||
birdPriceInput.onSelect.AddListener((_) => birdPriceInput.caretPosition = birdPriceInput.text.Length);
|
birdPriceInput.onSelect.AddListener((_) => birdPriceInput.caretPosition = birdPriceInput.text.Length);
|
||||||
birdNameInput.onSelect.AddListener((_) => birdNameInput.caretPosition = birdNameInput.text.Length);
|
birdNameInput.onSelect.AddListener((_) => birdNameInput.caretPosition = birdNameInput.text.Length);
|
||||||
|
|
||||||
backButton.onClick.AddListener(() => marketplaceManager.SwitchPanel(0));
|
backButton.onClick.AddListener(() => marketplaceManager.SwitchPanel(0));
|
||||||
uploadButton.onClick.AddListener(() => {
|
uploadButton.onClick.AddListener(() => {
|
||||||
if (birdPriceInput.text.Trim() == string.Empty) {
|
if (birdPriceInput.text.Trim() == string.Empty) {
|
||||||
Tools.UpdateStatusText(statusText, "Bird price can't be empty", Color.red);
|
Tools.UpdateStatusText(statusText, "Bird price can't be empty", Color.red);
|
||||||
} else if (birdNameInput.text.Trim() == string.Empty) {
|
} else if (birdNameInput.text.Trim() == string.Empty) {
|
||||||
Tools.UpdateStatusText(statusText, "Bird name can't be empty", Color.red);
|
Tools.UpdateStatusText(statusText, "Bird name can't be empty", Color.red);
|
||||||
} else if (birdData == null) {
|
} else if (birdData == null) {
|
||||||
Tools.UpdateStatusText(statusText, "You must upload an image", Color.red);
|
Tools.UpdateStatusText(statusText, "You must upload an image", Color.red);
|
||||||
} else {
|
} else {
|
||||||
UploadIcon();
|
UploadIcon();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
selectButton.onClick.AddListener(async () => {
|
selectButton.onClick.AddListener(async () => {
|
||||||
string path = await OpenFilePicker();
|
string path = await OpenFilePicker();
|
||||||
if (path == null) return;
|
if (path == null) return;
|
||||||
byte[] fileContent;
|
byte[] fileContent;
|
||||||
try {
|
try {
|
||||||
fileContent = File.ReadAllBytes(path);
|
fileContent = File.ReadAllBytes(path);
|
||||||
if (fileContent.Length > 1024 * 1024) {
|
if (fileContent.Length > 1024 * 1024) {
|
||||||
Tools.UpdateStatusText(statusText, "File size exceeds 1 MB limit", Color.red);
|
Tools.UpdateStatusText(statusText, "File size exceeds 1 MB limit", Color.red);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
birdData = Convert.ToBase64String(fileContent);
|
|
||||||
birdImage.sprite = Tools.GetSpriteFromBase64(birdData);
|
|
||||||
birdImageNone.SetActive(false);
|
|
||||||
birdImage.gameObject.SetActive(true);
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
Tools.UpdateStatusText(statusText, "Failed to read file: " + e.Message, Color.red);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async Task<string> OpenFilePicker() {
|
|
||||||
FileBrowser.SetFilters(true, new FileBrowser.Filter("Images", ".png"));
|
|
||||||
|
|
||||||
var tcs = new TaskCompletionSource<string>();
|
|
||||||
|
|
||||||
FileBrowser.ShowLoadDialog(
|
|
||||||
(paths) => tcs.SetResult(paths.Length > 0 ? paths[0] : null),
|
|
||||||
() => tcs.SetResult(null),
|
|
||||||
FileBrowser.PickMode.Files,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
|
|
||||||
return await tcs.Task;
|
|
||||||
}
|
|
||||||
|
|
||||||
async void UploadIcon() {
|
|
||||||
uploadButton.interactable = false;
|
|
||||||
backButton.interactable = false;
|
|
||||||
selectButton.interactable = false;
|
|
||||||
WWWForm dataForm = new();
|
|
||||||
dataForm.AddField("verifyCode", verifyCodeInput.text);
|
|
||||||
dataForm.AddField("price", birdPriceInput.text);
|
|
||||||
dataForm.AddField("name", birdNameInput.text);
|
|
||||||
dataForm.AddField("fileContent", birdData);
|
|
||||||
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ICON_MARKETPLACE_UPLOAD_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) {
|
|
||||||
uploadButton.interactable = true;
|
|
||||||
backButton.interactable = true;
|
|
||||||
selectButton.interactable = true;
|
|
||||||
Tools.UpdateStatusText(statusText, "Failed to make HTTP request", Color.red);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
birdData = Convert.ToBase64String(fileContent);
|
||||||
if ((bool)jsonResponse["success"]) Reset();
|
birdImage.sprite = Tools.GetSpriteFromBase64(birdData);
|
||||||
Tools.UpdateStatusText(statusText, (string)jsonResponse["message"], (bool)jsonResponse["success"] ? Color.green : Color.red);
|
birdImageNone.SetActive(false);
|
||||||
uploadButton.interactable = true;
|
birdImage.gameObject.SetActive(true);
|
||||||
backButton.interactable = true;
|
}
|
||||||
selectButton.interactable = true;
|
catch (Exception e) {
|
||||||
}
|
Tools.UpdateStatusText(statusText, "Failed to read file: " + e.Message, Color.red);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
internal void Reset() {
|
async Task<string> OpenFilePicker() {
|
||||||
birdImage.sprite = null;
|
FileBrowser.SetFilters(true, new FileBrowser.Filter("Images", ".png"));
|
||||||
birdImageNone.SetActive(true);
|
|
||||||
birdImage.gameObject.SetActive(false);
|
var tcs = new TaskCompletionSource<string>();
|
||||||
birdData = null;
|
|
||||||
verifyCodeInput.text = string.Empty;
|
FileBrowser.ShowLoadDialog(
|
||||||
birdPriceInput.text = string.Empty;
|
(paths) => tcs.SetResult(paths.Length > 0 ? paths[0] : null),
|
||||||
birdNameInput.text = string.Empty;
|
() => tcs.SetResult(null),
|
||||||
statusText.text = string.Empty;
|
FileBrowser.PickMode.Files,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
return await tcs.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
async void UploadIcon() {
|
||||||
|
uploadButton.interactable = false;
|
||||||
|
backButton.interactable = false;
|
||||||
|
selectButton.interactable = false;
|
||||||
|
WWWForm dataForm = new();
|
||||||
|
dataForm.AddField("verifyCode", verifyCodeInput.text);
|
||||||
|
dataForm.AddField("price", birdPriceInput.text);
|
||||||
|
dataForm.AddField("name", birdNameInput.text);
|
||||||
|
dataForm.AddField("fileContent", birdData);
|
||||||
|
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ICON_MARKETPLACE_UPLOAD_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) {
|
||||||
|
uploadButton.interactable = true;
|
||||||
|
backButton.interactable = true;
|
||||||
|
selectButton.interactable = true;
|
||||||
|
Tools.UpdateStatusText(statusText, "Failed to make HTTP request", Color.red);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
|
if ((bool)jsonResponse["success"]) Reset();
|
||||||
|
Tools.UpdateStatusText(statusText, (string)jsonResponse["message"], (bool)jsonResponse["success"] ? Color.green : Color.red);
|
||||||
|
uploadButton.interactable = true;
|
||||||
|
backButton.interactable = true;
|
||||||
|
selectButton.interactable = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void Reset() {
|
||||||
|
birdImage.sprite = null;
|
||||||
|
birdImageNone.SetActive(true);
|
||||||
|
birdImage.gameObject.SetActive(false);
|
||||||
|
birdData = null;
|
||||||
|
verifyCodeInput.text = string.Empty;
|
||||||
|
birdPriceInput.text = string.Empty;
|
||||||
|
birdNameInput.text = string.Empty;
|
||||||
|
statusText.text = string.Empty;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+188
-188
@@ -8,208 +8,208 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class Iconsmenu : MonoBehaviour {
|
public class Iconsmenu : MonoBehaviour {
|
||||||
[SerializeField] private GameObject iconsPanel;
|
[SerializeField] private GameObject iconsPanel;
|
||||||
[SerializeField] private GameObject overlaysPanel;
|
[SerializeField] private GameObject overlaysPanel;
|
||||||
[SerializeField] private GameObject marketplaceIconsPanel;
|
[SerializeField] private GameObject marketplaceIconsPanel;
|
||||||
[SerializeField] private GameObject marketplaceIconsContent;
|
[SerializeField] private GameObject marketplaceIconsContent;
|
||||||
[SerializeField] private GameObject marketplaceIconsSample;
|
[SerializeField] private GameObject marketplaceIconsSample;
|
||||||
[SerializeField] private Sprite defaultIcon;
|
[SerializeField] private Sprite defaultIcon;
|
||||||
[SerializeField] private Button placeholderButton;
|
[SerializeField] private Button placeholderButton;
|
||||||
[SerializeField] private TMP_Text selectionText;
|
[SerializeField] private TMP_Text selectionText;
|
||||||
[SerializeField] private Image previewBird;
|
[SerializeField] private Image previewBird;
|
||||||
[SerializeField] private Image previewOverlay;
|
[SerializeField] private Image previewOverlay;
|
||||||
[SerializeField] private Button[] icons;
|
[SerializeField] private Button[] icons;
|
||||||
[SerializeField] private Button[] overlays;
|
[SerializeField] private Button[] overlays;
|
||||||
[SerializeField] private GameObject previewBirdObject;
|
[SerializeField] private GameObject previewBirdObject;
|
||||||
[SerializeField] private ColorPanel iconColorPanel;
|
[SerializeField] private ColorPanel iconColorPanel;
|
||||||
[SerializeField] private ColorPanel overlayColorPanel;
|
[SerializeField] private ColorPanel overlayColorPanel;
|
||||||
private readonly Dictionary<string, Button> customIcons = new();
|
private readonly Dictionary<string, Button> customIcons = new();
|
||||||
|
|
||||||
private void Start() {
|
private void Start() {
|
||||||
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
|
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
foreach (var icon in customIconData.Purchased) {
|
foreach (var icon in customIconData.Purchased) {
|
||||||
var iconEntry = Instantiate(marketplaceIconsSample, marketplaceIconsContent.transform);
|
var iconEntry = Instantiate(marketplaceIconsSample, marketplaceIconsContent.transform);
|
||||||
iconEntry.name = "MarketplaceIcon";
|
iconEntry.name = "MarketplaceIcon";
|
||||||
var button = iconEntry.GetComponent<Button>();
|
var button = iconEntry.GetComponent<Button>();
|
||||||
customIcons[icon] = button;
|
customIcons[icon] = button;
|
||||||
button.onClick.AddListener(() => SelectCustomIcon(icon));
|
button.onClick.AddListener(() => SelectCustomIcon(icon));
|
||||||
iconEntry.transform.GetChild(0).AddComponent<WaitingForCustomIcon>().ID = icon;
|
iconEntry.transform.GetChild(0).AddComponent<WaitingForCustomIcon>().ID = icon;
|
||||||
iconEntry.SetActive(true);
|
iconEntry.SetActive(true);
|
||||||
}
|
|
||||||
iconColorPanel.Init(customIconData.Selected == null ? BazookaManager.Instance.GetColorSettingIcon() : JArray.Parse("[255,255,255]"), Color.white);
|
|
||||||
iconColorPanel.OnColorChanged += color => {
|
|
||||||
BazookaManager.Instance.SetColorSettingIcon(color);
|
|
||||||
foreach (var icon in icons)
|
|
||||||
icon.transform.GetChild(0).GetComponent<Image>().color = new Color(
|
|
||||||
int.Parse(color[0].ToString()) / 255f,
|
|
||||||
int.Parse(color[1].ToString()) / 255f,
|
|
||||||
int.Parse(color[2].ToString()) / 255f
|
|
||||||
);
|
|
||||||
};
|
|
||||||
overlayColorPanel.Init(customIconData.Selected == null ? BazookaManager.Instance.GetColorSettingOverlay() : JArray.Parse("[255,255,255]"), Color.white);
|
|
||||||
overlayColorPanel.OnColorChanged += color => {
|
|
||||||
BazookaManager.Instance.SetColorSettingOverlay(color);
|
|
||||||
foreach (var overlay in overlays) {
|
|
||||||
var img = overlay.transform.GetChild(0).TryGetComponent<Image>(out var image) ? image : null;
|
|
||||||
if (img == null) continue;
|
|
||||||
|
|
||||||
img.color = new Color(
|
|
||||||
int.Parse(color[0].ToString()) / 255f,
|
|
||||||
int.Parse(color[1].ToString()) / 255f,
|
|
||||||
int.Parse(color[2].ToString()) / 255f
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (customIconData.Selected == null) {
|
|
||||||
defaultIcon = Tools.GetIconForUser(BazookaManager.Instance.GetAccountID() ?? 0);
|
|
||||||
icons[0].transform.GetChild(0).GetComponent<Image>().sprite = defaultIcon;
|
|
||||||
|
|
||||||
SwitchToIcon();
|
|
||||||
SelectOverlay(BazookaManager.Instance.GetBirdOverlay());
|
|
||||||
SelectIcon(BazookaManager.Instance.GetBirdIcon());
|
|
||||||
|
|
||||||
if (BazookaManager.Instance.GetBirdIcon() == 7) {
|
|
||||||
SelectOverlay(0);
|
|
||||||
placeholderButton.interactable = false;
|
|
||||||
}
|
|
||||||
} else SwitchToMarketplaceIcons();
|
|
||||||
placeholderButton.onClick.AddListener(ToggleKit);
|
|
||||||
previewBird.GetComponentInParent<Button>().onClick.AddListener(() => {
|
|
||||||
var scale = previewBird.transform.localScale;
|
|
||||||
scale.x = scale.x == -1 ? 1 : -1;
|
|
||||||
previewBird.transform.localScale = scale;
|
|
||||||
});
|
|
||||||
for (int i = 0; i < icons.Length; i++) {
|
|
||||||
int index = i;
|
|
||||||
icons[i].onClick.AddListener(() => SelectIcon(index + 1));
|
|
||||||
}
|
|
||||||
for (int i = 0; i < overlays.Length; i++) {
|
|
||||||
int index = i;
|
|
||||||
overlays[i].onClick.AddListener(() => SelectOverlay(index));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
iconColorPanel.Init(customIconData.Selected == null ? BazookaManager.Instance.GetColorSettingIcon() : JArray.Parse("[255,255,255]"), Color.white);
|
||||||
|
iconColorPanel.OnColorChanged += color => {
|
||||||
|
BazookaManager.Instance.SetColorSettingIcon(color);
|
||||||
|
foreach (var icon in icons)
|
||||||
|
icon.transform.GetChild(0).GetComponent<Image>().color = new Color(
|
||||||
|
int.Parse(color[0].ToString()) / 255f,
|
||||||
|
int.Parse(color[1].ToString()) / 255f,
|
||||||
|
int.Parse(color[2].ToString()) / 255f
|
||||||
|
);
|
||||||
|
};
|
||||||
|
overlayColorPanel.Init(customIconData.Selected == null ? BazookaManager.Instance.GetColorSettingOverlay() : JArray.Parse("[255,255,255]"), Color.white);
|
||||||
|
overlayColorPanel.OnColorChanged += color => {
|
||||||
|
BazookaManager.Instance.SetColorSettingOverlay(color);
|
||||||
|
foreach (var overlay in overlays) {
|
||||||
|
var img = overlay.transform.GetChild(0).TryGetComponent<Image>(out var image) ? image : null;
|
||||||
|
if (img == null) continue;
|
||||||
|
|
||||||
private void SwitchToIcon() {
|
img.color = new Color(
|
||||||
iconsPanel.SetActive(true);
|
int.Parse(color[0].ToString()) / 255f,
|
||||||
overlaysPanel.SetActive(false);
|
int.Parse(color[1].ToString()) / 255f,
|
||||||
marketplaceIconsPanel.SetActive(false);
|
int.Parse(color[2].ToString()) / 255f
|
||||||
selectionText.text = "Icon selection";
|
);
|
||||||
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Overlays";
|
}
|
||||||
iconColorPanel.gameObject.SetActive(true);
|
};
|
||||||
overlayColorPanel.gameObject.SetActive(true);
|
|
||||||
|
if (customIconData.Selected == null) {
|
||||||
|
defaultIcon = Tools.GetIconForUser(BazookaManager.Instance.GetAccountID() ?? 0);
|
||||||
|
icons[0].transform.GetChild(0).GetComponent<Image>().sprite = defaultIcon;
|
||||||
|
|
||||||
|
SwitchToIcon();
|
||||||
|
SelectOverlay(BazookaManager.Instance.GetBirdOverlay());
|
||||||
|
SelectIcon(BazookaManager.Instance.GetBirdIcon());
|
||||||
|
|
||||||
|
if (BazookaManager.Instance.GetBirdIcon() == 7) {
|
||||||
|
SelectOverlay(0);
|
||||||
|
placeholderButton.interactable = false;
|
||||||
|
}
|
||||||
|
} else SwitchToMarketplaceIcons();
|
||||||
|
placeholderButton.onClick.AddListener(ToggleKit);
|
||||||
|
previewBird.GetComponentInParent<Button>().onClick.AddListener(() => {
|
||||||
|
var scale = previewBird.transform.localScale;
|
||||||
|
scale.x = scale.x == -1 ? 1 : -1;
|
||||||
|
previewBird.transform.localScale = scale;
|
||||||
|
});
|
||||||
|
for (int i = 0; i < icons.Length; i++) {
|
||||||
|
int index = i;
|
||||||
|
icons[i].onClick.AddListener(() => SelectIcon(index + 1));
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i < overlays.Length; i++) {
|
||||||
private void SwitchToOverlay() {
|
int index = i;
|
||||||
iconsPanel.SetActive(false);
|
overlays[i].onClick.AddListener(() => SelectOverlay(index));
|
||||||
overlaysPanel.SetActive(true);
|
|
||||||
marketplaceIconsPanel.SetActive(false);
|
|
||||||
selectionText.text = "Overlay selection";
|
|
||||||
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Marketplace";
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void SwitchToMarketplaceIcons() {
|
private void SwitchToIcon() {
|
||||||
iconsPanel.SetActive(false);
|
iconsPanel.SetActive(true);
|
||||||
overlaysPanel.SetActive(false);
|
overlaysPanel.SetActive(false);
|
||||||
marketplaceIconsPanel.SetActive(true);
|
marketplaceIconsPanel.SetActive(false);
|
||||||
selectionText.text = "Marketplace Icons selection";
|
selectionText.text = "Icon selection";
|
||||||
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Icons";
|
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Overlays";
|
||||||
iconColorPanel.gameObject.SetActive(false);
|
iconColorPanel.gameObject.SetActive(true);
|
||||||
overlayColorPanel.gameObject.SetActive(false);
|
overlayColorPanel.gameObject.SetActive(true);
|
||||||
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
|
}
|
||||||
foreach (var btn in customIcons.Values) btn.interactable = true;
|
|
||||||
if (customIconData.Selected != null)
|
|
||||||
foreach (var icon in customIconData.Purchased) {
|
|
||||||
if (icon == customIconData.Selected) SelectCustomIcon(icon, false);
|
|
||||||
customIcons[icon].interactable = icon != customIconData.Selected;
|
|
||||||
}
|
|
||||||
|
|
||||||
RenderIcons();
|
private void SwitchToOverlay() {
|
||||||
|
iconsPanel.SetActive(false);
|
||||||
|
overlaysPanel.SetActive(true);
|
||||||
|
marketplaceIconsPanel.SetActive(false);
|
||||||
|
selectionText.text = "Overlay selection";
|
||||||
|
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Marketplace";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SwitchToMarketplaceIcons() {
|
||||||
|
iconsPanel.SetActive(false);
|
||||||
|
overlaysPanel.SetActive(false);
|
||||||
|
marketplaceIconsPanel.SetActive(true);
|
||||||
|
selectionText.text = "Marketplace Icons selection";
|
||||||
|
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Icons";
|
||||||
|
iconColorPanel.gameObject.SetActive(false);
|
||||||
|
overlayColorPanel.gameObject.SetActive(false);
|
||||||
|
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
|
foreach (var btn in customIcons.Values) btn.interactable = true;
|
||||||
|
if (customIconData.Selected != null)
|
||||||
|
foreach (var icon in customIconData.Purchased) {
|
||||||
|
if (icon == customIconData.Selected) SelectCustomIcon(icon, false);
|
||||||
|
customIcons[icon].interactable = icon != customIconData.Selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
RenderIcons();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ToggleKit() {
|
||||||
|
if (GetCurrentKit() == 1) SwitchToOverlay();
|
||||||
|
else if (GetCurrentKit() == 2) SwitchToMarketplaceIcons();
|
||||||
|
else if (GetCurrentKit() == 3) {
|
||||||
|
defaultIcon = Tools.GetIconForUser(BazookaManager.Instance.GetAccountID() ?? 0);
|
||||||
|
icons[0].transform.GetChild(0).GetComponent<Image>().sprite = defaultIcon;
|
||||||
|
|
||||||
|
SwitchToIcon();
|
||||||
|
SelectOverlay(BazookaManager.Instance.GetBirdOverlay());
|
||||||
|
SelectIcon(BazookaManager.Instance.GetBirdIcon());
|
||||||
|
iconColorPanel.SetColor(BazookaManager.Instance.GetColorSettingIcon());
|
||||||
|
overlayColorPanel.SetColor(BazookaManager.Instance.GetColorSettingOverlay());
|
||||||
|
|
||||||
|
if (BazookaManager.Instance.GetBirdIcon() == 7) {
|
||||||
|
SelectOverlay(0);
|
||||||
|
placeholderButton.interactable = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void ToggleKit() {
|
private int GetCurrentKit() {
|
||||||
if (GetCurrentKit() == 1) SwitchToOverlay();
|
if (iconsPanel.activeSelf) return 1;
|
||||||
else if (GetCurrentKit() == 2) SwitchToMarketplaceIcons();
|
else if (overlaysPanel.activeSelf) return 2;
|
||||||
else if (GetCurrentKit() == 3) {
|
else if (marketplaceIconsPanel.activeSelf) return 3;
|
||||||
defaultIcon = Tools.GetIconForUser(BazookaManager.Instance.GetAccountID() ?? 0);
|
return 0;
|
||||||
icons[0].transform.GetChild(0).GetComponent<Image>().sprite = defaultIcon;
|
}
|
||||||
|
|
||||||
SwitchToIcon();
|
private void SelectIcon(int iconID) {
|
||||||
SelectOverlay(BazookaManager.Instance.GetBirdOverlay());
|
var customData = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
SelectIcon(BazookaManager.Instance.GetBirdIcon());
|
customData.Selected = null;
|
||||||
iconColorPanel.SetColor(BazookaManager.Instance.GetColorSettingIcon());
|
BazookaManager.Instance.SetCustomBirdIconData(customData);
|
||||||
overlayColorPanel.SetColor(BazookaManager.Instance.GetColorSettingOverlay());
|
BazookaManager.Instance.SetBirdIcon(iconID);
|
||||||
|
for (int i = 0; i < icons.Length; i++)
|
||||||
|
icons[i].interactable = iconID != i + 1;
|
||||||
|
previewBird.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + iconID);
|
||||||
|
if (iconID == 1) previewBird.sprite = defaultIcon;
|
||||||
|
if (iconID == 7) {
|
||||||
|
SelectOverlay(0);
|
||||||
|
placeholderButton.interactable = false;
|
||||||
|
} else placeholderButton.interactable = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (BazookaManager.Instance.GetBirdIcon() == 7) {
|
private void SelectOverlay(int overlayID) {
|
||||||
SelectOverlay(0);
|
var customData = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
placeholderButton.interactable = false;
|
customData.Selected = null;
|
||||||
}
|
BazookaManager.Instance.SetCustomBirdIconData(customData);
|
||||||
}
|
BazookaManager.Instance.SetBirdOverlay(overlayID);
|
||||||
|
for (int i = 0; i < overlays.Length; i++) {
|
||||||
|
overlays[i].interactable = overlayID != i;
|
||||||
}
|
}
|
||||||
|
previewOverlay.rectTransform.localPosition = new Vector3(-32f, 44.50001f, 0f);
|
||||||
|
previewOverlay.gameObject.SetActive(true);
|
||||||
|
if (overlayID == 8) previewOverlay.rectTransform.localPosition = new Vector3(-35.36f, 31.6f, 0f);
|
||||||
|
else if (overlayID == 11) previewOverlay.rectTransform.localPosition = new Vector3(-31.44f, 43.50004f, 0f);
|
||||||
|
else if (overlayID == 13) previewOverlay.rectTransform.localPosition = new Vector3(-35.28575f, 31.3667f, 0f);
|
||||||
|
|
||||||
private int GetCurrentKit() {
|
if (overlayID == 0) {
|
||||||
if (iconsPanel.activeSelf) return 1;
|
previewOverlay.gameObject.SetActive(false);
|
||||||
else if (overlaysPanel.activeSelf) return 2;
|
previewOverlay.sprite = null;
|
||||||
else if (marketplaceIconsPanel.activeSelf) return 3;
|
} else previewOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + overlayID);
|
||||||
return 0;
|
}
|
||||||
|
|
||||||
|
void SelectCustomIcon(string icon, bool renderIcons = true) {
|
||||||
|
var customData = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
|
customData.Selected = icon;
|
||||||
|
BazookaManager.Instance.SetCustomBirdIconData(customData);
|
||||||
|
previewBird.AddComponent<WaitingForCustomIcon>().ID = icon;
|
||||||
|
if (renderIcons) RenderIcons();
|
||||||
|
previewBird.color = Color.white;
|
||||||
|
previewOverlay.gameObject.SetActive(false);
|
||||||
|
previewOverlay.sprite = null;
|
||||||
|
previewOverlay.color = Color.white;
|
||||||
|
foreach (var loopIcon in customData.Purchased) {
|
||||||
|
customIcons[loopIcon].interactable = loopIcon != icon;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void SelectIcon(int iconID) {
|
async void Update() {
|
||||||
var customData = BazookaManager.Instance.GetCustomBirdIconData();
|
if (Keyboard.current.escapeKey.wasPressedThisFrame) await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
customData.Selected = null;
|
}
|
||||||
BazookaManager.Instance.SetCustomBirdIconData(customData);
|
|
||||||
BazookaManager.Instance.SetBirdIcon(iconID);
|
|
||||||
for (int i = 0; i < icons.Length; i++)
|
|
||||||
icons[i].interactable = iconID != i + 1;
|
|
||||||
previewBird.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + iconID);
|
|
||||||
if (iconID == 1) previewBird.sprite = defaultIcon;
|
|
||||||
if (iconID == 7) {
|
|
||||||
SelectOverlay(0);
|
|
||||||
placeholderButton.interactable = false;
|
|
||||||
} else placeholderButton.interactable = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SelectOverlay(int overlayID) {
|
void RenderIcons() {
|
||||||
var customData = BazookaManager.Instance.GetCustomBirdIconData();
|
var objects = FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None);
|
||||||
customData.Selected = null;
|
if (objects.Length != 0) CustomIconLoader.Init(objects);
|
||||||
BazookaManager.Instance.SetCustomBirdIconData(customData);
|
}
|
||||||
BazookaManager.Instance.SetBirdOverlay(overlayID);
|
|
||||||
for (int i = 0; i < overlays.Length; i++) {
|
|
||||||
overlays[i].interactable = overlayID != i;
|
|
||||||
}
|
|
||||||
previewOverlay.rectTransform.localPosition = new Vector3(-32f, 44.50001f, 0f);
|
|
||||||
previewOverlay.gameObject.SetActive(true);
|
|
||||||
if (overlayID == 8) previewOverlay.rectTransform.localPosition = new Vector3(-35.36f, 31.6f, 0f);
|
|
||||||
else if (overlayID == 11) previewOverlay.rectTransform.localPosition = new Vector3(-31.44f, 43.50004f, 0f);
|
|
||||||
else if (overlayID == 13) previewOverlay.rectTransform.localPosition = new Vector3(-35.28575f, 31.3667f, 0f);
|
|
||||||
|
|
||||||
if (overlayID == 0) {
|
|
||||||
previewOverlay.gameObject.SetActive(false);
|
|
||||||
previewOverlay.sprite = null;
|
|
||||||
} else previewOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + overlayID);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SelectCustomIcon(string icon, bool renderIcons = true) {
|
|
||||||
var customData = BazookaManager.Instance.GetCustomBirdIconData();
|
|
||||||
customData.Selected = icon;
|
|
||||||
BazookaManager.Instance.SetCustomBirdIconData(customData);
|
|
||||||
previewBird.AddComponent<WaitingForCustomIcon>().ID = icon;
|
|
||||||
if (renderIcons) RenderIcons();
|
|
||||||
previewBird.color = Color.white;
|
|
||||||
previewOverlay.gameObject.SetActive(false);
|
|
||||||
previewOverlay.sprite = null;
|
|
||||||
previewOverlay.color = Color.white;
|
|
||||||
foreach (var loopIcon in customData.Purchased) {
|
|
||||||
customIcons[loopIcon].interactable = loopIcon != icon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async void Update() {
|
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame) await SceneManager.LoadSceneAsync("MainMenu");
|
|
||||||
}
|
|
||||||
|
|
||||||
void RenderIcons() {
|
|
||||||
var objects = FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None);
|
|
||||||
if (objects.Length != 0) CustomIconLoader.Init(objects);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+207
-207
@@ -8,231 +8,231 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class LeaderboardsMenu : MonoBehaviour {
|
public class LeaderboardsMenu : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text statusText;
|
[SerializeField] private TMP_Text statusText;
|
||||||
[SerializeField] private Button backButton;
|
[SerializeField] private Button backButton;
|
||||||
[SerializeField] private Button refreshButton;
|
[SerializeField] private Button refreshButton;
|
||||||
[SerializeField] private ProfileMenu profilePrefab;
|
[SerializeField] private ProfileMenu profilePrefab;
|
||||||
|
|
||||||
[SerializeField] private GameObject selectionPanel;
|
[SerializeField] private GameObject selectionPanel;
|
||||||
[SerializeField] private Button selectionScoreButton;
|
[SerializeField] private Button selectionScoreButton;
|
||||||
[SerializeField] private Button selectionBerryButton;
|
[SerializeField] private Button selectionBerryButton;
|
||||||
[SerializeField] private Button selectionCoinButton;
|
[SerializeField] private Button selectionCoinButton;
|
||||||
[SerializeField] private Button selectionLegacyButton;
|
[SerializeField] private Button selectionLegacyButton;
|
||||||
[SerializeField] private Button selectionLevelButton;
|
[SerializeField] private Button selectionLevelButton;
|
||||||
[SerializeField] private Button selectionTotalXPButton;
|
[SerializeField] private Button selectionTotalXPButton;
|
||||||
[SerializeField] private Button selectionTotalBerriesButton;
|
[SerializeField] private Button selectionTotalBerriesButton;
|
||||||
|
|
||||||
[SerializeField] private GameObject scoresPanel;
|
[SerializeField] private GameObject scoresPanel;
|
||||||
[SerializeField] private GameObject content;
|
[SerializeField] private GameObject content;
|
||||||
[SerializeField] private GameObject sampleObject;
|
[SerializeField] private GameObject sampleObject;
|
||||||
[SerializeField] private TMP_Dropdown berryShowTypeDropdown;
|
[SerializeField] private TMP_Dropdown berryShowTypeDropdown;
|
||||||
|
|
||||||
private LeaderboardMode mode = LeaderboardMode.None;
|
private LeaderboardMode mode = LeaderboardMode.None;
|
||||||
private bool changedByCode = false;
|
private bool changedByCode = false;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
selectionScoreButton.onClick.AddListener(() => { mode = LeaderboardMode.Score; SwitchMenu(1); });
|
selectionScoreButton.onClick.AddListener(() => { mode = LeaderboardMode.Score; SwitchMenu(1); });
|
||||||
selectionBerryButton.onClick.AddListener(() => { mode = LeaderboardMode.Berry; SwitchMenu(1); });
|
selectionBerryButton.onClick.AddListener(() => { mode = LeaderboardMode.Berry; SwitchMenu(1); });
|
||||||
selectionCoinButton.onClick.AddListener(() => { mode = LeaderboardMode.Coin; SwitchMenu(1); });
|
selectionCoinButton.onClick.AddListener(() => { mode = LeaderboardMode.Coin; SwitchMenu(1); });
|
||||||
selectionLegacyButton.onClick.AddListener(() => { mode = LeaderboardMode.Legacy; SwitchMenu(1); });
|
selectionLegacyButton.onClick.AddListener(() => { mode = LeaderboardMode.Legacy; SwitchMenu(1); });
|
||||||
selectionLevelButton.onClick.AddListener(() => { mode = LeaderboardMode.Level; SwitchMenu(1); });
|
selectionLevelButton.onClick.AddListener(() => { mode = LeaderboardMode.Level; SwitchMenu(1); });
|
||||||
selectionTotalXPButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalXP; SwitchMenu(1); });
|
selectionTotalXPButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalXP; SwitchMenu(1); });
|
||||||
selectionTotalBerriesButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalBerries; SwitchMenu(1); });
|
selectionTotalBerriesButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalBerries; SwitchMenu(1); });
|
||||||
berryShowTypeDropdown.onValueChanged.AddListener(_ => GetTopPlayers());
|
berryShowTypeDropdown.onValueChanged.AddListener(_ => GetTopPlayers());
|
||||||
|
|
||||||
backButton.onClick.AddListener(async () => {
|
backButton.onClick.AddListener(async () => {
|
||||||
if (selectionPanel.activeSelf) await SceneManager.LoadSceneAsync("MainMenu");
|
if (selectionPanel.activeSelf) await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
else if (scoresPanel.activeSelf) SwitchMenu(0);
|
else if (scoresPanel.activeSelf) SwitchMenu(0);
|
||||||
});
|
});
|
||||||
refreshButton.onClick.AddListener(GetTopPlayers);
|
refreshButton.onClick.AddListener(GetTopPlayers);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SwitchMenu(int menu) {
|
||||||
|
UpdateStatus(false, "");
|
||||||
|
if (!selectionPanel.activeSelf) {
|
||||||
|
foreach (Transform item in content.transform) {
|
||||||
|
if (item.gameObject.activeSelf) {
|
||||||
|
Destroy(item.gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwitchMenu(int menu) {
|
if (menu == 0) {
|
||||||
UpdateStatus(false, "");
|
mode = LeaderboardMode.None;
|
||||||
if (!selectionPanel.activeSelf) {
|
refreshButton.gameObject.SetActive(false);
|
||||||
foreach (Transform item in content.transform) {
|
selectionPanel.SetActive(true);
|
||||||
if (item.gameObject.activeSelf) {
|
scoresPanel.SetActive(false);
|
||||||
Destroy(item.gameObject);
|
} else if (menu == 1) {
|
||||||
}
|
refreshButton.transform.localPosition = mode == LeaderboardMode.Berry ? new Vector2(402.5f, 282.33f) : new Vector2(-402.5f, -282.33f);
|
||||||
|
refreshButton.gameObject.SetActive(true);
|
||||||
|
berryShowTypeDropdown.gameObject.SetActive(mode == LeaderboardMode.Berry);
|
||||||
|
changedByCode = true;
|
||||||
|
berryShowTypeDropdown.value = 0;
|
||||||
|
changedByCode = false;
|
||||||
|
selectionPanel.SetActive(false);
|
||||||
|
scoresPanel.SetActive(true);
|
||||||
|
GetTopPlayers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async void GetTopPlayers() {
|
||||||
|
if (changedByCode) return;
|
||||||
|
backButton.interactable = false;
|
||||||
|
refreshButton.interactable = false;
|
||||||
|
foreach (Transform item in content.transform) {
|
||||||
|
if (item.gameObject.activeSelf) {
|
||||||
|
Destroy(item.gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UpdateStatus(true, "Loading...");
|
||||||
|
using UnityWebRequest request = UnityWebRequest.Get(mode == LeaderboardMode.Score
|
||||||
|
? Endpoints.LEADERBOARDS_SCORE_ENDPOINT
|
||||||
|
: mode == LeaderboardMode.Berry
|
||||||
|
? Endpoints.LEADERBOARDS_BERRY_ENDPOINT + "?berry=" + berryShowTypeDropdown.value
|
||||||
|
: mode == LeaderboardMode.Coin
|
||||||
|
? Endpoints.LEADERBOARDS_COIN_ENDPOINT
|
||||||
|
: mode == LeaderboardMode.Legacy
|
||||||
|
? Endpoints.LEADERBOARDS_LEGACY_ENDPOINT
|
||||||
|
: mode == LeaderboardMode.Level || mode == LeaderboardMode.TotalXP
|
||||||
|
? Endpoints.BD_ACCOUNT_ENDPOINT + "?username="
|
||||||
|
: Endpoints.LEADERBOARDS_TOTAL_ENDPOINT);
|
||||||
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
|
await request.SendWebRequest();
|
||||||
|
if (request.downloadHandler.text == null) {
|
||||||
|
UpdateStatus(true, "Failed to fetch leaderboard stats");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UpdateStatus(false);
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
|
if ((bool)jsonResponse["success"]) {
|
||||||
|
if (mode != LeaderboardMode.Level && mode != LeaderboardMode.TotalXP) {
|
||||||
|
var entries = jsonResponse["data"].ToObject<LeaderboardEntry[]>();
|
||||||
|
for (int i = 0; i < entries.Length; i++) {
|
||||||
|
var entry = entries[i];
|
||||||
|
var entryInfo = Instantiate(sampleObject, content.transform);
|
||||||
|
var usernameText = entryInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||||
|
var playerIcon = usernameText.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
var playerIconButton = usernameText.transform.GetChild(0).GetComponent<Button>();
|
||||||
|
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
var scoreText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
||||||
|
|
||||||
|
usernameText.text = $"{entry.Username} (#{i + 1})";
|
||||||
|
scoreText.text = (mode == LeaderboardMode.Berry || mode == LeaderboardMode.TotalBerries ? "Berries: " : mode == LeaderboardMode.Coin ? "Coins: " : "Score: ") + Tools.FormatWithCommas(entry.Value);
|
||||||
|
|
||||||
|
if (BazookaManager.Instance.GetAccountID() == entry.UserID) {
|
||||||
|
usernameText.text = $"<color=#7FFFD4>{usernameText.text}</color>";
|
||||||
|
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entry.CustomIcon == null) {
|
||||||
|
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
||||||
|
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
||||||
|
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
||||||
|
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
||||||
|
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
||||||
|
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
||||||
|
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
||||||
|
try {
|
||||||
|
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||||
|
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||||
}
|
}
|
||||||
}
|
catch {
|
||||||
|
playerIcon.color = Color.white;
|
||||||
if (menu == 0) {
|
playerOverlay.color = Color.white;
|
||||||
mode = LeaderboardMode.None;
|
|
||||||
refreshButton.gameObject.SetActive(false);
|
|
||||||
selectionPanel.SetActive(true);
|
|
||||||
scoresPanel.SetActive(false);
|
|
||||||
} else if (menu == 1) {
|
|
||||||
refreshButton.transform.localPosition = mode == LeaderboardMode.Berry ? new Vector2(402.5f, 282.33f) : new Vector2(-402.5f, -282.33f);
|
|
||||||
refreshButton.gameObject.SetActive(true);
|
|
||||||
berryShowTypeDropdown.gameObject.SetActive(mode == LeaderboardMode.Berry);
|
|
||||||
changedByCode = true;
|
|
||||||
berryShowTypeDropdown.value = 0;
|
|
||||||
changedByCode = false;
|
|
||||||
selectionPanel.SetActive(false);
|
|
||||||
scoresPanel.SetActive(true);
|
|
||||||
GetTopPlayers();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async void GetTopPlayers() {
|
|
||||||
if (changedByCode) return;
|
|
||||||
backButton.interactable = false;
|
|
||||||
refreshButton.interactable = false;
|
|
||||||
foreach (Transform item in content.transform) {
|
|
||||||
if (item.gameObject.activeSelf) {
|
|
||||||
Destroy(item.gameObject);
|
|
||||||
}
|
}
|
||||||
|
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
||||||
|
playerIconButton.onClick.AddListener(async () => {
|
||||||
|
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
||||||
|
clone.SetActive(true);
|
||||||
|
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
||||||
|
});
|
||||||
|
entryInfo.SetActive(true);
|
||||||
}
|
}
|
||||||
UpdateStatus(true, "Loading...");
|
} else {
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(mode == LeaderboardMode.Score
|
var entries = jsonResponse["data"]
|
||||||
? Endpoints.LEADERBOARDS_SCORE_ENDPOINT
|
.ToObject<Account[]>()
|
||||||
: mode == LeaderboardMode.Berry
|
.Select(entry => {
|
||||||
? Endpoints.LEADERBOARDS_BERRY_ENDPOINT + "?berry=" + berryShowTypeDropdown.value
|
var xp = Tools.CalculateXP(
|
||||||
: mode == LeaderboardMode.Coin
|
entry.Stats.TotalNormalBerries,
|
||||||
? Endpoints.LEADERBOARDS_COIN_ENDPOINT
|
entry.Stats.TotalPoisonBerries,
|
||||||
: mode == LeaderboardMode.Legacy
|
entry.Stats.TotalSlowBerries,
|
||||||
? Endpoints.LEADERBOARDS_LEGACY_ENDPOINT
|
entry.Stats.TotalUltraBerries,
|
||||||
: mode == LeaderboardMode.Level || mode == LeaderboardMode.TotalXP
|
entry.Stats.TotalSpeedyBerries,
|
||||||
? Endpoints.BD_ACCOUNT_ENDPOINT + "?username="
|
entry.Stats.TotalCoinBerries,
|
||||||
: Endpoints.LEADERBOARDS_TOTAL_ENDPOINT);
|
entry.Stats.TotalRandomBerries,
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
entry.Stats.TotalAntiBerries,
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
entry.Stats.TotalGoldenBerries
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
);
|
||||||
await request.SendWebRequest();
|
|
||||||
if (request.downloadHandler.text == null) {
|
|
||||||
UpdateStatus(true, "Failed to fetch leaderboard stats");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UpdateStatus(false);
|
|
||||||
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
|
||||||
if ((bool)jsonResponse["success"]) {
|
|
||||||
if (mode != LeaderboardMode.Level && mode != LeaderboardMode.TotalXP) {
|
|
||||||
var entries = jsonResponse["data"].ToObject<LeaderboardEntry[]>();
|
|
||||||
for (int i = 0; i < entries.Length; i++) {
|
|
||||||
var entry = entries[i];
|
|
||||||
var entryInfo = Instantiate(sampleObject, content.transform);
|
|
||||||
var usernameText = entryInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
|
||||||
var playerIcon = usernameText.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
var playerIconButton = usernameText.transform.GetChild(0).GetComponent<Button>();
|
|
||||||
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
var scoreText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
|
||||||
|
|
||||||
usernameText.text = $"{entry.Username} (#{i + 1})";
|
return new {
|
||||||
scoreText.text = (mode == LeaderboardMode.Berry || mode == LeaderboardMode.TotalBerries ? "Berries: " : mode == LeaderboardMode.Coin ? "Coins: " : "Score: ") + Tools.FormatWithCommas(entry.Value);
|
Account = entry,
|
||||||
|
XP = xp
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.OrderByDescending(x => x.XP)
|
||||||
|
.ToList();
|
||||||
|
for (int i = 0; i < entries.Count; i++) {
|
||||||
|
var entry = entries[i].Account;
|
||||||
|
var xp = entries[i].XP;
|
||||||
|
var entryInfo = Instantiate(sampleObject, content.transform);
|
||||||
|
var usernameText = entryInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||||
|
var playerIcon = usernameText.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
var playerIconButton = usernameText.transform.GetChild(0).GetComponent<Button>();
|
||||||
|
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
var scoreText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
||||||
|
|
||||||
if (BazookaManager.Instance.GetAccountID() == entry.UserID) {
|
usernameText.text = $"{entry.Username} (#{i + 1})";
|
||||||
usernameText.text = $"<color=#7FFFD4>{usernameText.text}</color>";
|
scoreText.text = (mode == LeaderboardMode.Level ? "Level: " : "XP: ") + Tools.FormatWithCommas(mode == LeaderboardMode.Level ? Tools.GetLevelInfo(xp).level.ToString() : xp.ToString());
|
||||||
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entry.CustomIcon == null) {
|
if (BazookaManager.Instance.GetAccountID() == entry.UserID) {
|
||||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
usernameText.text = $"<color=#7FFFD4>{usernameText.text}</color>";
|
||||||
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
|
||||||
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
}
|
||||||
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
|
||||||
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
|
||||||
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
|
||||||
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
|
||||||
try {
|
|
||||||
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
|
||||||
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
playerIcon.color = Color.white;
|
|
||||||
playerOverlay.color = Color.white;
|
|
||||||
}
|
|
||||||
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
|
||||||
playerIconButton.onClick.AddListener(async () => {
|
|
||||||
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
|
||||||
clone.SetActive(true);
|
|
||||||
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
|
||||||
});
|
|
||||||
entryInfo.SetActive(true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var entries = jsonResponse["data"]
|
|
||||||
.ToObject<Account[]>()
|
|
||||||
.Select(entry => {
|
|
||||||
var xp = Tools.CalculateXP(
|
|
||||||
entry.Stats.TotalNormalBerries,
|
|
||||||
entry.Stats.TotalPoisonBerries,
|
|
||||||
entry.Stats.TotalSlowBerries,
|
|
||||||
entry.Stats.TotalUltraBerries,
|
|
||||||
entry.Stats.TotalSpeedyBerries,
|
|
||||||
entry.Stats.TotalCoinBerries,
|
|
||||||
entry.Stats.TotalRandomBerries,
|
|
||||||
entry.Stats.TotalAntiBerries,
|
|
||||||
entry.Stats.TotalGoldenBerries
|
|
||||||
);
|
|
||||||
|
|
||||||
return new {
|
if (entry.CustomIcon == null) {
|
||||||
Account = entry,
|
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
||||||
XP = xp
|
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
||||||
};
|
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
||||||
})
|
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
||||||
.OrderByDescending(x => x.XP)
|
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
||||||
.ToList();
|
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
||||||
for (int i = 0; i < entries.Count; i++) {
|
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
||||||
var entry = entries[i].Account;
|
try {
|
||||||
var xp = entries[i].XP;
|
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||||
var entryInfo = Instantiate(sampleObject, content.transform);
|
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||||
var usernameText = entryInfo.transform.GetChild(0).GetComponent<TMP_Text>();
|
|
||||||
var playerIcon = usernameText.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
var playerIconButton = usernameText.transform.GetChild(0).GetComponent<Button>();
|
|
||||||
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
var scoreText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
|
||||||
|
|
||||||
usernameText.text = $"{entry.Username} (#{i + 1})";
|
|
||||||
scoreText.text = (mode == LeaderboardMode.Level ? "Level: " : "XP: ") + Tools.FormatWithCommas(mode == LeaderboardMode.Level ? Tools.GetLevelInfo(xp).level.ToString() : xp.ToString());
|
|
||||||
|
|
||||||
if (BazookaManager.Instance.GetAccountID() == entry.UserID) {
|
|
||||||
usernameText.text = $"<color=#7FFFD4>{usernameText.text}</color>";
|
|
||||||
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entry.CustomIcon == null) {
|
|
||||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
|
||||||
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
|
||||||
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
|
||||||
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
|
||||||
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
|
||||||
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
|
||||||
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
|
||||||
try {
|
|
||||||
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
|
||||||
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
playerIcon.color = Color.white;
|
|
||||||
playerOverlay.color = Color.white;
|
|
||||||
}
|
|
||||||
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
|
||||||
playerIconButton.onClick.AddListener(async () => {
|
|
||||||
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
|
||||||
clone.SetActive(true);
|
|
||||||
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
|
||||||
});
|
|
||||||
entryInfo.SetActive(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
catch {
|
||||||
} else {
|
playerIcon.color = Color.white;
|
||||||
UpdateStatus(true, (string)jsonResponse["message"]);
|
playerOverlay.color = Color.white;
|
||||||
|
}
|
||||||
|
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
||||||
|
playerIconButton.onClick.AddListener(async () => {
|
||||||
|
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
||||||
|
clone.SetActive(true);
|
||||||
|
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
||||||
|
});
|
||||||
|
entryInfo.SetActive(true);
|
||||||
}
|
}
|
||||||
backButton.interactable = true;
|
}
|
||||||
refreshButton.interactable = true;
|
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
||||||
|
} else {
|
||||||
|
UpdateStatus(true, (string)jsonResponse["message"]);
|
||||||
}
|
}
|
||||||
|
backButton.interactable = true;
|
||||||
|
refreshButton.interactable = true;
|
||||||
|
}
|
||||||
|
|
||||||
private void UpdateStatus(bool enabled, string message = "") {
|
private void UpdateStatus(bool enabled, string message = "") {
|
||||||
statusText.gameObject.SetActive(enabled);
|
statusText.gameObject.SetActive(enabled);
|
||||||
statusText.text = message;
|
statusText.text = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
async void Update() {
|
async void Update() {
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame && FindFirstObjectByType<ProfileMenu>() == null) {
|
if (Keyboard.current.escapeKey.wasPressedThisFrame && FindFirstObjectByType<ProfileMenu>() == null) {
|
||||||
if (!selectionPanel.activeSelf) SwitchMenu(0);
|
if (!selectionPanel.activeSelf) SwitchMenu(0);
|
||||||
else await SceneManager.LoadSceneAsync("MainMenu");
|
else await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -5,62 +5,62 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class LoadingMenu : MonoBehaviour {
|
public class LoadingMenu : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text text;
|
[SerializeField] private TMP_Text text;
|
||||||
[SerializeField] private Button updateButton;
|
[SerializeField] private Button updateButton;
|
||||||
[SerializeField] private Button continueButton;
|
[SerializeField] private Button continueButton;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
if (!Application.isMobilePlatform) {
|
if (!Application.isMobilePlatform) {
|
||||||
var width = Display.main.systemWidth;
|
var width = Display.main.systemWidth;
|
||||||
var height = Display.main.systemHeight;
|
var height = Display.main.systemHeight;
|
||||||
Screen.SetResolution(width, height, BazookaManager.Instance.GetSettingFullScreen());
|
Screen.SetResolution(width, height, BazookaManager.Instance.GetSettingFullScreen());
|
||||||
QualitySettings.vSyncCount = BazookaManager.Instance.GetSettingVsync() ? 1 : -1;
|
QualitySettings.vSyncCount = BazookaManager.Instance.GetSettingVsync() ? 1 : -1;
|
||||||
} else {
|
} else {
|
||||||
Application.targetFrameRate = 360;
|
Application.targetFrameRate = 360;
|
||||||
QualitySettings.vSyncCount = 0;
|
QualitySettings.vSyncCount = 0;
|
||||||
}
|
|
||||||
PlayerPrefs.SetString("latestVersion", Application.version);
|
|
||||||
CheckUpdate();
|
|
||||||
}
|
}
|
||||||
|
PlayerPrefs.SetString("latestVersion", Application.version);
|
||||||
|
CheckUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
async void CheckUpdate() {
|
async void CheckUpdate() {
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.CAN_LOAD_CLIENT_ENDPOINT);
|
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.CAN_LOAD_CLIENT_ENDPOINT);
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
if (request.downloadHandler.text == null) {
|
if (request.downloadHandler.text == null) {
|
||||||
text.text = "Failed to check version";
|
text.text = "Failed to check version";
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
string response = request.downloadHandler.text;
|
|
||||||
if (response == "1") {
|
|
||||||
await SceneManager.LoadSceneAsync("MainMenu");
|
|
||||||
} else if (response == "2") {
|
|
||||||
text.text = "Outdated client! You can still play the game and access the servers, but it isn't recommended.";
|
|
||||||
|
|
||||||
var updateButtonPos = updateButton.transform.localPosition;
|
|
||||||
updateButtonPos.x = -135;
|
|
||||||
updateButton.transform.localPosition = updateButtonPos;
|
|
||||||
|
|
||||||
updateButton.gameObject.SetActive(true);
|
|
||||||
continueButton.gameObject.SetActive(true);
|
|
||||||
} else if (response == "3") {
|
|
||||||
text.text = "Outdated client! You can still load into the game, but online features may not be available.";
|
|
||||||
|
|
||||||
var updateButtonPos = updateButton.transform.localPosition;
|
|
||||||
updateButtonPos.x = -135;
|
|
||||||
updateButton.transform.localPosition = updateButtonPos;
|
|
||||||
|
|
||||||
updateButton.gameObject.SetActive(true);
|
|
||||||
continueButton.gameObject.SetActive(true);
|
|
||||||
} else if (response == "4") {
|
|
||||||
text.text = "You are on a beta version of the game. You can still play the game and access the servers, but it is recommended to use the latest stable version.";
|
|
||||||
continueButton.transform.position = updateButton.transform.position;
|
|
||||||
continueButton.gameObject.SetActive(true);
|
|
||||||
} else {
|
|
||||||
text.text = "Outdated client! Please update your client to play";
|
|
||||||
updateButton.gameObject.SetActive(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
string response = request.downloadHandler.text;
|
||||||
|
if (response == "1") {
|
||||||
|
await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
|
} else if (response == "2") {
|
||||||
|
text.text = "Outdated client! You can still play the game and access the servers, but it isn't recommended.";
|
||||||
|
|
||||||
|
var updateButtonPos = updateButton.transform.localPosition;
|
||||||
|
updateButtonPos.x = -135;
|
||||||
|
updateButton.transform.localPosition = updateButtonPos;
|
||||||
|
|
||||||
|
updateButton.gameObject.SetActive(true);
|
||||||
|
continueButton.gameObject.SetActive(true);
|
||||||
|
} else if (response == "3") {
|
||||||
|
text.text = "Outdated client! You can still load into the game, but online features may not be available.";
|
||||||
|
|
||||||
|
var updateButtonPos = updateButton.transform.localPosition;
|
||||||
|
updateButtonPos.x = -135;
|
||||||
|
updateButton.transform.localPosition = updateButtonPos;
|
||||||
|
|
||||||
|
updateButton.gameObject.SetActive(true);
|
||||||
|
continueButton.gameObject.SetActive(true);
|
||||||
|
} else if (response == "4") {
|
||||||
|
text.text = "You are on a beta version of the game. You can still play the game and access the servers, but it is recommended to use the latest stable version.";
|
||||||
|
continueButton.transform.position = updateButton.transform.position;
|
||||||
|
continueButton.gameObject.SetActive(true);
|
||||||
|
} else {
|
||||||
|
text.text = "Outdated client! Please update your client to play";
|
||||||
|
updateButton.gameObject.SetActive(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+64
-64
@@ -6,81 +6,81 @@ using UnityEngine.InputSystem;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class MainMenu : MonoBehaviour {
|
public class MainMenu : MonoBehaviour {
|
||||||
[SerializeField] private Button closeButton;
|
[SerializeField] private Button closeButton;
|
||||||
[SerializeField] private TMP_Text updateText;
|
[SerializeField] private TMP_Text updateText;
|
||||||
[SerializeField] private Button updateButton;
|
[SerializeField] private Button updateButton;
|
||||||
[SerializeField] private TMP_Text splashText;
|
[SerializeField] private TMP_Text splashText;
|
||||||
[SerializeField] private Button profileButton;
|
[SerializeField] private Button profileButton;
|
||||||
[SerializeField] private ProfileMenu profilePrefab;
|
[SerializeField] private ProfileMenu profilePrefab;
|
||||||
[SerializeField] private TMP_Text copyrightText;
|
[SerializeField] private TMP_Text copyrightText;
|
||||||
[SerializeField] private GameObject closePopup;
|
[SerializeField] private GameObject closePopup;
|
||||||
[SerializeField] private Button closePopupCancelButton;
|
[SerializeField] private Button closePopupCancelButton;
|
||||||
[SerializeField] private Button closePopupCloseButton;
|
[SerializeField] private Button closePopupCloseButton;
|
||||||
[SerializeField] private Button iconMarketplaceButton;
|
[SerializeField] private Button iconMarketplaceButton;
|
||||||
[SerializeField] private TMP_Text iconMarketplaceButtonText;
|
[SerializeField] private TMP_Text iconMarketplaceButtonText;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
if (PresistentData.latestVersion != null) {
|
if (PresistentData.latestVersion != null) {
|
||||||
if (PresistentData.latestVersion != "-1") {
|
if (PresistentData.latestVersion != "-1") {
|
||||||
updateText.text = "Latest: v" + PresistentData.latestVersion ?? "N/A";
|
updateText.text = "Latest: v" + PresistentData.latestVersion ?? "N/A";
|
||||||
updateButton.gameObject.SetActive(PresistentData.latestVersion != Application.version);
|
updateButton.gameObject.SetActive(PresistentData.latestVersion != Application.version);
|
||||||
} else {
|
} else {
|
||||||
updateText.text = "Latest: Loading...";
|
updateText.text = "Latest: Loading...";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PresistentData.randomSplashes != null && PresistentData.randomSplashes.Count != 0)
|
if (PresistentData.randomSplashes != null && PresistentData.randomSplashes.Count != 0)
|
||||||
DoSplashText(splashText, PresistentData.randomSplashes[UnityEngine.Random.Range(0, PresistentData.randomSplashes.Count)]);
|
DoSplashText(splashText, PresistentData.randomSplashes[UnityEngine.Random.Range(0, PresistentData.randomSplashes.Count)]);
|
||||||
copyrightText.text = $"\\u00A9 {DateTime.Now.Year} Lncvrt. All rights reserved.";
|
copyrightText.text = $"\\u00A9 {DateTime.Now.Year} Lncvrt. All rights reserved.";
|
||||||
|
|
||||||
if (!Application.isMobilePlatform && !Application.isEditor) {
|
if (!Application.isMobilePlatform && !Application.isEditor) {
|
||||||
closeButton.gameObject.SetActive(true);
|
closeButton.gameObject.SetActive(true);
|
||||||
closeButton.onClick.AddListener(() => closePopup.SetActive(true));
|
closeButton.onClick.AddListener(() => closePopup.SetActive(true));
|
||||||
}
|
|
||||||
|
|
||||||
closePopupCancelButton.onClick.AddListener(() => closePopup.SetActive(false));
|
|
||||||
closePopupCloseButton.onClick.AddListener(() => Application.Quit());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Start() {
|
closePopupCancelButton.onClick.AddListener(() => closePopup.SetActive(false));
|
||||||
if (BazookaManager.Instance.GetAccountID() != null) {
|
closePopupCloseButton.onClick.AddListener(() => Application.Quit());
|
||||||
profileButton.transform.GetChild(0).GetComponent<TMP_Text>().text = BazookaManager.Instance.GetAccountName();
|
}
|
||||||
profileButton.onClick.AddListener(async () => {
|
|
||||||
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
|
||||||
clone.SetActive(true);
|
|
||||||
await clone.GetComponent<ProfileMenu>().Init();
|
|
||||||
});
|
|
||||||
profileButton.gameObject.SetActive(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Tools.GetLevelInfo().level < 3) {
|
void Start() {
|
||||||
iconMarketplaceButton.interactable = false;
|
if (BazookaManager.Instance.GetAccountID() != null) {
|
||||||
iconMarketplaceButtonText.text += "\n<size=12>You need level 3 or higher to access this</size>";
|
profileButton.transform.GetChild(0).GetComponent<TMP_Text>().text = BazookaManager.Instance.GetAccountName();
|
||||||
}
|
profileButton.onClick.AddListener(async () => {
|
||||||
|
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
||||||
|
clone.SetActive(true);
|
||||||
|
await clone.GetComponent<ProfileMenu>().Init();
|
||||||
|
});
|
||||||
|
profileButton.gameObject.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update() {
|
if (Tools.GetLevelInfo().level < 3) {
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame && !GameObject.Find("ProfilePrefab(Clone)")) closePopup.SetActive(!closePopup.activeSelf);
|
iconMarketplaceButton.interactable = false;
|
||||||
|
iconMarketplaceButtonText.text += "\n<size=12>You need level 3 or higher to access this</size>";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void DoSplashText(TMP_Text text, SplashEntry splash) {
|
void Update() {
|
||||||
text.text = splash.Content;
|
if (Keyboard.current.escapeKey.wasPressedThisFrame && !GameObject.Find("ProfilePrefab(Clone)")) closePopup.SetActive(!closePopup.activeSelf);
|
||||||
|
}
|
||||||
|
|
||||||
var scale = text.transform.localScale;
|
public static void DoSplashText(TMP_Text text, SplashEntry splash) {
|
||||||
scale.y = splash.Attributes.Flip ? -1 : 1;
|
text.text = splash.Content;
|
||||||
scale.x = (splash.Attributes.Flip == splash.Attributes.Reverse) ? 1 : -1;
|
|
||||||
text.transform.localScale = scale;
|
|
||||||
|
|
||||||
if (splash.Attributes.BounceSpeed != -1) text.GetComponent<BouncyText>().frequency = splash.Attributes.BounceSpeed;
|
var scale = text.transform.localScale;
|
||||||
|
scale.y = splash.Attributes.Flip ? -1 : 1;
|
||||||
|
scale.x = (splash.Attributes.Flip == splash.Attributes.Reverse) ? 1 : -1;
|
||||||
|
text.transform.localScale = scale;
|
||||||
|
|
||||||
if (splash.Attributes.Color != null) {
|
if (splash.Attributes.BounceSpeed != -1) text.GetComponent<BouncyText>().frequency = splash.Attributes.BounceSpeed;
|
||||||
if (splash.Attributes.Color == "rainbow" && splash.Attributes.RainbowSpeed != -1) {
|
|
||||||
text.color = Color.white;
|
if (splash.Attributes.Color != null) {
|
||||||
var rainbowText = text.AddComponent<RainbowText>();
|
if (splash.Attributes.Color == "rainbow" && splash.Attributes.RainbowSpeed != -1) {
|
||||||
rainbowText.frequency = splash.Attributes.RainbowSpeed;
|
text.color = Color.white;
|
||||||
} else if (splash.Attributes.Color.Length == 6) {
|
var rainbowText = text.AddComponent<RainbowText>();
|
||||||
UnityEngine.ColorUtility.TryParseHtmlString("#" + splash.Attributes.Color, out Color splashColor);
|
rainbowText.frequency = splash.Attributes.RainbowSpeed;
|
||||||
text.color = splashColor;
|
} else if (splash.Attributes.Color.Length == 6) {
|
||||||
}
|
UnityEngine.ColorUtility.TryParseHtmlString("#" + splash.Attributes.Color, out Color splashColor);
|
||||||
}
|
text.color = splashColor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+17
-17
@@ -2,26 +2,26 @@ using UnityEngine;
|
|||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
public class MenuMusic : MonoBehaviour {
|
public class MenuMusic : MonoBehaviour {
|
||||||
public static MenuMusic Instance;
|
public static MenuMusic Instance;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
if (Instance == null) {
|
if (Instance == null) {
|
||||||
Instance = this;
|
Instance = this;
|
||||||
DontDestroyOnLoad(gameObject);
|
DontDestroyOnLoad(gameObject);
|
||||||
SceneManager.sceneLoaded += OnSceneLoaded;
|
SceneManager.sceneLoaded += OnSceneLoaded;
|
||||||
} else {
|
} else {
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
GetComponent<AudioSource>().volume = BazookaManager.Instance.GetSettingMusicVolume();
|
GetComponent<AudioSource>().volume = BazookaManager.Instance.GetSettingMusicVolume();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
|
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
|
||||||
if (scene.name == "GamePlayer" || scene.name == "CustomGamePlayer" || scene.name == "AutoGamePlayer" || scene.name == "MultiplayerGamePlayer") {
|
if (scene.name == "GamePlayer" || scene.name == "CustomGamePlayer" || scene.name == "AutoGamePlayer" || scene.name == "MultiplayerGamePlayer") {
|
||||||
SceneManager.sceneLoaded -= OnSceneLoaded;
|
SceneManager.sceneLoaded -= OnSceneLoaded;
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -3,71 +3,71 @@ using UnityEngine.EventSystems;
|
|||||||
using UnityEngine.InputSystem;
|
using UnityEngine.InputSystem;
|
||||||
|
|
||||||
public class BouncyButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler {
|
public class BouncyButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler {
|
||||||
private bool isHovered = false;
|
private bool isHovered = false;
|
||||||
private bool isHeld = false;
|
private bool isHeld = false;
|
||||||
private bool didBounce = false;
|
private bool didBounce = false;
|
||||||
private Vector3 originalScale;
|
private Vector3 originalScale;
|
||||||
private Vector3 finalScale;
|
private Vector3 finalScale;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
originalScale = transform.localScale;
|
originalScale = transform.localScale;
|
||||||
finalScale = originalScale * 1.1f;
|
finalScale = originalScale * 1.1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerEnter(PointerEventData eventData) => isHovered = true;
|
||||||
|
public void OnPointerExit(PointerEventData eventData) {
|
||||||
|
isHovered = false;
|
||||||
|
ResetScale();
|
||||||
|
}
|
||||||
|
void OnDisable() {
|
||||||
|
isHovered = false;
|
||||||
|
ResetScale();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update() {
|
||||||
|
if (Application.isMobilePlatform) {
|
||||||
|
isHeld = Touchscreen.current != null && Touchscreen.current.press.isPressed;
|
||||||
|
} else {
|
||||||
|
isHeld = Mouse.current != null && Mouse.current.leftButton.isPressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnPointerEnter(PointerEventData eventData) => isHovered = true;
|
if (isHovered && isHeld && !didBounce) {
|
||||||
public void OnPointerExit(PointerEventData eventData) {
|
StartCoroutine(BounceOnce());
|
||||||
isHovered = false;
|
didBounce = true;
|
||||||
ResetScale();
|
|
||||||
}
|
|
||||||
void OnDisable() {
|
|
||||||
isHovered = false;
|
|
||||||
ResetScale();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update() {
|
if ((!isHovered || !isHeld) && didBounce) {
|
||||||
if (Application.isMobilePlatform) {
|
ResetScale();
|
||||||
isHeld = Touchscreen.current != null && Touchscreen.current.press.isPressed;
|
|
||||||
} else {
|
|
||||||
isHeld = Mouse.current != null && Mouse.current.leftButton.isPressed;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isHovered && isHeld && !didBounce) {
|
|
||||||
StartCoroutine(BounceOnce());
|
|
||||||
didBounce = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!isHovered || !isHeld) && didBounce) {
|
|
||||||
ResetScale();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ResetScale() {
|
void ResetScale() {
|
||||||
StopAllCoroutines();
|
StopAllCoroutines();
|
||||||
transform.localScale = originalScale;
|
transform.localScale = originalScale;
|
||||||
didBounce = false;
|
didBounce = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.Collections.IEnumerator BounceOnce() {
|
System.Collections.IEnumerator BounceOnce() {
|
||||||
float t = 0.125f;
|
float t = 0.125f;
|
||||||
Vector3 s1 = originalScale * 1.12f;
|
Vector3 s1 = originalScale * 1.12f;
|
||||||
Vector3 s2 = originalScale * 1.06f;
|
Vector3 s2 = originalScale * 1.06f;
|
||||||
Vector3 s3 = finalScale;
|
Vector3 s3 = finalScale;
|
||||||
|
|
||||||
yield return LerpScale(originalScale, s1, t);
|
yield return LerpScale(originalScale, s1, t);
|
||||||
yield return LerpScale(s1, s2, t * 0.5f);
|
yield return LerpScale(s1, s2, t * 0.5f);
|
||||||
yield return LerpScale(s2, s3, t * 0.5f);
|
yield return LerpScale(s2, s3, t * 0.5f);
|
||||||
|
|
||||||
transform.localScale = s3;
|
transform.localScale = s3;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.Collections.IEnumerator LerpScale(Vector3 from, Vector3 to, float duration) {
|
System.Collections.IEnumerator LerpScale(Vector3 from, Vector3 to, float duration) {
|
||||||
float elapsed = 0f;
|
float elapsed = 0f;
|
||||||
while (elapsed < duration) {
|
while (elapsed < duration) {
|
||||||
elapsed += Time.deltaTime;
|
elapsed += Time.deltaTime;
|
||||||
float p = elapsed / duration;
|
float p = elapsed / duration;
|
||||||
transform.localScale = Vector3.Lerp(from, to, p);
|
transform.localScale = Vector3.Lerp(from, to, p);
|
||||||
yield return null;
|
yield return null;
|
||||||
}
|
|
||||||
transform.localScale = to;
|
|
||||||
}
|
}
|
||||||
|
transform.localScale = to;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class BouncyPanel : MonoBehaviour {
|
public class BouncyPanel : MonoBehaviour {
|
||||||
public float frequency = 8f;
|
public float frequency = 8f;
|
||||||
public float minSize = 1f;
|
public float minSize = 1f;
|
||||||
public float maxSize = 1.1f;
|
public float maxSize = 1.1f;
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
float newsize = (Mathf.Sin(Time.time * frequency) + 1f) / 2f;
|
float newsize = (Mathf.Sin(Time.time * frequency) + 1f) / 2f;
|
||||||
var size = Mathf.Lerp(minSize, maxSize, newsize);
|
var size = Mathf.Lerp(minSize, maxSize, newsize);
|
||||||
gameObject.transform.localScale = new(size, size, size);
|
gameObject.transform.localScale = new(size, size, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,24 +3,24 @@ using UnityEngine;
|
|||||||
|
|
||||||
[RequireComponent(typeof(TextMeshProUGUI))]
|
[RequireComponent(typeof(TextMeshProUGUI))]
|
||||||
public class BouncyText : MonoBehaviour {
|
public class BouncyText : MonoBehaviour {
|
||||||
public float frequency = 2f;
|
public float frequency = 2f;
|
||||||
public float minSize = 10f;
|
public float minSize = 10f;
|
||||||
public float maxSize = 12f;
|
public float maxSize = 12f;
|
||||||
public bool add;
|
public bool add;
|
||||||
private TextMeshProUGUI text;
|
private TextMeshProUGUI text;
|
||||||
private float startSize = 0;
|
private float startSize = 0;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
text = GetComponent<TextMeshProUGUI>();
|
text = GetComponent<TextMeshProUGUI>();
|
||||||
if (add) {
|
if (add) {
|
||||||
text.ForceMeshUpdate();
|
text.ForceMeshUpdate();
|
||||||
startSize = text.fontSize;
|
startSize = text.fontSize;
|
||||||
text.enableAutoSizing = false;
|
text.enableAutoSizing = false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
float newsize = (Mathf.Sin(Time.time * frequency) + 1f) / 2f;
|
float newsize = (Mathf.Sin(Time.time * frequency) + 1f) / 2f;
|
||||||
text.fontSize = Mathf.Lerp(add ? startSize : minSize, maxSize + (add ? startSize : 0), newsize);
|
text.fontSize = Mathf.Lerp(add ? startSize : minSize, maxSize + (add ? startSize : 0), newsize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,18 +2,18 @@ using TMPro;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class ImageColorSync : MonoBehaviour {
|
public class ImageColorSync : MonoBehaviour {
|
||||||
[SerializeField] private TMP_Text originalText;
|
[SerializeField] private TMP_Text originalText;
|
||||||
[SerializeField] private TMP_Text toSync;
|
[SerializeField] private TMP_Text toSync;
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
Color baseColor = originalText.color;
|
Color baseColor = originalText.color;
|
||||||
Color graphicColor = originalText.canvasRenderer.GetColor();
|
Color graphicColor = originalText.canvasRenderer.GetColor();
|
||||||
|
|
||||||
toSync.color = new Color(
|
toSync.color = new Color(
|
||||||
baseColor.r * graphicColor.r,
|
baseColor.r * graphicColor.r,
|
||||||
baseColor.g * graphicColor.g,
|
baseColor.g * graphicColor.g,
|
||||||
baseColor.b * graphicColor.b,
|
baseColor.b * graphicColor.b,
|
||||||
baseColor.a * graphicColor.a
|
baseColor.a * graphicColor.a
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,11 +3,11 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class ButtonToScene : MonoBehaviour {
|
public class ButtonToScene : MonoBehaviour {
|
||||||
[SerializeField] private string sceneName;
|
[SerializeField] private string sceneName;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
gameObject.GetComponent<Button>().onClick.AddListener(async () => {
|
gameObject.GetComponent<Button>().onClick.AddListener(async () => {
|
||||||
await SceneManager.LoadSceneAsync(sceneName);
|
await SceneManager.LoadSceneAsync(sceneName);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,11 +2,11 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class ButtonToURL : MonoBehaviour {
|
public class ButtonToURL : MonoBehaviour {
|
||||||
[SerializeField] private string url;
|
[SerializeField] private string url;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
gameObject.GetComponent<Button>().onClick.AddListener(() => {
|
gameObject.GetComponent<Button>().onClick.AddListener(() => {
|
||||||
Application.OpenURL(url);
|
Application.OpenURL(url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,94 +5,94 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class ColorPanel : MonoBehaviour {
|
public class ColorPanel : MonoBehaviour {
|
||||||
public Slider rSlider;
|
public Slider rSlider;
|
||||||
public Slider gSlider;
|
public Slider gSlider;
|
||||||
public Slider bSlider;
|
public Slider bSlider;
|
||||||
public ColorPickerUI colorPickerUI;
|
public ColorPickerUI colorPickerUI;
|
||||||
public GameObject manualModeUI;
|
public GameObject manualModeUI;
|
||||||
public TMP_InputField hexValue;
|
public TMP_InputField hexValue;
|
||||||
public Image previewImage;
|
public Image previewImage;
|
||||||
public Button resetButton;
|
public Button resetButton;
|
||||||
public Button switchModeButton;
|
public Button switchModeButton;
|
||||||
public event Action<JArray> OnColorChanged;
|
public event Action<JArray> OnColorChanged;
|
||||||
public Color defaultColor;
|
public Color defaultColor;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
hexValue.onSelect.AddListener((_) => hexValue.caretPosition = hexValue.text.Length);
|
hexValue.onSelect.AddListener((_) => hexValue.caretPosition = hexValue.text.Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Init(Color color, Color defaultColorArg) {
|
public void Init(Color color, Color defaultColorArg) {
|
||||||
defaultColor = defaultColorArg;
|
defaultColor = defaultColorArg;
|
||||||
rSlider.value = color.r * 255f;
|
rSlider.value = color.r * 255f;
|
||||||
gSlider.value = color.g * 255f;
|
gSlider.value = color.g * 255f;
|
||||||
bSlider.value = color.b * 255f;
|
bSlider.value = color.b * 255f;
|
||||||
|
|
||||||
SyncAll();
|
SyncAll();
|
||||||
|
|
||||||
rSlider.onValueChanged.AddListener(_ => SyncAll());
|
rSlider.onValueChanged.AddListener(_ => SyncAll());
|
||||||
gSlider.onValueChanged.AddListener(_ => SyncAll());
|
gSlider.onValueChanged.AddListener(_ => SyncAll());
|
||||||
bSlider.onValueChanged.AddListener(_ => SyncAll());
|
bSlider.onValueChanged.AddListener(_ => SyncAll());
|
||||||
|
|
||||||
hexValue.onValueChanged.AddListener(value => {
|
hexValue.onValueChanged.AddListener(value => {
|
||||||
var hex = value.StartsWith("#") ? value : "#" + value;
|
var hex = value.StartsWith("#") ? value : "#" + value;
|
||||||
if (hex.Length == 7 && ColorUtility.TryParseHtmlString(hex, out var col)) {
|
if (hex.Length == 7 && ColorUtility.TryParseHtmlString(hex, out var col)) {
|
||||||
rSlider.SetValueWithoutNotify(col.r * 255f);
|
|
||||||
gSlider.SetValueWithoutNotify(col.g * 255f);
|
|
||||||
bSlider.SetValueWithoutNotify(col.b * 255f);
|
|
||||||
SyncAll();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
resetButton.onClick.AddListener(() => {
|
|
||||||
rSlider.value = defaultColor.r * 255f;
|
|
||||||
gSlider.value = defaultColor.g * 255f;
|
|
||||||
bSlider.value = defaultColor.b * 255f;
|
|
||||||
});
|
|
||||||
|
|
||||||
switchModeButton.onClick.AddListener(() => {
|
|
||||||
bool enableManual = !manualModeUI.activeSelf;
|
|
||||||
manualModeUI.SetActive(enableManual);
|
|
||||||
colorPickerUI.gameObject.SetActive(!enableManual);
|
|
||||||
});
|
|
||||||
|
|
||||||
colorPickerUI.OnColorChanged += color => {
|
|
||||||
rSlider.SetValueWithoutNotify(color.r * 255);
|
|
||||||
gSlider.SetValueWithoutNotify(color.g * 255);
|
|
||||||
bSlider.SetValueWithoutNotify(color.b * 255);
|
|
||||||
SyncAll(fromPicker: true);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Init(JArray color, Color defaultColorArg) {
|
|
||||||
|
|
||||||
Init(new Color((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f), defaultColorArg);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SyncAll(bool fromPicker = false) {
|
|
||||||
var col = new Color(rSlider.value / 255f, gSlider.value / 255f, bSlider.value / 255f);
|
|
||||||
|
|
||||||
if (!fromPicker) colorPickerUI.SetSelectedColor(rSlider.value, gSlider.value, bSlider.value);
|
|
||||||
|
|
||||||
if (previewImage != null) previewImage.color = col;
|
|
||||||
hexValue.SetTextWithoutNotify("#" + ColorUtility.ToHtmlStringRGB(col));
|
|
||||||
OnColorChanged?.Invoke(new JArray(
|
|
||||||
(int)rSlider.value,
|
|
||||||
(int)gSlider.value,
|
|
||||||
(int)bSlider.value
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetColor(Color col) {
|
|
||||||
rSlider.SetValueWithoutNotify(col.r * 255f);
|
rSlider.SetValueWithoutNotify(col.r * 255f);
|
||||||
gSlider.SetValueWithoutNotify(col.g * 255f);
|
gSlider.SetValueWithoutNotify(col.g * 255f);
|
||||||
bSlider.SetValueWithoutNotify(col.b * 255f);
|
bSlider.SetValueWithoutNotify(col.b * 255f);
|
||||||
SyncAll();
|
SyncAll();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
public void SetColor(JArray color) {
|
resetButton.onClick.AddListener(() => {
|
||||||
rSlider.SetValueWithoutNotify((int)color[0]);
|
rSlider.value = defaultColor.r * 255f;
|
||||||
gSlider.SetValueWithoutNotify((int)color[1]);
|
gSlider.value = defaultColor.g * 255f;
|
||||||
bSlider.SetValueWithoutNotify((int)color[2]);
|
bSlider.value = defaultColor.b * 255f;
|
||||||
SyncAll();
|
});
|
||||||
}
|
|
||||||
|
switchModeButton.onClick.AddListener(() => {
|
||||||
|
bool enableManual = !manualModeUI.activeSelf;
|
||||||
|
manualModeUI.SetActive(enableManual);
|
||||||
|
colorPickerUI.gameObject.SetActive(!enableManual);
|
||||||
|
});
|
||||||
|
|
||||||
|
colorPickerUI.OnColorChanged += color => {
|
||||||
|
rSlider.SetValueWithoutNotify(color.r * 255);
|
||||||
|
gSlider.SetValueWithoutNotify(color.g * 255);
|
||||||
|
bSlider.SetValueWithoutNotify(color.b * 255);
|
||||||
|
SyncAll(fromPicker: true);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Init(JArray color, Color defaultColorArg) {
|
||||||
|
|
||||||
|
Init(new Color((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f), defaultColorArg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SyncAll(bool fromPicker = false) {
|
||||||
|
var col = new Color(rSlider.value / 255f, gSlider.value / 255f, bSlider.value / 255f);
|
||||||
|
|
||||||
|
if (!fromPicker) colorPickerUI.SetSelectedColor(rSlider.value, gSlider.value, bSlider.value);
|
||||||
|
|
||||||
|
if (previewImage != null) previewImage.color = col;
|
||||||
|
hexValue.SetTextWithoutNotify("#" + ColorUtility.ToHtmlStringRGB(col));
|
||||||
|
OnColorChanged?.Invoke(new JArray(
|
||||||
|
(int)rSlider.value,
|
||||||
|
(int)gSlider.value,
|
||||||
|
(int)bSlider.value
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetColor(Color col) {
|
||||||
|
rSlider.SetValueWithoutNotify(col.r * 255f);
|
||||||
|
gSlider.SetValueWithoutNotify(col.g * 255f);
|
||||||
|
bSlider.SetValueWithoutNotify(col.b * 255f);
|
||||||
|
SyncAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetColor(JArray color) {
|
||||||
|
rSlider.SetValueWithoutNotify((int)color[0]);
|
||||||
|
gSlider.SetValueWithoutNotify((int)color[1]);
|
||||||
|
bSlider.SetValueWithoutNotify((int)color[2]);
|
||||||
|
SyncAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,165 +4,165 @@ using UnityEngine.InputSystem;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class ColorPickerUI : MonoBehaviour {
|
public class ColorPickerUI : MonoBehaviour {
|
||||||
public RawImage hueImage;
|
public RawImage hueImage;
|
||||||
public RawImage svImage;
|
public RawImage svImage;
|
||||||
public RectTransform svCursor;
|
public RectTransform svCursor;
|
||||||
public RectTransform hueCursor;
|
public RectTransform hueCursor;
|
||||||
public event Action<Color> OnColorChanged;
|
public event Action<Color> OnColorChanged;
|
||||||
|
|
||||||
private Texture2D hueTexture;
|
private Texture2D hueTexture;
|
||||||
private Texture2D svTexture;
|
private Texture2D svTexture;
|
||||||
|
|
||||||
private const int hueHeight = 256;
|
private const int hueHeight = 256;
|
||||||
private const int svSize = 256;
|
private const int svSize = 256;
|
||||||
|
|
||||||
private float selectedHue = 0f;
|
private float selectedHue = 0f;
|
||||||
private float selectedS = 1f;
|
private float selectedS = 1f;
|
||||||
private float selectedV = 1f;
|
private float selectedV = 1f;
|
||||||
|
|
||||||
private enum DragTarget { None, Hue, SV }
|
private enum DragTarget { None, Hue, SV }
|
||||||
private DragTarget currentDrag = DragTarget.None;
|
private DragTarget currentDrag = DragTarget.None;
|
||||||
|
|
||||||
private Color lastColor;
|
private Color lastColor;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
GenerateHueBar();
|
GenerateHueBar();
|
||||||
|
GenerateSVBox(selectedHue);
|
||||||
|
UpdateSVCursor();
|
||||||
|
UpdateHueCursor();
|
||||||
|
lastColor = GetSelectedColor();
|
||||||
|
OnColorChanged?.Invoke(lastColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update() {
|
||||||
|
if (Pointer.current == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bool pressed = Pointer.current.press.isPressed;
|
||||||
|
Vector2 mousePos = Pointer.current.position.ReadValue();
|
||||||
|
|
||||||
|
if (pressed && currentDrag == DragTarget.None) {
|
||||||
|
if (RectTransformUtility.RectangleContainsScreenPoint(hueImage.rectTransform, mousePos, null))
|
||||||
|
currentDrag = DragTarget.Hue;
|
||||||
|
else if (RectTransformUtility.RectangleContainsScreenPoint(svImage.rectTransform, mousePos, null))
|
||||||
|
currentDrag = DragTarget.SV;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pressed) {
|
||||||
|
currentDrag = DragTarget.None;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool colorChanged = false;
|
||||||
|
|
||||||
|
if (currentDrag == DragTarget.Hue) {
|
||||||
|
RectTransformUtility.ScreenPointToLocalPointInRectangle(hueImage.rectTransform, mousePos, null, out Vector2 localPoint);
|
||||||
|
float y = Mathf.Clamp01((localPoint.y + hueImage.rectTransform.rect.height / 2f) / hueImage.rectTransform.rect.height);
|
||||||
|
float newHue = 1f - y;
|
||||||
|
if (!Mathf.Approximately(newHue, selectedHue)) {
|
||||||
|
selectedHue = newHue;
|
||||||
GenerateSVBox(selectedHue);
|
GenerateSVBox(selectedHue);
|
||||||
UpdateSVCursor();
|
UpdateSVCursor();
|
||||||
UpdateHueCursor();
|
UpdateHueCursor();
|
||||||
lastColor = GetSelectedColor();
|
colorChanged = true;
|
||||||
OnColorChanged?.Invoke(lastColor);
|
}
|
||||||
}
|
} else if (currentDrag == DragTarget.SV) {
|
||||||
|
RectTransformUtility.ScreenPointToLocalPointInRectangle(svImage.rectTransform, mousePos, null, out Vector2 localPoint);
|
||||||
void Update() {
|
float rectWidth = svImage.rectTransform.rect.width;
|
||||||
if (Pointer.current == null)
|
float rectHeight = svImage.rectTransform.rect.height;
|
||||||
return;
|
float x = (localPoint.x + rectWidth / 2f) / rectWidth;
|
||||||
|
float y = (localPoint.y + rectHeight / 2f) / rectHeight;
|
||||||
bool pressed = Pointer.current.press.isPressed;
|
float newS = Mathf.Clamp01(x);
|
||||||
Vector2 mousePos = Pointer.current.position.ReadValue();
|
float newV = Mathf.Clamp01(y);
|
||||||
|
if (!Mathf.Approximately(newS, selectedS) || !Mathf.Approximately(newV, selectedV)) {
|
||||||
if (pressed && currentDrag == DragTarget.None) {
|
selectedS = newS;
|
||||||
if (RectTransformUtility.RectangleContainsScreenPoint(hueImage.rectTransform, mousePos, null))
|
selectedV = newV;
|
||||||
currentDrag = DragTarget.Hue;
|
|
||||||
else if (RectTransformUtility.RectangleContainsScreenPoint(svImage.rectTransform, mousePos, null))
|
|
||||||
currentDrag = DragTarget.SV;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pressed) {
|
|
||||||
currentDrag = DragTarget.None;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool colorChanged = false;
|
|
||||||
|
|
||||||
if (currentDrag == DragTarget.Hue) {
|
|
||||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(hueImage.rectTransform, mousePos, null, out Vector2 localPoint);
|
|
||||||
float y = Mathf.Clamp01((localPoint.y + hueImage.rectTransform.rect.height / 2f) / hueImage.rectTransform.rect.height);
|
|
||||||
float newHue = 1f - y;
|
|
||||||
if (!Mathf.Approximately(newHue, selectedHue)) {
|
|
||||||
selectedHue = newHue;
|
|
||||||
GenerateSVBox(selectedHue);
|
|
||||||
UpdateSVCursor();
|
|
||||||
UpdateHueCursor();
|
|
||||||
colorChanged = true;
|
|
||||||
}
|
|
||||||
} else if (currentDrag == DragTarget.SV) {
|
|
||||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(svImage.rectTransform, mousePos, null, out Vector2 localPoint);
|
|
||||||
float rectWidth = svImage.rectTransform.rect.width;
|
|
||||||
float rectHeight = svImage.rectTransform.rect.height;
|
|
||||||
float x = (localPoint.x + rectWidth / 2f) / rectWidth;
|
|
||||||
float y = (localPoint.y + rectHeight / 2f) / rectHeight;
|
|
||||||
float newS = Mathf.Clamp01(x);
|
|
||||||
float newV = Mathf.Clamp01(y);
|
|
||||||
if (!Mathf.Approximately(newS, selectedS) || !Mathf.Approximately(newV, selectedV)) {
|
|
||||||
selectedS = newS;
|
|
||||||
selectedV = newV;
|
|
||||||
UpdateSVCursor();
|
|
||||||
colorChanged = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (colorChanged) {
|
|
||||||
Color currentColor = GetSelectedColor();
|
|
||||||
if (currentColor != lastColor) {
|
|
||||||
lastColor = currentColor;
|
|
||||||
OnColorChanged?.Invoke(currentColor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateSVCursor() {
|
|
||||||
if (svCursor == null) return;
|
|
||||||
Rect rect = svImage.rectTransform.rect;
|
|
||||||
float x = selectedS * rect.width;
|
|
||||||
float y = selectedV * rect.height;
|
|
||||||
x = Mathf.Clamp(x, 0, rect.width);
|
|
||||||
y = Mathf.Clamp(y, 0, rect.height);
|
|
||||||
Vector2 clampedPos = new Vector2(x - rect.width / 2f, y - rect.height / 2f);
|
|
||||||
svCursor.anchoredPosition = clampedPos;
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateHueCursor() {
|
|
||||||
if (hueCursor == null) return;
|
|
||||||
Rect rect = hueImage.rectTransform.rect;
|
|
||||||
float y = (1f - selectedHue) * rect.height;
|
|
||||||
y = Mathf.Clamp(y, 0, rect.height);
|
|
||||||
Vector2 pos = new Vector2(0, y - rect.height / 2f);
|
|
||||||
hueCursor.anchoredPosition = pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GenerateHueBar() {
|
|
||||||
hueTexture = new Texture2D(1, hueHeight);
|
|
||||||
hueTexture.wrapMode = TextureWrapMode.Clamp;
|
|
||||||
for (int y = 0; y < hueHeight; y++) {
|
|
||||||
float h = 1f - (float)y / (hueHeight - 1);
|
|
||||||
Color color = Color.HSVToRGB(h, 1f, 1f);
|
|
||||||
hueTexture.SetPixel(0, y, color);
|
|
||||||
}
|
|
||||||
hueTexture.Apply();
|
|
||||||
hueImage.texture = hueTexture;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GenerateSVBox(float hue) {
|
|
||||||
svTexture = new Texture2D(svSize, svSize);
|
|
||||||
svTexture.wrapMode = TextureWrapMode.Clamp;
|
|
||||||
for (int y = 0; y < svSize; y++) {
|
|
||||||
float v = (float)y / (svSize - 1);
|
|
||||||
for (int x = 0; x < svSize; x++) {
|
|
||||||
float s = (float)x / (svSize - 1);
|
|
||||||
Color color = Color.HSVToRGB(hue, s, v);
|
|
||||||
svTexture.SetPixel(x, y, color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
svTexture.Apply();
|
|
||||||
svImage.texture = svTexture;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color GetSelectedColor() {
|
|
||||||
return Color.HSVToRGB(selectedHue, selectedS, selectedV);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetSelectedColor(float r, float g, float b) {
|
|
||||||
Color32 color = new((byte)r, (byte)g, (byte)b, 255);
|
|
||||||
|
|
||||||
if (color.r == 0 && color.g == 0 && color.b == 0) {
|
|
||||||
selectedS = 0;
|
|
||||||
selectedV = 0;
|
|
||||||
} else {
|
|
||||||
Color.RGBToHSV(color, out float h, out float s, out float v);
|
|
||||||
selectedHue = h;
|
|
||||||
selectedS = s;
|
|
||||||
selectedV = v;
|
|
||||||
}
|
|
||||||
|
|
||||||
GenerateSVBox(selectedHue);
|
|
||||||
UpdateSVCursor();
|
UpdateSVCursor();
|
||||||
UpdateHueCursor();
|
colorChanged = true;
|
||||||
|
}
|
||||||
var current = GetSelectedColor();
|
|
||||||
if (current != lastColor) {
|
|
||||||
lastColor = current;
|
|
||||||
OnColorChanged?.Invoke(current);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (colorChanged) {
|
||||||
|
Color currentColor = GetSelectedColor();
|
||||||
|
if (currentColor != lastColor) {
|
||||||
|
lastColor = currentColor;
|
||||||
|
OnColorChanged?.Invoke(currentColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateSVCursor() {
|
||||||
|
if (svCursor == null) return;
|
||||||
|
Rect rect = svImage.rectTransform.rect;
|
||||||
|
float x = selectedS * rect.width;
|
||||||
|
float y = selectedV * rect.height;
|
||||||
|
x = Mathf.Clamp(x, 0, rect.width);
|
||||||
|
y = Mathf.Clamp(y, 0, rect.height);
|
||||||
|
Vector2 clampedPos = new Vector2(x - rect.width / 2f, y - rect.height / 2f);
|
||||||
|
svCursor.anchoredPosition = clampedPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateHueCursor() {
|
||||||
|
if (hueCursor == null) return;
|
||||||
|
Rect rect = hueImage.rectTransform.rect;
|
||||||
|
float y = (1f - selectedHue) * rect.height;
|
||||||
|
y = Mathf.Clamp(y, 0, rect.height);
|
||||||
|
Vector2 pos = new Vector2(0, y - rect.height / 2f);
|
||||||
|
hueCursor.anchoredPosition = pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GenerateHueBar() {
|
||||||
|
hueTexture = new Texture2D(1, hueHeight);
|
||||||
|
hueTexture.wrapMode = TextureWrapMode.Clamp;
|
||||||
|
for (int y = 0; y < hueHeight; y++) {
|
||||||
|
float h = 1f - (float)y / (hueHeight - 1);
|
||||||
|
Color color = Color.HSVToRGB(h, 1f, 1f);
|
||||||
|
hueTexture.SetPixel(0, y, color);
|
||||||
|
}
|
||||||
|
hueTexture.Apply();
|
||||||
|
hueImage.texture = hueTexture;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GenerateSVBox(float hue) {
|
||||||
|
svTexture = new Texture2D(svSize, svSize);
|
||||||
|
svTexture.wrapMode = TextureWrapMode.Clamp;
|
||||||
|
for (int y = 0; y < svSize; y++) {
|
||||||
|
float v = (float)y / (svSize - 1);
|
||||||
|
for (int x = 0; x < svSize; x++) {
|
||||||
|
float s = (float)x / (svSize - 1);
|
||||||
|
Color color = Color.HSVToRGB(hue, s, v);
|
||||||
|
svTexture.SetPixel(x, y, color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
svTexture.Apply();
|
||||||
|
svImage.texture = svTexture;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color GetSelectedColor() {
|
||||||
|
return Color.HSVToRGB(selectedHue, selectedS, selectedV);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetSelectedColor(float r, float g, float b) {
|
||||||
|
Color32 color = new((byte)r, (byte)g, (byte)b, 255);
|
||||||
|
|
||||||
|
if (color.r == 0 && color.g == 0 && color.b == 0) {
|
||||||
|
selectedS = 0;
|
||||||
|
selectedV = 0;
|
||||||
|
} else {
|
||||||
|
Color.RGBToHSV(color, out float h, out float s, out float v);
|
||||||
|
selectedHue = h;
|
||||||
|
selectedS = s;
|
||||||
|
selectedV = v;
|
||||||
|
}
|
||||||
|
|
||||||
|
GenerateSVBox(selectedHue);
|
||||||
|
UpdateSVCursor();
|
||||||
|
UpdateHueCursor();
|
||||||
|
|
||||||
|
var current = GetSelectedColor();
|
||||||
|
if (current != lastColor) {
|
||||||
|
lastColor = current;
|
||||||
|
OnColorChanged?.Invoke(current);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,147 +4,147 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class CustomColorObject : MonoBehaviour {
|
public class CustomColorObject : MonoBehaviour {
|
||||||
[SerializeField] private ColorObjectType type;
|
[SerializeField] private ColorObjectType type;
|
||||||
[SerializeField] private bool invert;
|
[SerializeField] private bool invert;
|
||||||
[SerializeField] private Color addMore;
|
[SerializeField] private Color addMore;
|
||||||
[SerializeField] private bool reverseAdd;
|
[SerializeField] private bool reverseAdd;
|
||||||
|
|
||||||
Color ApplyModifiers(Color baseColor) {
|
Color ApplyModifiers(Color baseColor) {
|
||||||
if (invert) baseColor = new(1f - baseColor.r, 1f - baseColor.g, 1f - baseColor.b);
|
if (invert) baseColor = new(1f - baseColor.r, 1f - baseColor.g, 1f - baseColor.b);
|
||||||
|
|
||||||
if (reverseAdd) {
|
if (reverseAdd) {
|
||||||
baseColor.r = Mathf.Clamp01(baseColor.r - addMore.r);
|
baseColor.r = Mathf.Clamp01(baseColor.r - addMore.r);
|
||||||
baseColor.g = Mathf.Clamp01(baseColor.g - addMore.g);
|
baseColor.g = Mathf.Clamp01(baseColor.g - addMore.g);
|
||||||
baseColor.b = Mathf.Clamp01(baseColor.b - addMore.b);
|
baseColor.b = Mathf.Clamp01(baseColor.b - addMore.b);
|
||||||
} else {
|
} else {
|
||||||
baseColor.r = Mathf.Clamp01(baseColor.r + addMore.r);
|
baseColor.r = Mathf.Clamp01(baseColor.r + addMore.r);
|
||||||
baseColor.g = Mathf.Clamp01(baseColor.g + addMore.g);
|
baseColor.g = Mathf.Clamp01(baseColor.g + addMore.g);
|
||||||
baseColor.b = Mathf.Clamp01(baseColor.b + addMore.b);
|
baseColor.b = Mathf.Clamp01(baseColor.b + addMore.b);
|
||||||
}
|
|
||||||
|
|
||||||
return baseColor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetColor() {
|
return baseColor;
|
||||||
JArray color = null;
|
}
|
||||||
Color colorType = Color.white;
|
|
||||||
Color currentColor = Color.white;
|
|
||||||
|
|
||||||
switch (type) {
|
public void SetColor() {
|
||||||
case ColorObjectType.InGameBackgroundColor:
|
JArray color = null;
|
||||||
color = BazookaManager.Instance.GetColorSettingBackground();
|
Color colorType = Color.white;
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
Color currentColor = Color.white;
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
var obj = gameObject.GetComponent<Camera>();
|
|
||||||
currentColor = obj.backgroundColor;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj.backgroundColor = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.MenuBackgroundColor:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
obj = gameObject.GetComponent<Camera>();
|
|
||||||
currentColor = obj.backgroundColor;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj.backgroundColor = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.MenuBackgroundColorImage:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
var obj2 = gameObject.GetComponent<Image>();
|
|
||||||
currentColor = obj2.color;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj2.color = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.MenuBackgroundColorText:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
var obj3 = gameObject.GetComponent<TMP_Text>();
|
|
||||||
currentColor = obj3.color;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj3.color = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.ButtonColor:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingButton();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
obj2 = gameObject.GetComponent<Image>();
|
|
||||||
currentColor = obj2.color;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj2.color = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.ButtonColorText:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingButton();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
obj3 = gameObject.GetComponent<TMP_Text>();
|
|
||||||
currentColor = obj3.color;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj3.color = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.TextColor:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingText();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
obj3 = gameObject.GetComponent<TMP_Text>();
|
|
||||||
currentColor = obj3.color;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj3.color = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.TextColorImage:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingText();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
obj2 = gameObject.GetComponent<Image>();
|
|
||||||
currentColor = obj2.color;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj2.color = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.ButtonContentColorImage:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingButtonContent();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
obj2 = gameObject.GetComponent<Image>();
|
|
||||||
currentColor = obj2.color;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj2.color = currentColor;
|
|
||||||
break;
|
|
||||||
case ColorObjectType.ButtonContentColorText:
|
|
||||||
color = BazookaManager.Instance.GetColorSettingButtonContent();
|
|
||||||
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
|
||||||
colorType = ApplyModifiers(colorType);
|
|
||||||
obj3 = gameObject.GetComponent<TMP_Text>();
|
|
||||||
currentColor = obj3.color;
|
|
||||||
currentColor.r = colorType.r;
|
|
||||||
currentColor.g = colorType.g;
|
|
||||||
currentColor.b = colorType.b;
|
|
||||||
obj3.color = currentColor;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Start() {
|
switch (type) {
|
||||||
SetColor();
|
case ColorObjectType.InGameBackgroundColor:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingBackground();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
var obj = gameObject.GetComponent<Camera>();
|
||||||
|
currentColor = obj.backgroundColor;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj.backgroundColor = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.MenuBackgroundColor:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
obj = gameObject.GetComponent<Camera>();
|
||||||
|
currentColor = obj.backgroundColor;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj.backgroundColor = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.MenuBackgroundColorImage:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
var obj2 = gameObject.GetComponent<Image>();
|
||||||
|
currentColor = obj2.color;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj2.color = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.MenuBackgroundColorText:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingMenuBackground();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
var obj3 = gameObject.GetComponent<TMP_Text>();
|
||||||
|
currentColor = obj3.color;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj3.color = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.ButtonColor:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingButton();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
obj2 = gameObject.GetComponent<Image>();
|
||||||
|
currentColor = obj2.color;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj2.color = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.ButtonColorText:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingButton();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
obj3 = gameObject.GetComponent<TMP_Text>();
|
||||||
|
currentColor = obj3.color;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj3.color = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.TextColor:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingText();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
obj3 = gameObject.GetComponent<TMP_Text>();
|
||||||
|
currentColor = obj3.color;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj3.color = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.TextColorImage:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingText();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
obj2 = gameObject.GetComponent<Image>();
|
||||||
|
currentColor = obj2.color;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj2.color = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.ButtonContentColorImage:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingButtonContent();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
obj2 = gameObject.GetComponent<Image>();
|
||||||
|
currentColor = obj2.color;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj2.color = currentColor;
|
||||||
|
break;
|
||||||
|
case ColorObjectType.ButtonContentColorText:
|
||||||
|
color = BazookaManager.Instance.GetColorSettingButtonContent();
|
||||||
|
colorType = new((int)color[0] / 255f, (int)color[1] / 255f, (int)color[2] / 255f);
|
||||||
|
colorType = ApplyModifiers(colorType);
|
||||||
|
obj3 = gameObject.GetComponent<TMP_Text>();
|
||||||
|
currentColor = obj3.color;
|
||||||
|
currentColor.r = colorType.r;
|
||||||
|
currentColor.g = colorType.g;
|
||||||
|
currentColor.b = colorType.b;
|
||||||
|
obj3.color = currentColor;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Start() {
|
||||||
|
SetColor();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -6,39 +6,39 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class CustomIconLoader : MonoBehaviour {
|
public class CustomIconLoader : MonoBehaviour {
|
||||||
public static async void Init(WaitingForCustomIcon[] objects) {
|
public static async void Init(WaitingForCustomIcon[] objects) {
|
||||||
var iconsToDownload = new HashSet<string>();
|
var iconsToDownload = new HashSet<string>();
|
||||||
foreach (var obj in objects)
|
foreach (var obj in objects)
|
||||||
if (!BazookaManager.Instance.iconCache.Any(icon => icon.ID == obj.ID))
|
if (!BazookaManager.Instance.iconCache.Any(icon => icon.ID == obj.ID))
|
||||||
iconsToDownload.Add(obj.ID);
|
iconsToDownload.Add(obj.ID);
|
||||||
|
|
||||||
if (iconsToDownload.Count != 0) {
|
if (iconsToDownload.Count != 0) {
|
||||||
var ids = string.Join(",", iconsToDownload.Select(id => $"\"{id}\""));
|
var ids = string.Join(",", iconsToDownload.Select(id => $"\"{id}\""));
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ICON_MARKETPLACE_ICON_ENDPOINT + $"?ids=[{ids}]");
|
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ICON_MARKETPLACE_ICON_ENDPOINT + $"?ids=[{ids}]");
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
if (request.downloadHandler.text == null) {
|
if (request.downloadHandler.text == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
if ((bool)jsonResponse["success"]) {
|
if ((bool)jsonResponse["success"]) {
|
||||||
var icons = jsonResponse["data"].ToObject<MarketplaceIconWithData[]>();
|
var icons = jsonResponse["data"].ToObject<MarketplaceIconWithData[]>();
|
||||||
foreach (var icon in icons) BazookaManager.Instance.iconCache.Add(new MarketplaceIcon { ID = icon.ID, Data = icon.Data });
|
foreach (var icon in icons) BazookaManager.Instance.iconCache.Add(new MarketplaceIcon { ID = icon.ID, Data = icon.Data });
|
||||||
}
|
}
|
||||||
Debug.Log($"Downloaded {iconsToDownload.Count} custom icons");
|
Debug.Log($"Downloaded {iconsToDownload.Count} custom icons");
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var obj in objects) {
|
|
||||||
var cachedIcon = BazookaManager.Instance.iconCache.FirstOrDefault(icon => icon.ID == obj.ID);
|
|
||||||
if (cachedIcon != null) {
|
|
||||||
if (obj.TryGetComponent<Image>(out var image))
|
|
||||||
image.sprite = Tools.GetSpriteFromBase64(cachedIcon.Data);
|
|
||||||
else if (obj.TryGetComponent<SpriteRenderer>(out var spriteRenderer))
|
|
||||||
spriteRenderer.sprite = Tools.GetSpriteFromBase64(cachedIcon.Data);
|
|
||||||
}
|
|
||||||
Destroy(obj);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var obj in objects) {
|
||||||
|
var cachedIcon = BazookaManager.Instance.iconCache.FirstOrDefault(icon => icon.ID == obj.ID);
|
||||||
|
if (cachedIcon != null) {
|
||||||
|
if (obj.TryGetComponent<Image>(out var image))
|
||||||
|
image.sprite = Tools.GetSpriteFromBase64(cachedIcon.Data);
|
||||||
|
else if (obj.TryGetComponent<SpriteRenderer>(out var spriteRenderer))
|
||||||
|
spriteRenderer.sprite = Tools.GetSpriteFromBase64(cachedIcon.Data);
|
||||||
|
}
|
||||||
|
Destroy(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -2,69 +2,69 @@ using DiscordRPC;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class DiscordRPCHandler : MonoBehaviour {
|
public class DiscordRPCHandler : MonoBehaviour {
|
||||||
public static DiscordRPCHandler Instance;
|
public static DiscordRPCHandler Instance;
|
||||||
public DiscordRpcClient client;
|
public DiscordRpcClient client;
|
||||||
private readonly Timestamps timestamp = Timestamps.Now;
|
private readonly Timestamps timestamp = Timestamps.Now;
|
||||||
|
|
||||||
private bool isIdle = false;
|
private bool isIdle = false;
|
||||||
private string savedDetails;
|
private string savedDetails;
|
||||||
private string savedState;
|
private string savedState;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
if (Application.isMobilePlatform || Instance != null) {
|
if (Application.isMobilePlatform || Instance != null) {
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
Instance = this;
|
|
||||||
DontDestroyOnLoad(gameObject);
|
|
||||||
|
|
||||||
client = new DiscordRpcClient("1421877993176961155");
|
|
||||||
client.Initialize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnDestroy() {
|
Instance = this;
|
||||||
client?.Dispose();
|
DontDestroyOnLoad(gameObject);
|
||||||
|
|
||||||
|
client = new DiscordRpcClient("1421877993176961155");
|
||||||
|
client.Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDestroy() {
|
||||||
|
client?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnApplicationQuit() {
|
||||||
|
client?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnApplicationPause(bool pause) {
|
||||||
|
isIdle = pause;
|
||||||
|
if (pause) {
|
||||||
|
UpdateRPC("Idle", null, true);
|
||||||
|
} else {
|
||||||
|
UpdateRPC(savedDetails, savedState, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateRPC(string details, string state, bool force = false) {
|
||||||
|
if (!force && isIdle) {
|
||||||
|
savedDetails = details;
|
||||||
|
savedState = state;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnApplicationQuit() {
|
client.SetPresence(new RichPresence {
|
||||||
client?.Dispose();
|
Details = details,
|
||||||
}
|
State = state,
|
||||||
|
Assets = new Assets {
|
||||||
void OnApplicationPause(bool pause) {
|
LargeImageKey = "https://games-r2.lncvrt.xyz/icons/berry-dash.png",
|
||||||
isIdle = pause;
|
LargeImageText = "Berry Dash",
|
||||||
if (pause) {
|
SmallImageKey = "https://cdn.lncvrt.xyz/pfp.png",
|
||||||
UpdateRPC("Idle", null, true);
|
SmallImageText = "Made by Lncvrt!"
|
||||||
} else {
|
},
|
||||||
UpdateRPC(savedDetails, savedState, true);
|
Buttons = new[]
|
||||||
}
|
{
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateRPC(string details, string state, bool force = false) {
|
|
||||||
if (!force && isIdle) {
|
|
||||||
savedDetails = details;
|
|
||||||
savedState = state;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
client.SetPresence(new RichPresence {
|
|
||||||
Details = details,
|
|
||||||
State = state,
|
|
||||||
Assets = new Assets {
|
|
||||||
LargeImageKey = "https://games-r2.lncvrt.xyz/icons/berry-dash.png",
|
|
||||||
LargeImageText = "Berry Dash",
|
|
||||||
SmallImageKey = "https://cdn.lncvrt.xyz/pfp.png",
|
|
||||||
SmallImageText = "Made by Lncvrt!"
|
|
||||||
},
|
|
||||||
Buttons = new[]
|
|
||||||
{
|
|
||||||
new Button { Label = "Website / Download", Url = "https://games.lncvrt.xyz/game/berry-dash" },
|
new Button { Label = "Website / Download", Url = "https://games.lncvrt.xyz/game/berry-dash" },
|
||||||
new Button { Label = "Lncvrt Games", Url = "https://games.lncvrt.xyz" }
|
new Button { Label = "Lncvrt Games", Url = "https://games.lncvrt.xyz" }
|
||||||
},
|
},
|
||||||
Timestamps = timestamp
|
Timestamps = timestamp
|
||||||
});
|
});
|
||||||
|
|
||||||
savedDetails = details;
|
savedDetails = details;
|
||||||
savedState = state;
|
savedState = state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class DiscordRPCUpdater : MonoBehaviour {
|
public class DiscordRPCUpdater : MonoBehaviour {
|
||||||
public string details;
|
public string details;
|
||||||
public string state;
|
public string state;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC(details, state);
|
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC(details, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,92 +4,92 @@ using UnityEngine.EventSystems;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class DraggableUI : MonoBehaviour, IDragHandler, IBeginDragHandler {
|
public class DraggableUI : MonoBehaviour, IDragHandler, IBeginDragHandler {
|
||||||
public static DraggableUI Instance;
|
public static DraggableUI Instance;
|
||||||
private Vector2 offset;
|
private Vector2 offset;
|
||||||
[SerializeField] private string uiName;
|
[SerializeField] private string uiName;
|
||||||
public bool canDrag = false;
|
public bool canDrag = false;
|
||||||
|
|
||||||
private readonly List<GameObject> outlineSides = new();
|
private readonly List<GameObject> outlineSides = new();
|
||||||
|
|
||||||
void CreateOutline() {
|
void CreateOutline() {
|
||||||
var color = BazookaManager.Instance.GetColorSettingButton();
|
var color = BazookaManager.Instance.GetColorSettingButton();
|
||||||
Color borderColor = new(((float)color[0]) / 255f, ((float)color[1]) / 255f, ((float)color[2]) / 255f);
|
Color borderColor = new(((float)color[0]) / 255f, ((float)color[1]) / 255f, ((float)color[2]) / 255f);
|
||||||
float thickness = 2f;
|
float thickness = 2f;
|
||||||
|
|
||||||
CreateSide("Top", new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, thickness), borderColor);
|
CreateSide("Top", new Vector2(0, 1), new Vector2(1, 1), new Vector2(0, thickness), borderColor);
|
||||||
CreateSide("Bottom", new Vector2(0, 0), new Vector2(1, 0), new Vector2(0, thickness), borderColor);
|
CreateSide("Bottom", new Vector2(0, 0), new Vector2(1, 0), new Vector2(0, thickness), borderColor);
|
||||||
CreateSide("Left", new Vector2(0, 0), new Vector2(0, 1), new Vector2(thickness, 0), borderColor);
|
CreateSide("Left", new Vector2(0, 0), new Vector2(0, 1), new Vector2(thickness, 0), borderColor);
|
||||||
CreateSide("Right", new Vector2(1, 0), new Vector2(1, 1), new Vector2(thickness, 0), borderColor);
|
CreateSide("Right", new Vector2(1, 0), new Vector2(1, 1), new Vector2(thickness, 0), borderColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateSide(string name, Vector2 anchorMin, Vector2 anchorMax, Vector2 size, Color color) {
|
void CreateSide(string name, Vector2 anchorMin, Vector2 anchorMax, Vector2 size, Color color) {
|
||||||
var go = new GameObject(name, typeof(Image));
|
var go = new GameObject(name, typeof(Image));
|
||||||
go.transform.SetParent(transform, false);
|
go.transform.SetParent(transform, false);
|
||||||
var rt = go.GetComponent<RectTransform>();
|
var rt = go.GetComponent<RectTransform>();
|
||||||
var img = go.GetComponent<Image>();
|
var img = go.GetComponent<Image>();
|
||||||
img.color = color;
|
img.color = color;
|
||||||
img.raycastTarget = false;
|
img.raycastTarget = false;
|
||||||
|
|
||||||
rt.anchorMin = anchorMin;
|
rt.anchorMin = anchorMin;
|
||||||
rt.anchorMax = anchorMax;
|
rt.anchorMax = anchorMax;
|
||||||
rt.sizeDelta = size;
|
rt.sizeDelta = size;
|
||||||
rt.anchoredPosition = Vector2.zero;
|
rt.anchoredPosition = Vector2.zero;
|
||||||
|
|
||||||
outlineSides.Add(go);
|
outlineSides.Add(go);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
Instance = this;
|
Instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
CreateOutline();
|
CreateOutline();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnEnable() {
|
void OnEnable() {
|
||||||
string key = "DraggedUI" + uiName;
|
string key = "DraggedUI" + uiName;
|
||||||
if (PlayerPrefs.HasKey(key) && TryParseVector3(PlayerPrefs.GetString(key), out Vector3 savedPos)) transform.localPosition = savedPos;
|
if (PlayerPrefs.HasKey(key) && TryParseVector3(PlayerPrefs.GetString(key), out Vector3 savedPos)) transform.localPosition = savedPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
foreach (var side in outlineSides)
|
foreach (var side in outlineSides)
|
||||||
side.SetActive(canDrag);
|
side.SetActive(canDrag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnBeginDrag(PointerEventData eventData) {
|
public void OnBeginDrag(PointerEventData eventData) {
|
||||||
if (!canDrag) return;
|
if (!canDrag) return;
|
||||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(
|
RectTransformUtility.ScreenPointToLocalPointInRectangle(
|
||||||
(RectTransform)transform.parent,
|
(RectTransform)transform.parent,
|
||||||
eventData.position,
|
eventData.position,
|
||||||
eventData.pressEventCamera,
|
eventData.pressEventCamera,
|
||||||
out offset
|
out offset
|
||||||
);
|
);
|
||||||
offset = (Vector2)transform.localPosition - offset;
|
offset = (Vector2)transform.localPosition - offset;
|
||||||
PlayerPrefs.SetString("DraggedUI" + uiName, transform.localPosition.ToString());
|
PlayerPrefs.SetString("DraggedUI" + uiName, transform.localPosition.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnDrag(PointerEventData eventData) {
|
public void OnDrag(PointerEventData eventData) {
|
||||||
if (!canDrag) return;
|
if (!canDrag) return;
|
||||||
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(
|
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(
|
||||||
(RectTransform)transform.parent,
|
(RectTransform)transform.parent,
|
||||||
eventData.position,
|
eventData.position,
|
||||||
eventData.pressEventCamera,
|
eventData.pressEventCamera,
|
||||||
out Vector2 localPoint
|
out Vector2 localPoint
|
||||||
)) transform.localPosition = localPoint + offset;
|
)) transform.localPosition = localPoint + offset;
|
||||||
PlayerPrefs.SetString("DraggedUI" + uiName, transform.localPosition.ToString());
|
PlayerPrefs.SetString("DraggedUI" + uiName, transform.localPosition.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryParseVector3(string s, out Vector3 result) {
|
private bool TryParseVector3(string s, out Vector3 result) {
|
||||||
s = s.Trim('(', ')');
|
s = s.Trim('(', ')');
|
||||||
string[] parts = s.Split(',');
|
string[] parts = s.Split(',');
|
||||||
if (parts.Length == 3 &&
|
if (parts.Length == 3 &&
|
||||||
float.TryParse(parts[0], out float x) &&
|
float.TryParse(parts[0], out float x) &&
|
||||||
float.TryParse(parts[1], out float y) &&
|
float.TryParse(parts[1], out float y) &&
|
||||||
float.TryParse(parts[2], out float z)) {
|
float.TryParse(parts[2], out float z)) {
|
||||||
result = new Vector3(x, y, z);
|
result = new Vector3(x, y, z);
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
result = Vector3.zero;
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
result = Vector3.zero;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,29 +1,29 @@
|
|||||||
public class Endpoints {
|
public class Endpoints {
|
||||||
private const string HOST = "games.lncvrt.xyz";
|
private const string HOST = "games.lncvrt.xyz";
|
||||||
public const string BASE_URL = "https://" + HOST + "/api";
|
public const string BASE_URL = "https://" + HOST + "/api";
|
||||||
public const string BERRYDASH_ENDPOINT = BASE_URL + "/berrydash";
|
public const string BERRYDASH_ENDPOINT = BASE_URL + "/berrydash";
|
||||||
public const string WS_ENDPOINT = "wss://" + HOST + "/api/ws";
|
public const string WS_ENDPOINT = "wss://" + HOST + "/api/ws";
|
||||||
public const string CAN_LOAD_CLIENT_ENDPOINT = BASE_URL + "/can-load-client";
|
public const string CAN_LOAD_CLIENT_ENDPOINT = BASE_URL + "/can-load-client";
|
||||||
public const string LATEST_VERSION_ENDPOINT = BERRYDASH_ENDPOINT + "/latest-version";
|
public const string LATEST_VERSION_ENDPOINT = BERRYDASH_ENDPOINT + "/latest-version";
|
||||||
public const string RANDOM_SPLASHES_ENDPOINT = BERRYDASH_ENDPOINT + "/splash-text";
|
public const string RANDOM_SPLASHES_ENDPOINT = BERRYDASH_ENDPOINT + "/splash-text";
|
||||||
public const string LEADERBOARDS_ENDPOINT = BERRYDASH_ENDPOINT + "/leaderboards";
|
public const string LEADERBOARDS_ENDPOINT = BERRYDASH_ENDPOINT + "/leaderboards";
|
||||||
public const string LEADERBOARDS_SCORE_ENDPOINT = LEADERBOARDS_ENDPOINT + "/score";
|
public const string LEADERBOARDS_SCORE_ENDPOINT = LEADERBOARDS_ENDPOINT + "/score";
|
||||||
public const string LEADERBOARDS_BERRY_ENDPOINT = LEADERBOARDS_ENDPOINT + "/berry";
|
public const string LEADERBOARDS_BERRY_ENDPOINT = LEADERBOARDS_ENDPOINT + "/berry";
|
||||||
public const string LEADERBOARDS_COIN_ENDPOINT = LEADERBOARDS_ENDPOINT + "/coin";
|
public const string LEADERBOARDS_COIN_ENDPOINT = LEADERBOARDS_ENDPOINT + "/coin";
|
||||||
public const string LEADERBOARDS_LEGACY_ENDPOINT = LEADERBOARDS_ENDPOINT + "/legacy";
|
public const string LEADERBOARDS_LEGACY_ENDPOINT = LEADERBOARDS_ENDPOINT + "/legacy";
|
||||||
public const string LEADERBOARDS_TOTAL_ENDPOINT = LEADERBOARDS_ENDPOINT + "/total";
|
public const string LEADERBOARDS_TOTAL_ENDPOINT = LEADERBOARDS_ENDPOINT + "/total";
|
||||||
public const string PROFILE_POSTS_ENDPOINT = BERRYDASH_ENDPOINT + "/profile/posts";
|
public const string PROFILE_POSTS_ENDPOINT = BERRYDASH_ENDPOINT + "/profile/posts";
|
||||||
public const string ICON_MARKETPLACE_ENDPOINT = BERRYDASH_ENDPOINT + "/icon-marketplace";
|
public const string ICON_MARKETPLACE_ENDPOINT = BERRYDASH_ENDPOINT + "/icon-marketplace";
|
||||||
public const string ICON_MARKETPLACE_UPLOAD_ENDPOINT = ICON_MARKETPLACE_ENDPOINT + "/upload";
|
public const string ICON_MARKETPLACE_UPLOAD_ENDPOINT = ICON_MARKETPLACE_ENDPOINT + "/upload";
|
||||||
public const string ICON_MARKETPLACE_ICON_ENDPOINT = ICON_MARKETPLACE_ENDPOINT + "/icon";
|
public const string ICON_MARKETPLACE_ICON_ENDPOINT = ICON_MARKETPLACE_ENDPOINT + "/icon";
|
||||||
public const string BD_ACCOUNT_ENDPOINT = BERRYDASH_ENDPOINT + "/account";
|
public const string BD_ACCOUNT_ENDPOINT = BERRYDASH_ENDPOINT + "/account";
|
||||||
public const string LG_ACCOUNT_ENDPOINT = BASE_URL + "/account";
|
public const string LG_ACCOUNT_ENDPOINT = BASE_URL + "/account";
|
||||||
public const string ACCOUNT_LOGIN_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/login";
|
public const string ACCOUNT_LOGIN_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/login";
|
||||||
public const string ACCOUNT_REGISTER_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/register";
|
public const string ACCOUNT_REGISTER_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/register";
|
||||||
public const string ACCOUNT_SAVE_ENDPOINT = BD_ACCOUNT_ENDPOINT + "/save";
|
public const string ACCOUNT_SAVE_ENDPOINT = BD_ACCOUNT_ENDPOINT + "/save";
|
||||||
public const string ACCOUNT_CHANGE_USERNAME_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/change-username";
|
public const string ACCOUNT_CHANGE_USERNAME_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/change-username";
|
||||||
public const string ACCOUNT_CHANGE_PASSWORD_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/change-password";
|
public const string ACCOUNT_CHANGE_PASSWORD_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/change-password";
|
||||||
public const string ACCOUNT_FORGOT_USERNAME_ENDPOINT = BASE_URL + "/account/forgot-username";
|
public const string ACCOUNT_FORGOT_USERNAME_ENDPOINT = BASE_URL + "/account/forgot-username";
|
||||||
public const string ACCOUNT_FORGOT_PASSWORD_ENDPOINT = BASE_URL + "/account/forgot-password";
|
public const string ACCOUNT_FORGOT_PASSWORD_ENDPOINT = BASE_URL + "/account/forgot-password";
|
||||||
public const string CHATROOM_REPORT_MESSAGE_ENDPOINT = BERRYDASH_ENDPOINT + "/chatroom/report";
|
public const string CHATROOM_REPORT_MESSAGE_ENDPOINT = BERRYDASH_ENDPOINT + "/chatroom/report";
|
||||||
}
|
}
|
||||||
@@ -1,22 +1,22 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class HideIfSettingFalse : MonoBehaviour {
|
public class HideIfSettingFalse : MonoBehaviour {
|
||||||
[SerializeField] private SettingTypes setting;
|
[SerializeField] private SettingTypes setting;
|
||||||
[SerializeField] private bool reverse;
|
[SerializeField] private bool reverse;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
bool value = GetSettingValue(setting);
|
bool value = GetSettingValue(setting);
|
||||||
gameObject.SetActive(value == !reverse);
|
gameObject.SetActive(value == !reverse);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GetSettingValue(SettingTypes s) {
|
bool GetSettingValue(SettingTypes s) {
|
||||||
var b = BazookaManager.Instance;
|
var b = BazookaManager.Instance;
|
||||||
return s switch {
|
return s switch {
|
||||||
SettingTypes.FullScreen => b.GetSettingFullScreen(),
|
SettingTypes.FullScreen => b.GetSettingFullScreen(),
|
||||||
SettingTypes.ShowFPS => b.GetSettingShowFPS(),
|
SettingTypes.ShowFPS => b.GetSettingShowFPS(),
|
||||||
SettingTypes.Vsync => b.GetSettingVsync(),
|
SettingTypes.Vsync => b.GetSettingVsync(),
|
||||||
SettingTypes.HideSocials => b.GetSettingHideSocials() ?? false,
|
SettingTypes.HideSocials => b.GetSettingHideSocials() ?? false,
|
||||||
_ => false
|
_ => false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,13 +2,13 @@ using UnityEngine;
|
|||||||
using UnityEngine.EventSystems;
|
using UnityEngine.EventSystems;
|
||||||
|
|
||||||
public class HoldableButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler {
|
public class HoldableButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler {
|
||||||
public bool isPressed;
|
public bool isPressed;
|
||||||
|
|
||||||
public void OnPointerDown(PointerEventData eventData) {
|
public void OnPointerDown(PointerEventData eventData) {
|
||||||
isPressed = true;
|
isPressed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnPointerUp(PointerEventData eventData) {
|
public void OnPointerUp(PointerEventData eventData) {
|
||||||
isPressed = false;
|
isPressed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class IgnoreRaycast : MonoBehaviour, ICanvasRaycastFilter {
|
public class IgnoreRaycast : MonoBehaviour, ICanvasRaycastFilter {
|
||||||
public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera) => GetComponent<DraggableUI>() != null && GetComponent<DraggableUI>().canDrag;
|
public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera) => GetComponent<DraggableUI>() != null && GetComponent<DraggableUI>().canDrag;
|
||||||
}
|
}
|
||||||
@@ -1,26 +1,26 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class ObjectSpinner : MonoBehaviour {
|
public class ObjectSpinner : MonoBehaviour {
|
||||||
[SerializeField] private float frequency = 1f;
|
[SerializeField] private float frequency = 1f;
|
||||||
[SerializeField] private bool spinX = false;
|
[SerializeField] private bool spinX = false;
|
||||||
[SerializeField] private bool spinY = true;
|
[SerializeField] private bool spinY = true;
|
||||||
[SerializeField] private bool spinZ = false;
|
[SerializeField] private bool spinZ = false;
|
||||||
[SerializeField] private bool useLocalSpace = true;
|
[SerializeField] private bool useLocalSpace = true;
|
||||||
[SerializeField] private bool reverseDirection = false;
|
[SerializeField] private bool reverseDirection = false;
|
||||||
|
|
||||||
private float DegreesPerSecond => frequency * 360f;
|
private float DegreesPerSecond => frequency * 360f;
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
float direction = reverseDirection ? -1f : 1f;
|
float direction = reverseDirection ? -1f : 1f;
|
||||||
float delta = DegreesPerSecond * direction * Time.deltaTime;
|
float delta = DegreesPerSecond * direction * Time.deltaTime;
|
||||||
|
|
||||||
Vector3 rotationAxis = new(
|
Vector3 rotationAxis = new(
|
||||||
spinX ? delta : 0f,
|
spinX ? delta : 0f,
|
||||||
spinY ? delta : 0f,
|
spinY ? delta : 0f,
|
||||||
spinZ ? delta : 0f
|
spinZ ? delta : 0f
|
||||||
);
|
);
|
||||||
|
|
||||||
if (useLocalSpace) transform.Rotate(rotationAxis, Space.Self);
|
if (useLocalSpace) transform.Rotate(rotationAxis, Space.Self);
|
||||||
else transform.Rotate(rotationAxis, Space.World);
|
else transform.Rotate(rotationAxis, Space.World);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,32 +5,32 @@ using System.Text;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class OldSavefileEncryption {
|
public class OldSavefileEncryption {
|
||||||
public const string BAZOOKA_MANAGER_KEY = "5de0d5798d4eb751e13b668c1fc5297d";
|
public const string BAZOOKA_MANAGER_KEY = "5de0d5798d4eb751e13b668c1fc5297d";
|
||||||
public const string BAZOOKA_MANAGER_FILE_KEY = "e74af7ba21b8b4edd0e3f1d572d63c67";
|
public const string BAZOOKA_MANAGER_FILE_KEY = "e74af7ba21b8b4edd0e3f1d572d63c67";
|
||||||
|
|
||||||
public static string DecryptRaw(byte[] data) {
|
public static string DecryptRaw(byte[] data) {
|
||||||
if (BAZOOKA_MANAGER_KEY.Trim() == string.Empty) {
|
if (BAZOOKA_MANAGER_KEY.Trim() == string.Empty) {
|
||||||
Debug.LogError("Failed to decrypt: Encryption/Decryption keys not present");
|
Debug.LogError("Failed to decrypt: Encryption/Decryption keys not present");
|
||||||
return null;
|
return null;
|
||||||
}
|
|
||||||
try {
|
|
||||||
using Aes aes = Aes.Create();
|
|
||||||
aes.Key = Encoding.UTF8.GetBytes(BAZOOKA_MANAGER_KEY);
|
|
||||||
aes.Mode = CipherMode.CBC;
|
|
||||||
aes.Padding = PaddingMode.PKCS7;
|
|
||||||
|
|
||||||
byte[] iv = new byte[16];
|
|
||||||
Array.Copy(data, 0, iv, 0, iv.Length);
|
|
||||||
aes.IV = iv;
|
|
||||||
|
|
||||||
using MemoryStream ms = new(data, iv.Length, data.Length - iv.Length);
|
|
||||||
using var cryptoStream = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read);
|
|
||||||
using StreamReader reader = new(cryptoStream);
|
|
||||||
|
|
||||||
return reader.ReadToEnd();
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
using Aes aes = Aes.Create();
|
||||||
|
aes.Key = Encoding.UTF8.GetBytes(BAZOOKA_MANAGER_KEY);
|
||||||
|
aes.Mode = CipherMode.CBC;
|
||||||
|
aes.Padding = PaddingMode.PKCS7;
|
||||||
|
|
||||||
|
byte[] iv = new byte[16];
|
||||||
|
Array.Copy(data, 0, iv, 0, iv.Length);
|
||||||
|
aes.IV = iv;
|
||||||
|
|
||||||
|
using MemoryStream ms = new(data, iv.Length, data.Length - iv.Length);
|
||||||
|
using var cryptoStream = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read);
|
||||||
|
using StreamReader reader = new(cryptoStream);
|
||||||
|
|
||||||
|
return reader.ReadToEnd();
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class RainbowCamera : MonoBehaviour {
|
public class RainbowCamera : MonoBehaviour {
|
||||||
public float frequency = 1f;
|
public float frequency = 1f;
|
||||||
[Range(0, 255)]
|
[Range(0, 255)]
|
||||||
public int brightness = 255;
|
public int brightness = 255;
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
float t = Time.time * frequency;
|
float t = Time.time * frequency;
|
||||||
float r = (Mathf.Sin(t) * 0.5f + 0.5f) * (brightness / 255f);
|
float r = (Mathf.Sin(t) * 0.5f + 0.5f) * (brightness / 255f);
|
||||||
float g = (Mathf.Sin(t + 2f) * 0.5f + 0.5f) * (brightness / 255f);
|
float g = (Mathf.Sin(t + 2f) * 0.5f + 0.5f) * (brightness / 255f);
|
||||||
float b = (Mathf.Sin(t + 4f) * 0.5f + 0.5f) * (brightness / 255f);
|
float b = (Mathf.Sin(t + 4f) * 0.5f + 0.5f) * (brightness / 255f);
|
||||||
Camera.main.backgroundColor = new Color(r, g, b);
|
Camera.main.backgroundColor = new Color(r, g, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,18 +2,18 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class RainbowImage : MonoBehaviour {
|
public class RainbowImage : MonoBehaviour {
|
||||||
public float frequency = 1f;
|
public float frequency = 1f;
|
||||||
private Image targetImage;
|
private Image targetImage;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
targetImage = gameObject.GetComponent<Image>();
|
targetImage = gameObject.GetComponent<Image>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
float t = Time.time * frequency;
|
float t = Time.time * frequency;
|
||||||
float r = Mathf.Sin(t) * 0.5f + 0.5f;
|
float r = Mathf.Sin(t) * 0.5f + 0.5f;
|
||||||
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
|
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
|
||||||
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
|
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
|
||||||
targetImage.color = new Color(r, g, b);
|
targetImage.color = new Color(r, g, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class RainbowSpriteRender : MonoBehaviour {
|
public class RainbowSpriteRender : MonoBehaviour {
|
||||||
public float frequency = 1f;
|
public float frequency = 1f;
|
||||||
private SpriteRenderer targetImage;
|
private SpriteRenderer targetImage;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
targetImage = gameObject.GetComponent<SpriteRenderer>();
|
targetImage = gameObject.GetComponent<SpriteRenderer>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
float t = Time.time * frequency;
|
float t = Time.time * frequency;
|
||||||
float r = Mathf.Sin(t) * 0.5f + 0.5f;
|
float r = Mathf.Sin(t) * 0.5f + 0.5f;
|
||||||
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
|
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
|
||||||
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
|
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
|
||||||
targetImage.color = new Color(r, g, b);
|
targetImage.color = new Color(r, g, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,18 +2,18 @@ using TMPro;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class RainbowText : MonoBehaviour {
|
public class RainbowText : MonoBehaviour {
|
||||||
public float frequency = 1f;
|
public float frequency = 1f;
|
||||||
private TMP_Text targetImage;
|
private TMP_Text targetImage;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
targetImage = gameObject.GetComponent<TMP_Text>();
|
targetImage = gameObject.GetComponent<TMP_Text>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
float t = Time.time * frequency;
|
float t = Time.time * frequency;
|
||||||
float r = Mathf.Sin(t) * 0.5f + 0.5f;
|
float r = Mathf.Sin(t) * 0.5f + 0.5f;
|
||||||
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
|
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
|
||||||
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
|
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
|
||||||
targetImage.color = new Color(r, g, b);
|
targetImage.color = new Color(r, g, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+137
-137
@@ -8,157 +8,157 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public static class Tools {
|
public static class Tools {
|
||||||
public static Sprite GetIconForUser(BigInteger user) {
|
public static Sprite GetIconForUser(BigInteger user) {
|
||||||
if (user == 1) return Resources.Load<Sprite>("Icons/Icons/bird_-1");
|
if (user == 1) return Resources.Load<Sprite>("Icons/Icons/bird_-1");
|
||||||
else if (user == 2) return Resources.Load<Sprite>("Icons/Icons/bird_-2");
|
else if (user == 2) return Resources.Load<Sprite>("Icons/Icons/bird_-2");
|
||||||
else if (user == 4) return Resources.Load<Sprite>("Icons/Icons/bird_-3");
|
else if (user == 4) return Resources.Load<Sprite>("Icons/Icons/bird_-3");
|
||||||
else if (user == 3) return Resources.Load<Sprite>("Icons/Icons/bird_-4");
|
else if (user == 3) return Resources.Load<Sprite>("Icons/Icons/bird_-4");
|
||||||
else return Resources.Load<Sprite>("Icons/Icons/bird_1");
|
else return Resources.Load<Sprite>("Icons/Icons/bird_1");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string FormatWithCommas(string number) {
|
public static string FormatWithCommas(string number) {
|
||||||
try { return FormatWithCommas(BigInteger.Parse(number)); }
|
try { return FormatWithCommas(BigInteger.Parse(number)); }
|
||||||
catch { return number; }
|
catch { return number; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string FormatWithCommas(BigInteger number) {
|
public static string FormatWithCommas(BigInteger number) {
|
||||||
return string.Format("{0:N0}", number);
|
return string.Format("{0:N0}", number);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void UpdateStatusText(TMP_Text statusText, string message, Color color) {
|
public static void UpdateStatusText(TMP_Text statusText, string message, Color color) {
|
||||||
statusText.text = message;
|
statusText.text = message;
|
||||||
statusText.color = color;
|
statusText.color = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Sprite GetSpriteFromBase64(string base64) {
|
public static Sprite GetSpriteFromBase64(string base64) {
|
||||||
byte[] imageData = Convert.FromBase64String(base64);
|
byte[] imageData = Convert.FromBase64String(base64);
|
||||||
Texture2D tex = new(2, 2, TextureFormat.ARGB32, false);
|
Texture2D tex = new(2, 2, TextureFormat.ARGB32, false);
|
||||||
if (!tex.LoadImage(imageData)) return null;
|
if (!tex.LoadImage(imageData)) return null;
|
||||||
|
|
||||||
tex.filterMode = FilterMode.Point;
|
tex.filterMode = FilterMode.Point;
|
||||||
tex.Apply(false, false);
|
tex.Apply(false, false);
|
||||||
|
|
||||||
return Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new UnityEngine.Vector2(0.5f, 0.5f));
|
return Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new UnityEngine.Vector2(0.5f, 0.5f));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RefreshHierarchy(GameObject root) {
|
public static void RefreshHierarchy(GameObject root) {
|
||||||
foreach (Transform child in root.transform) RefreshHierarchy(child.gameObject);
|
foreach (Transform child in root.transform) RefreshHierarchy(child.gameObject);
|
||||||
if (root.TryGetComponent<RectTransform>(out var rect)) LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
|
if (root.TryGetComponent<RectTransform>(out var rect)) LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string Sha512Sum(byte[] data) {
|
public static string Sha512Sum(byte[] data) {
|
||||||
using var sha512 = SHA512.Create();
|
using var sha512 = SHA512.Create();
|
||||||
var hash = sha512.ComputeHash(data);
|
var hash = sha512.ComputeHash(data);
|
||||||
|
|
||||||
var sb = new StringBuilder(hash.Length * 2);
|
var sb = new StringBuilder(hash.Length * 2);
|
||||||
foreach (var b in hash)
|
foreach (var b in hash)
|
||||||
sb.Append(b.ToString("x2"));
|
sb.Append(b.ToString("x2"));
|
||||||
|
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BigInteger CalculateXP(BigInteger normalBerries, BigInteger poisonBerries, BigInteger slowBerries, BigInteger ultraBerries, BigInteger speedyBerries, BigInteger coinBerries, BigInteger randomBerries, BigInteger antiBerries, BigInteger goldenBerries) {
|
public static BigInteger CalculateXP(BigInteger normalBerries, BigInteger poisonBerries, BigInteger slowBerries, BigInteger ultraBerries, BigInteger speedyBerries, BigInteger coinBerries, BigInteger randomBerries, BigInteger antiBerries, BigInteger goldenBerries) {
|
||||||
BigInteger totalXp = 0;
|
BigInteger totalXp = 0;
|
||||||
totalXp += normalBerries;
|
totalXp += normalBerries;
|
||||||
totalXp -= poisonBerries;
|
totalXp -= poisonBerries;
|
||||||
totalXp -= slowBerries;
|
totalXp -= slowBerries;
|
||||||
totalXp += ultraBerries * 5;
|
totalXp += ultraBerries * 5;
|
||||||
totalXp += speedyBerries * 10;
|
totalXp += speedyBerries * 10;
|
||||||
totalXp += coinBerries * 10;
|
totalXp += coinBerries * 10;
|
||||||
totalXp += randomBerries;
|
totalXp += randomBerries;
|
||||||
totalXp -= antiBerries;
|
totalXp -= antiBerries;
|
||||||
totalXp += goldenBerries * 4;
|
totalXp += goldenBerries * 4;
|
||||||
if (totalXp < 0) totalXp = 0;
|
if (totalXp < 0) totalXp = 0;
|
||||||
return totalXp;
|
return totalXp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BigInteger CalculateXP() {
|
public static BigInteger CalculateXP() {
|
||||||
return CalculateXP(
|
return CalculateXP(
|
||||||
BazookaManager.Instance.GetGameStoreTotalNormalBerries(),
|
BazookaManager.Instance.GetGameStoreTotalNormalBerries(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalPoisonBerries(),
|
BazookaManager.Instance.GetGameStoreTotalPoisonBerries(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalSlowBerries(),
|
BazookaManager.Instance.GetGameStoreTotalSlowBerries(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalUltraBerries(),
|
BazookaManager.Instance.GetGameStoreTotalUltraBerries(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalSpeedyBerries(),
|
BazookaManager.Instance.GetGameStoreTotalSpeedyBerries(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalCoinBerries(),
|
BazookaManager.Instance.GetGameStoreTotalCoinBerries(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalRandomBerries(),
|
BazookaManager.Instance.GetGameStoreTotalRandomBerries(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalAntiBerries(),
|
BazookaManager.Instance.GetGameStoreTotalAntiBerries(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalGoldenBerries()
|
BazookaManager.Instance.GetGameStoreTotalGoldenBerries()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static (BigInteger totalXp, double level, BigInteger currentXpInLevel, BigInteger totalXpForLevel, double percentDone) GetLevelInfo(BigInteger xp) {
|
||||||
|
double levelDivisor = 50.0;
|
||||||
|
|
||||||
|
double discriminant = 95 * 95 + levelDivisor * 2 * (double)xp;
|
||||||
|
double level = (-95 + Math.Sqrt(discriminant)) / levelDivisor;
|
||||||
|
double flooredLevel = Math.Floor(level);
|
||||||
|
|
||||||
|
BigInteger xpAtStartOfLevel = (BigInteger)(levelDivisor / 2 * flooredLevel * flooredLevel + 95 * flooredLevel);
|
||||||
|
|
||||||
|
double nextLevel = flooredLevel + 1;
|
||||||
|
BigInteger xpAtNextLevel = (BigInteger)(levelDivisor / 2 * nextLevel * nextLevel + 95 * nextLevel);
|
||||||
|
|
||||||
|
BigInteger totalXpForLevel = xpAtNextLevel - xpAtStartOfLevel;
|
||||||
|
BigInteger currentXpInLevel = xp - xpAtStartOfLevel;
|
||||||
|
|
||||||
|
double percentDone = totalXpForLevel == 0 ? 0.0 : (double)currentXpInLevel / (double)totalXpForLevel * 100.0;
|
||||||
|
|
||||||
|
return (xp, flooredLevel + 1, currentXpInLevel, totalXpForLevel, percentDone);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static (BigInteger totalXp, double level, BigInteger currentXpInLevel, BigInteger totalXpForLevel, double percentDone) GetLevelInfo() {
|
||||||
|
var (totalXp, level, currentXpInLevel, totalXpForLevel, percentDone) = GetLevelInfo(CalculateXP());
|
||||||
|
return (totalXp, level, currentXpInLevel, totalXpForLevel, percentDone);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string FormatHumanTime(long unixTimestamp) {
|
||||||
|
DateTime date = DateTimeOffset.FromUnixTimeSeconds(unixTimestamp).LocalDateTime;
|
||||||
|
DateTime now = DateTime.Now;
|
||||||
|
|
||||||
|
bool isToday = date.Year == now.Year && date.Month == now.Month && date.Day == now.Day;
|
||||||
|
DateTime yesterday = now.AddDays(-1);
|
||||||
|
bool isYesterday = date.Year == yesterday.Year && date.Month == yesterday.Month && date.Day == yesterday.Day;
|
||||||
|
|
||||||
|
string timeStr = date.ToString("t");
|
||||||
|
|
||||||
|
if (isToday) return timeStr;
|
||||||
|
if (isYesterday) return $"Yesterday at {timeStr}";
|
||||||
|
|
||||||
|
string dateStr = date.ToShortDateString();
|
||||||
|
return $"{dateStr}, {timeStr}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Color JArayToColor(JArray data) {
|
||||||
|
return new Color(
|
||||||
|
int.Parse(data[0].ToString()) / 255f,
|
||||||
|
int.Parse(data[1].ToString()) / 255f,
|
||||||
|
int.Parse(data[2].ToString()) / 255f
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void LoadIcon(Image icon, Image overlay, int iconId, int overlayId, JArray iconColor, JArray overlayColor, string customIcon, BigInteger userId) {
|
||||||
|
if (customIcon == null || customIcon.Trim() == string.Empty) {
|
||||||
|
icon.color = JArayToColor(iconColor);
|
||||||
|
overlay.color = JArayToColor(overlayColor);
|
||||||
|
|
||||||
|
if (iconId == 1) icon.sprite = GetIconForUser(userId);
|
||||||
|
else icon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + iconId);
|
||||||
|
if (overlayId != 0) {
|
||||||
|
overlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + overlayId);
|
||||||
|
overlay.gameObject.SetActive(true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var waitingForCustomIcon = icon.gameObject.AddComponent<WaitingForCustomIcon>();
|
||||||
|
waitingForCustomIcon.ID = customIcon;
|
||||||
|
CustomIconLoader.Init(new[] { waitingForCustomIcon });
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static (BigInteger totalXp, double level, BigInteger currentXpInLevel, BigInteger totalXpForLevel, double percentDone) GetLevelInfo(BigInteger xp) {
|
public static GameObject[] GetAllBerries(Transform berryParent) {
|
||||||
double levelDivisor = 50.0;
|
GameObject[] children = new GameObject[berryParent.childCount];
|
||||||
|
for (int i = 0; i < berryParent.childCount; i++) {
|
||||||
double discriminant = 95 * 95 + levelDivisor * 2 * (double)xp;
|
children[i] = berryParent.GetChild(i).gameObject;
|
||||||
double level = (-95 + Math.Sqrt(discriminant)) / levelDivisor;
|
|
||||||
double flooredLevel = Math.Floor(level);
|
|
||||||
|
|
||||||
BigInteger xpAtStartOfLevel = (BigInteger)(levelDivisor / 2 * flooredLevel * flooredLevel + 95 * flooredLevel);
|
|
||||||
|
|
||||||
double nextLevel = flooredLevel + 1;
|
|
||||||
BigInteger xpAtNextLevel = (BigInteger)(levelDivisor / 2 * nextLevel * nextLevel + 95 * nextLevel);
|
|
||||||
|
|
||||||
BigInteger totalXpForLevel = xpAtNextLevel - xpAtStartOfLevel;
|
|
||||||
BigInteger currentXpInLevel = xp - xpAtStartOfLevel;
|
|
||||||
|
|
||||||
double percentDone = totalXpForLevel == 0 ? 0.0 : (double)currentXpInLevel / (double)totalXpForLevel * 100.0;
|
|
||||||
|
|
||||||
return (xp, flooredLevel + 1, currentXpInLevel, totalXpForLevel, percentDone);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static (BigInteger totalXp, double level, BigInteger currentXpInLevel, BigInteger totalXpForLevel, double percentDone) GetLevelInfo() {
|
|
||||||
var (totalXp, level, currentXpInLevel, totalXpForLevel, percentDone) = GetLevelInfo(CalculateXP());
|
|
||||||
return (totalXp, level, currentXpInLevel, totalXpForLevel, percentDone);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string FormatHumanTime(long unixTimestamp) {
|
|
||||||
DateTime date = DateTimeOffset.FromUnixTimeSeconds(unixTimestamp).LocalDateTime;
|
|
||||||
DateTime now = DateTime.Now;
|
|
||||||
|
|
||||||
bool isToday = date.Year == now.Year && date.Month == now.Month && date.Day == now.Day;
|
|
||||||
DateTime yesterday = now.AddDays(-1);
|
|
||||||
bool isYesterday = date.Year == yesterday.Year && date.Month == yesterday.Month && date.Day == yesterday.Day;
|
|
||||||
|
|
||||||
string timeStr = date.ToString("t");
|
|
||||||
|
|
||||||
if (isToday) return timeStr;
|
|
||||||
if (isYesterday) return $"Yesterday at {timeStr}";
|
|
||||||
|
|
||||||
string dateStr = date.ToShortDateString();
|
|
||||||
return $"{dateStr}, {timeStr}";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Color JArayToColor(JArray data) {
|
|
||||||
return new Color(
|
|
||||||
int.Parse(data[0].ToString()) / 255f,
|
|
||||||
int.Parse(data[1].ToString()) / 255f,
|
|
||||||
int.Parse(data[2].ToString()) / 255f
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void LoadIcon(Image icon, Image overlay, int iconId, int overlayId, JArray iconColor, JArray overlayColor, string customIcon, BigInteger userId) {
|
|
||||||
if (customIcon == null || customIcon.Trim() == string.Empty) {
|
|
||||||
icon.color = JArayToColor(iconColor);
|
|
||||||
overlay.color = JArayToColor(overlayColor);
|
|
||||||
|
|
||||||
if (iconId == 1) icon.sprite = GetIconForUser(userId);
|
|
||||||
else icon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + iconId);
|
|
||||||
if (overlayId != 0) {
|
|
||||||
overlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + overlayId);
|
|
||||||
overlay.gameObject.SetActive(true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var waitingForCustomIcon = icon.gameObject.AddComponent<WaitingForCustomIcon>();
|
|
||||||
waitingForCustomIcon.ID = customIcon;
|
|
||||||
CustomIconLoader.Init(new[] { waitingForCustomIcon });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static GameObject[] GetAllBerries(Transform berryParent) {
|
|
||||||
GameObject[] children = new GameObject[berryParent.childCount];
|
|
||||||
for (int i = 0; i < berryParent.childCount; i++) {
|
|
||||||
children[i] = berryParent.GetChild(i).gameObject;
|
|
||||||
}
|
|
||||||
return children;
|
|
||||||
}
|
}
|
||||||
|
return children;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class WaitingForCustomIcon : MonoBehaviour {
|
public class WaitingForCustomIcon : MonoBehaviour {
|
||||||
public string ID;
|
public string ID;
|
||||||
}
|
}
|
||||||
@@ -5,102 +5,102 @@ using UnityEngine.SceneManagement;
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
public class WebsocketHandler : MonoBehaviour {
|
public class WebsocketHandler : MonoBehaviour {
|
||||||
public static WebsocketHandler Instance;
|
public static WebsocketHandler Instance;
|
||||||
public WebSocketConnection _Connection;
|
public WebSocketConnection _Connection;
|
||||||
|
|
||||||
private bool isReconnecting = false;
|
private bool isReconnecting = false;
|
||||||
private bool intentionalDisconnect = false;
|
private bool intentionalDisconnect = false;
|
||||||
|
|
||||||
private static readonly WaitForSeconds _waitForSeconds2 = new(2f);
|
private static readonly WaitForSeconds _waitForSeconds2 = new(2f);
|
||||||
private string lastSceneName = null;
|
private string lastSceneName = null;
|
||||||
|
|
||||||
private float _lastPingMs = -1f;
|
private float _lastPingMs = -1f;
|
||||||
|
|
||||||
private void Awake() {
|
private void Awake() {
|
||||||
if (Instance != null) {
|
if (Instance != null) {
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
Instance = this;
|
|
||||||
DontDestroyOnLoad(gameObject);
|
|
||||||
|
|
||||||
_Connection = gameObject.AddComponent<WebSocketConnection>();
|
|
||||||
_Connection.DesiredConfig = new WebSocketConfig {
|
|
||||||
MaxReceiveBytes = 10 * 1024 * 1024,
|
|
||||||
PingInterval = TimeSpan.FromSeconds(5),
|
|
||||||
PingMessage = new WebSocketMessage("ping"),
|
|
||||||
ShouldPingWaitForPong = true,
|
|
||||||
};
|
|
||||||
_Connection.StateChanged += OnStateChanged;
|
|
||||||
_Connection.ErrorMessageReceived += OnErrorMessageReceived;
|
|
||||||
_Connection.PongReceived += OnPongReceived;
|
|
||||||
|
|
||||||
SceneManager.sceneLoaded += OnSceneLoaded;
|
|
||||||
|
|
||||||
Connect();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDestroy() {
|
Instance = this;
|
||||||
if (_Connection != null) {
|
DontDestroyOnLoad(gameObject);
|
||||||
_Connection.StateChanged -= OnStateChanged;
|
|
||||||
_Connection.ErrorMessageReceived -= OnErrorMessageReceived;
|
_Connection = gameObject.AddComponent<WebSocketConnection>();
|
||||||
}
|
_Connection.DesiredConfig = new WebSocketConfig {
|
||||||
|
MaxReceiveBytes = 10 * 1024 * 1024,
|
||||||
|
PingInterval = TimeSpan.FromSeconds(5),
|
||||||
|
PingMessage = new WebSocketMessage("ping"),
|
||||||
|
ShouldPingWaitForPong = true,
|
||||||
|
};
|
||||||
|
_Connection.StateChanged += OnStateChanged;
|
||||||
|
_Connection.ErrorMessageReceived += OnErrorMessageReceived;
|
||||||
|
_Connection.PongReceived += OnPongReceived;
|
||||||
|
|
||||||
|
SceneManager.sceneLoaded += OnSceneLoaded;
|
||||||
|
|
||||||
|
Connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy() {
|
||||||
|
if (_Connection != null) {
|
||||||
|
_Connection.StateChanged -= OnStateChanged;
|
||||||
|
_Connection.ErrorMessageReceived -= OnErrorMessageReceived;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Connect() {
|
public void Connect() {
|
||||||
intentionalDisconnect = false;
|
intentionalDisconnect = false;
|
||||||
|
|
||||||
if (_Connection.State == WebSocketState.Connected || _Connection.State == WebSocketState.Connecting) return;
|
if (_Connection.State == WebSocketState.Connected || _Connection.State == WebSocketState.Connecting) return;
|
||||||
|
|
||||||
_Connection.Connect(Endpoints.WS_ENDPOINT);
|
_Connection.Connect(Endpoints.WS_ENDPOINT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Disconnect() {
|
||||||
|
intentionalDisconnect = true;
|
||||||
|
_Connection.Disconnect();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnStateChanged(WebSocketConnection connection, WebSocketState oldState, WebSocketState newState) {
|
||||||
|
Debug.Log($"WS state changed from \"{oldState}\" to \"{newState}\"");
|
||||||
|
if (newState == WebSocketState.Disconnected && !intentionalDisconnect && !isReconnecting) {
|
||||||
|
StartCoroutine(ReconnectWithDelay());
|
||||||
}
|
}
|
||||||
|
if (newState == WebSocketState.Connected) {
|
||||||
public void Disconnect() {
|
var currentSceneName = SceneManager.GetActiveScene().name;
|
||||||
intentionalDisconnect = true;
|
ConnectedWithCurrentSceneMessage msg = new() {
|
||||||
_Connection.Disconnect();
|
sceneName = currentSceneName
|
||||||
|
};
|
||||||
|
_Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void OnStateChanged(WebSocketConnection connection, WebSocketState oldState, WebSocketState newState) {
|
private void OnErrorMessageReceived(WebSocketConnection connection, string errorMessage) {
|
||||||
Debug.Log($"WS state changed from \"{oldState}\" to \"{newState}\"");
|
Debug.LogError($"WS error {errorMessage}");
|
||||||
if (newState == WebSocketState.Disconnected && !intentionalDisconnect && !isReconnecting) {
|
}
|
||||||
StartCoroutine(ReconnectWithDelay());
|
|
||||||
}
|
private IEnumerator ReconnectWithDelay() {
|
||||||
if (newState == WebSocketState.Connected) {
|
isReconnecting = true;
|
||||||
var currentSceneName = SceneManager.GetActiveScene().name;
|
yield return _waitForSeconds2;
|
||||||
ConnectedWithCurrentSceneMessage msg = new() {
|
isReconnecting = false;
|
||||||
sceneName = currentSceneName
|
Debug.Log("Trying to connect again");
|
||||||
};
|
Connect();
|
||||||
_Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
}
|
||||||
}
|
|
||||||
|
private void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
|
||||||
|
if (_Connection.State == WebSocketState.Connected) {
|
||||||
|
SceneChangeMessage msg = new() {
|
||||||
|
to = scene.name,
|
||||||
|
from = lastSceneName
|
||||||
|
};
|
||||||
|
_Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
||||||
}
|
}
|
||||||
|
lastSceneName = scene.name;
|
||||||
|
}
|
||||||
|
|
||||||
private void OnErrorMessageReceived(WebSocketConnection connection, string errorMessage) {
|
public float GetPing() => _lastPingMs;
|
||||||
Debug.LogError($"WS error {errorMessage}");
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerator ReconnectWithDelay() {
|
private void OnPongReceived(WebSocketConnection connection, DateTime timestamp) {
|
||||||
isReconnecting = true;
|
_lastPingMs = (float)connection.LastPingPongInterval.TotalMilliseconds;
|
||||||
yield return _waitForSeconds2;
|
}
|
||||||
isReconnecting = false;
|
|
||||||
Debug.Log("Trying to connect again");
|
|
||||||
Connect();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
|
|
||||||
if (_Connection.State == WebSocketState.Connected) {
|
|
||||||
SceneChangeMessage msg = new() {
|
|
||||||
to = scene.name,
|
|
||||||
from = lastSceneName
|
|
||||||
};
|
|
||||||
_Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
|
||||||
}
|
|
||||||
lastSceneName = scene.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float GetPing() => _lastPingMs;
|
|
||||||
|
|
||||||
private void OnPongReceived(WebSocketConnection connection, DateTime timestamp) {
|
|
||||||
_lastPingMs = (float)connection.LastPingPongInterval.TotalMilliseconds;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+333
-333
@@ -8,373 +8,373 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class PlayMenu : MonoBehaviour {
|
public class PlayMenu : MonoBehaviour {
|
||||||
[SerializeField] private GameObject selectionMenu;
|
[SerializeField] private GameObject selectionMenu;
|
||||||
[SerializeField] private GameObject customMenu;
|
[SerializeField] private GameObject customMenu;
|
||||||
[SerializeField] private GameObject autoWarningMenu;
|
[SerializeField] private GameObject autoWarningMenu;
|
||||||
[SerializeField] private Button customButton;
|
[SerializeField] private Button customButton;
|
||||||
[SerializeField] private Button customBackButton;
|
[SerializeField] private Button customBackButton;
|
||||||
[SerializeField] private Button customPlayButton;
|
[SerializeField] private Button customPlayButton;
|
||||||
[SerializeField] private Button customNormalizeButton;
|
[SerializeField] private Button customNormalizeButton;
|
||||||
[SerializeField] private Button multiplayerButton;
|
[SerializeField] private Button multiplayerButton;
|
||||||
[SerializeField] private GameObject multiplayerJoinStatusPanel;
|
[SerializeField] private GameObject multiplayerJoinStatusPanel;
|
||||||
[SerializeField] private GameObject multiplayerJoiningPanel;
|
[SerializeField] private GameObject multiplayerJoiningPanel;
|
||||||
[SerializeField] private GameObject multiplayerDeniedPanel;
|
[SerializeField] private GameObject multiplayerDeniedPanel;
|
||||||
[SerializeField] private Button multiplayerDeniedBackButton;
|
[SerializeField] private Button multiplayerDeniedBackButton;
|
||||||
[SerializeField] private TMP_Text multiplayerDeniedReasonText;
|
[SerializeField] private TMP_Text multiplayerDeniedReasonText;
|
||||||
[SerializeField] private Button autoButton;
|
[SerializeField] private Button autoButton;
|
||||||
[SerializeField] private Button autoBackButton;
|
[SerializeField] private Button autoBackButton;
|
||||||
[SerializeField] private Button autoPlayButton;
|
[SerializeField] private Button autoPlayButton;
|
||||||
|
|
||||||
[SerializeField] private TMP_InputField normalBerryChance;
|
[SerializeField] private TMP_InputField normalBerryChance;
|
||||||
[SerializeField] private TMP_InputField poisonBerryChance;
|
[SerializeField] private TMP_InputField poisonBerryChance;
|
||||||
[SerializeField] private TMP_InputField slowBerryChance;
|
[SerializeField] private TMP_InputField slowBerryChance;
|
||||||
[SerializeField] private TMP_InputField ultraBerryChance;
|
[SerializeField] private TMP_InputField ultraBerryChance;
|
||||||
[SerializeField] private TMP_InputField speedyBerryChance;
|
[SerializeField] private TMP_InputField speedyBerryChance;
|
||||||
[SerializeField] private TMP_InputField randomBerryChance;
|
[SerializeField] private TMP_InputField randomBerryChance;
|
||||||
[SerializeField] private TMP_InputField antiBerryChance;
|
[SerializeField] private TMP_InputField antiBerryChance;
|
||||||
[SerializeField] private TMP_InputField goldenBerryChance;
|
[SerializeField] private TMP_InputField goldenBerryChance;
|
||||||
[SerializeField] private TMP_InputField nothingBerryChance;
|
[SerializeField] private TMP_InputField nothingBerryChance;
|
||||||
[SerializeField] private Toggle useAiToggle;
|
[SerializeField] private Toggle useAiToggle;
|
||||||
|
|
||||||
[SerializeField] private TMP_Text validateTotalText;
|
[SerializeField] private TMP_Text validateTotalText;
|
||||||
|
|
||||||
private readonly float defaultNormalBerryChance = 42.5f;
|
private readonly float defaultNormalBerryChance = 42.5f;
|
||||||
private readonly float defaultPoisonBerryChance = 12.5f;
|
private readonly float defaultPoisonBerryChance = 12.5f;
|
||||||
private readonly float defaultSlowBerryChance = 10f;
|
private readonly float defaultSlowBerryChance = 10f;
|
||||||
private readonly float defaultUltraBerryChance = 10f;
|
private readonly float defaultUltraBerryChance = 10f;
|
||||||
private readonly float defaultSpeedyBerryChance = 10f;
|
private readonly float defaultSpeedyBerryChance = 10f;
|
||||||
private readonly float defaultRandomBerryChance = 5f;
|
private readonly float defaultRandomBerryChance = 5f;
|
||||||
private readonly float defaultAntiBerryChance = 5f;
|
private readonly float defaultAntiBerryChance = 5f;
|
||||||
private readonly float defaultGoldenBerryChance = 5f;
|
private readonly float defaultGoldenBerryChance = 5f;
|
||||||
private readonly float defaultNothingBerryChance = 0f;
|
private readonly float defaultNothingBerryChance = 0f;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
customButton.onClick.AddListener(() => {
|
customButton.onClick.AddListener(() => {
|
||||||
selectionMenu.SetActive(false);
|
selectionMenu.SetActive(false);
|
||||||
customMenu.SetActive(true);
|
customMenu.SetActive(true);
|
||||||
if (DiscordRPCHandler.Instance != null)
|
if (DiscordRPCHandler.Instance != null)
|
||||||
DiscordRPCHandler.Instance.UpdateRPC("Customizing to play the custom mode", "");
|
DiscordRPCHandler.Instance.UpdateRPC("Customizing to play the custom mode", "");
|
||||||
});
|
});
|
||||||
customBackButton.onClick.AddListener(() => {
|
customBackButton.onClick.AddListener(() => {
|
||||||
customMenu.SetActive(false);
|
customMenu.SetActive(false);
|
||||||
selectionMenu.SetActive(true);
|
selectionMenu.SetActive(true);
|
||||||
|
|
||||||
normalBerryChance.text = defaultNormalBerryChance.ToString() + "%";
|
normalBerryChance.text = defaultNormalBerryChance.ToString() + "%";
|
||||||
poisonBerryChance.text = defaultPoisonBerryChance.ToString() + "%";
|
poisonBerryChance.text = defaultPoisonBerryChance.ToString() + "%";
|
||||||
slowBerryChance.text = defaultSlowBerryChance.ToString() + "%";
|
slowBerryChance.text = defaultSlowBerryChance.ToString() + "%";
|
||||||
ultraBerryChance.text = defaultUltraBerryChance.ToString() + "%";
|
ultraBerryChance.text = defaultUltraBerryChance.ToString() + "%";
|
||||||
speedyBerryChance.text = defaultSpeedyBerryChance.ToString() + "%";
|
speedyBerryChance.text = defaultSpeedyBerryChance.ToString() + "%";
|
||||||
randomBerryChance.text = defaultRandomBerryChance.ToString() + "%";
|
randomBerryChance.text = defaultRandomBerryChance.ToString() + "%";
|
||||||
antiBerryChance.text = defaultAntiBerryChance.ToString() + "%";
|
antiBerryChance.text = defaultAntiBerryChance.ToString() + "%";
|
||||||
goldenBerryChance.text = defaultGoldenBerryChance.ToString() + "%";
|
goldenBerryChance.text = defaultGoldenBerryChance.ToString() + "%";
|
||||||
nothingBerryChance.text = defaultNothingBerryChance.ToString() + "%";
|
nothingBerryChance.text = defaultNothingBerryChance.ToString() + "%";
|
||||||
useAiToggle.isOn = false;
|
useAiToggle.isOn = false;
|
||||||
ValidateTotal();
|
ValidateTotal();
|
||||||
if (DiscordRPCHandler.Instance != null)
|
if (DiscordRPCHandler.Instance != null)
|
||||||
DiscordRPCHandler.Instance.UpdateRPC("Picking what mode they want to play", "");
|
DiscordRPCHandler.Instance.UpdateRPC("Picking what mode they want to play", "");
|
||||||
});
|
});
|
||||||
customNormalizeButton.onClick.AddListener(() => {
|
customNormalizeButton.onClick.AddListener(() => {
|
||||||
float normalBerry = GetValueFrom(normalBerryChance);
|
float normalBerry = GetValueFrom(normalBerryChance);
|
||||||
float poisonBerry = GetValueFrom(poisonBerryChance);
|
float poisonBerry = GetValueFrom(poisonBerryChance);
|
||||||
float slowBerry = GetValueFrom(slowBerryChance);
|
float slowBerry = GetValueFrom(slowBerryChance);
|
||||||
float ultraBerry = GetValueFrom(ultraBerryChance);
|
float ultraBerry = GetValueFrom(ultraBerryChance);
|
||||||
float speedyBerry = GetValueFrom(speedyBerryChance);
|
float speedyBerry = GetValueFrom(speedyBerryChance);
|
||||||
float randomBerry = GetValueFrom(randomBerryChance);
|
float randomBerry = GetValueFrom(randomBerryChance);
|
||||||
float antiBerry = GetValueFrom(antiBerryChance);
|
float antiBerry = GetValueFrom(antiBerryChance);
|
||||||
float goldenBerry = GetValueFrom(goldenBerryChance);
|
float goldenBerry = GetValueFrom(goldenBerryChance);
|
||||||
float nothingBerry = GetValueFrom(nothingBerryChance);
|
float nothingBerry = GetValueFrom(nothingBerryChance);
|
||||||
|
|
||||||
int divideBy = 0;
|
int divideBy = 0;
|
||||||
|
|
||||||
divideBy += normalBerry > 0 ? 1 : 0;
|
divideBy += normalBerry > 0 ? 1 : 0;
|
||||||
divideBy += poisonBerry > 0 ? 1 : 0;
|
divideBy += poisonBerry > 0 ? 1 : 0;
|
||||||
divideBy += slowBerry > 0 ? 1 : 0;
|
divideBy += slowBerry > 0 ? 1 : 0;
|
||||||
divideBy += ultraBerry > 0 ? 1 : 0;
|
divideBy += ultraBerry > 0 ? 1 : 0;
|
||||||
divideBy += speedyBerry > 0 ? 1 : 0;
|
divideBy += speedyBerry > 0 ? 1 : 0;
|
||||||
divideBy += randomBerry > 0 ? 1 : 0;
|
divideBy += randomBerry > 0 ? 1 : 0;
|
||||||
divideBy += antiBerry > 0 ? 1 : 0;
|
divideBy += antiBerry > 0 ? 1 : 0;
|
||||||
divideBy += goldenBerry > 0 ? 1 : 0;
|
divideBy += goldenBerry > 0 ? 1 : 0;
|
||||||
divideBy += nothingBerry > 0 ? 1 : 0;
|
divideBy += nothingBerry > 0 ? 1 : 0;
|
||||||
|
|
||||||
float addedChances = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + goldenBerry + nothingBerry;
|
float addedChances = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + goldenBerry + nothingBerry;
|
||||||
float difference = addedChances - 100f;
|
float difference = addedChances - 100f;
|
||||||
|
|
||||||
if (normalBerry > 0) NormalizeOne(normalBerryChance, normalBerry, divideBy, difference);
|
if (normalBerry > 0) NormalizeOne(normalBerryChance, normalBerry, divideBy, difference);
|
||||||
if (poisonBerry > 0) NormalizeOne(poisonBerryChance, poisonBerry, divideBy, difference);
|
if (poisonBerry > 0) NormalizeOne(poisonBerryChance, poisonBerry, divideBy, difference);
|
||||||
if (slowBerry > 0) NormalizeOne(slowBerryChance, slowBerry, divideBy, difference);
|
if (slowBerry > 0) NormalizeOne(slowBerryChance, slowBerry, divideBy, difference);
|
||||||
if (ultraBerry > 0) NormalizeOne(ultraBerryChance, ultraBerry, divideBy, difference);
|
if (ultraBerry > 0) NormalizeOne(ultraBerryChance, ultraBerry, divideBy, difference);
|
||||||
if (speedyBerry > 0) NormalizeOne(speedyBerryChance, speedyBerry, divideBy, difference);
|
if (speedyBerry > 0) NormalizeOne(speedyBerryChance, speedyBerry, divideBy, difference);
|
||||||
if (randomBerry > 0) NormalizeOne(randomBerryChance, randomBerry, divideBy, difference);
|
if (randomBerry > 0) NormalizeOne(randomBerryChance, randomBerry, divideBy, difference);
|
||||||
if (antiBerry > 0) NormalizeOne(antiBerryChance, antiBerry, divideBy, difference);
|
if (antiBerry > 0) NormalizeOne(antiBerryChance, antiBerry, divideBy, difference);
|
||||||
if (goldenBerry > 0) NormalizeOne(goldenBerryChance, goldenBerry, divideBy, difference);
|
if (goldenBerry > 0) NormalizeOne(goldenBerryChance, goldenBerry, divideBy, difference);
|
||||||
if (nothingBerry > 0) NormalizeOne(nothingBerryChance, nothingBerry, divideBy, difference);
|
if (nothingBerry > 0) NormalizeOne(nothingBerryChance, nothingBerry, divideBy, difference);
|
||||||
|
|
||||||
normalBerry = GetValueFrom(normalBerryChance);
|
normalBerry = GetValueFrom(normalBerryChance);
|
||||||
poisonBerry = GetValueFrom(poisonBerryChance);
|
poisonBerry = GetValueFrom(poisonBerryChance);
|
||||||
slowBerry = GetValueFrom(slowBerryChance);
|
slowBerry = GetValueFrom(slowBerryChance);
|
||||||
ultraBerry = GetValueFrom(ultraBerryChance);
|
ultraBerry = GetValueFrom(ultraBerryChance);
|
||||||
speedyBerry = GetValueFrom(speedyBerryChance);
|
speedyBerry = GetValueFrom(speedyBerryChance);
|
||||||
randomBerry = GetValueFrom(randomBerryChance);
|
randomBerry = GetValueFrom(randomBerryChance);
|
||||||
antiBerry = GetValueFrom(antiBerryChance);
|
antiBerry = GetValueFrom(antiBerryChance);
|
||||||
goldenBerry = GetValueFrom(goldenBerryChance);
|
goldenBerry = GetValueFrom(goldenBerryChance);
|
||||||
nothingBerry = GetValueFrom(nothingBerryChance);
|
nothingBerry = GetValueFrom(nothingBerryChance);
|
||||||
|
|
||||||
if (normalBerry > 0) normalBerry = (float)Math.Floor(normalBerry);
|
if (normalBerry > 0) normalBerry = (float)Math.Floor(normalBerry);
|
||||||
if (poisonBerry > 0) poisonBerry = (float)Math.Floor(poisonBerry);
|
if (poisonBerry > 0) poisonBerry = (float)Math.Floor(poisonBerry);
|
||||||
if (slowBerry > 0) slowBerry = (float)Math.Floor(slowBerry);
|
if (slowBerry > 0) slowBerry = (float)Math.Floor(slowBerry);
|
||||||
if (ultraBerry > 0) ultraBerry = (float)Math.Floor(ultraBerry);
|
if (ultraBerry > 0) ultraBerry = (float)Math.Floor(ultraBerry);
|
||||||
if (speedyBerry > 0) speedyBerry = (float)Math.Floor(speedyBerry);
|
if (speedyBerry > 0) speedyBerry = (float)Math.Floor(speedyBerry);
|
||||||
if (randomBerry > 0) randomBerry = (float)Math.Floor(randomBerry);
|
if (randomBerry > 0) randomBerry = (float)Math.Floor(randomBerry);
|
||||||
if (antiBerry > 0) antiBerry = (float)Math.Floor(antiBerry);
|
if (antiBerry > 0) antiBerry = (float)Math.Floor(antiBerry);
|
||||||
if (goldenBerry > 0) goldenBerry = (float)Math.Floor(goldenBerry);
|
if (goldenBerry > 0) goldenBerry = (float)Math.Floor(goldenBerry);
|
||||||
if (nothingBerry > 0) nothingBerry = (float)Math.Floor(nothingBerry);
|
if (nothingBerry > 0) nothingBerry = (float)Math.Floor(nothingBerry);
|
||||||
|
|
||||||
float addedChances2 = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + goldenBerry + nothingBerry;
|
float addedChances2 = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + goldenBerry + nothingBerry;
|
||||||
float difference2 = addedChances2 - 100f;
|
float difference2 = addedChances2 - 100f;
|
||||||
bool fixedValues = false;
|
bool fixedValues = false;
|
||||||
|
|
||||||
if (normalBerry > 0) {
|
if (normalBerry > 0) {
|
||||||
NormalizeTwo(normalBerryChance, fixedValues, normalBerry, difference2);
|
NormalizeTwo(normalBerryChance, fixedValues, normalBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
if (poisonBerry > 0) {
|
if (poisonBerry > 0) {
|
||||||
NormalizeTwo(poisonBerryChance, fixedValues, poisonBerry, difference2);
|
NormalizeTwo(poisonBerryChance, fixedValues, poisonBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
if (slowBerry > 0) {
|
if (slowBerry > 0) {
|
||||||
NormalizeTwo(slowBerryChance, fixedValues, slowBerry, difference2);
|
NormalizeTwo(slowBerryChance, fixedValues, slowBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
if (ultraBerry > 0) {
|
if (ultraBerry > 0) {
|
||||||
NormalizeTwo(ultraBerryChance, fixedValues, ultraBerry, difference2);
|
NormalizeTwo(ultraBerryChance, fixedValues, ultraBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
if (speedyBerry > 0) {
|
if (speedyBerry > 0) {
|
||||||
NormalizeTwo(speedyBerryChance, fixedValues, speedyBerry, difference2);
|
NormalizeTwo(speedyBerryChance, fixedValues, speedyBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
if (randomBerry > 0) {
|
if (randomBerry > 0) {
|
||||||
NormalizeTwo(randomBerryChance, fixedValues, randomBerry, difference2);
|
NormalizeTwo(randomBerryChance, fixedValues, randomBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
if (antiBerry > 0) {
|
if (antiBerry > 0) {
|
||||||
NormalizeTwo(antiBerryChance, fixedValues, antiBerry, difference2);
|
NormalizeTwo(antiBerryChance, fixedValues, antiBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
if (goldenBerry > 0) {
|
if (goldenBerry > 0) {
|
||||||
NormalizeTwo(goldenBerryChance, fixedValues, goldenBerry, difference2);
|
NormalizeTwo(goldenBerryChance, fixedValues, goldenBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
if (nothingBerry > 0) {
|
if (nothingBerry > 0) {
|
||||||
NormalizeTwo(nothingBerryChance, fixedValues, nothingBerry, difference2);
|
NormalizeTwo(nothingBerryChance, fixedValues, nothingBerry, difference2);
|
||||||
fixedValues = true;
|
fixedValues = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ValidateTotal();
|
ValidateTotal();
|
||||||
});
|
});
|
||||||
customPlayButton.onClick.AddListener(async () => {
|
customPlayButton.onClick.AddListener(async () => {
|
||||||
GameObject obj = new("CustomGameTempData");
|
GameObject obj = new("CustomGameTempData");
|
||||||
obj.AddComponent<CustomGameTempData>();
|
obj.AddComponent<CustomGameTempData>();
|
||||||
CustomGameTempData customGameTempData = obj.GetComponent<CustomGameTempData>();
|
CustomGameTempData customGameTempData = obj.GetComponent<CustomGameTempData>();
|
||||||
customGameTempData.normalBerryChance = GetValueFrom(normalBerryChance);
|
customGameTempData.normalBerryChance = GetValueFrom(normalBerryChance);
|
||||||
customGameTempData.poisonBerryChance = GetValueFrom(poisonBerryChance);
|
customGameTempData.poisonBerryChance = GetValueFrom(poisonBerryChance);
|
||||||
customGameTempData.slowBerryChance = GetValueFrom(slowBerryChance);
|
customGameTempData.slowBerryChance = GetValueFrom(slowBerryChance);
|
||||||
customGameTempData.ultraBerryChance = GetValueFrom(ultraBerryChance);
|
customGameTempData.ultraBerryChance = GetValueFrom(ultraBerryChance);
|
||||||
customGameTempData.speedyBerryChance = GetValueFrom(speedyBerryChance);
|
customGameTempData.speedyBerryChance = GetValueFrom(speedyBerryChance);
|
||||||
customGameTempData.randomBerryChance = GetValueFrom(randomBerryChance);
|
customGameTempData.randomBerryChance = GetValueFrom(randomBerryChance);
|
||||||
customGameTempData.antiBerryChance = GetValueFrom(antiBerryChance);
|
customGameTempData.antiBerryChance = GetValueFrom(antiBerryChance);
|
||||||
customGameTempData.goldenBerryChance = GetValueFrom(goldenBerryChance);
|
customGameTempData.goldenBerryChance = GetValueFrom(goldenBerryChance);
|
||||||
customGameTempData.nothingBerryChance = GetValueFrom(nothingBerryChance);
|
customGameTempData.nothingBerryChance = GetValueFrom(nothingBerryChance);
|
||||||
customGameTempData.useAI = useAiToggle.isOn;
|
customGameTempData.useAI = useAiToggle.isOn;
|
||||||
await SceneManager.LoadSceneAsync("CustomGamePlayer");
|
await SceneManager.LoadSceneAsync("CustomGamePlayer");
|
||||||
});
|
});
|
||||||
multiplayerButton.onClick.AddListener(() => {
|
multiplayerButton.onClick.AddListener(() => {
|
||||||
selectionMenu.SetActive(false);
|
selectionMenu.SetActive(false);
|
||||||
multiplayerJoinStatusPanel.SetActive(true);
|
multiplayerJoinStatusPanel.SetActive(true);
|
||||||
multiplayerJoiningPanel.SetActive(true);
|
multiplayerJoiningPanel.SetActive(true);
|
||||||
|
|
||||||
MultiplayerJoinRequestMessage msg = new() {
|
MultiplayerJoinRequestMessage msg = new() {
|
||||||
auth = BazookaManager.Instance.GetAccountSession()
|
auth = BazookaManager.Instance.GetAccountSession()
|
||||||
};
|
};
|
||||||
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
|
||||||
});
|
});
|
||||||
multiplayerDeniedBackButton.onClick.AddListener(() => {
|
multiplayerDeniedBackButton.onClick.AddListener(() => {
|
||||||
multiplayerDeniedReasonText.text = "";
|
multiplayerDeniedReasonText.text = "";
|
||||||
multiplayerDeniedPanel.SetActive(false);
|
multiplayerDeniedPanel.SetActive(false);
|
||||||
multiplayerJoinStatusPanel.SetActive(false);
|
multiplayerJoinStatusPanel.SetActive(false);
|
||||||
selectionMenu.SetActive(true);
|
selectionMenu.SetActive(true);
|
||||||
});
|
});
|
||||||
autoButton.onClick.AddListener(async () => {
|
autoButton.onClick.AddListener(async () => {
|
||||||
if (BazookaManager.Instance.GetReadAutoWarning() == true) {
|
if (BazookaManager.Instance.GetReadAutoWarning() == true) {
|
||||||
await SceneManager.LoadSceneAsync("AutoGamePlayer");
|
await SceneManager.LoadSceneAsync("AutoGamePlayer");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
selectionMenu.SetActive(false);
|
selectionMenu.SetActive(false);
|
||||||
autoWarningMenu.SetActive(true);
|
autoWarningMenu.SetActive(true);
|
||||||
});
|
});
|
||||||
autoBackButton.onClick.AddListener(() => {
|
autoBackButton.onClick.AddListener(() => {
|
||||||
selectionMenu.SetActive(true);
|
selectionMenu.SetActive(true);
|
||||||
autoWarningMenu.SetActive(false);
|
autoWarningMenu.SetActive(false);
|
||||||
});
|
});
|
||||||
autoPlayButton.onClick.AddListener(async () => {
|
autoPlayButton.onClick.AddListener(async () => {
|
||||||
BazookaManager.Instance.SetReadAutoWarning(true);
|
BazookaManager.Instance.SetReadAutoWarning(true);
|
||||||
await SceneManager.LoadSceneAsync("AutoGamePlayer");
|
await SceneManager.LoadSceneAsync("AutoGamePlayer");
|
||||||
});
|
});
|
||||||
|
|
||||||
normalBerryChance.onSelect.AddListener((value) => OnSelect(value, normalBerryChance));
|
normalBerryChance.onSelect.AddListener((value) => OnSelect(value, normalBerryChance));
|
||||||
normalBerryChance.onDeselect.AddListener((value) => OnDeselect(value, normalBerryChance));
|
normalBerryChance.onDeselect.AddListener((value) => OnDeselect(value, normalBerryChance));
|
||||||
poisonBerryChance.onSelect.AddListener((value) => OnSelect(value, poisonBerryChance));
|
poisonBerryChance.onSelect.AddListener((value) => OnSelect(value, poisonBerryChance));
|
||||||
poisonBerryChance.onDeselect.AddListener((value) => OnDeselect(value, poisonBerryChance));
|
poisonBerryChance.onDeselect.AddListener((value) => OnDeselect(value, poisonBerryChance));
|
||||||
slowBerryChance.onSelect.AddListener((value) => OnSelect(value, slowBerryChance));
|
slowBerryChance.onSelect.AddListener((value) => OnSelect(value, slowBerryChance));
|
||||||
slowBerryChance.onDeselect.AddListener((value) => OnDeselect(value, slowBerryChance));
|
slowBerryChance.onDeselect.AddListener((value) => OnDeselect(value, slowBerryChance));
|
||||||
ultraBerryChance.onSelect.AddListener((value) => OnSelect(value, ultraBerryChance));
|
ultraBerryChance.onSelect.AddListener((value) => OnSelect(value, ultraBerryChance));
|
||||||
ultraBerryChance.onDeselect.AddListener((value) => OnDeselect(value, ultraBerryChance));
|
ultraBerryChance.onDeselect.AddListener((value) => OnDeselect(value, ultraBerryChance));
|
||||||
speedyBerryChance.onSelect.AddListener((value) => OnSelect(value, speedyBerryChance));
|
speedyBerryChance.onSelect.AddListener((value) => OnSelect(value, speedyBerryChance));
|
||||||
speedyBerryChance.onDeselect.AddListener((value) => OnDeselect(value, speedyBerryChance));
|
speedyBerryChance.onDeselect.AddListener((value) => OnDeselect(value, speedyBerryChance));
|
||||||
randomBerryChance.onSelect.AddListener((value) => OnSelect(value, randomBerryChance));
|
randomBerryChance.onSelect.AddListener((value) => OnSelect(value, randomBerryChance));
|
||||||
randomBerryChance.onDeselect.AddListener((value) => OnDeselect(value, randomBerryChance));
|
randomBerryChance.onDeselect.AddListener((value) => OnDeselect(value, randomBerryChance));
|
||||||
antiBerryChance.onSelect.AddListener((value) => OnSelect(value, antiBerryChance));
|
antiBerryChance.onSelect.AddListener((value) => OnSelect(value, antiBerryChance));
|
||||||
antiBerryChance.onDeselect.AddListener((value) => OnDeselect(value, antiBerryChance));
|
antiBerryChance.onDeselect.AddListener((value) => OnDeselect(value, antiBerryChance));
|
||||||
goldenBerryChance.onSelect.AddListener((value) => OnSelect(value, goldenBerryChance));
|
goldenBerryChance.onSelect.AddListener((value) => OnSelect(value, goldenBerryChance));
|
||||||
goldenBerryChance.onDeselect.AddListener((value) => OnDeselect(value, goldenBerryChance));
|
goldenBerryChance.onDeselect.AddListener((value) => OnDeselect(value, goldenBerryChance));
|
||||||
nothingBerryChance.onSelect.AddListener((value) => OnSelect(value, nothingBerryChance));
|
nothingBerryChance.onSelect.AddListener((value) => OnSelect(value, nothingBerryChance));
|
||||||
nothingBerryChance.onDeselect.AddListener((value) => OnDeselect(value, nothingBerryChance));
|
nothingBerryChance.onDeselect.AddListener((value) => OnDeselect(value, nothingBerryChance));
|
||||||
|
|
||||||
WebsocketHandler.Instance._Connection.MessageReceived += OnMessageReceived;
|
WebsocketHandler.Instance._Connection.MessageReceived += OnMessageReceived;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnMessageReceived(WebSocketConnection connection, WebSocketMessage message) {
|
private void OnMessageReceived(WebSocketConnection connection, WebSocketMessage message) {
|
||||||
if (message.String != null && connection.State == WebSocketState.Connected) {
|
if (message.String != null && connection.State == WebSocketState.Connected) {
|
||||||
JToken data = JToken.Parse(message.String);
|
JToken data = JToken.Parse(message.String);
|
||||||
if (data["type"] != null) {
|
if (data["type"] != null) {
|
||||||
if (data["type"].ToString() == "multiplayer_join_response") {
|
if (data["type"].ToString() == "multiplayer_join_response") {
|
||||||
bool accepted = bool.Parse(data["accepted"].ToString());
|
bool accepted = bool.Parse(data["accepted"].ToString());
|
||||||
string denyReason = data["denyReason"].ToString();
|
string denyReason = data["denyReason"].ToString();
|
||||||
MultiplayerPlayerFromResponse[] players = data["players"].ToObject<MultiplayerPlayerFromResponse[]>();
|
MultiplayerPlayerFromResponse[] players = data["players"].ToObject<MultiplayerPlayerFromResponse[]>();
|
||||||
if (accepted) {
|
if (accepted) {
|
||||||
GameObject obj = new("MultiplayerGameTempData");
|
GameObject obj = new("MultiplayerGameTempData");
|
||||||
obj.AddComponent<MultiplayerGameTempData>();
|
obj.AddComponent<MultiplayerGameTempData>();
|
||||||
MultiplayerGameTempData multiplayerGameTempData = obj.GetComponent<MultiplayerGameTempData>();
|
MultiplayerGameTempData multiplayerGameTempData = obj.GetComponent<MultiplayerGameTempData>();
|
||||||
multiplayerGameTempData.players = players;
|
multiplayerGameTempData.players = players;
|
||||||
SceneManager.LoadScene("MultiplayerGamePlayer");
|
SceneManager.LoadScene("MultiplayerGamePlayer");
|
||||||
} else {
|
} else {
|
||||||
multiplayerJoiningPanel.SetActive(false);
|
multiplayerJoiningPanel.SetActive(false);
|
||||||
multiplayerDeniedPanel.SetActive(true);
|
multiplayerDeniedPanel.SetActive(true);
|
||||||
multiplayerDeniedReasonText.text = denyReason;
|
multiplayerDeniedReasonText.text = denyReason;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
if (DiscordRPCHandler.Instance != null)
|
if (DiscordRPCHandler.Instance != null)
|
||||||
DiscordRPCHandler.Instance.UpdateRPC("Picking what mode they want to play", "");
|
DiscordRPCHandler.Instance.UpdateRPC("Picking what mode they want to play", "");
|
||||||
|
|
||||||
if (Tools.GetLevelInfo().level < 5) {
|
if (Tools.GetLevelInfo().level < 5) {
|
||||||
useAiToggle.gameObject.SetActive(false);
|
useAiToggle.gameObject.SetActive(false);
|
||||||
customButton.interactable = false;
|
customButton.interactable = false;
|
||||||
customButton.transform.GetChild(0).GetComponent<TMP_Text>().text += "\n<size=12>You need level 5 or higher to access this</size>";
|
customButton.transform.GetChild(0).GetComponent<TMP_Text>().text += "\n<size=12>You need level 5 or higher to access this</size>";
|
||||||
}
|
|
||||||
if (Tools.GetLevelInfo().level < 3) {
|
|
||||||
autoButton.interactable = false;
|
|
||||||
autoButton.transform.GetChild(0).GetComponent<TMP_Text>().text += "\n<size=12>You need level 3 or higher to access this</size>";
|
|
||||||
}
|
|
||||||
if (WebsocketHandler.Instance == null || WebsocketHandler.Instance._Connection.State != WebSocketState.Connected) {
|
|
||||||
multiplayerButton.gameObject.SetActive(false);
|
|
||||||
var pos = autoButton.transform.localPosition;
|
|
||||||
pos.x = 0;
|
|
||||||
autoButton.transform.localPosition = pos;
|
|
||||||
} else if (BazookaManager.Instance.GetAccountID() == null || BazookaManager.Instance.GetAccountName() == null || BazookaManager.Instance.GetAccountSession() == null) {
|
|
||||||
multiplayerButton.interactable = false;
|
|
||||||
multiplayerButton.transform.GetChild(0).GetComponent<TMP_Text>().text += "\n<size=12>You must be logged to access this</size>";
|
|
||||||
} else if (Tools.GetLevelInfo().level < 10) {
|
|
||||||
multiplayerButton.interactable = false;
|
|
||||||
multiplayerButton.transform.GetChild(0).GetComponent<TMP_Text>().text += "\n<size=12>You need level 10 or higher to access this</size>";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (Tools.GetLevelInfo().level < 3) {
|
||||||
void OnDestroy() {
|
autoButton.interactable = false;
|
||||||
WebsocketHandler.Instance._Connection.MessageReceived -= OnMessageReceived;
|
autoButton.transform.GetChild(0).GetComponent<TMP_Text>().text += "\n<size=12>You need level 3 or higher to access this</size>";
|
||||||
}
|
}
|
||||||
|
if (WebsocketHandler.Instance == null || WebsocketHandler.Instance._Connection.State != WebSocketState.Connected) {
|
||||||
void ValidateTotal() {
|
multiplayerButton.gameObject.SetActive(false);
|
||||||
customBackButton.interactable = false;
|
var pos = autoButton.transform.localPosition;
|
||||||
customPlayButton.interactable = false;
|
pos.x = 0;
|
||||||
customNormalizeButton.interactable = false;
|
autoButton.transform.localPosition = pos;
|
||||||
float total = 0f;
|
} else if (BazookaManager.Instance.GetAccountID() == null || BazookaManager.Instance.GetAccountName() == null || BazookaManager.Instance.GetAccountSession() == null) {
|
||||||
total += GetValueFrom(normalBerryChance);
|
multiplayerButton.interactable = false;
|
||||||
total += GetValueFrom(poisonBerryChance);
|
multiplayerButton.transform.GetChild(0).GetComponent<TMP_Text>().text += "\n<size=12>You must be logged to access this</size>";
|
||||||
total += GetValueFrom(slowBerryChance);
|
} else if (Tools.GetLevelInfo().level < 10) {
|
||||||
total += GetValueFrom(ultraBerryChance);
|
multiplayerButton.interactable = false;
|
||||||
total += GetValueFrom(speedyBerryChance);
|
multiplayerButton.transform.GetChild(0).GetComponent<TMP_Text>().text += "\n<size=12>You need level 10 or higher to access this</size>";
|
||||||
total += GetValueFrom(randomBerryChance);
|
|
||||||
total += GetValueFrom(antiBerryChance);
|
|
||||||
total += GetValueFrom(goldenBerryChance);
|
|
||||||
total += GetValueFrom(nothingBerryChance);
|
|
||||||
if (total == 100f) {
|
|
||||||
customBackButton.interactable = true;
|
|
||||||
customPlayButton.interactable = true;
|
|
||||||
validateTotalText.gameObject.SetActive(false);
|
|
||||||
} else {
|
|
||||||
customNormalizeButton.interactable = true;
|
|
||||||
validateTotalText.text = "Total must add up to 100%!";
|
|
||||||
validateTotalText.gameObject.SetActive(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private float GetValueFrom(TMP_InputField inputField) {
|
void OnDestroy() {
|
||||||
return GetValueFroText(inputField.text);
|
WebsocketHandler.Instance._Connection.MessageReceived -= OnMessageReceived;
|
||||||
}
|
}
|
||||||
|
|
||||||
private float GetValueFroText(string text) {
|
void ValidateTotal() {
|
||||||
try {
|
customBackButton.interactable = false;
|
||||||
return float.Parse(text.Replace("%", "").Trim());
|
customPlayButton.interactable = false;
|
||||||
}
|
customNormalizeButton.interactable = false;
|
||||||
catch {
|
float total = 0f;
|
||||||
return 0f;
|
total += GetValueFrom(normalBerryChance);
|
||||||
}
|
total += GetValueFrom(poisonBerryChance);
|
||||||
|
total += GetValueFrom(slowBerryChance);
|
||||||
|
total += GetValueFrom(ultraBerryChance);
|
||||||
|
total += GetValueFrom(speedyBerryChance);
|
||||||
|
total += GetValueFrom(randomBerryChance);
|
||||||
|
total += GetValueFrom(antiBerryChance);
|
||||||
|
total += GetValueFrom(goldenBerryChance);
|
||||||
|
total += GetValueFrom(nothingBerryChance);
|
||||||
|
if (total == 100f) {
|
||||||
|
customBackButton.interactable = true;
|
||||||
|
customPlayButton.interactable = true;
|
||||||
|
validateTotalText.gameObject.SetActive(false);
|
||||||
|
} else {
|
||||||
|
customNormalizeButton.interactable = true;
|
||||||
|
validateTotalText.text = "Total must add up to 100%!";
|
||||||
|
validateTotalText.gameObject.SetActive(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OnSelect(string value, TMP_InputField inputField) {
|
private float GetValueFrom(TMP_InputField inputField) {
|
||||||
validateTotalText.gameObject.SetActive(false);
|
return GetValueFroText(inputField.text);
|
||||||
customBackButton.interactable = false;
|
}
|
||||||
customPlayButton.interactable = false;
|
|
||||||
customNormalizeButton.interactable = false;
|
|
||||||
inputField.text = value.Replace("%", "");
|
|
||||||
inputField.stringPosition = inputField.text.Length;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnDeselect(string value, TMP_InputField inputField) {
|
private float GetValueFroText(string text) {
|
||||||
if (float.TryParse(value, out var value2) && value2 < 0f) {
|
try {
|
||||||
value = "0";
|
return float.Parse(text.Replace("%", "").Trim());
|
||||||
}
|
|
||||||
inputField.text = value + "%";
|
|
||||||
ValidateTotal();
|
|
||||||
}
|
}
|
||||||
|
catch {
|
||||||
|
return 0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void NormalizeOne(TMP_InputField inputField, float berryChance, int divideBy, float difference) {
|
void OnSelect(string value, TMP_InputField inputField) {
|
||||||
inputField.text = (berryChance - (difference / divideBy)).ToString() + "%";
|
validateTotalText.gameObject.SetActive(false);
|
||||||
inputField.stringPosition = inputField.text.Length;
|
customBackButton.interactable = false;
|
||||||
}
|
customPlayButton.interactable = false;
|
||||||
|
customNormalizeButton.interactable = false;
|
||||||
|
inputField.text = value.Replace("%", "");
|
||||||
|
inputField.stringPosition = inputField.text.Length;
|
||||||
|
}
|
||||||
|
|
||||||
void NormalizeTwo(TMP_InputField inputField, bool fixedValues, float berryChance, float difference2) {
|
void OnDeselect(string value, TMP_InputField inputField) {
|
||||||
if (!fixedValues) {
|
if (float.TryParse(value, out var value2) && value2 < 0f) {
|
||||||
inputField.text = (berryChance - difference2).ToString() + "%";
|
value = "0";
|
||||||
inputField.stringPosition = inputField.text.Length;
|
|
||||||
} else {
|
|
||||||
inputField.text = berryChance.ToString() + "%";
|
|
||||||
inputField.stringPosition = inputField.text.Length;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
inputField.text = value + "%";
|
||||||
|
ValidateTotal();
|
||||||
|
}
|
||||||
|
|
||||||
async void Update() {
|
void NormalizeOne(TMP_InputField inputField, float berryChance, int divideBy, float difference) {
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame && customBackButton.interactable) {
|
inputField.text = (berryChance - (difference / divideBy)).ToString() + "%";
|
||||||
if (customMenu.activeSelf) customBackButton.onClick.Invoke();
|
inputField.stringPosition = inputField.text.Length;
|
||||||
else if (autoWarningMenu.activeSelf) autoBackButton.onClick.Invoke();
|
}
|
||||||
else if (multiplayerJoinStatusPanel.activeSelf) {
|
|
||||||
if (multiplayerDeniedPanel.activeSelf) multiplayerDeniedBackButton.onClick.Invoke();
|
void NormalizeTwo(TMP_InputField inputField, bool fixedValues, float berryChance, float difference2) {
|
||||||
} else await SceneManager.LoadSceneAsync("MainMenu");
|
if (!fixedValues) {
|
||||||
}
|
inputField.text = (berryChance - difference2).ToString() + "%";
|
||||||
|
inputField.stringPosition = inputField.text.Length;
|
||||||
|
} else {
|
||||||
|
inputField.text = berryChance.ToString() + "%";
|
||||||
|
inputField.stringPosition = inputField.text.Length;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async void Update() {
|
||||||
|
if (Keyboard.current.escapeKey.wasPressedThisFrame && customBackButton.interactable) {
|
||||||
|
if (customMenu.activeSelf) customBackButton.onClick.Invoke();
|
||||||
|
else if (autoWarningMenu.activeSelf) autoBackButton.onClick.Invoke();
|
||||||
|
else if (multiplayerJoinStatusPanel.activeSelf) {
|
||||||
|
if (multiplayerDeniedPanel.activeSelf) multiplayerDeniedBackButton.onClick.Invoke();
|
||||||
|
} else await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -7,55 +7,55 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
public class PresistentData : MonoBehaviour {
|
public class PresistentData : MonoBehaviour {
|
||||||
public static PresistentData Instance;
|
public static PresistentData Instance;
|
||||||
private bool loadingDone = false;
|
private bool loadingDone = false;
|
||||||
public static string latestVersion = null;
|
public static string latestVersion = null;
|
||||||
public static List<SplashEntry> randomSplashes = new();
|
public static List<SplashEntry> randomSplashes = new();
|
||||||
|
|
||||||
private async void Awake() {
|
private async void Awake() {
|
||||||
if (Instance != null && Instance != this) {
|
if (Instance != null && Instance != this) {
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
Instance = this;
|
|
||||||
DontDestroyOnLoad(gameObject);
|
|
||||||
if (!loadingDone) {
|
|
||||||
loadingDone = true;
|
|
||||||
await GetLatestVersion();
|
|
||||||
await GetRandomSplashes();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async static Task GetLatestVersion() {
|
Instance = this;
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.LATEST_VERSION_ENDPOINT);
|
DontDestroyOnLoad(gameObject);
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
if (!loadingDone) {
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
loadingDone = true;
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
await GetLatestVersion();
|
||||||
await request.SendWebRequest();
|
await GetRandomSplashes();
|
||||||
latestVersion = request.downloadHandler.text ?? "-1";
|
|
||||||
if (
|
|
||||||
SceneManager.GetActiveScene().name == "MainMenu" &&
|
|
||||||
latestVersion != "-1" &&
|
|
||||||
GameObject.Find("Canvas/LatestVersionText").TryGetComponent<TextMeshProUGUI>(out var text)
|
|
||||||
) {
|
|
||||||
text.text = "Latest: v" + latestVersion ?? "N/A";
|
|
||||||
text.transform.GetChild(0).gameObject.SetActive(latestVersion != Application.version);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async static Task GetRandomSplashes() {
|
private async static Task GetLatestVersion() {
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.RANDOM_SPLASHES_ENDPOINT);
|
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.LATEST_VERSION_ENDPOINT);
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
randomSplashes = JsonConvert.DeserializeObject<List<SplashEntry>>(request.downloadHandler.text);
|
latestVersion = request.downloadHandler.text ?? "-1";
|
||||||
if (
|
if (
|
||||||
SceneManager.GetActiveScene().name == "MainMenu" &&
|
SceneManager.GetActiveScene().name == "MainMenu" &&
|
||||||
randomSplashes != null &&
|
latestVersion != "-1" &&
|
||||||
GameObject.Find("Canvas/SplashText").TryGetComponent<TextMeshProUGUI>(out var splashText) &&
|
GameObject.Find("Canvas/LatestVersionText").TryGetComponent<TextMeshProUGUI>(out var text)
|
||||||
randomSplashes.Count != 0
|
) {
|
||||||
) MainMenu.DoSplashText(splashText, randomSplashes[Random.Range(0, randomSplashes.Count)]);
|
text.text = "Latest: v" + latestVersion ?? "N/A";
|
||||||
|
text.transform.GetChild(0).gameObject.SetActive(latestVersion != Application.version);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async static Task GetRandomSplashes() {
|
||||||
|
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.RANDOM_SPLASHES_ENDPOINT);
|
||||||
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
|
await request.SendWebRequest();
|
||||||
|
randomSplashes = JsonConvert.DeserializeObject<List<SplashEntry>>(request.downloadHandler.text);
|
||||||
|
if (
|
||||||
|
SceneManager.GetActiveScene().name == "MainMenu" &&
|
||||||
|
randomSplashes != null &&
|
||||||
|
GameObject.Find("Canvas/SplashText").TryGetComponent<TextMeshProUGUI>(out var splashText) &&
|
||||||
|
randomSplashes.Count != 0
|
||||||
|
) MainMenu.DoSplashText(splashText, randomSplashes[Random.Range(0, randomSplashes.Count)]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+301
-301
@@ -10,336 +10,336 @@ using UnityEngine.Networking;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class ProfileMenu : MonoBehaviour {
|
public class ProfileMenu : MonoBehaviour {
|
||||||
[SerializeField] private Button exitButton;
|
[SerializeField] private Button exitButton;
|
||||||
[SerializeField] private Button refreshButton;
|
[SerializeField] private Button refreshButton;
|
||||||
[SerializeField] private Button postButton;
|
[SerializeField] private Button postButton;
|
||||||
|
|
||||||
[SerializeField] private GameObject contentPanel;
|
[SerializeField] private GameObject contentPanel;
|
||||||
[SerializeField] private TMP_Text loadingText;
|
[SerializeField] private TMP_Text loadingText;
|
||||||
[SerializeField] private GameObject voteOverlay;
|
[SerializeField] private GameObject voteOverlay;
|
||||||
[SerializeField] private GameObject postOverlay;
|
[SerializeField] private GameObject postOverlay;
|
||||||
|
|
||||||
[SerializeField] private TMP_Text normalBerryStat;
|
[SerializeField] private TMP_Text normalBerryStat;
|
||||||
[SerializeField] private TMP_Text poisonBerryStat;
|
[SerializeField] private TMP_Text poisonBerryStat;
|
||||||
[SerializeField] private TMP_Text slowBerryStat;
|
[SerializeField] private TMP_Text slowBerryStat;
|
||||||
[SerializeField] private TMP_Text ultraBerryStat;
|
[SerializeField] private TMP_Text ultraBerryStat;
|
||||||
[SerializeField] private TMP_Text speedyBerryStat;
|
[SerializeField] private TMP_Text speedyBerryStat;
|
||||||
[SerializeField] private TMP_Text coinBerryStat;
|
[SerializeField] private TMP_Text coinBerryStat;
|
||||||
[SerializeField] private TMP_Text randomBerryStat;
|
[SerializeField] private TMP_Text randomBerryStat;
|
||||||
[SerializeField] private TMP_Text antiBerryStat;
|
[SerializeField] private TMP_Text antiBerryStat;
|
||||||
[SerializeField] private TMP_Text goldenBerryStat;
|
[SerializeField] private TMP_Text goldenBerryStat;
|
||||||
[SerializeField] private TMP_Text coinStat;
|
[SerializeField] private TMP_Text coinStat;
|
||||||
[SerializeField] private TMP_Text playerLevelAndXPStat;
|
[SerializeField] private TMP_Text playerLevelAndXPStat;
|
||||||
[SerializeField] private TMP_Text playerNameText;
|
[SerializeField] private TMP_Text playerNameText;
|
||||||
[SerializeField] private Image playerIconImage;
|
[SerializeField] private Image playerIconImage;
|
||||||
[SerializeField] private Image playerOverlayImage;
|
[SerializeField] private Image playerOverlayImage;
|
||||||
[SerializeField] private GameObject postSample;
|
[SerializeField] private GameObject postSample;
|
||||||
|
|
||||||
[SerializeField] private bool canVote = true;
|
[SerializeField] private bool canVote = true;
|
||||||
|
|
||||||
private GameObject popupObject;
|
private GameObject popupObject;
|
||||||
|
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
exitButton.onClick.AddListener(() => Destroy(gameObject));
|
exitButton.onClick.AddListener(() => Destroy(gameObject));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task Init(
|
||||||
|
string normalBerries,
|
||||||
|
string poisonBerries,
|
||||||
|
string slowBerries,
|
||||||
|
string ultraBerries,
|
||||||
|
string speedyBerries,
|
||||||
|
string coinBerries,
|
||||||
|
string randomBerries,
|
||||||
|
string antiBerries,
|
||||||
|
string goldenBerries,
|
||||||
|
string coins,
|
||||||
|
string playerName,
|
||||||
|
BigInteger playerID,
|
||||||
|
int? playerIcon,
|
||||||
|
int? playerOverlay,
|
||||||
|
Color playerIconColor,
|
||||||
|
Color playerOverlayColor,
|
||||||
|
string customIcon
|
||||||
|
) {
|
||||||
|
var xp = Tools.CalculateXP(BigInteger.Parse(normalBerries), BigInteger.Parse(poisonBerries), BigInteger.Parse(slowBerries), BigInteger.Parse(ultraBerries), BigInteger.Parse(speedyBerries), BigInteger.Parse(coinBerries), BigInteger.Parse(randomBerries), BigInteger.Parse(antiBerries), BigInteger.Parse(goldenBerries));
|
||||||
|
var level = Tools.GetLevelInfo(xp).level;
|
||||||
|
|
||||||
|
normalBerryStat.text = Tools.FormatWithCommas(normalBerries);
|
||||||
|
poisonBerryStat.text = Tools.FormatWithCommas(poisonBerries);
|
||||||
|
slowBerryStat.text = Tools.FormatWithCommas(slowBerries);
|
||||||
|
ultraBerryStat.text = Tools.FormatWithCommas(ultraBerries);
|
||||||
|
speedyBerryStat.text = Tools.FormatWithCommas(speedyBerries);
|
||||||
|
coinBerryStat.text = Tools.FormatWithCommas(coinBerries);
|
||||||
|
randomBerryStat.text = Tools.FormatWithCommas(randomBerries);
|
||||||
|
antiBerryStat.text = Tools.FormatWithCommas(antiBerries);
|
||||||
|
goldenBerryStat.text = Tools.FormatWithCommas(goldenBerries);
|
||||||
|
coinStat.text = Tools.FormatWithCommas(coins);
|
||||||
|
playerLevelAndXPStat.text = $"Level: {Tools.FormatWithCommas((BigInteger)level)}\nXP: {Tools.FormatWithCommas(xp)}";
|
||||||
|
playerNameText.text = playerName;
|
||||||
|
|
||||||
|
if (customIcon == null) {
|
||||||
|
playerIconImage.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + playerIcon);
|
||||||
|
if (playerIcon == 1) playerIconImage.sprite = Tools.GetIconForUser(playerID);
|
||||||
|
playerOverlayImage.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + playerOverlay);
|
||||||
|
if (playerOverlay != 0) playerOverlayImage.gameObject.SetActive(true);
|
||||||
|
if (playerOverlay == 8) playerOverlayImage.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
|
||||||
|
else if (playerOverlay == 11) playerOverlayImage.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
|
||||||
|
else if (playerOverlay == 13) playerOverlayImage.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
|
||||||
|
playerIconImage.color = playerIconColor;
|
||||||
|
playerOverlayImage.color = playerOverlayColor;
|
||||||
|
} else {
|
||||||
|
var waitingForCustomIcon = playerIconImage.gameObject.AddComponent<WaitingForCustomIcon>();
|
||||||
|
waitingForCustomIcon.ID = customIcon;
|
||||||
|
CustomIconLoader.Init(new[] { waitingForCustomIcon });
|
||||||
|
}
|
||||||
|
if (BazookaManager.Instance.GetAccountID() == playerID) {
|
||||||
|
postButton.gameObject.SetActive(true);
|
||||||
|
postButton.onClick.AddListener(UploadPostPopup);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Init(
|
contentPanel.SetActive(true);
|
||||||
string normalBerries,
|
loadingText.gameObject.SetActive(false);
|
||||||
string poisonBerries,
|
|
||||||
string slowBerries,
|
|
||||||
string ultraBerries,
|
|
||||||
string speedyBerries,
|
|
||||||
string coinBerries,
|
|
||||||
string randomBerries,
|
|
||||||
string antiBerries,
|
|
||||||
string goldenBerries,
|
|
||||||
string coins,
|
|
||||||
string playerName,
|
|
||||||
BigInteger playerID,
|
|
||||||
int? playerIcon,
|
|
||||||
int? playerOverlay,
|
|
||||||
Color playerIconColor,
|
|
||||||
Color playerOverlayColor,
|
|
||||||
string customIcon
|
|
||||||
) {
|
|
||||||
var xp = Tools.CalculateXP(BigInteger.Parse(normalBerries), BigInteger.Parse(poisonBerries), BigInteger.Parse(slowBerries), BigInteger.Parse(ultraBerries), BigInteger.Parse(speedyBerries), BigInteger.Parse(coinBerries), BigInteger.Parse(randomBerries), BigInteger.Parse(antiBerries), BigInteger.Parse(goldenBerries));
|
|
||||||
var level = Tools.GetLevelInfo(xp).level;
|
|
||||||
|
|
||||||
normalBerryStat.text = Tools.FormatWithCommas(normalBerries);
|
Tools.RefreshHierarchy(gameObject);
|
||||||
poisonBerryStat.text = Tools.FormatWithCommas(poisonBerries);
|
refreshButton.onClick.AddListener(async () => await RefreshPosts(playerID, playerName));
|
||||||
slowBerryStat.text = Tools.FormatWithCommas(slowBerries);
|
await RefreshPosts(playerID, playerName);
|
||||||
ultraBerryStat.text = Tools.FormatWithCommas(ultraBerries);
|
}
|
||||||
speedyBerryStat.text = Tools.FormatWithCommas(speedyBerries);
|
|
||||||
coinBerryStat.text = Tools.FormatWithCommas(coinBerries);
|
|
||||||
randomBerryStat.text = Tools.FormatWithCommas(randomBerries);
|
|
||||||
antiBerryStat.text = Tools.FormatWithCommas(antiBerries);
|
|
||||||
goldenBerryStat.text = Tools.FormatWithCommas(goldenBerries);
|
|
||||||
coinStat.text = Tools.FormatWithCommas(coins);
|
|
||||||
playerLevelAndXPStat.text = $"Level: {Tools.FormatWithCommas((BigInteger)level)}\nXP: {Tools.FormatWithCommas(xp)}";
|
|
||||||
playerNameText.text = playerName;
|
|
||||||
|
|
||||||
if (customIcon == null) {
|
public async Task Init(BigInteger playerID) {
|
||||||
playerIconImage.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + playerIcon);
|
if (BazookaManager.Instance.GetAccountID() == playerID) { await Init(); return; }
|
||||||
if (playerIcon == 1) playerIconImage.sprite = Tools.GetIconForUser(playerID);
|
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.BD_ACCOUNT_ENDPOINT + "?id=" + playerID.ToString() + "&exact=true");
|
||||||
playerOverlayImage.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + playerOverlay);
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
if (playerOverlay != 0) playerOverlayImage.gameObject.SetActive(true);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
if (playerOverlay == 8) playerOverlayImage.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f);
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
else if (playerOverlay == 11) playerOverlayImage.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f);
|
await request.SendWebRequest();
|
||||||
else if (playerOverlay == 13) playerOverlayImage.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f);
|
if (request.downloadHandler.text == null) {
|
||||||
playerIconImage.color = playerIconColor;
|
Destroy(gameObject);
|
||||||
playerOverlayImage.color = playerOverlayColor;
|
return;
|
||||||
} else {
|
|
||||||
var waitingForCustomIcon = playerIconImage.gameObject.AddComponent<WaitingForCustomIcon>();
|
|
||||||
waitingForCustomIcon.ID = customIcon;
|
|
||||||
CustomIconLoader.Init(new[] { waitingForCustomIcon });
|
|
||||||
}
|
|
||||||
if (BazookaManager.Instance.GetAccountID() == playerID) {
|
|
||||||
postButton.gameObject.SetActive(true);
|
|
||||||
postButton.onClick.AddListener(UploadPostPopup);
|
|
||||||
}
|
|
||||||
|
|
||||||
contentPanel.SetActive(true);
|
|
||||||
loadingText.gameObject.SetActive(false);
|
|
||||||
|
|
||||||
Tools.RefreshHierarchy(gameObject);
|
|
||||||
refreshButton.onClick.AddListener(async () => await RefreshPosts(playerID, playerName));
|
|
||||||
await RefreshPosts(playerID, playerName);
|
|
||||||
}
|
}
|
||||||
|
string response = request.downloadHandler.text;
|
||||||
|
try {
|
||||||
|
var jsonResponse = JObject.Parse(response);
|
||||||
|
if ((bool)jsonResponse["success"]) {
|
||||||
|
|
||||||
public async Task Init(BigInteger playerID) {
|
var data = jsonResponse["data"].ToObject<Account>();
|
||||||
if (BazookaManager.Instance.GetAccountID() == playerID) { await Init(); return; }
|
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.BD_ACCOUNT_ENDPOINT + "?id=" + playerID.ToString() + "&exact=true");
|
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
|
||||||
await request.SendWebRequest();
|
|
||||||
if (request.downloadHandler.text == null) {
|
|
||||||
Destroy(gameObject);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string response = request.downloadHandler.text;
|
|
||||||
try {
|
|
||||||
var jsonResponse = JObject.Parse(response);
|
|
||||||
if ((bool)jsonResponse["success"]) {
|
|
||||||
|
|
||||||
var data = jsonResponse["data"].ToObject<Account>();
|
var iconColorArray = data.BirdColor;
|
||||||
|
var overlayColorArray = data.OverlayColor;
|
||||||
var iconColorArray = data.BirdColor;
|
var iconColor = new Color(iconColorArray[0] / 255f, iconColorArray[1] / 255f, iconColorArray[2] / 255f);
|
||||||
var overlayColorArray = data.OverlayColor;
|
var overlayColor = new Color(overlayColorArray[0] / 255f, overlayColorArray[1] / 255f, overlayColorArray[2] / 255f);
|
||||||
var iconColor = new Color(iconColorArray[0] / 255f, iconColorArray[1] / 255f, iconColorArray[2] / 255f);
|
|
||||||
var overlayColor = new Color(overlayColorArray[0] / 255f, overlayColorArray[1] / 255f, overlayColorArray[2] / 255f);
|
|
||||||
await Init(
|
|
||||||
data.Stats.TotalNormalBerries.ToString(),
|
|
||||||
data.Stats.TotalPoisonBerries.ToString(),
|
|
||||||
data.Stats.TotalSlowBerries.ToString(),
|
|
||||||
data.Stats.TotalUltraBerries.ToString(),
|
|
||||||
data.Stats.TotalSpeedyBerries.ToString(),
|
|
||||||
data.Stats.TotalCoinBerries.ToString(),
|
|
||||||
data.Stats.TotalRandomBerries.ToString(),
|
|
||||||
data.Stats.TotalAntiBerries.ToString(),
|
|
||||||
data.Stats.TotalGoldenBerries.ToString(),
|
|
||||||
data.Stats.Coins.ToString(),
|
|
||||||
data.Username,
|
|
||||||
playerID,
|
|
||||||
data.Icon,
|
|
||||||
data.Overlay,
|
|
||||||
iconColor,
|
|
||||||
overlayColor,
|
|
||||||
data.CustomIcon
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
Destroy(gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
Destroy(gameObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task Init() {
|
|
||||||
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
|
|
||||||
var iconColor = customIconData.Selected == null ? BazookaManager.Instance.GetColorSettingIcon() : null;
|
|
||||||
var overlayColor = customIconData.Selected == null ? BazookaManager.Instance.GetColorSettingOverlay() : null;
|
|
||||||
await Init(
|
await Init(
|
||||||
BazookaManager.Instance.GetGameStoreTotalNormalBerries().ToString(),
|
data.Stats.TotalNormalBerries.ToString(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalPoisonBerries().ToString(),
|
data.Stats.TotalPoisonBerries.ToString(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalSlowBerries().ToString(),
|
data.Stats.TotalSlowBerries.ToString(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalUltraBerries().ToString(),
|
data.Stats.TotalUltraBerries.ToString(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalSpeedyBerries().ToString(),
|
data.Stats.TotalSpeedyBerries.ToString(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalCoinBerries().ToString(),
|
data.Stats.TotalCoinBerries.ToString(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalRandomBerries().ToString(),
|
data.Stats.TotalRandomBerries.ToString(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalAntiBerries().ToString(),
|
data.Stats.TotalAntiBerries.ToString(),
|
||||||
BazookaManager.Instance.GetGameStoreTotalGoldenBerries().ToString(),
|
data.Stats.TotalGoldenBerries.ToString(),
|
||||||
customIconData.Balance.ToString(),
|
data.Stats.Coins.ToString(),
|
||||||
BazookaManager.Instance.GetAccountName().ToString(),
|
data.Username,
|
||||||
BazookaManager.Instance.GetAccountID() ?? 0,
|
playerID,
|
||||||
customIconData.Selected == null ? BazookaManager.Instance.GetBirdIcon() : null,
|
data.Icon,
|
||||||
customIconData.Selected == null ? BazookaManager.Instance.GetBirdOverlay() : null,
|
data.Overlay,
|
||||||
customIconData.Selected == null ? new Color((int)iconColor[0] / 255f, (int)iconColor[1] / 255f, (int)iconColor[2] / 255f) : Color.white,
|
iconColor,
|
||||||
customIconData.Selected == null ? new Color((int)overlayColor[0] / 255f, (int)overlayColor[1] / 255f, (int)overlayColor[2] / 255f) : Color.white,
|
overlayColor,
|
||||||
customIconData.Selected
|
data.CustomIcon
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch {
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async Task RefreshPosts(BigInteger playerID, string playerName) {
|
public async Task Init() {
|
||||||
exitButton.interactable = false;
|
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
|
||||||
refreshButton.interactable = false;
|
var iconColor = customIconData.Selected == null ? BazookaManager.Instance.GetColorSettingIcon() : null;
|
||||||
postButton.interactable = false;
|
var overlayColor = customIconData.Selected == null ? BazookaManager.Instance.GetColorSettingOverlay() : null;
|
||||||
foreach (Transform post in postSample.transform.parent) {
|
await Init(
|
||||||
if (post.gameObject.activeSelf) {
|
BazookaManager.Instance.GetGameStoreTotalNormalBerries().ToString(),
|
||||||
Destroy(post.gameObject);
|
BazookaManager.Instance.GetGameStoreTotalPoisonBerries().ToString(),
|
||||||
}
|
BazookaManager.Instance.GetGameStoreTotalSlowBerries().ToString(),
|
||||||
|
BazookaManager.Instance.GetGameStoreTotalUltraBerries().ToString(),
|
||||||
|
BazookaManager.Instance.GetGameStoreTotalSpeedyBerries().ToString(),
|
||||||
|
BazookaManager.Instance.GetGameStoreTotalCoinBerries().ToString(),
|
||||||
|
BazookaManager.Instance.GetGameStoreTotalRandomBerries().ToString(),
|
||||||
|
BazookaManager.Instance.GetGameStoreTotalAntiBerries().ToString(),
|
||||||
|
BazookaManager.Instance.GetGameStoreTotalGoldenBerries().ToString(),
|
||||||
|
customIconData.Balance.ToString(),
|
||||||
|
BazookaManager.Instance.GetAccountName().ToString(),
|
||||||
|
BazookaManager.Instance.GetAccountID() ?? 0,
|
||||||
|
customIconData.Selected == null ? BazookaManager.Instance.GetBirdIcon() : null,
|
||||||
|
customIconData.Selected == null ? BazookaManager.Instance.GetBirdOverlay() : null,
|
||||||
|
customIconData.Selected == null ? new Color((int)iconColor[0] / 255f, (int)iconColor[1] / 255f, (int)iconColor[2] / 255f) : Color.white,
|
||||||
|
customIconData.Selected == null ? new Color((int)overlayColor[0] / 255f, (int)overlayColor[1] / 255f, (int)overlayColor[2] / 255f) : Color.white,
|
||||||
|
customIconData.Selected
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async Task RefreshPosts(BigInteger playerID, string playerName) {
|
||||||
|
exitButton.interactable = false;
|
||||||
|
refreshButton.interactable = false;
|
||||||
|
postButton.interactable = false;
|
||||||
|
foreach (Transform post in postSample.transform.parent) {
|
||||||
|
if (post.gameObject.activeSelf) {
|
||||||
|
Destroy(post.gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.PROFILE_POSTS_ENDPOINT + "?userId=" + playerID.ToString());
|
||||||
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
|
await request.SendWebRequest();
|
||||||
|
if (request.downloadHandler.text == null) {
|
||||||
|
exitButton.interactable = true;
|
||||||
|
refreshButton.interactable = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string response = request.downloadHandler.text;
|
||||||
|
var posts = JArray.Parse(response).ToObject<ProfileMessageResponse[]>();
|
||||||
|
foreach (var post in posts) {
|
||||||
|
var entry = Instantiate(postSample, postSample.transform.parent);
|
||||||
|
var entryUsername = entry.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||||
|
var entryLikesParent = entry.transform.GetChild(1);
|
||||||
|
var entryLikesTexture = entryLikesParent.GetChild(1).GetComponent<TMP_Text>();
|
||||||
|
var entryLikesButton = entryLikesParent.GetChild(1).GetComponent<Button>();
|
||||||
|
var entryLikesCount = entryLikesParent.GetChild(2).GetComponent<TMP_Text>();
|
||||||
|
var entryMessage = entry.transform.GetChild(2).GetComponent<TMP_Text>();
|
||||||
|
var entryTimestamp = entry.transform.GetChild(3).GetComponent<TMP_Text>();
|
||||||
|
var entryDeleteButton = entryLikesParent.GetChild(0).GetComponent<Button>();
|
||||||
|
|
||||||
|
entryUsername.text = playerName;
|
||||||
|
entryLikesTexture.text = post.Likes < 0 ? "\\uf165" : "\\uf164";
|
||||||
|
entryLikesTexture.color = post.Likes < 0 ? new Color(1f, 0f, 0.5f) : new Color(1f, 1f, 0f);
|
||||||
|
entryLikesCount.text = Tools.FormatWithCommas(post.Likes);
|
||||||
|
entryLikesButton.onClick.AddListener(() => {
|
||||||
|
if (canVote && BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountID() != playerID) {
|
||||||
|
var likedPosts = BazookaManager.Instance
|
||||||
|
.GetLikedPosts()
|
||||||
|
.Select(x => x.ToString())
|
||||||
|
.ToList();
|
||||||
|
if (!likedPosts.Any(x => x.ToString() == post.ID.ToString())) VotePost(post.ID, entryLikesCount, entryLikesTexture);
|
||||||
}
|
}
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.PROFILE_POSTS_ENDPOINT + "?userId=" + playerID.ToString());
|
});
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
entryMessage.text = post.Content;
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
entryTimestamp.text = post.Timestamp.ToString();
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
if (BazookaManager.Instance.GetAccountID() == playerID) {
|
||||||
await request.SendWebRequest();
|
entryDeleteButton.gameObject.SetActive(true);
|
||||||
if (request.downloadHandler.text == null) {
|
entryDeleteButton.onClick.AddListener(async () => await DeletePost(entry, post.ID));
|
||||||
exitButton.interactable = true;
|
}
|
||||||
refreshButton.interactable = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
string response = request.downloadHandler.text;
|
|
||||||
var posts = JArray.Parse(response).ToObject<ProfileMessageResponse[]>();
|
|
||||||
foreach (var post in posts) {
|
|
||||||
var entry = Instantiate(postSample, postSample.transform.parent);
|
|
||||||
var entryUsername = entry.transform.GetChild(0).GetComponent<TMP_Text>();
|
|
||||||
var entryLikesParent = entry.transform.GetChild(1);
|
|
||||||
var entryLikesTexture = entryLikesParent.GetChild(1).GetComponent<TMP_Text>();
|
|
||||||
var entryLikesButton = entryLikesParent.GetChild(1).GetComponent<Button>();
|
|
||||||
var entryLikesCount = entryLikesParent.GetChild(2).GetComponent<TMP_Text>();
|
|
||||||
var entryMessage = entry.transform.GetChild(2).GetComponent<TMP_Text>();
|
|
||||||
var entryTimestamp = entry.transform.GetChild(3).GetComponent<TMP_Text>();
|
|
||||||
var entryDeleteButton = entryLikesParent.GetChild(0).GetComponent<Button>();
|
|
||||||
|
|
||||||
entryUsername.text = playerName;
|
entry.name = "PostEntry_" + post.ID;
|
||||||
entryLikesTexture.text = post.Likes < 0 ? "\\uf165" : "\\uf164";
|
entry.SetActive(true);
|
||||||
entryLikesTexture.color = post.Likes < 0 ? new Color(1f, 0f, 0.5f) : new Color(1f, 1f, 0f);
|
|
||||||
entryLikesCount.text = Tools.FormatWithCommas(post.Likes);
|
|
||||||
entryLikesButton.onClick.AddListener(() => {
|
|
||||||
if (canVote && BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountID() != playerID) {
|
|
||||||
var likedPosts = BazookaManager.Instance
|
|
||||||
.GetLikedPosts()
|
|
||||||
.Select(x => x.ToString())
|
|
||||||
.ToList();
|
|
||||||
if (!likedPosts.Any(x => x.ToString() == post.ID.ToString())) VotePost(post.ID, entryLikesCount, entryLikesTexture);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
entryMessage.text = post.Content;
|
|
||||||
entryTimestamp.text = post.Timestamp.ToString();
|
|
||||||
if (BazookaManager.Instance.GetAccountID() == playerID) {
|
|
||||||
entryDeleteButton.gameObject.SetActive(true);
|
|
||||||
entryDeleteButton.onClick.AddListener(async () => await DeletePost(entry, post.ID));
|
|
||||||
}
|
|
||||||
|
|
||||||
entry.name = "PostEntry_" + post.ID;
|
Tools.RefreshHierarchy(entry);
|
||||||
entry.SetActive(true);
|
|
||||||
|
|
||||||
Tools.RefreshHierarchy(entry);
|
|
||||||
}
|
|
||||||
exitButton.interactable = true;
|
|
||||||
refreshButton.interactable = true;
|
|
||||||
postButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
exitButton.interactable = true;
|
||||||
|
refreshButton.interactable = true;
|
||||||
|
postButton.interactable = true;
|
||||||
|
}
|
||||||
|
|
||||||
void VotePost(BigInteger postId, TMP_Text entryLikesCount, TMP_Text entryLikesTexture) {
|
void VotePost(BigInteger postId, TMP_Text entryLikesCount, TMP_Text entryLikesTexture) {
|
||||||
var popup = Instantiate(voteOverlay, voteOverlay.transform.parent);
|
var popup = Instantiate(voteOverlay, voteOverlay.transform.parent);
|
||||||
popupObject = popup;
|
popupObject = popup;
|
||||||
popup.SetActive(true);
|
popup.SetActive(true);
|
||||||
var exitButton = popup.transform.GetChild(0).GetChild(0).GetComponent<Button>();
|
var exitButton = popup.transform.GetChild(0).GetChild(0).GetComponent<Button>();
|
||||||
var likeButton = popup.transform.GetChild(0).GetChild(2).GetComponent<Button>();
|
var likeButton = popup.transform.GetChild(0).GetChild(2).GetComponent<Button>();
|
||||||
var dislikeButton = popup.transform.GetChild(0).GetChild(3).GetComponent<Button>();
|
var dislikeButton = popup.transform.GetChild(0).GetChild(3).GetComponent<Button>();
|
||||||
exitButton.onClick.AddListener(() => Destroy(popup));
|
exitButton.onClick.AddListener(() => Destroy(popup));
|
||||||
likeButton.onClick.AddListener(async () => {
|
likeButton.onClick.AddListener(async () => {
|
||||||
canVote = false;
|
canVote = false;
|
||||||
popupObject = null;
|
popupObject = null;
|
||||||
Destroy(popup);
|
Destroy(popup);
|
||||||
await SendPostVote(postId, true, entryLikesCount, entryLikesTexture);
|
await SendPostVote(postId, true, entryLikesCount, entryLikesTexture);
|
||||||
canVote = true;
|
canVote = true;
|
||||||
});
|
});
|
||||||
dislikeButton.onClick.AddListener(async () => {
|
dislikeButton.onClick.AddListener(async () => {
|
||||||
canVote = false;
|
canVote = false;
|
||||||
popupObject = null;
|
popupObject = null;
|
||||||
Destroy(popup);
|
Destroy(popup);
|
||||||
await SendPostVote(postId, false, entryLikesCount, entryLikesTexture);
|
await SendPostVote(postId, false, entryLikesCount, entryLikesTexture);
|
||||||
canVote = true;
|
canVote = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async Task SendPostVote(BigInteger postId, bool liked, TMP_Text entryLikesCount, TMP_Text entryLikesTexture) {
|
async Task SendPostVote(BigInteger postId, bool liked, TMP_Text entryLikesCount, TMP_Text entryLikesTexture) {
|
||||||
using UnityWebRequest request = UnityWebRequest.Put(Endpoints.PROFILE_POSTS_ENDPOINT + $"?id={postId}&liked={liked}", new WWWForm().data);
|
using UnityWebRequest request = UnityWebRequest.Put(Endpoints.PROFILE_POSTS_ENDPOINT + $"?id={postId}&liked={liked}", new WWWForm().data);
|
||||||
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
if (request.downloadHandler.text == null) return;
|
if (request.downloadHandler.text == null) return;
|
||||||
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
if ((bool)jsonResponse["success"]) {
|
if ((bool)jsonResponse["success"]) {
|
||||||
BigInteger likes = BigInteger.Parse((string)jsonResponse["data"]["likes"]);
|
BigInteger likes = BigInteger.Parse((string)jsonResponse["data"]["likes"]);
|
||||||
entryLikesCount.text = Tools.FormatWithCommas(likes);
|
entryLikesCount.text = Tools.FormatWithCommas(likes);
|
||||||
entryLikesTexture.text = likes < 0 ? "\\uf165" : "\\uf164";
|
entryLikesTexture.text = likes < 0 ? "\\uf165" : "\\uf164";
|
||||||
entryLikesTexture.color = likes < 0 ? new Color(1f, 0f, 0.5f) : new Color(1f, 1f, 0f);
|
entryLikesTexture.color = likes < 0 ? new Color(1f, 0f, 0.5f) : new Color(1f, 1f, 0f);
|
||||||
var likedPosts = BazookaManager.Instance.GetLikedPosts();
|
var likedPosts = BazookaManager.Instance.GetLikedPosts();
|
||||||
likedPosts.Add(postId.ToString());
|
likedPosts.Add(postId.ToString());
|
||||||
BazookaManager.Instance.SetLikedPosts(likedPosts);
|
BazookaManager.Instance.SetLikedPosts(likedPosts);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void UploadPostPopup() {
|
void UploadPostPopup() {
|
||||||
var popup = Instantiate(postOverlay, postOverlay.transform.parent);
|
var popup = Instantiate(postOverlay, postOverlay.transform.parent);
|
||||||
popupObject = popup;
|
popupObject = popup;
|
||||||
popup.SetActive(true);
|
popup.SetActive(true);
|
||||||
var inputBox = popup.transform.GetChild(0).GetChild(1).GetComponent<TMP_InputField>();
|
var inputBox = popup.transform.GetChild(0).GetChild(1).GetComponent<TMP_InputField>();
|
||||||
inputBox.onSelect.AddListener((_) => inputBox.caretPosition = inputBox.text.Length);
|
inputBox.onSelect.AddListener((_) => inputBox.caretPosition = inputBox.text.Length);
|
||||||
var cancelButton = popup.transform.GetChild(0).GetChild(2).GetComponent<Button>();
|
var cancelButton = popup.transform.GetChild(0).GetChild(2).GetComponent<Button>();
|
||||||
var submitButton = popup.transform.GetChild(0).GetChild(3).GetComponent<Button>();
|
var submitButton = popup.transform.GetChild(0).GetChild(3).GetComponent<Button>();
|
||||||
cancelButton.onClick.AddListener(() => {
|
cancelButton.onClick.AddListener(() => {
|
||||||
Destroy(popup);
|
Destroy(popup);
|
||||||
popupObject = null;
|
popupObject = null;
|
||||||
});
|
});
|
||||||
submitButton.onClick.AddListener(async () => {
|
submitButton.onClick.AddListener(async () => {
|
||||||
if (inputBox.text.Trim().Length == 0) return;
|
if (inputBox.text.Trim().Length == 0) return;
|
||||||
popupObject = null;
|
popupObject = null;
|
||||||
Destroy(popup);
|
Destroy(popup);
|
||||||
await UploadPost(inputBox.text);
|
await UploadPost(inputBox.text);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async Task UploadPost(string message) {
|
async Task UploadPost(string message) {
|
||||||
WWWForm dataForm = new();
|
WWWForm dataForm = new();
|
||||||
dataForm.AddField("content", message);
|
dataForm.AddField("content", message);
|
||||||
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.PROFILE_POSTS_ENDPOINT, dataForm);
|
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.PROFILE_POSTS_ENDPOINT, dataForm);
|
||||||
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
if (request.result == UnityWebRequest.Result.Success && request.responseCode == 200) {
|
if (request.result == UnityWebRequest.Result.Success && request.responseCode == 200) {
|
||||||
await RefreshPosts(BazookaManager.Instance.GetAccountID() ?? 0, BazookaManager.Instance.GetAccountName());
|
await RefreshPosts(BazookaManager.Instance.GetAccountID() ?? 0, BazookaManager.Instance.GetAccountName());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async Task DeletePost(GameObject entryObject, BigInteger targetId) {
|
async Task DeletePost(GameObject entryObject, BigInteger targetId) {
|
||||||
using UnityWebRequest request = UnityWebRequest.Delete(Endpoints.PROFILE_POSTS_ENDPOINT + "?id=" + targetId.ToString());
|
using UnityWebRequest request = UnityWebRequest.Delete(Endpoints.PROFILE_POSTS_ENDPOINT + "?id=" + targetId.ToString());
|
||||||
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
await request.SendWebRequest();
|
await request.SendWebRequest();
|
||||||
if (request.result == UnityWebRequest.Result.Success && request.responseCode == 200) {
|
if (request.result == UnityWebRequest.Result.Success && request.responseCode == 200) {
|
||||||
Destroy(entryObject);
|
Destroy(entryObject);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Update() {
|
void Update() {
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
|
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
|
||||||
if (popupObject != null) {
|
if (popupObject != null) {
|
||||||
if (!canVote) canVote = true;
|
if (!canVote) canVote = true;
|
||||||
Destroy(popupObject);
|
Destroy(popupObject);
|
||||||
} else Destroy(gameObject);
|
} else Destroy(gameObject);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+113
-113
@@ -6,128 +6,128 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class SettingsMenu : MonoBehaviour {
|
public class SettingsMenu : MonoBehaviour {
|
||||||
[SerializeField] private GameObject settingsMenu;
|
[SerializeField] private GameObject settingsMenu;
|
||||||
[SerializeField] private ColorPanel colorMenu;
|
[SerializeField] private ColorPanel colorMenu;
|
||||||
[SerializeField] private Button toggleButton;
|
[SerializeField] private Button toggleButton;
|
||||||
|
|
||||||
[SerializeField] private Toggle setting1toggle;
|
[SerializeField] private Toggle setting1toggle;
|
||||||
[SerializeField] private Toggle setting2toggle;
|
[SerializeField] private Toggle setting2toggle;
|
||||||
[SerializeField] private Toggle setting3toggle;
|
[SerializeField] private Toggle setting3toggle;
|
||||||
[SerializeField] private Toggle setting4toggle;
|
[SerializeField] private Toggle setting4toggle;
|
||||||
[SerializeField] private Toggle setting5toggle;
|
[SerializeField] private Toggle setting5toggle;
|
||||||
[SerializeField] private Slider musicSlider;
|
[SerializeField] private Slider musicSlider;
|
||||||
[SerializeField] private Slider sfxSlider;
|
[SerializeField] private Slider sfxSlider;
|
||||||
[SerializeField] private GameObject settingsUI;
|
[SerializeField] private GameObject settingsUI;
|
||||||
|
|
||||||
[SerializeField] private Button switchColorTypeButton;
|
[SerializeField] private Button switchColorTypeButton;
|
||||||
[SerializeField] private int colorType = 0;
|
[SerializeField] private int colorType = 0;
|
||||||
[SerializeField] private bool colorCanSave = true;
|
[SerializeField] private bool colorCanSave = true;
|
||||||
|
|
||||||
private void Start() {
|
private void Start() {
|
||||||
colorMenu.Init(Color.white, Color.white);
|
colorMenu.Init(Color.white, Color.white);
|
||||||
colorMenu.OnColorChanged += color => {
|
colorMenu.OnColorChanged += color => {
|
||||||
if (!colorCanSave) return;
|
if (!colorCanSave) return;
|
||||||
|
|
||||||
if (colorType == 0) BazookaManager.Instance.SetColorSettingBackground(color);
|
if (colorType == 0) BazookaManager.Instance.SetColorSettingBackground(color);
|
||||||
else if (colorType == 1) BazookaManager.Instance.SetColorSettingMenuBackground(color);
|
else if (colorType == 1) BazookaManager.Instance.SetColorSettingMenuBackground(color);
|
||||||
else if (colorType == 2) BazookaManager.Instance.SetColorSettingButton(color);
|
else if (colorType == 2) BazookaManager.Instance.SetColorSettingButton(color);
|
||||||
else if (colorType == 3) BazookaManager.Instance.SetColorSettingButtonContent(color);
|
else if (colorType == 3) BazookaManager.Instance.SetColorSettingButtonContent(color);
|
||||||
else if (colorType == 4) BazookaManager.Instance.SetColorSettingText(color);
|
else if (colorType == 4) BazookaManager.Instance.SetColorSettingText(color);
|
||||||
|
|
||||||
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
|
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
|
||||||
};
|
};
|
||||||
toggleButton.onClick.AddListener(() => {
|
toggleButton.onClick.AddListener(() => {
|
||||||
settingsMenu.SetActive(!settingsMenu.activeSelf);
|
settingsMenu.SetActive(!settingsMenu.activeSelf);
|
||||||
colorMenu.gameObject.SetActive(!colorMenu.gameObject.activeSelf);
|
colorMenu.gameObject.SetActive(!colorMenu.gameObject.activeSelf);
|
||||||
toggleButton.transform.GetChild(0).GetComponent<TMP_Text>().text = settingsMenu.activeSelf ? "Colors" : "Settings";
|
toggleButton.transform.GetChild(0).GetComponent<TMP_Text>().text = settingsMenu.activeSelf ? "Colors" : "Settings";
|
||||||
SwitchColorType(4);
|
SwitchColorType(4);
|
||||||
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
|
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
|
||||||
});
|
});
|
||||||
switchColorTypeButton.onClick.AddListener(() => SwitchColorType());
|
switchColorTypeButton.onClick.AddListener(() => SwitchColorType());
|
||||||
|
|
||||||
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
|
||||||
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
|
||||||
if (!Application.isMobilePlatform) {
|
if (!Application.isMobilePlatform) {
|
||||||
setting1toggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
setting1toggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
|
||||||
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
|
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
|
||||||
setting3toggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
setting3toggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
|
||||||
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == true;
|
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == true;
|
||||||
setting5toggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
setting5toggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
setting1toggle.onValueChanged.AddListener(value => {
|
setting1toggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingFullScreen(value);
|
BazookaManager.Instance.SetSettingFullScreen(value);
|
||||||
var width = Display.main.systemWidth;
|
var width = Display.main.systemWidth;
|
||||||
var height = Display.main.systemHeight;
|
var height = Display.main.systemHeight;
|
||||||
Screen.SetResolution(width, height, value);
|
Screen.SetResolution(width, height, value);
|
||||||
});
|
});
|
||||||
setting3toggle.onValueChanged.AddListener(value => {
|
setting3toggle.onValueChanged.AddListener(value => {
|
||||||
BazookaManager.Instance.SetSettingVsync(value);
|
BazookaManager.Instance.SetSettingVsync(value);
|
||||||
QualitySettings.vSyncCount = value ? 1 : -1;
|
QualitySettings.vSyncCount = value ? 1 : -1;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
setting1toggle.gameObject.SetActive(false);
|
setting1toggle.gameObject.SetActive(false);
|
||||||
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
|
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
|
||||||
setting3toggle.gameObject.SetActive(false);
|
setting3toggle.gameObject.SetActive(false);
|
||||||
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == true;
|
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == true;
|
||||||
setting5toggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
setting5toggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
|
||||||
}
|
|
||||||
setting2toggle.onValueChanged.AddListener(value => {
|
|
||||||
BazookaManager.Instance.SetSettingShowFPS(value);
|
|
||||||
});
|
|
||||||
setting4toggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingHideSocials(value));
|
|
||||||
setting5toggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
|
||||||
musicSlider.onValueChanged.AddListener(value => {
|
|
||||||
BazookaManager.Instance.SetSettingMusicVolume(value);
|
|
||||||
MenuMusic.Instance.GetComponent<AudioSource>().volume = value;
|
|
||||||
});
|
|
||||||
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
|
||||||
Tools.RefreshHierarchy(setting1toggle.transform.parent.gameObject);
|
|
||||||
}
|
}
|
||||||
|
setting2toggle.onValueChanged.AddListener(value => {
|
||||||
|
BazookaManager.Instance.SetSettingShowFPS(value);
|
||||||
|
});
|
||||||
|
setting4toggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingHideSocials(value));
|
||||||
|
setting5toggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
|
||||||
|
musicSlider.onValueChanged.AddListener(value => {
|
||||||
|
BazookaManager.Instance.SetSettingMusicVolume(value);
|
||||||
|
MenuMusic.Instance.GetComponent<AudioSource>().volume = value;
|
||||||
|
});
|
||||||
|
sfxSlider.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingSFXVolume(value));
|
||||||
|
Tools.RefreshHierarchy(setting1toggle.transform.parent.gameObject);
|
||||||
|
}
|
||||||
|
|
||||||
void SwitchColorType(int color = -1) {
|
void SwitchColorType(int color = -1) {
|
||||||
var type = color == -1 ? colorType : color;
|
var type = color == -1 ? colorType : color;
|
||||||
var text = colorMenu.transform.GetChild(0).GetComponent<TMP_Text>();
|
var text = colorMenu.transform.GetChild(0).GetComponent<TMP_Text>();
|
||||||
var colorToSet = new JArray(255, 255, 255);
|
var colorToSet = new JArray(255, 255, 255);
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0: //IGBGColor
|
case 0: //IGBGColor
|
||||||
text.text = "Menu background color";
|
text.text = "Menu background color";
|
||||||
colorType = 1;
|
colorType = 1;
|
||||||
colorToSet = BazookaManager.Instance.GetColorSettingMenuBackground();
|
colorToSet = BazookaManager.Instance.GetColorSettingMenuBackground();
|
||||||
colorMenu.defaultColor = new(24f / 255f, 24f / 255f, 24f / 255f);
|
colorMenu.defaultColor = new(24f / 255f, 24f / 255f, 24f / 255f);
|
||||||
break;
|
break;
|
||||||
case 1: //MBGColor
|
case 1: //MBGColor
|
||||||
text.text = "Button color";
|
text.text = "Button color";
|
||||||
colorType = 2;
|
colorType = 2;
|
||||||
colorToSet = BazookaManager.Instance.GetColorSettingButton();
|
colorToSet = BazookaManager.Instance.GetColorSettingButton();
|
||||||
colorMenu.defaultColor = new(1f, 1f, 1f);
|
colorMenu.defaultColor = new(1f, 1f, 1f);
|
||||||
break;
|
break;
|
||||||
case 2: //BCColor
|
case 2: //BCColor
|
||||||
text.text = "Button content color";
|
text.text = "Button content color";
|
||||||
colorType = 3;
|
colorType = 3;
|
||||||
colorToSet = BazookaManager.Instance.GetColorSettingButtonContent();
|
colorToSet = BazookaManager.Instance.GetColorSettingButtonContent();
|
||||||
colorMenu.defaultColor = new(0f, 0f, 0f);
|
colorMenu.defaultColor = new(0f, 0f, 0f);
|
||||||
break;
|
break;
|
||||||
case 3: //TColor
|
case 3: //TColor
|
||||||
text.text = "Text color";
|
text.text = "Text color";
|
||||||
colorType = 4;
|
colorType = 4;
|
||||||
colorToSet = BazookaManager.Instance.GetColorSettingText();
|
colorToSet = BazookaManager.Instance.GetColorSettingText();
|
||||||
colorMenu.defaultColor = new(1f, 1f, 1f);
|
colorMenu.defaultColor = new(1f, 1f, 1f);
|
||||||
break;
|
break;
|
||||||
case 4: //IGColor
|
case 4: //IGColor
|
||||||
text.text = "In game background color";
|
text.text = "In game background color";
|
||||||
colorType = 0;
|
colorType = 0;
|
||||||
colorToSet = BazookaManager.Instance.GetColorSettingBackground();
|
colorToSet = BazookaManager.Instance.GetColorSettingBackground();
|
||||||
colorMenu.defaultColor = new(58f / 255f, 58f / 255f, 58f / 255f);
|
colorMenu.defaultColor = new(58f / 255f, 58f / 255f, 58f / 255f);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
colorCanSave = false;
|
|
||||||
colorMenu.SetColor(new Color((int)colorToSet[0] / 255f, (int)colorToSet[1] / 255f, (int)colorToSet[2] / 255f));
|
|
||||||
colorCanSave = true;
|
|
||||||
}
|
}
|
||||||
|
colorCanSave = false;
|
||||||
|
colorMenu.SetColor(new Color((int)colorToSet[0] / 255f, (int)colorToSet[1] / 255f, (int)colorToSet[2] / 255f));
|
||||||
|
colorCanSave = true;
|
||||||
|
}
|
||||||
|
|
||||||
async void Update() {
|
async void Update() {
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
|
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
|
||||||
if (colorMenu.gameObject.activeSelf) toggleButton.onClick.Invoke();
|
if (colorMenu.gameObject.activeSelf) toggleButton.onClick.Invoke();
|
||||||
else await SceneManager.LoadSceneAsync("MainMenu");
|
else await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+78
-78
@@ -6,91 +6,91 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class StatsMenu : MonoBehaviour {
|
public class StatsMenu : MonoBehaviour {
|
||||||
[SerializeField] private GameObject panel;
|
[SerializeField] private GameObject panel;
|
||||||
|
|
||||||
[SerializeField] private TMP_Text normalBerryStat;
|
[SerializeField] private TMP_Text normalBerryStat;
|
||||||
[SerializeField] private TMP_Text poisonBerryStat;
|
[SerializeField] private TMP_Text poisonBerryStat;
|
||||||
[SerializeField] private TMP_Text slowBerryStat;
|
[SerializeField] private TMP_Text slowBerryStat;
|
||||||
[SerializeField] private TMP_Text ultraBerryStat;
|
[SerializeField] private TMP_Text ultraBerryStat;
|
||||||
[SerializeField] private TMP_Text speedyBerryStat;
|
[SerializeField] private TMP_Text speedyBerryStat;
|
||||||
[SerializeField] private TMP_Text coinBerryStat;
|
[SerializeField] private TMP_Text coinBerryStat;
|
||||||
[SerializeField] private TMP_Text randomBerryStat;
|
[SerializeField] private TMP_Text randomBerryStat;
|
||||||
[SerializeField] private TMP_Text antiBerryStat;
|
[SerializeField] private TMP_Text antiBerryStat;
|
||||||
[SerializeField] private TMP_Text goldenBerryStat;
|
[SerializeField] private TMP_Text goldenBerryStat;
|
||||||
[SerializeField] private TMP_Text coinStat;
|
[SerializeField] private TMP_Text coinStat;
|
||||||
|
|
||||||
[SerializeField] private Image playerIcon;
|
[SerializeField] private Image playerIcon;
|
||||||
[SerializeField] private Image playerOverlay;
|
[SerializeField] private Image playerOverlay;
|
||||||
|
|
||||||
[SerializeField] private TMP_Text xpUsernameText;
|
[SerializeField] private TMP_Text xpUsernameText;
|
||||||
[SerializeField] private TMP_Text xpText;
|
[SerializeField] private TMP_Text xpText;
|
||||||
[SerializeField] private TMP_Text xpLevelText;
|
[SerializeField] private TMP_Text xpLevelText;
|
||||||
|
|
||||||
[SerializeField] private RectTransform progressFilledRect;
|
[SerializeField] private RectTransform progressFilledRect;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
normalBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalNormalBerries());
|
normalBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalNormalBerries());
|
||||||
poisonBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalPoisonBerries());
|
poisonBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalPoisonBerries());
|
||||||
slowBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalSlowBerries());
|
slowBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalSlowBerries());
|
||||||
ultraBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalUltraBerries());
|
ultraBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalUltraBerries());
|
||||||
speedyBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalSpeedyBerries());
|
speedyBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalSpeedyBerries());
|
||||||
coinBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalCoinBerries());
|
coinBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalCoinBerries());
|
||||||
randomBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalRandomBerries());
|
randomBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalRandomBerries());
|
||||||
antiBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalAntiBerries());
|
antiBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalAntiBerries());
|
||||||
goldenBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalGoldenBerries());
|
goldenBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalGoldenBerries());
|
||||||
coinStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance);
|
coinStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance);
|
||||||
|
|
||||||
var customIcon = BazookaManager.Instance.GetCustomBirdIconData().Selected;
|
var customIcon = BazookaManager.Instance.GetCustomBirdIconData().Selected;
|
||||||
if (customIcon == null) {
|
if (customIcon == null) {
|
||||||
int icon = BazookaManager.Instance.GetBirdIcon();
|
int icon = BazookaManager.Instance.GetBirdIcon();
|
||||||
int overlay = BazookaManager.Instance.GetBirdOverlay();
|
int overlay = BazookaManager.Instance.GetBirdOverlay();
|
||||||
var iconColor = BazookaManager.Instance.GetColorSettingIcon();
|
var iconColor = BazookaManager.Instance.GetColorSettingIcon();
|
||||||
var overlayColor = BazookaManager.Instance.GetColorSettingOverlay();
|
var overlayColor = BazookaManager.Instance.GetColorSettingOverlay();
|
||||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + icon);
|
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + icon);
|
||||||
if (icon == 1) playerIcon.sprite = Tools.GetIconForUser(BazookaManager.Instance.GetAccountID() ?? 0);
|
if (icon == 1) playerIcon.sprite = Tools.GetIconForUser(BazookaManager.Instance.GetAccountID() ?? 0);
|
||||||
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + overlay);
|
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + overlay);
|
||||||
if (overlay != 0) playerOverlay.gameObject.SetActive(true);
|
if (overlay != 0) playerOverlay.gameObject.SetActive(true);
|
||||||
if (overlay == 8) playerOverlay.rectTransform.localPosition = new Vector3(-27.6232f, 23.42824f, 0f);
|
if (overlay == 8) playerOverlay.rectTransform.localPosition = new Vector3(-27.6232f, 23.42824f, 0f);
|
||||||
else if (overlay == 11) playerOverlay.rectTransform.localPosition = new Vector3(-24.5611f, 32.250931f, 0f);
|
else if (overlay == 11) playerOverlay.rectTransform.localPosition = new Vector3(-24.5611f, 32.250931f, 0f);
|
||||||
else if (overlay == 13) playerOverlay.rectTransform.localPosition = new Vector3(-27.56624f, 23.25544f, 0f);
|
else if (overlay == 13) playerOverlay.rectTransform.localPosition = new Vector3(-27.56624f, 23.25544f, 0f);
|
||||||
try {
|
try {
|
||||||
playerIcon.color = new Color(
|
playerIcon.color = new Color(
|
||||||
int.Parse(iconColor[0].ToString()) / 255f,
|
int.Parse(iconColor[0].ToString()) / 255f,
|
||||||
int.Parse(iconColor[1].ToString()) / 255f,
|
int.Parse(iconColor[1].ToString()) / 255f,
|
||||||
int.Parse(iconColor[2].ToString()) / 255f
|
int.Parse(iconColor[2].ToString()) / 255f
|
||||||
);
|
);
|
||||||
playerOverlay.color = new Color(
|
playerOverlay.color = new Color(
|
||||||
int.Parse(overlayColor[0].ToString()) / 255f,
|
int.Parse(overlayColor[0].ToString()) / 255f,
|
||||||
int.Parse(overlayColor[1].ToString()) / 255f,
|
int.Parse(overlayColor[1].ToString()) / 255f,
|
||||||
int.Parse(overlayColor[2].ToString()) / 255f
|
int.Parse(overlayColor[2].ToString()) / 255f
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
playerIcon.color = Color.white;
|
playerIcon.color = Color.white;
|
||||||
playerOverlay.color = Color.white;
|
playerOverlay.color = Color.white;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
var waitingForCustomIcon = playerIcon.gameObject.AddComponent<WaitingForCustomIcon>();
|
var waitingForCustomIcon = playerIcon.gameObject.AddComponent<WaitingForCustomIcon>();
|
||||||
waitingForCustomIcon.ID = customIcon;
|
waitingForCustomIcon.ID = customIcon;
|
||||||
CustomIconLoader.Init(new[] { waitingForCustomIcon });
|
CustomIconLoader.Init(new[] { waitingForCustomIcon });
|
||||||
}
|
|
||||||
|
|
||||||
var (_, level, currentXpInLevel, totalXpForLevel, percentDone) = Tools.GetLevelInfo();
|
|
||||||
xpUsernameText.text = BazookaManager.Instance.GetAccountName() ?? "";
|
|
||||||
xpText.text = $"{Tools.FormatWithCommas(currentXpInLevel.ToString())}/{Tools.FormatWithCommas(totalXpForLevel.ToString())} xp";
|
|
||||||
xpLevelText.text = "Level " + Tools.FormatWithCommas(level.ToString());
|
|
||||||
SetXPProgressFilled((int)percentDone);
|
|
||||||
|
|
||||||
Tools.RefreshHierarchy(panel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async void Update() {
|
var (_, level, currentXpInLevel, totalXpForLevel, percentDone) = Tools.GetLevelInfo();
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame) await SceneManager.LoadSceneAsync("MainMenu");
|
xpUsernameText.text = BazookaManager.Instance.GetAccountName() ?? "";
|
||||||
}
|
xpText.text = $"{Tools.FormatWithCommas(currentXpInLevel.ToString())}/{Tools.FormatWithCommas(totalXpForLevel.ToString())} xp";
|
||||||
|
xpLevelText.text = "Level " + Tools.FormatWithCommas(level.ToString());
|
||||||
|
SetXPProgressFilled((int)percentDone);
|
||||||
|
|
||||||
void SetXPProgressFilled(int progress) {
|
Tools.RefreshHierarchy(panel);
|
||||||
int newProgress = Math.Clamp(progress, 0, 100);
|
}
|
||||||
progressFilledRect.sizeDelta = new Vector2(newProgress * 3, progressFilledRect.sizeDelta.y);
|
|
||||||
progressFilledRect.anchoredPosition = new Vector2((newProgress * 3 - 300f) * 0.5f, progressFilledRect.anchoredPosition.y);
|
async void Update() {
|
||||||
}
|
if (Keyboard.current.escapeKey.wasPressedThisFrame) await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetXPProgressFilled(int progress) {
|
||||||
|
int newProgress = Math.Clamp(progress, 0, 100);
|
||||||
|
progressFilledRect.sizeDelta = new Vector2(newProgress * 3, progressFilledRect.sizeDelta.y);
|
||||||
|
progressFilledRect.anchoredPosition = new Vector2((newProgress * 3 - 300f) * 0.5f, progressFilledRect.anchoredPosition.y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,35 +4,35 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class Account {
|
public class Account {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public BigInteger UserID { get; set; }
|
public BigInteger UserID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("username")]
|
[JsonProperty("username")]
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("icon")]
|
[JsonProperty("icon")]
|
||||||
public int Icon { get; set; }
|
public int Icon { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("overlay")]
|
[JsonProperty("overlay")]
|
||||||
public int Overlay { get; set; }
|
public int Overlay { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("birdColor")]
|
[JsonProperty("birdColor")]
|
||||||
public int[] BirdColor { get; set; }
|
public int[] BirdColor { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("overlayColor")]
|
[JsonProperty("overlayColor")]
|
||||||
public int[] OverlayColor { get; set; }
|
public int[] OverlayColor { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("customIcon")]
|
[JsonProperty("customIcon")]
|
||||||
public string CustomIcon { get; set; }
|
public string CustomIcon { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("stats")]
|
[JsonProperty("stats")]
|
||||||
public Stats Stats { get; set; }
|
public Stats Stats { get; set; }
|
||||||
}
|
}
|
||||||
@@ -4,47 +4,47 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class ChatroomMessage {
|
public class ChatroomMessage {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("username")]
|
[JsonProperty("username")]
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("userId")]
|
[JsonProperty("userId")]
|
||||||
public BigInteger UserID { get; set; }
|
public BigInteger UserID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("content")]
|
[JsonProperty("content")]
|
||||||
public string Content { get; set; }
|
public string Content { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public BigInteger ID { get; set; }
|
public BigInteger ID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("icon")]
|
[JsonProperty("icon")]
|
||||||
public int Icon { get; set; }
|
public int Icon { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("overlay")]
|
[JsonProperty("overlay")]
|
||||||
public int Overlay { get; set; }
|
public int Overlay { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("birdColor")]
|
[JsonProperty("birdColor")]
|
||||||
public int[] BirdColor { get; set; }
|
public int[] BirdColor { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("overlayColor")]
|
[JsonProperty("overlayColor")]
|
||||||
public int[] OverlayColor { get; set; }
|
public int[] OverlayColor { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("customIcon")]
|
[JsonProperty("customIcon")]
|
||||||
public string CustomIcon { get; set; }
|
public string CustomIcon { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("timestamp")]
|
[JsonProperty("timestamp")]
|
||||||
public long Timestamp { get; set; }
|
public long Timestamp { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("editedAt")]
|
[JsonProperty("editedAt")]
|
||||||
public long EditedAt { get; set; }
|
public long EditedAt { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
public enum ColorObjectType {
|
public enum ColorObjectType {
|
||||||
InGameBackgroundColor,
|
InGameBackgroundColor,
|
||||||
MenuBackgroundColor,
|
MenuBackgroundColor,
|
||||||
ButtonColor,
|
ButtonColor,
|
||||||
ButtonColorText,
|
ButtonColorText,
|
||||||
TextColor,
|
TextColor,
|
||||||
TextColorImage,
|
TextColorImage,
|
||||||
MenuBackgroundColorImage,
|
MenuBackgroundColorImage,
|
||||||
MenuBackgroundColorText,
|
MenuBackgroundColorText,
|
||||||
ButtonContentColorImage,
|
ButtonContentColorImage,
|
||||||
ButtonContentColorText
|
ButtonContentColorText
|
||||||
}
|
}
|
||||||
@@ -4,35 +4,35 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class LeaderboardEntry {
|
public class LeaderboardEntry {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public BigInteger UserID { get; set; }
|
public BigInteger UserID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("username")]
|
[JsonProperty("username")]
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("value")]
|
[JsonProperty("value")]
|
||||||
public BigInteger Value { get; set; }
|
public BigInteger Value { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("icon")]
|
[JsonProperty("icon")]
|
||||||
public int Icon { get; set; }
|
public int Icon { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("overlay")]
|
[JsonProperty("overlay")]
|
||||||
public int Overlay { get; set; }
|
public int Overlay { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("birdColor")]
|
[JsonProperty("birdColor")]
|
||||||
public int[] BirdColor { get; set; }
|
public int[] BirdColor { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("overlayColor")]
|
[JsonProperty("overlayColor")]
|
||||||
public int[] OverlayColor { get; set; }
|
public int[] OverlayColor { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("customIcon")]
|
[JsonProperty("customIcon")]
|
||||||
public string CustomIcon { get; set; }
|
public string CustomIcon { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
public enum LeaderboardMode {
|
public enum LeaderboardMode {
|
||||||
None,
|
None,
|
||||||
Score,
|
Score,
|
||||||
Berry,
|
Berry,
|
||||||
Coin,
|
Coin,
|
||||||
Legacy,
|
Legacy,
|
||||||
Level,
|
Level,
|
||||||
TotalXP,
|
TotalXP,
|
||||||
TotalBerries
|
TotalBerries
|
||||||
}
|
}
|
||||||
@@ -3,11 +3,11 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class MarketplaceIcon {
|
public class MarketplaceIcon {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("data")]
|
[JsonProperty("data")]
|
||||||
public string Data { get; set; }
|
public string Data { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
}
|
}
|
||||||
@@ -3,10 +3,10 @@ using System.Numerics;
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
public class MarketplaceIconStorageType {
|
public class MarketplaceIconStorageType {
|
||||||
[JsonProperty("selected")]
|
[JsonProperty("selected")]
|
||||||
public string Selected { get; set; } = null;
|
public string Selected { get; set; } = null;
|
||||||
[JsonProperty("balance")]
|
[JsonProperty("balance")]
|
||||||
public BigInteger Balance { get; set; } = 0;
|
public BigInteger Balance { get; set; } = 0;
|
||||||
[JsonProperty("purchased")]
|
[JsonProperty("purchased")]
|
||||||
public List<string> Purchased { get; set; } = new();
|
public List<string> Purchased { get; set; } = new();
|
||||||
}
|
}
|
||||||
@@ -4,31 +4,31 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class MarketplaceIconWithData {
|
public class MarketplaceIconWithData {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("username")]
|
[JsonProperty("username")]
|
||||||
public string CreatorUsername { get; set; }
|
public string CreatorUsername { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("userid")]
|
[JsonProperty("userid")]
|
||||||
public BigInteger CreatorUserID { get; set; }
|
public BigInteger CreatorUserID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("data")]
|
[JsonProperty("data")]
|
||||||
public string Data { get; set; }
|
public string Data { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("hash")]
|
[JsonProperty("hash")]
|
||||||
public string Hash { get; set; }
|
public string Hash { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("price")]
|
[JsonProperty("price")]
|
||||||
public BigInteger Price { get; set; }
|
public BigInteger Price { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("name")]
|
[JsonProperty("name")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
}
|
}
|
||||||
@@ -4,23 +4,23 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class MarketplaceTempIcon {
|
public class MarketplaceTempIcon {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("username")]
|
[JsonProperty("username")]
|
||||||
public string CreatorUsername { get; set; }
|
public string CreatorUsername { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("userid")]
|
[JsonProperty("userid")]
|
||||||
public BigInteger CreatorUserID { get; set; }
|
public BigInteger CreatorUserID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("price")]
|
[JsonProperty("price")]
|
||||||
public BigInteger Price { get; set; }
|
public BigInteger Price { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("name")]
|
[JsonProperty("name")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
public class MultiplayerBerry {
|
public class MultiplayerBerry {
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
public string Type { get; set; }
|
public string Type { get; set; }
|
||||||
public float PosX { get; set; }
|
public float PosX { get; set; }
|
||||||
public long Timestamp { get; set; }
|
public long Timestamp { get; set; }
|
||||||
public bool Spawned { get; set; }
|
public bool Spawned { get; set; }
|
||||||
}
|
}
|
||||||
@@ -5,48 +5,48 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class MultiplayerPlayerIconData {
|
public class MultiplayerPlayerIconData {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("icon")]
|
[JsonProperty("icon")]
|
||||||
public int Icon { get; set; }
|
public int Icon { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("overlay")]
|
[JsonProperty("overlay")]
|
||||||
public int Overlay { get; set; }
|
public int Overlay { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("iconColor")]
|
[JsonProperty("iconColor")]
|
||||||
public JArray IconColor { get; set; }
|
public JArray IconColor { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("overlayColor")]
|
[JsonProperty("overlayColor")]
|
||||||
public JArray OverlayColor { get; set; }
|
public JArray OverlayColor { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("customIcon")]
|
[JsonProperty("customIcon")]
|
||||||
public string CustomIcon { get; set; }
|
public string CustomIcon { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MultiplayerPlayerFromResponse {
|
public class MultiplayerPlayerFromResponse {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("userId")]
|
[JsonProperty("userId")]
|
||||||
public BigInteger UserID { get; set; }
|
public BigInteger UserID { get; set; }
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("username")]
|
[JsonProperty("username")]
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("admin")]
|
[JsonProperty("admin")]
|
||||||
public bool Admin { get; set; }
|
public bool Admin { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("timestamp")]
|
[JsonProperty("timestamp")]
|
||||||
public long JoinedAt { get; set; }
|
public long JoinedAt { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("iconData")]
|
[JsonProperty("iconData")]
|
||||||
public MultiplayerPlayerIconData IconData { get; set; }
|
public MultiplayerPlayerIconData IconData { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
public class MultiplayerUser {
|
public class MultiplayerUser {
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
public bool Admin { get; set; }
|
public bool Admin { get; set; }
|
||||||
public long JoinedAt { get; set; }
|
public long JoinedAt { get; set; }
|
||||||
}
|
}
|
||||||
@@ -4,19 +4,19 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class ProfileMessageResponse {
|
public class ProfileMessageResponse {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("id")]
|
[JsonProperty("id")]
|
||||||
public BigInteger ID { get; set; }
|
public BigInteger ID { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("content")]
|
[JsonProperty("content")]
|
||||||
public string Content { get; set; }
|
public string Content { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("timestamp")]
|
[JsonProperty("timestamp")]
|
||||||
public string Timestamp { get; set; }
|
public string Timestamp { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("likes")]
|
[JsonProperty("likes")]
|
||||||
public BigInteger Likes { get; set; }
|
public BigInteger Likes { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
public enum SettingTypes {
|
public enum SettingTypes {
|
||||||
FullScreen,
|
FullScreen,
|
||||||
ShowFPS,
|
ShowFPS,
|
||||||
Vsync,
|
Vsync,
|
||||||
HideSocials
|
HideSocials
|
||||||
}
|
}
|
||||||
@@ -3,34 +3,34 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class SplashEntry {
|
public class SplashEntry {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("content")]
|
[JsonProperty("content")]
|
||||||
public string Content { get; set; }
|
public string Content { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("attributes")]
|
[JsonProperty("attributes")]
|
||||||
public SplashAttributes Attributes { get; set; } = new SplashAttributes();
|
public SplashAttributes Attributes { get; set; } = new SplashAttributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class SplashAttributes {
|
public class SplashAttributes {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("flip")]
|
[JsonProperty("flip")]
|
||||||
public bool Flip { get; set; } = false;
|
public bool Flip { get; set; } = false;
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("reverse")]
|
[JsonProperty("reverse")]
|
||||||
public bool Reverse { get; set; } = false;
|
public bool Reverse { get; set; } = false;
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("bounceSpeed")]
|
[JsonProperty("bounceSpeed")]
|
||||||
public int BounceSpeed { get; set; } = -1;
|
public int BounceSpeed { get; set; } = -1;
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("color")]
|
[JsonProperty("color")]
|
||||||
public string Color { get; set; } = null;
|
public string Color { get; set; } = null;
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("rainbowSpeed")]
|
[JsonProperty("rainbowSpeed")]
|
||||||
public int RainbowSpeed { get; set; } = -1;
|
public int RainbowSpeed { get; set; } = -1;
|
||||||
}
|
}
|
||||||
@@ -4,47 +4,47 @@ using UnityEngine.Scripting;
|
|||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
public class Stats {
|
public class Stats {
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("highScore")]
|
[JsonProperty("highScore")]
|
||||||
public BigInteger HighScore { get; set; }
|
public BigInteger HighScore { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalNormalBerries")]
|
[JsonProperty("totalNormalBerries")]
|
||||||
public BigInteger TotalNormalBerries { get; set; }
|
public BigInteger TotalNormalBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalPoisonBerries")]
|
[JsonProperty("totalPoisonBerries")]
|
||||||
public BigInteger TotalPoisonBerries { get; set; }
|
public BigInteger TotalPoisonBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalSlowBerries")]
|
[JsonProperty("totalSlowBerries")]
|
||||||
public BigInteger TotalSlowBerries { get; set; }
|
public BigInteger TotalSlowBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalUltraBerries")]
|
[JsonProperty("totalUltraBerries")]
|
||||||
public BigInteger TotalUltraBerries { get; set; }
|
public BigInteger TotalUltraBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalSpeedyBerries")]
|
[JsonProperty("totalSpeedyBerries")]
|
||||||
public BigInteger TotalSpeedyBerries { get; set; }
|
public BigInteger TotalSpeedyBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalCoinBerries")]
|
[JsonProperty("totalCoinBerries")]
|
||||||
public BigInteger TotalCoinBerries { get; set; }
|
public BigInteger TotalCoinBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalRandomBerries")]
|
[JsonProperty("totalRandomBerries")]
|
||||||
public BigInteger TotalRandomBerries { get; set; }
|
public BigInteger TotalRandomBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalAntiBerries")]
|
[JsonProperty("totalAntiBerries")]
|
||||||
public BigInteger TotalAntiBerries { get; set; }
|
public BigInteger TotalAntiBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("totalGoldenBerries")]
|
[JsonProperty("totalGoldenBerries")]
|
||||||
public BigInteger TotalGoldenBerries { get; set; }
|
public BigInteger TotalGoldenBerries { get; set; }
|
||||||
|
|
||||||
[Preserve]
|
[Preserve]
|
||||||
[JsonProperty("coins")]
|
[JsonProperty("coins")]
|
||||||
public BigInteger Coins { get; set; }
|
public BigInteger Coins { get; set; }
|
||||||
}
|
}
|
||||||
@@ -7,86 +7,86 @@ using UnityEngine.SceneManagement;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
public class UserSearchMenu : MonoBehaviour {
|
public class UserSearchMenu : MonoBehaviour {
|
||||||
[SerializeField] private GameObject content;
|
[SerializeField] private GameObject content;
|
||||||
[SerializeField] private GameObject sampleObject;
|
[SerializeField] private GameObject sampleObject;
|
||||||
[SerializeField] private Button searchButton;
|
[SerializeField] private Button searchButton;
|
||||||
[SerializeField] private TMP_InputField usernameInput;
|
[SerializeField] private TMP_InputField usernameInput;
|
||||||
[SerializeField] private TMP_Text statusText;
|
[SerializeField] private TMP_Text statusText;
|
||||||
[SerializeField] private ProfileMenu profilePrefab;
|
[SerializeField] private ProfileMenu profilePrefab;
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
usernameInput.onSelect.AddListener((_) => usernameInput.caretPosition = usernameInput.text.Length);
|
usernameInput.onSelect.AddListener((_) => usernameInput.caretPosition = usernameInput.text.Length);
|
||||||
searchButton.onClick.AddListener(Search);
|
searchButton.onClick.AddListener(Search);
|
||||||
Search();
|
Search();
|
||||||
|
}
|
||||||
|
|
||||||
|
async void Search() {
|
||||||
|
searchButton.interactable = false;
|
||||||
|
foreach (Transform item in content.transform)
|
||||||
|
if (item.gameObject.activeSelf)
|
||||||
|
Destroy(item.gameObject);
|
||||||
|
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.BD_ACCOUNT_ENDPOINT + "?username=" + usernameInput.text);
|
||||||
|
request.SetRequestHeader("Requester", "BerryDashClient");
|
||||||
|
request.SetRequestHeader("ClientVersion", Application.version);
|
||||||
|
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
||||||
|
await request.SendWebRequest();
|
||||||
|
if (request.downloadHandler.text == null) {
|
||||||
|
searchButton.interactable = true;
|
||||||
|
UpdateStatus(true, "Failed to get a list of users");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
UpdateStatus(false);
|
||||||
|
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
||||||
|
if ((bool)jsonResponse["success"]) {
|
||||||
|
foreach (var entry in jsonResponse["data"].ToObject<Account[]>()) {
|
||||||
|
if (entry.UserID == BazookaManager.Instance.GetAccountID()) continue;
|
||||||
|
var entryInfo = Instantiate(sampleObject, content.transform);
|
||||||
|
var playerIcon = entryInfo.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
||||||
|
var usernameText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
||||||
|
var playerIconButton = playerIcon.GetComponent<Button>();
|
||||||
|
var highScoreText = entryInfo.transform.GetChild(2).GetComponent<TMP_Text>();
|
||||||
|
|
||||||
async void Search() {
|
usernameText.text = entry.Username;
|
||||||
searchButton.interactable = false;
|
highScoreText.text += Tools.FormatWithCommas(entry.Stats.HighScore);
|
||||||
foreach (Transform item in content.transform)
|
|
||||||
if (item.gameObject.activeSelf)
|
|
||||||
Destroy(item.gameObject);
|
|
||||||
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.BD_ACCOUNT_ENDPOINT + "?username=" + usernameInput.text);
|
|
||||||
request.SetRequestHeader("Requester", "BerryDashClient");
|
|
||||||
request.SetRequestHeader("ClientVersion", Application.version);
|
|
||||||
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
|
|
||||||
await request.SendWebRequest();
|
|
||||||
if (request.downloadHandler.text == null) {
|
|
||||||
searchButton.interactable = true;
|
|
||||||
UpdateStatus(true, "Failed to get a list of users");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UpdateStatus(false);
|
|
||||||
var jsonResponse = JObject.Parse(request.downloadHandler.text);
|
|
||||||
if ((bool)jsonResponse["success"]) {
|
|
||||||
foreach (var entry in jsonResponse["data"].ToObject<Account[]>()) {
|
|
||||||
if (entry.UserID == BazookaManager.Instance.GetAccountID()) continue;
|
|
||||||
var entryInfo = Instantiate(sampleObject, content.transform);
|
|
||||||
var playerIcon = entryInfo.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
var playerOverlay = playerIcon.transform.GetChild(0).GetComponent<Image>();
|
|
||||||
var usernameText = entryInfo.transform.GetChild(1).GetComponent<TMP_Text>();
|
|
||||||
var playerIconButton = playerIcon.GetComponent<Button>();
|
|
||||||
var highScoreText = entryInfo.transform.GetChild(2).GetComponent<TMP_Text>();
|
|
||||||
|
|
||||||
usernameText.text = entry.Username;
|
if (entry.CustomIcon == null) {
|
||||||
highScoreText.text += Tools.FormatWithCommas(entry.Stats.HighScore);
|
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
||||||
|
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
||||||
if (entry.CustomIcon == null) {
|
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
||||||
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + entry.Icon);
|
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
||||||
if (entry.Icon == 1) playerIcon.sprite = Tools.GetIconForUser(entry.UserID);
|
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
||||||
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + entry.Overlay);
|
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
||||||
if (entry.Overlay != 0) playerOverlay.gameObject.SetActive(true);
|
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
||||||
if (entry.Overlay == 8) playerOverlay.transform.localPosition = new Vector2(-16.56f, 14.81f);
|
try {
|
||||||
else if (entry.Overlay == 11) playerOverlay.transform.localPosition = new Vector2(-14.74451f, 20.39122f);
|
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||||
else if (entry.Overlay == 13) playerOverlay.transform.localPosition = new Vector2(-16.54019f, 14.70365f);
|
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
||||||
try {
|
}
|
||||||
playerIcon.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
catch {
|
||||||
playerOverlay.color = new Color(entry.BirdColor[0] / 255f, entry.BirdColor[1] / 255f, entry.BirdColor[2] / 255f);
|
playerIcon.color = Color.white;
|
||||||
}
|
playerOverlay.color = Color.white;
|
||||||
catch {
|
}
|
||||||
playerIcon.color = Color.white;
|
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
||||||
playerOverlay.color = Color.white;
|
playerIconButton.onClick.AddListener(async () => {
|
||||||
}
|
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
||||||
} else playerIcon.gameObject.AddComponent<WaitingForCustomIcon>().ID = entry.CustomIcon;
|
clone.SetActive(true);
|
||||||
playerIconButton.onClick.AddListener(async () => {
|
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
||||||
var clone = Instantiate(profilePrefab.gameObject, profilePrefab.gameObject.transform.parent);
|
});
|
||||||
clone.SetActive(true);
|
entryInfo.SetActive(true);
|
||||||
await clone.GetComponent<ProfileMenu>().Init(entry.UserID);
|
}
|
||||||
});
|
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
||||||
entryInfo.SetActive(true);
|
} else {
|
||||||
}
|
UpdateStatus(true, (string)jsonResponse["message"]);
|
||||||
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
|
|
||||||
} else {
|
|
||||||
UpdateStatus(true, (string)jsonResponse["message"]);
|
|
||||||
}
|
|
||||||
searchButton.interactable = true;
|
|
||||||
}
|
}
|
||||||
|
searchButton.interactable = true;
|
||||||
|
}
|
||||||
|
|
||||||
async void Update() {
|
async void Update() {
|
||||||
if (Keyboard.current.escapeKey.wasPressedThisFrame && !GameObject.Find("ProfilePrefab(Clone)")) await SceneManager.LoadSceneAsync("MainMenu");
|
if (Keyboard.current.escapeKey.wasPressedThisFrame && !GameObject.Find("ProfilePrefab(Clone)")) await SceneManager.LoadSceneAsync("MainMenu");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateStatus(bool enabled, string message = "") {
|
private void UpdateStatus(bool enabled, string message = "") {
|
||||||
statusText.gameObject.SetActive(enabled);
|
statusText.gameObject.SetActive(enabled);
|
||||||
statusText.text = message;
|
statusText.text = message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,9 @@ using TMPro;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class VersionText : MonoBehaviour {
|
public class VersionText : MonoBehaviour {
|
||||||
private TMP_Text text;
|
private TMP_Text text;
|
||||||
void Awake() {
|
void Awake() {
|
||||||
text = gameObject.GetComponent<TMP_Text>();
|
text = gameObject.GetComponent<TMP_Text>();
|
||||||
text.text = "Current: v" + Application.version;
|
text.text = "Current: v" + Application.version;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,10 +3,10 @@ using UnityEngine;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class ConnectedWithCurrentSceneMessage {
|
public class ConnectedWithCurrentSceneMessage {
|
||||||
public string type = "connected_with_current_scene";
|
public string type = "connected_with_current_scene";
|
||||||
public string sceneName;
|
public string sceneName;
|
||||||
public string Requester = "BerryDashClient";
|
public string Requester = "BerryDashClient";
|
||||||
public string ClientVersion = Application.version;
|
public string ClientVersion = Application.version;
|
||||||
public string ClientPlatform = Application.platform.ToString();
|
public string ClientPlatform = Application.platform.ToString();
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -3,8 +3,8 @@ using Newtonsoft.Json.Linq;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class DeleteMessage {
|
public class DeleteMessage {
|
||||||
public string type = "delete";
|
public string type = "delete";
|
||||||
public string kind;
|
public string kind;
|
||||||
public JObject data;
|
public JObject data;
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -3,8 +3,8 @@ using Newtonsoft.Json.Linq;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class EditMessage {
|
public class EditMessage {
|
||||||
public string type = "edit";
|
public string type = "edit";
|
||||||
public string kind;
|
public string kind;
|
||||||
public JObject data;
|
public JObject data;
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ using System;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class MultiplayerJoinRequestMessage {
|
public class MultiplayerJoinRequestMessage {
|
||||||
public string type = "multiplayer_join_request";
|
public string type = "multiplayer_join_request";
|
||||||
public string auth;
|
public string auth;
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,6 @@ using System;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class MultiplayerLeaveMessage {
|
public class MultiplayerLeaveMessage {
|
||||||
public string type = "multiplayer_leave";
|
public string type = "multiplayer_leave";
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,9 @@ using System;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class MultiplayerPlayerMove {
|
public class MultiplayerPlayerMove {
|
||||||
public string type = "multiplayer_player_move";
|
public string type = "multiplayer_player_move";
|
||||||
public float x;
|
public float x;
|
||||||
public float y;
|
public float y;
|
||||||
public bool f;
|
public bool f;
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,6 @@ using System;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class MultiplayerPlayerPause {
|
public class MultiplayerPlayerPause {
|
||||||
public string type = "multiplayer_player_pause";
|
public string type = "multiplayer_player_pause";
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,6 @@ using System;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class MultiplayerPlayerUnPause {
|
public class MultiplayerPlayerUnPause {
|
||||||
public string type = "multiplayer_player_unpause";
|
public string type = "multiplayer_player_unpause";
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ using System;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class RequestInfoMessage {
|
public class RequestInfoMessage {
|
||||||
public string type = "info_request";
|
public string type = "info_request";
|
||||||
public string kind;
|
public string kind;
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -2,8 +2,8 @@ using System;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class SceneChangeMessage {
|
public class SceneChangeMessage {
|
||||||
public string type = "scene_change";
|
public string type = "scene_change";
|
||||||
public string to;
|
public string to;
|
||||||
public string from;
|
public string from;
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
@@ -3,8 +3,8 @@ using Newtonsoft.Json.Linq;
|
|||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class UploadMessage {
|
public class UploadMessage {
|
||||||
public string type = "upload";
|
public string type = "upload";
|
||||||
public string kind;
|
public string kind;
|
||||||
public JObject data;
|
public JObject data;
|
||||||
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user