Format again

This commit is contained in:
Lncvrt committed 2026-03-06 12:28:02 -07:00
1 parent 3f6849060f
commit 78f3a8c04c
93 files changed
+7328 -7323

No files matched your search

@@ -5,56 +5,56 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountChangePassword : MonoBehaviour {
[SerializeField] private TMP_Text changePasswordStatusText;
[SerializeField] private TMP_InputField changePasswordNewPasswordInput;
[SerializeField] private TMP_InputField changePasswordRetypeNewPasswordInput;
[SerializeField] private Button changePasswordBackButton;
[SerializeField] private Button changePasswordSubmitButton;
[SerializeField] private TMP_Text changePasswordStatusText;
[SerializeField] private TMP_InputField changePasswordNewPasswordInput;
[SerializeField] private TMP_InputField changePasswordRetypeNewPasswordInput;
[SerializeField] private Button changePasswordBackButton;
[SerializeField] private Button changePasswordSubmitButton;
void Awake() {
changePasswordNewPasswordInput.onSelect.AddListener((_) => changePasswordNewPasswordInput.caretPosition = changePasswordNewPasswordInput.text.Length);
changePasswordRetypeNewPasswordInput.onSelect.AddListener((_) => changePasswordRetypeNewPasswordInput.caretPosition = changePasswordRetypeNewPasswordInput.text.Length);
void Awake() {
changePasswordNewPasswordInput.onSelect.AddListener((_) => changePasswordNewPasswordInput.caretPosition = changePasswordNewPasswordInput.text.Length);
changePasswordRetypeNewPasswordInput.onSelect.AddListener((_) => changePasswordRetypeNewPasswordInput.caretPosition = changePasswordRetypeNewPasswordInput.text.Length);
changePasswordBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
changePasswordSubmitButton.onClick.AddListener(() => ChangePassword());
changePasswordBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
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;
}
void OnEnable() {
changePasswordNewPasswordInput.text = "";
changePasswordRetypeNewPasswordInput.text = "";
changePasswordStatusText.text = "";
changePasswordBackButton.interactable = false;
changePasswordSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("newPassword", changePasswordNewPasswordInput.text);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_CHANGE_PASSWORD_ENDPOINT, dataForm);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
changePasswordBackButton.interactable = true;
changePasswordSubmitButton.interactable = true;
Tools.UpdateStatusText(changePasswordStatusText, "Failed to make HTTP request", Color.red);
return;
}
async void ChangePassword() {
if (changePasswordNewPasswordInput.text != changePasswordRetypeNewPasswordInput.text) {
Tools.UpdateStatusText(changePasswordStatusText, "Passwords do not match", Color.red);
return;
}
changePasswordBackButton.interactable = false;
changePasswordSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("newPassword", changePasswordNewPasswordInput.text);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_CHANGE_PASSWORD_ENDPOINT, dataForm);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
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;
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;
}
}
@@ -5,50 +5,50 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountChangeUsername : MonoBehaviour {
[SerializeField] private TMP_Text changeUsernameStatusText;
[SerializeField] private TMP_InputField changeUsernameNewUsernameInput;
[SerializeField] private Button changeUsernameBackButton;
[SerializeField] private Button changeUsernameSubmitButton;
[SerializeField] private TMP_Text changeUsernameStatusText;
[SerializeField] private TMP_InputField changeUsernameNewUsernameInput;
[SerializeField] private Button changeUsernameBackButton;
[SerializeField] private Button changeUsernameSubmitButton;
void Awake() {
changeUsernameNewUsernameInput.onSelect.AddListener((_) => changeUsernameNewUsernameInput.caretPosition = changeUsernameNewUsernameInput.text.Length);
void Awake() {
changeUsernameNewUsernameInput.onSelect.AddListener((_) => changeUsernameNewUsernameInput.caretPosition = changeUsernameNewUsernameInput.text.Length);
changeUsernameBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
changeUsernameSubmitButton.onClick.AddListener(() => ChangeUsername());
changeUsernameBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
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;
}
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);
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;
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;
}
}
@@ -5,56 +5,56 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountForgotDetails : MonoBehaviour {
[SerializeField] internal TMP_Text forgotDetailsTitleText;
[SerializeField] private TMP_Text forgotDetailsStatusText;
[SerializeField] private TMP_InputField forgotDetailsEmailInput;
[SerializeField] private TMP_InputField forgotDetailsVerifyCodeInput;
[SerializeField] internal Button forgotDetailsBackButton;
[SerializeField] internal Button forgotDetailsSubmitButton;
internal int mode = 0;
[SerializeField] internal TMP_Text forgotDetailsTitleText;
[SerializeField] private TMP_Text forgotDetailsStatusText;
[SerializeField] private TMP_InputField forgotDetailsEmailInput;
[SerializeField] private TMP_InputField forgotDetailsVerifyCodeInput;
[SerializeField] internal Button forgotDetailsBackButton;
[SerializeField] internal Button forgotDetailsSubmitButton;
internal int mode = 0;
void Awake() {
forgotDetailsEmailInput.onSelect.AddListener((_) => forgotDetailsEmailInput.caretPosition = forgotDetailsEmailInput.text.Length);
forgotDetailsVerifyCodeInput.onSelect.AddListener((_) => forgotDetailsVerifyCodeInput.caretPosition = forgotDetailsVerifyCodeInput.text.Length);
void Awake() {
forgotDetailsEmailInput.onSelect.AddListener((_) => forgotDetailsEmailInput.caretPosition = forgotDetailsEmailInput.text.Length);
forgotDetailsVerifyCodeInput.onSelect.AddListener((_) => forgotDetailsVerifyCodeInput.caretPosition = forgotDetailsVerifyCodeInput.text.Length);
forgotDetailsBackButton.onClick.AddListener(() => {
forgotDetailsBackButton.interactable = false;
forgotDetailsSubmitButton.interactable = false;
mode = 0;
forgotDetailsTitleText.text = "";
forgotDetailsStatusText.text = "";
AccountHandler.instance.SwitchPanel(2);
});
forgotDetailsSubmitButton.onClick.AddListener(() => ForgotDetails());
}
void OnEnable() {
forgotDetailsEmailInput.text = "";
forgotDetailsVerifyCodeInput.text = "";
}
async void ForgotDetails() {
forgotDetailsBackButton.interactable = false;
forgotDetailsSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("email", forgotDetailsEmailInput.text);
dataForm.AddField("verifyCode", forgotDetailsVerifyCodeInput.text);
forgotDetailsVerifyCodeInput.text = "";
using UnityWebRequest request = UnityWebRequest.Post(mode == 0 ? Endpoints.ACCOUNT_FORGOT_USERNAME_ENDPOINT : Endpoints.ACCOUNT_FORGOT_PASSWORD_ENDPOINT, dataForm);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
forgotDetailsBackButton.interactable = true;
forgotDetailsSubmitButton.interactable = true;
Tools.UpdateStatusText(forgotDetailsStatusText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) Tools.UpdateStatusText(forgotDetailsStatusText, "An email has been sent to your inbox", Color.green);
else Tools.UpdateStatusText(forgotDetailsStatusText, (string)jsonResponse["message"], Color.red);
forgotDetailsBackButton.interactable = true;
forgotDetailsSubmitButton.interactable = true;
forgotDetailsBackButton.onClick.AddListener(() => {
forgotDetailsBackButton.interactable = false;
forgotDetailsSubmitButton.interactable = false;
mode = 0;
forgotDetailsTitleText.text = "";
forgotDetailsStatusText.text = "";
AccountHandler.instance.SwitchPanel(2);
});
forgotDetailsSubmitButton.onClick.AddListener(() => ForgotDetails());
}
void OnEnable() {
forgotDetailsEmailInput.text = "";
forgotDetailsVerifyCodeInput.text = "";
}
async void ForgotDetails() {
forgotDetailsBackButton.interactable = false;
forgotDetailsSubmitButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("email", forgotDetailsEmailInput.text);
dataForm.AddField("verifyCode", forgotDetailsVerifyCodeInput.text);
forgotDetailsVerifyCodeInput.text = "";
using UnityWebRequest request = UnityWebRequest.Post(mode == 0 ? Endpoints.ACCOUNT_FORGOT_USERNAME_ENDPOINT : Endpoints.ACCOUNT_FORGOT_PASSWORD_ENDPOINT, dataForm);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
forgotDetailsBackButton.interactable = true;
forgotDetailsSubmitButton.interactable = true;
Tools.UpdateStatusText(forgotDetailsStatusText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) Tools.UpdateStatusText(forgotDetailsStatusText, "An email has been sent to your inbox", Color.green);
else Tools.UpdateStatusText(forgotDetailsStatusText, (string)jsonResponse["message"], Color.red);
forgotDetailsBackButton.interactable = true;
forgotDetailsSubmitButton.interactable = true;
}
}
+109 -109
View File
@@ -3,120 +3,120 @@ using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;
public class AccountHandler : MonoBehaviour {
public static AccountHandler instance;
public AccountLoggedIn accountLoggedIn;
[SerializeField] private AccountLoggedOut accountLoggedOut;
[SerializeField] private AccountLogin accountLogin;
[SerializeField] private AccountRegister accountRegister;
[SerializeField] private AccountChangeUsername accountChangeUsername;
[SerializeField] private AccountChangePassword accountChangePassword;
[SerializeField] private AccountRefreshLogin accountRefreshLogin;
[SerializeField] internal AccountForgotDetails accountForgotDetails;
public static AccountHandler instance;
public AccountLoggedIn accountLoggedIn;
[SerializeField] private AccountLoggedOut accountLoggedOut;
[SerializeField] private AccountLogin accountLogin;
[SerializeField] private AccountRegister accountRegister;
[SerializeField] private AccountChangeUsername accountChangeUsername;
[SerializeField] private AccountChangePassword accountChangePassword;
[SerializeField] private AccountRefreshLogin accountRefreshLogin;
[SerializeField] internal AccountForgotDetails accountForgotDetails;
void Awake() {
instance = this;
}
void Awake() {
instance = this;
}
void Start() {
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
SwitchPanel(0);
} else {
SwitchPanel(1);
}
void Start() {
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
SwitchPanel(0);
} else {
SwitchPanel(1);
}
}
public void SwitchPanel(int panel) {
switch (panel) {
case 0:
accountLoggedIn.gameObject.SetActive(true);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 1:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(true);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 2:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(true);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 3:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(true);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 4:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(true);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 5:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(true);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 6:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(true);
accountForgotDetails.gameObject.SetActive(false);
break;
case 7:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(true);
break;
}
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
public void SwitchPanel(int panel) {
switch (panel) {
case 0:
accountLoggedIn.gameObject.SetActive(true);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 1:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(true);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 2:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(true);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 3:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(true);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 4:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(true);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 5:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(true);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(false);
break;
case 6:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(true);
accountForgotDetails.gameObject.SetActive(false);
break;
case 7:
accountLoggedIn.gameObject.SetActive(false);
accountLoggedOut.gameObject.SetActive(false);
accountLogin.gameObject.SetActive(false);
accountRegister.gameObject.SetActive(false);
accountChangeUsername.gameObject.SetActive(false);
accountChangePassword.gameObject.SetActive(false);
accountRefreshLogin.gameObject.SetActive(false);
accountForgotDetails.gameObject.SetActive(true);
break;
}
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
if (accountChangePassword.gameObject.activeSelf || accountChangeUsername.gameObject.activeSelf || accountRefreshLogin.gameObject.activeSelf) SwitchPanel(0);
else if (accountLogin.gameObject.activeSelf || accountRegister.gameObject.activeSelf) SwitchPanel(1);
else if (accountForgotDetails.gameObject.activeSelf) accountForgotDetails.forgotDetailsBackButton.onClick.Invoke();
else await SceneManager.LoadSceneAsync("MainMenu");
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
if (accountChangePassword.gameObject.activeSelf || accountChangeUsername.gameObject.activeSelf || accountRefreshLogin.gameObject.activeSelf) SwitchPanel(0);
else if (accountLogin.gameObject.activeSelf || accountRegister.gameObject.activeSelf) SwitchPanel(1);
else if (accountForgotDetails.gameObject.activeSelf) accountForgotDetails.forgotDetailsBackButton.onClick.Invoke();
else await SceneManager.LoadSceneAsync("MainMenu");
}
}
}
+110 -110
View File
@@ -8,120 +8,120 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountLoggedIn : MonoBehaviour {
public TMP_Text loggedInText;
[SerializeField] private AccountLoggedOut accountLoggedOut;
[SerializeField] private Button loggedInChangeUsernameButton;
[SerializeField] private Button loggedInChangePasswordButton;
[SerializeField] private Button loggedInSaveButton;
[SerializeField] private Button loggedInLoadButton;
[SerializeField] private Button loggedInRefreshLoginButton;
[SerializeField] private Button loggedInLogoutButton;
[SerializeField] private Button loggedInBackButton;
public TMP_Text loggedInText;
[SerializeField] private AccountLoggedOut accountLoggedOut;
[SerializeField] private Button loggedInChangeUsernameButton;
[SerializeField] private Button loggedInChangePasswordButton;
[SerializeField] private Button loggedInSaveButton;
[SerializeField] private Button loggedInLoadButton;
[SerializeField] private Button loggedInRefreshLoginButton;
[SerializeField] private Button loggedInLogoutButton;
[SerializeField] private Button loggedInBackButton;
void Awake() {
loggedInChangeUsernameButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(4));
loggedInChangePasswordButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(5));
loggedInSaveButton.onClick.AddListener(() => SaveAccount());
loggedInLoadButton.onClick.AddListener(() => LoadAccount());
loggedInRefreshLoginButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(6));
loggedInLogoutButton.onClick.AddListener(() => {
BazookaManager.Instance.ResetSave();
AccountHandler.instance.SwitchPanel(1);
});
}
void Awake() {
loggedInChangeUsernameButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(4));
loggedInChangePasswordButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(5));
loggedInSaveButton.onClick.AddListener(() => SaveAccount());
loggedInLoadButton.onClick.AddListener(() => LoadAccount());
loggedInRefreshLoginButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(6));
loggedInLogoutButton.onClick.AddListener(() => {
BazookaManager.Instance.ResetSave();
AccountHandler.instance.SwitchPanel(1);
});
}
void OnEnable() {
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
var textColor = BazookaManager.Instance.GetColorSettingText();
Tools.UpdateStatusText(loggedInText, "Logged in as: " + BazookaManager.Instance.GetAccountName(), new Color(int.Parse(textColor[0].ToString()) / 255f, int.Parse(textColor[1].ToString()) / 255f, int.Parse(textColor[2].ToString()) / 255f));
}
void OnEnable() {
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
var textColor = BazookaManager.Instance.GetColorSettingText();
Tools.UpdateStatusText(loggedInText, "Logged in as: " + BazookaManager.Instance.GetAccountName(), new Color(int.Parse(textColor[0].ToString()) / 255f, int.Parse(textColor[1].ToString()) / 255f, int.Parse(textColor[2].ToString()) / 255f));
}
async void SaveAccount() {
loggedInChangeUsernameButton.interactable = false;
loggedInChangePasswordButton.interactable = false;
loggedInSaveButton.interactable = false;
loggedInLoadButton.interactable = false;
loggedInRefreshLoginButton.interactable = false;
loggedInLogoutButton.interactable = false;
loggedInBackButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("saveData", Convert.ToBase64String(Encoding.UTF8.GetBytes(BazookaManager.Instance.saveFile.ToString(Formatting.None))));
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_SAVE_ENDPOINT, dataForm);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
loggedInBackButton.interactable = true;
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
Tools.UpdateStatusText(loggedInText, (string)jsonResponse["message"], (bool)jsonResponse["success"] ? Color.green : Color.red);
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
loggedInBackButton.interactable = true;
async void SaveAccount() {
loggedInChangeUsernameButton.interactable = false;
loggedInChangePasswordButton.interactable = false;
loggedInSaveButton.interactable = false;
loggedInLoadButton.interactable = false;
loggedInRefreshLoginButton.interactable = false;
loggedInLogoutButton.interactable = false;
loggedInBackButton.interactable = false;
WWWForm dataForm = new();
dataForm.AddField("saveData", Convert.ToBase64String(Encoding.UTF8.GetBytes(BazookaManager.Instance.saveFile.ToString(Formatting.None))));
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_SAVE_ENDPOINT, dataForm);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
loggedInBackButton.interactable = true;
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
Tools.UpdateStatusText(loggedInText, (string)jsonResponse["message"], (bool)jsonResponse["success"] ? Color.green : Color.red);
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
loggedInBackButton.interactable = true;
}
async void LoadAccount() {
loggedInChangeUsernameButton.interactable = false;
loggedInChangePasswordButton.interactable = false;
loggedInSaveButton.interactable = false;
loggedInLoadButton.interactable = false;
loggedInRefreshLoginButton.interactable = false;
loggedInLogoutButton.interactable = false;
loggedInBackButton.interactable = false;
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ACCOUNT_SAVE_ENDPOINT);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
loggedInBackButton.interactable = true;
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BazookaManager.Instance.saveFile = JObject.FromObject(jsonResponse["data"]);
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;
async void LoadAccount() {
loggedInChangeUsernameButton.interactable = false;
loggedInChangePasswordButton.interactable = false;
loggedInSaveButton.interactable = false;
loggedInLoadButton.interactable = false;
loggedInRefreshLoginButton.interactable = false;
loggedInLogoutButton.interactable = false;
loggedInBackButton.interactable = false;
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ACCOUNT_SAVE_ENDPOINT);
request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession());
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
loggedInChangeUsernameButton.interactable = true;
loggedInChangePasswordButton.interactable = true;
loggedInSaveButton.interactable = true;
loggedInLoadButton.interactable = true;
loggedInRefreshLoginButton.interactable = true;
loggedInLogoutButton.interactable = true;
loggedInBackButton.interactable = true;
Tools.UpdateStatusText(loggedInText, "Failed to make HTTP request", Color.red);
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BazookaManager.Instance.saveFile = JObject.FromObject(jsonResponse["data"]);
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;
public class AccountLoggedOut : MonoBehaviour {
[SerializeField] private Button loggedOutLoginButton;
[SerializeField] private Button loggedOutRegisterButton;
[SerializeField] private Button loggedOutLoginButton;
[SerializeField] private Button loggedOutRegisterButton;
void Awake() {
loggedOutLoginButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(2));
loggedOutRegisterButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(3));
}
void Awake() {
loggedOutLoginButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(2));
loggedOutRegisterButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(3));
}
}
+65 -65
View File
@@ -6,74 +6,74 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountLogin : MonoBehaviour {
[SerializeField] private TMP_Text loginPanelStatusText;
[SerializeField] private TMP_InputField loginUsernameInput;
[SerializeField] private TMP_InputField loginPasswordInput;
[SerializeField] private Button forgotUsernameButton;
[SerializeField] private Button forgotPasswordButton;
[SerializeField] private Button loginBackButton;
[SerializeField] private Button loginSubmitButton;
[SerializeField] private TMP_Text loginPanelStatusText;
[SerializeField] private TMP_InputField loginUsernameInput;
[SerializeField] private TMP_InputField loginPasswordInput;
[SerializeField] private Button forgotUsernameButton;
[SerializeField] private Button forgotPasswordButton;
[SerializeField] private Button loginBackButton;
[SerializeField] private Button loginSubmitButton;
void Awake() {
loginUsernameInput.onSelect.AddListener((_) => loginUsernameInput.caretPosition = loginUsernameInput.text.Length);
loginPasswordInput.onSelect.AddListener((_) => loginPasswordInput.caretPosition = loginPasswordInput.text.Length);
void Awake() {
loginUsernameInput.onSelect.AddListener((_) => loginUsernameInput.caretPosition = loginUsernameInput.text.Length);
loginPasswordInput.onSelect.AddListener((_) => loginPasswordInput.caretPosition = loginPasswordInput.text.Length);
loginBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1));
loginSubmitButton.onClick.AddListener(() => SubmitLogin());
forgotUsernameButton.onClick.AddListener(() => {
AccountHandler.instance.SwitchPanel(7);
AccountHandler.instance.accountForgotDetails.mode = 0;
AccountHandler.instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot username";
AccountHandler.instance.accountForgotDetails.forgotDetailsBackButton.interactable = true;
AccountHandler.instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
});
forgotPasswordButton.onClick.AddListener(() => {
AccountHandler.instance.SwitchPanel(7);
AccountHandler.instance.accountForgotDetails.mode = 1;
AccountHandler.instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot password";
AccountHandler.instance.accountForgotDetails.forgotDetailsBackButton.interactable = true;
AccountHandler.instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
});
loginBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1));
loginSubmitButton.onClick.AddListener(() => SubmitLogin());
forgotUsernameButton.onClick.AddListener(() => {
AccountHandler.instance.SwitchPanel(7);
AccountHandler.instance.accountForgotDetails.mode = 0;
AccountHandler.instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot username";
AccountHandler.instance.accountForgotDetails.forgotDetailsBackButton.interactable = true;
AccountHandler.instance.accountForgotDetails.forgotDetailsSubmitButton.interactable = true;
});
forgotPasswordButton.onClick.AddListener(() => {
AccountHandler.instance.SwitchPanel(7);
AccountHandler.instance.accountForgotDetails.mode = 1;
AccountHandler.instance.accountForgotDetails.forgotDetailsTitleText.text = "Forgot password";
AccountHandler.instance.accountForgotDetails.forgotDetailsBackButton.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;
}
void OnEnable() {
loginUsernameInput.text = "";
loginPasswordInput.text = "";
loginPanelStatusText.text = "";
WWWForm dataForm = new();
dataForm.AddField("username", loginUsernameInput.text);
dataForm.AddField("password", loginPasswordInput.text);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_LOGIN_ENDPOINT, dataForm);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
loginBackButton.interactable = true;
loginSubmitButton.interactable = true;
Tools.UpdateStatusText(loginPanelStatusText, "Failed to make HTTP request", Color.red);
return;
}
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();
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;
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;
}
}
@@ -6,53 +6,53 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountRefreshLogin : MonoBehaviour {
[SerializeField] private TMP_Text refreshLoginStatusText;
[SerializeField] private TMP_InputField refreshLoginUsernameInput;
[SerializeField] private TMP_InputField refreshLoginPasswordInput;
[SerializeField] private Button refreshLoginBackButton;
[SerializeField] private Button refreshLoginSubmitButton;
[SerializeField] private TMP_Text refreshLoginStatusText;
[SerializeField] private TMP_InputField refreshLoginUsernameInput;
[SerializeField] private TMP_InputField refreshLoginPasswordInput;
[SerializeField] private Button refreshLoginBackButton;
[SerializeField] private Button refreshLoginSubmitButton;
void Awake() {
refreshLoginUsernameInput.onSelect.AddListener((_) => refreshLoginUsernameInput.caretPosition = refreshLoginUsernameInput.text.Length);
refreshLoginPasswordInput.onSelect.AddListener((_) => refreshLoginPasswordInput.caretPosition = refreshLoginPasswordInput.text.Length);
void Awake() {
refreshLoginUsernameInput.onSelect.AddListener((_) => refreshLoginUsernameInput.caretPosition = refreshLoginUsernameInput.text.Length);
refreshLoginPasswordInput.onSelect.AddListener((_) => refreshLoginPasswordInput.caretPosition = refreshLoginPasswordInput.text.Length);
refreshLoginBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
refreshLoginSubmitButton.onClick.AddListener(() => RefreshLogin());
refreshLoginBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0));
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;
}
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);
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;
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;
}
}
+75 -75
View File
@@ -5,84 +5,84 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class AccountRegister : MonoBehaviour {
[SerializeField] private TMP_Text registerPanelStatusText;
[SerializeField] private TMP_InputField registerUsernameInput;
[SerializeField] private TMP_InputField registerEmailInput;
[SerializeField] private TMP_InputField registerRetypeEmailInput;
[SerializeField] private TMP_InputField registerPasswordInput;
[SerializeField] private TMP_InputField registerRetypePasswordInput;
[SerializeField] private TMP_InputField registerVerifyCodeInput;
[SerializeField] private Button registerBackButton;
[SerializeField] private Button registerSubmitButton;
[SerializeField] private TMP_Text registerPanelStatusText;
[SerializeField] private TMP_InputField registerUsernameInput;
[SerializeField] private TMP_InputField registerEmailInput;
[SerializeField] private TMP_InputField registerRetypeEmailInput;
[SerializeField] private TMP_InputField registerPasswordInput;
[SerializeField] private TMP_InputField registerRetypePasswordInput;
[SerializeField] private TMP_InputField registerVerifyCodeInput;
[SerializeField] private Button registerBackButton;
[SerializeField] private Button registerSubmitButton;
void Awake() {
registerUsernameInput.onSelect.AddListener((_) => registerUsernameInput.caretPosition = registerUsernameInput.text.Length);
registerEmailInput.onSelect.AddListener((_) => registerEmailInput.caretPosition = registerEmailInput.text.Length);
registerRetypeEmailInput.onSelect.AddListener((_) => registerRetypeEmailInput.caretPosition = registerRetypeEmailInput.text.Length);
registerPasswordInput.onSelect.AddListener((_) => registerPasswordInput.caretPosition = registerPasswordInput.text.Length);
registerRetypePasswordInput.onSelect.AddListener((_) => registerRetypePasswordInput.caretPosition = registerRetypePasswordInput.text.Length);
registerVerifyCodeInput.onSelect.AddListener((_) => registerVerifyCodeInput.caretPosition = registerVerifyCodeInput.text.Length);
void Awake() {
registerUsernameInput.onSelect.AddListener((_) => registerUsernameInput.caretPosition = registerUsernameInput.text.Length);
registerEmailInput.onSelect.AddListener((_) => registerEmailInput.caretPosition = registerEmailInput.text.Length);
registerRetypeEmailInput.onSelect.AddListener((_) => registerRetypeEmailInput.caretPosition = registerRetypeEmailInput.text.Length);
registerPasswordInput.onSelect.AddListener((_) => registerPasswordInput.caretPosition = registerPasswordInput.text.Length);
registerRetypePasswordInput.onSelect.AddListener((_) => registerRetypePasswordInput.caretPosition = registerRetypePasswordInput.text.Length);
registerVerifyCodeInput.onSelect.AddListener((_) => registerVerifyCodeInput.caretPosition = registerVerifyCodeInput.text.Length);
registerBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1));
registerSubmitButton.onClick.AddListener(() => SubmitRegister());
registerBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1));
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;
}
void OnEnable() {
registerUsernameInput.text = "";
registerEmailInput.text = "";
registerRetypeEmailInput.text = "";
registerPasswordInput.text = "";
registerRetypePasswordInput.text = "";
registerVerifyCodeInput.text = "";
registerPanelStatusText.text = "";
if (registerEmailInput.text != registerRetypeEmailInput.text) {
Tools.UpdateStatusText(registerPanelStatusText, "Emails don't match", Color.red);
return;
}
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) {
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;
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;
}
}
+337 -337
View File
@@ -13,359 +13,359 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class ChatroomMenu : MonoBehaviour {
[SerializeField] private TMP_Text statusText;
[SerializeField] private Button backButton;
[SerializeField] private Button sendButton;
[SerializeField] private TMP_InputField messageInputField;
[SerializeField] private GameObject content;
[SerializeField] private GameObject sampleObject;
[SerializeField] private Button downButton;
[SerializeField] private ProfileMenu profilePrefab;
[SerializeField] private TMP_Text statusText;
[SerializeField] private Button backButton;
[SerializeField] private Button sendButton;
[SerializeField] private TMP_InputField messageInputField;
[SerializeField] private GameObject content;
[SerializeField] private GameObject sampleObject;
[SerializeField] private Button downButton;
[SerializeField] private ProfileMenu profilePrefab;
[SerializeField] private GameObject optionsPanel;
[SerializeField] private Button optionsPanelExitButton;
[SerializeField] private Button optionsPanelDeleteButton;
[SerializeField] private Button optionsPanelEditButton;
[SerializeField] private Button optionsPanelReportButton;
[SerializeField] private Button optionsPanelCopyButton;
private ChatroomMessage selectedMessageForOptions;
[SerializeField] private GameObject optionsPanel;
[SerializeField] private Button optionsPanelExitButton;
[SerializeField] private Button optionsPanelDeleteButton;
[SerializeField] private Button optionsPanelEditButton;
[SerializeField] private Button optionsPanelReportButton;
[SerializeField] private Button optionsPanelCopyButton;
private ChatroomMessage selectedMessageForOptions;
[SerializeField] private GameObject editMessagePanelSample;
private GameObject editMessagePanelCurrent;
[SerializeField] private GameObject editMessagePanelSample;
private GameObject editMessagePanelCurrent;
[SerializeField] private GameObject reportMessagePanel;
[SerializeField] private Button reportMessagePanelExitButton;
[SerializeField] private Button reportMessagePanelSubmitButton;
[SerializeField] private TMP_InputField reportMessagePanelReportReason;
[SerializeField] private GameObject reportMessagePanel;
[SerializeField] private Button reportMessagePanelExitButton;
[SerializeField] private Button reportMessagePanelSubmitButton;
[SerializeField] private TMP_InputField reportMessagePanelReportReason;
void Awake() {
messageInputField.onSelect.AddListener((_) => messageInputField.caretPosition = messageInputField.text.Length);
reportMessagePanelReportReason.onSelect.AddListener((_) => reportMessagePanelReportReason.caretPosition = reportMessagePanelReportReason.text.Length);
void Awake() {
messageInputField.onSelect.AddListener((_) => messageInputField.caretPosition = messageInputField.text.Length);
reportMessagePanelReportReason.onSelect.AddListener((_) => reportMessagePanelReportReason.caretPosition = reportMessagePanelReportReason.text.Length);
WebsocketHandler.Instance._Connection.StateChanged += OnStateChanged;
WebsocketHandler.Instance._Connection.MessageReceived += OnMessageReceived;
if (WebsocketHandler.Instance._Connection.State == WebSocketState.Connected) {
statusText.text = "Loading messages";
RequestInfoMessage msg = new() {
kind = "chatroom_messages"
};
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
}
WebsocketHandler.Instance._Connection.StateChanged += OnStateChanged;
WebsocketHandler.Instance._Connection.MessageReceived += OnMessageReceived;
if (WebsocketHandler.Instance._Connection.State == WebSocketState.Connected) {
statusText.text = "Loading messages";
RequestInfoMessage msg = new() {
kind = "chatroom_messages"
};
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
}
}
private void OnStateChanged(WebSocketConnection connection, WebSocketState oldState, WebSocketState newState) {
if (newState == WebSocketState.Connected) {
statusText.text = "Loading messages";
RequestInfoMessage msg = new() {
kind = "chatroom_messages"
};
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
}
private void OnStateChanged(WebSocketConnection connection, WebSocketState oldState, WebSocketState newState) {
if (newState == WebSocketState.Connected) {
statusText.text = "Loading messages";
RequestInfoMessage msg = new() {
kind = "chatroom_messages"
};
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
}
}
private void OnMessageReceived(WebSocketConnection connection, WebSocketMessage message) {
if (message.String != null && connection.State == WebSocketState.Connected) {
JToken data = JToken.Parse(message.String);
if (data["for"] != null) {
if (data["for"].ToString() == "info_request:chatroom_messages") {
var userId = BazookaManager.Instance.GetAccountID();
foreach (Transform item in content.transform) {
if (!item.gameObject.activeSelf) continue;
Destroy(item.gameObject);
break;
}
foreach (var chatMessage in data["data"].ToObject<ChatroomMessage[]>()) {
InsertMessage(chatMessage, userId);
}
statusText.text = "";
StartCoroutine(ScrollToBottom());
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
} else if (data["for"].ToString() == "upload:chatroom_message") {
var userId = BazookaManager.Instance.GetAccountID();
var chatMessage = data["data"].ToObject<ChatroomMessage>();
Destroy(content.transform.GetChild(1).gameObject);
InsertMessage(chatMessage, userId);
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
} else if (data["for"].ToString() == "delete:chatroom_message") {
Destroy(content.transform.Find("ChatroomRow_" + data["data"]["id"].ToString() ?? "").gameObject);
if (data["data"]["fillerMessage"].ToString() != null) {
var userId = BazookaManager.Instance.GetAccountID();
var chatMessage = data["data"]["fillerMessage"].ToObject<ChatroomMessage>();
var row = InsertMessage(chatMessage, userId);
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);
private void OnMessageReceived(WebSocketConnection connection, WebSocketMessage message) {
if (message.String != null && connection.State == WebSocketState.Connected) {
JToken data = JToken.Parse(message.String);
if (data["for"] != null) {
if (data["for"].ToString() == "info_request:chatroom_messages") {
var userId = BazookaManager.Instance.GetAccountID();
foreach (Transform item in content.transform) {
if (!item.gameObject.activeSelf) continue;
Destroy(item.gameObject);
break;
}
foreach (var chatMessage in data["data"].ToObject<ChatroomMessage[]>()) {
InsertMessage(chatMessage, userId);
}
statusText.text = "";
StartCoroutine(ScrollToBottom());
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
} else if (data["for"].ToString() == "upload:chatroom_message") {
var userId = BazookaManager.Instance.GetAccountID();
var chatMessage = data["data"].ToObject<ChatroomMessage>();
Destroy(content.transform.GetChild(1).gameObject);
InsertMessage(chatMessage, userId);
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
} else if (data["for"].ToString() == "delete:chatroom_message") {
Destroy(content.transform.Find("ChatroomRow_" + data["data"]["id"].ToString() ?? "").gameObject);
if (data["data"]["fillerMessage"].ToString() != null) {
var userId = BazookaManager.Instance.GetAccountID();
var chatMessage = data["data"]["fillerMessage"].ToObject<ChatroomMessage>();
var row = InsertMessage(chatMessage, userId);
row.transform.SetSiblingIndex(1);
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()
}
} 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>";
}
};
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");
rowInfo.transform.GetChild(2).GetComponent<TMP_Text>().text = data["data"]["newContent"].ToString();
}
}
}
}
}
IEnumerator ScrollToBottom() {
yield return new WaitForEndOfFrame();
content.transform.localPosition = new UnityEngine.Vector2(0f, content.GetComponent<RectTransform>().sizeDelta.y);
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());
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);
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));
});
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);
}
}
+51 -51
View File
@@ -3,64 +3,64 @@ using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ChatroomMenuEntry : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler {
private Button optionsButton;
private static ChatroomMenuEntry activeEntry;
private Button optionsButton;
private static ChatroomMenuEntry activeEntry;
public void Init(Button optionsButtonArg) {
optionsButton = optionsButtonArg;
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);
optionsButton.gameObject.SetActive(false);
}
public void Init(Button optionsButtonArg) {
optionsButton = optionsButtonArg;
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);
optionsButton.gameObject.SetActive(false);
}
public void OnPointerEnter(PointerEventData e) {
if (!Application.isMobilePlatform) {
if (activeEntry != null && activeEntry != this) {
activeEntry.Deactivate();
}
if (activeEntry != this) {
Activate();
}
}
public void OnPointerEnter(PointerEventData e) {
if (!Application.isMobilePlatform) {
if (activeEntry != null && activeEntry != this) {
activeEntry.Deactivate();
}
if (activeEntry != this) {
Activate();
}
}
}
public void OnPointerExit(PointerEventData e) {
if (!Application.isMobilePlatform) {
if (activeEntry != null && activeEntry != this) {
activeEntry.Deactivate();
}
if (activeEntry == this) {
Deactivate();
}
}
public void OnPointerExit(PointerEventData e) {
if (!Application.isMobilePlatform) {
if (activeEntry != null && activeEntry != this) {
activeEntry.Deactivate();
}
if (activeEntry == this) {
Deactivate();
}
}
}
public void OnPointerClick(PointerEventData e) {
if (Application.isMobilePlatform) {
if (activeEntry != null && activeEntry != this) {
activeEntry.Deactivate();
}
if (activeEntry == this) {
Deactivate();
} else {
Activate();
}
} else if (e.button == PointerEventData.InputButton.Right) {
optionsButton.onClick?.Invoke();
}
public void OnPointerClick(PointerEventData e) {
if (Application.isMobilePlatform) {
if (activeEntry != null && activeEntry != this) {
activeEntry.Deactivate();
}
if (activeEntry == this) {
Deactivate();
} else {
Activate();
}
} else if (e.button == PointerEventData.InputButton.Right) {
optionsButton.onClick?.Invoke();
}
}
private void Activate() {
activeEntry = this;
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);
optionsButton.gameObject.SetActive(true);
}
private void Activate() {
activeEntry = this;
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);
optionsButton.gameObject.SetActive(true);
}
private void Deactivate() {
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);
optionsButton.gameObject.SetActive(false);
if (activeEntry == this) activeEntry = null;
}
private void Deactivate() {
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);
optionsButton.gameObject.SetActive(false);
if (activeEntry == this) activeEntry = null;
}
}
+43 -43
View File
@@ -2,54 +2,54 @@ using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public class GameMusicHandler : MonoBehaviour {
[SerializeField] private AudioClip[] audioClips;
private AudioSource audioSource;
private int lastIndex = -1;
private int currentIndex = 0;
private bool isPaused = false;
[SerializeField] private AudioClip[] audioClips;
private AudioSource audioSource;
private int lastIndex = -1;
private int currentIndex = 0;
private bool isPaused = false;
void Start() {
audioSource = GetComponent<AudioSource>();
PlayNextClip();
void Start() {
audioSource = GetComponent<AudioSource>();
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() {
if (!audioSource.isPlaying && !isPaused) PlayNextClip();
lastIndex = index;
audioSource.clip = audioClips[index];
audioSource.Play();
}
public void PauseMusic() {
if (audioSource.isPlaying) {
audioSource.Pause();
isPaused = true;
}
}
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;
}
lastIndex = index;
audioSource.clip = audioClips[index];
audioSource.Play();
public void ResumeMusic() {
if (isPaused) {
audioSource.Play();
isPaused = false;
}
}
public void PauseMusic() {
if (audioSource.isPlaying) {
audioSource.Pause();
isPaused = true;
}
}
public void ResumeMusic() {
if (isPaused) {
audioSource.Play();
isPaused = false;
}
}
public void RestartMusic() {
audioSource.Stop();
audioSource.Play();
}
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;
public class AutoGamePlayerPauseMenu : MonoBehaviour {
public static AutoGamePlayerPauseMenu Instance;
[SerializeField] private Button backButton;
[SerializeField] private Button continueButton;
[SerializeField] private Button statsButton;
[SerializeField] private Button editUiButton;
[SerializeField] private Button resetUiButton;
[SerializeField] private AudioSource songLoop;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text highScoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private TMP_Text levelText;
[SerializeField] private Button pauseButton;
internal bool editingUI = false;
public static AutoGamePlayerPauseMenu Instance;
[SerializeField] private Button backButton;
[SerializeField] private Button continueButton;
[SerializeField] private Button statsButton;
[SerializeField] private Button editUiButton;
[SerializeField] private Button resetUiButton;
[SerializeField] private AudioSource songLoop;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text highScoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private TMP_Text levelText;
[SerializeField] private Button pauseButton;
internal bool editingUI = false;
public GameObject statsMenu;
public Button statsMenuExitButton;
[SerializeField] private TMP_Text statsText;
public GameObject statsMenu;
public Button statsMenuExitButton;
[SerializeField] private TMP_Text statsText;
[SerializeField] private Toggle settingFullscreenToggle;
[SerializeField] private Toggle settingVSyncToggle;
[SerializeField] private Toggle settingRandomMusicToggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private TMP_Text musicSliderText;
[SerializeField] private TMP_Text sfxSliderText;
[SerializeField] private Toggle settingFullscreenToggle;
[SerializeField] private Toggle settingVSyncToggle;
[SerializeField] private Toggle settingRandomMusicToggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private TMP_Text musicSliderText;
[SerializeField] private TMP_Text sfxSliderText;
void Awake() {
Instance = this;
continueButton.onClick.AddListener(AutoGamePlayer.Instance.DisablePause);
musicSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingMusicVolume(value);
songLoop.volume = value;
});
sfxSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingSFXVolume(value);
});
editUiButton.onClick.AddListener(() => {
ToggleEditingUI();
});
resetUiButton.onClick.AddListener(() => {
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
highScoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -190f);
levelText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-290f, 85f);
PlayerPrefs.DeleteKey("DraggedUIScoreText");
PlayerPrefs.DeleteKey("DraggedUIHighScoreText");
PlayerPrefs.DeleteKey("DraggedUIBoostText");
PlayerPrefs.DeleteKey("DraggedUICoinsText");
PlayerPrefs.DeleteKey("DraggedUILevelText");
if (Application.isMobilePlatform) {
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
PlayerPrefs.DeleteKey("DraggedUIRightButton");
PlayerPrefs.DeleteKey("DraggedUILeftButton");
}
});
statsButton.onClick.AddListener(() => {
statsMenu.SetActive(true);
var text = new StringBuilder();
text.AppendLine("High Score: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.highscore));
text.AppendLine("Total Normal Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalNormalBerries));
text.AppendLine("Total Poison Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalPoisonBerries));
text.AppendLine("Total Slow Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalSlowBerries));
text.AppendLine("Total Ultra Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalUltraBerries));
text.AppendLine("Total Speedy Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalSpeedyBerries));
text.AppendLine("Total Random Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalRandomBerries));
text.AppendLine("Total Anti Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalAntiBerries));
text.AppendLine("Total Golden Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalGoldenBerries));
text.AppendLine("Total Attempts: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalAttempts));
text.AppendLine("Note: This is the AI stats");
statsText.text = text.ToString();
});
statsMenuExitButton.onClick.AddListener(() => {
statsMenu.SetActive(false);
statsText.text = string.Empty;
});
void Awake() {
Instance = this;
continueButton.onClick.AddListener(AutoGamePlayer.Instance.DisablePause);
musicSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingMusicVolume(value);
songLoop.volume = value;
});
sfxSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingSFXVolume(value);
});
editUiButton.onClick.AddListener(() => {
ToggleEditingUI();
});
resetUiButton.onClick.AddListener(() => {
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
highScoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -190f);
levelText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-290f, 85f);
PlayerPrefs.DeleteKey("DraggedUIScoreText");
PlayerPrefs.DeleteKey("DraggedUIHighScoreText");
PlayerPrefs.DeleteKey("DraggedUIBoostText");
PlayerPrefs.DeleteKey("DraggedUICoinsText");
PlayerPrefs.DeleteKey("DraggedUILevelText");
if (Application.isMobilePlatform) {
pauseButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, -128f);
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
PlayerPrefs.DeleteKey("DraggedUIRightButton");
PlayerPrefs.DeleteKey("DraggedUILeftButton");
}
});
statsButton.onClick.AddListener(() => {
statsMenu.SetActive(true);
var text = new StringBuilder();
text.AppendLine("High Score: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.highscore));
text.AppendLine("Total Normal Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalNormalBerries));
text.AppendLine("Total Poison Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalPoisonBerries));
text.AppendLine("Total Slow Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalSlowBerries));
text.AppendLine("Total Ultra Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalUltraBerries));
text.AppendLine("Total Speedy Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalSpeedyBerries));
text.AppendLine("Total Random Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalRandomBerries));
text.AppendLine("Total Anti Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalAntiBerries));
text.AppendLine("Total Golden Berries: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalGoldenBerries));
text.AppendLine("Total Attempts: " + Tools.FormatWithCommas(AutoGamePlayer.Instance.totalAttempts));
text.AppendLine("Note: This is the AI stats");
statsText.text = text.ToString();
});
statsMenuExitButton.onClick.AddListener(() => {
statsMenu.SetActive(false);
statsText.text = string.Empty;
});
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
settingFullscreenToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
settingVSyncToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
settingFullscreenToggle.interactable = false;
settingVSyncToggle.interactable = false;
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));
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
settingFullscreenToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
settingVSyncToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
settingFullscreenToggle.interactable = false;
settingVSyncToggle.interactable = false;
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));
}
public void ToggleEditingUI() {
editingUI = !editingUI;
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
continueButton.gameObject.SetActive(!continueButton.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";
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
highScoreText.GetComponent<DraggableUI>().canDrag = !highScoreText.GetComponent<DraggableUI>().canDrag;
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
levelText.GetComponent<DraggableUI>().canDrag = !levelText.GetComponent<DraggableUI>().canDrag;
if (Application.isMobilePlatform) {
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
pauseButton.interactable = !pauseDraggableUI.canDrag;
}
public void ToggleEditingUI() {
editingUI = !editingUI;
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
continueButton.gameObject.SetActive(!continueButton.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";
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
highScoreText.GetComponent<DraggableUI>().canDrag = !highScoreText.GetComponent<DraggableUI>().canDrag;
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
levelText.GetComponent<DraggableUI>().canDrag = !levelText.GetComponent<DraggableUI>().canDrag;
if (Application.isMobilePlatform) {
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
pauseDraggableUI.canDrag = !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;
public class CustomGamePlayerPauseMenu : MonoBehaviour {
public static CustomGamePlayerPauseMenu Instance;
[SerializeField] private Button backButton;
[SerializeField] private Button continueButton;
[SerializeField] private Button editUiButton;
[SerializeField] private Button resetUiButton;
[SerializeField] private AudioSource songLoop;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private Button pauseButton;
[SerializeField] private Button restartButton;
[SerializeField] private Button jumpButton;
[SerializeField] private Button rightButton;
[SerializeField] private Button leftButton;
internal bool editingUI = false;
public static CustomGamePlayerPauseMenu Instance;
[SerializeField] private Button backButton;
[SerializeField] private Button continueButton;
[SerializeField] private Button editUiButton;
[SerializeField] private Button resetUiButton;
[SerializeField] private AudioSource songLoop;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private Button pauseButton;
[SerializeField] private Button restartButton;
[SerializeField] private Button jumpButton;
[SerializeField] private Button rightButton;
[SerializeField] private Button leftButton;
internal bool editingUI = false;
[SerializeField] private Toggle settingFullscreenToggle;
[SerializeField] private Toggle settingVSyncToggle;
[SerializeField] private Toggle settingRandomMusicToggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private TMP_Text musicSliderText;
[SerializeField] private TMP_Text sfxSliderText;
[SerializeField] private Toggle settingFullscreenToggle;
[SerializeField] private Toggle settingVSyncToggle;
[SerializeField] private Toggle settingRandomMusicToggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private TMP_Text musicSliderText;
[SerializeField] private TMP_Text sfxSliderText;
void Awake() {
Instance = this;
continueButton.onClick.AddListener(CustomGamePlayer.Instance.DisablePause);
musicSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingMusicVolume(value);
songLoop.volume = value;
});
sfxSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingSFXVolume(value);
});
editUiButton.onClick.AddListener(() => {
ToggleEditingUI();
});
resetUiButton.onClick.AddListener(() => {
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
PlayerPrefs.DeleteKey("DraggedUIScoreTextCustom");
PlayerPrefs.DeleteKey("DraggedUIBoostTextCustom");
if (Application.isMobilePlatform) {
pauseButton.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);
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
PlayerPrefs.DeleteKey("DraggedUIRightButton");
PlayerPrefs.DeleteKey("DraggedUILeftButton");
}
});
void Awake() {
Instance = this;
continueButton.onClick.AddListener(CustomGamePlayer.Instance.DisablePause);
musicSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingMusicVolume(value);
songLoop.volume = value;
});
sfxSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingSFXVolume(value);
});
editUiButton.onClick.AddListener(() => {
ToggleEditingUI();
});
resetUiButton.onClick.AddListener(() => {
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
PlayerPrefs.DeleteKey("DraggedUIScoreTextCustom");
PlayerPrefs.DeleteKey("DraggedUIBoostTextCustom");
if (Application.isMobilePlatform) {
pauseButton.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);
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
PlayerPrefs.DeleteKey("DraggedUIRightButton");
PlayerPrefs.DeleteKey("DraggedUILeftButton");
}
});
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
settingFullscreenToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
settingVSyncToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
settingFullscreenToggle.interactable = false;
settingVSyncToggle.interactable = false;
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));
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
settingFullscreenToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
settingVSyncToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
settingFullscreenToggle.interactable = false;
settingVSyncToggle.interactable = false;
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));
}
public void ToggleEditingUI() {
editingUI = !editingUI;
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
backButton.gameObject.SetActive(!backButton.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";
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
if (Application.isMobilePlatform) {
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
pauseButton.interactable = !pauseDraggableUI.canDrag;
restartButton.interactable = !restartDraggableUI.canDrag;
jumpButton.interactable = !jumpDraggableUI.canDrag;
rightButton.interactable = !rightDraggableUI.canDrag;
leftButton.interactable = !leftDraggableUI.canDrag;
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;
}
public void ToggleEditingUI() {
editingUI = !editingUI;
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
backButton.gameObject.SetActive(!backButton.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";
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
if (Application.isMobilePlatform) {
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
pauseButton.interactable = !pauseDraggableUI.canDrag;
restartButton.interactable = !restartDraggableUI.canDrag;
jumpButton.interactable = !jumpDraggableUI.canDrag;
rightButton.interactable = !rightDraggableUI.canDrag;
leftButton.interactable = !leftDraggableUI.canDrag;
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;
}
}
}
@@ -1,18 +1,18 @@
using UnityEngine;
public class CustomGameTempData : MonoBehaviour {
public float normalBerryChance;
public float poisonBerryChance;
public float slowBerryChance;
public float ultraBerryChance;
public float speedyBerryChance;
public float randomBerryChance;
public float antiBerryChance;
public float goldenBerryChance;
public float nothingBerryChance;
public bool useAI;
public float normalBerryChance;
public float poisonBerryChance;
public float slowBerryChance;
public float ultraBerryChance;
public float speedyBerryChance;
public float randomBerryChance;
public float antiBerryChance;
public float goldenBerryChance;
public float nothingBerryChance;
public bool useAI;
void Awake() {
DontDestroyOnLoad(gameObject);
}
void Awake() {
DontDestroyOnLoad(gameObject);
}
}
+476 -475
View File
@@ -8,481 +8,482 @@ using UnityEngine.InputSystem;
using UnityEngine.UI;
public class GamePlayer : MonoBehaviour {
public static GamePlayer Instance;
private readonly float spawnRate = 1f;
private float nextSpawnTime;
internal BigInteger score;
private BigInteger attempts;
internal BigInteger highscore;
internal BigInteger totalNormalBerries;
internal BigInteger totalPoisonBerries;
internal BigInteger totalSlowBerries;
internal BigInteger totalUltraBerries;
internal BigInteger totalSpeedyBerries;
internal BigInteger totalCoinBerries;
internal BigInteger totalRandomBerries;
internal BigInteger totalAntiBerries;
internal BigInteger totalGoldenBerries;
internal BigInteger totalAttempts;
private BigInteger totalCoins;
private float boostLeft;
private float slownessLeft;
private float speedyLeft;
private float antiLeft;
private float goldenLeft;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text highScoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private TMP_Text coinText;
[SerializeField] private GameObject pausePanel;
[SerializeField] internal AudioSource backgroundMusic;
[SerializeField] private GameObject berryParent;
[SerializeField] private TMP_Text levelText;
public static GamePlayer Instance;
private readonly float spawnRate = 1f;
private float nextSpawnTime;
internal BigInteger score;
private BigInteger attempts;
internal BigInteger highscore;
internal BigInteger totalNormalBerries;
internal BigInteger totalPoisonBerries;
internal BigInteger totalSlowBerries;
internal BigInteger totalUltraBerries;
internal BigInteger totalSpeedyBerries;
internal BigInteger totalCoinBerries;
internal BigInteger totalRandomBerries;
internal BigInteger totalAntiBerries;
internal BigInteger totalGoldenBerries;
internal BigInteger totalAttempts;
private BigInteger totalCoins;
private float boostLeft;
private float slownessLeft;
private float speedyLeft;
private float antiLeft;
private float goldenLeft;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text highScoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private TMP_Text coinText;
[SerializeField] private GameObject pausePanel;
[SerializeField] internal AudioSource backgroundMusic;
[SerializeField] private GameObject berryParent;
[SerializeField] private TMP_Text levelText;
[SerializeField] private GameObject mobileButtons;
[SerializeField] private Button pauseButton;
[SerializeField] private Button restartButton;
[SerializeField] private Button jumpButton;
[SerializeField] private Button rightButton;
[SerializeField] private Button leftButton;
[SerializeField] private GameObject mobileButtons;
[SerializeField] private Button pauseButton;
[SerializeField] private Button restartButton;
[SerializeField] private Button jumpButton;
[SerializeField] private Button rightButton;
[SerializeField] private Button leftButton;
[SerializeField] private Image bird;
[SerializeField] private GameObject berryTemplate;
[SerializeField] private Rigidbody2D rb;
[SerializeField] private RectTransform canvasRect;
[SerializeField] private BoxCollider2D groundCollider;
private UnityEngine.Vector2 velocityBeforePause = new();
private readonly List<int> noGravityBerries = new();
[SerializeField] private Image bird;
[SerializeField] private GameObject berryTemplate;
[SerializeField] private Rigidbody2D rb;
[SerializeField] private RectTransform canvasRect;
[SerializeField] private BoxCollider2D groundCollider;
private UnityEngine.Vector2 velocityBeforePause = 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() {
Instance = this;
void Awake() {
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;
}
}
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);
if (doMoveLeft && !doMoveRight) {
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 (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 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;
}
float scale = (canvasRect.lossyScale.x + canvasRect.lossyScale.y) / 2f;
float radius = antiLeft > 0f ? 250f * scale : 325f * scale;
float speed = antiLeft > 0f ? 1.25f * scale : -1.75f * scale;
foreach (string tag in berryTags) {
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) {
berryRect.position += speed * dir.normalized;
ClampPosition(berry.GetComponent<Image>());
noGravityBerries.Add(berry.GetInstanceID());
} else noGravityBerries.Remove(berry.GetInstanceID());
}
if (doMoveLeft && !doMoveRight) {
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);
}
} else if (noGravityBerries.Count() != 0) noGravityBerries.Clear();
}
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) {
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");
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();
}
float scale = (canvasRect.lossyScale.x + canvasRect.lossyScale.y) / 2f;
float radius = antiLeft > 0f ? 250f * scale : 325f * scale;
float speed = antiLeft > 0f ? 1.25f * scale : -1.75f * scale;
void Respawn() {
bird.GetComponent<RectTransform>().anchoredPosition = new UnityEngine.Vector3(0f, 64f, 0f);
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 (var berry in GameObject.FindGameObjectsWithTag(tag)) {
RectTransform berryRect = berry.GetComponent<RectTransform>();
UnityEngine.Vector3 dir = berryRect.position - bird.GetComponent<RectTransform>().position;
foreach (GameObject berry in Tools.GetAllBerries(berryParent.transform)) Destroy(berry);
}
if (dir.magnitude < radius) {
berryRect.position += speed * dir.normalized;
ClampPosition(berry.GetComponent<Image>());
noGravityBerries.Add(berry.GetInstanceID());
} else noGravityBerries.Remove(berry.GetInstanceID());
}
}
} else if (noGravityBerries.Count() != 0) noGravityBerries.Clear();
void UpdateStats(BigInteger scoreAddAmount, BigInteger attemptAddAmount) {
var levelBefore = Tools.GetLevelInfo().level;
var prefix = "";
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());
}
void ClampPosition(Image image) {
RectTransform birdRect = image.GetComponent<RectTransform>();
float halfW = canvasRect.rect.width / 2f;
float halfBirdW = birdRect.rect.width / 2f;
internal void TogglePause() {
if (pausePanel.activeSelf) DisablePause();
else EnablePause();
}
UnityEngine.Vector2 pos = birdRect.anchoredPosition;
pos.x = Mathf.Clamp(pos.x, -halfW + halfBirdW, halfW - halfBirdW);
birdRect.anchoredPosition = pos;
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;
}
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 = "";
}
}
if (GamePlayerPauseMenu.Instance.editingUI == true) {
GamePlayerPauseMenu.Instance.ToggleEditingUI();
return;
}
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
backgroundMusic.GetComponent<GameMusicHandler>().ResumeMusic();
pausePanel.SetActive(false);
}
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);
void OnApplicationPause(bool pause) {
if (pause) EnablePause();
}
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";
}
void OnApplicationQuit() {
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
}
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 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 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 (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 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 Respawn() {
bird.GetComponent<RectTransform>().anchoredPosition = new UnityEngine.Vector3(0f, 64f, 0f);
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);
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);
}
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) {
var levelBefore = Tools.GetLevelInfo().level;
var prefix = "";
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 = {
void DoRandomBerry(GameObject berry) {
totalRandomBerries++;
Action[] funcs = {
() => DoNormalBerry(berry, false),
() => DoSlowBerry(berry, false),
() => DoUltraBerry(berry, false),
@@ -491,32 +492,32 @@ public class GamePlayer : MonoBehaviour {
() => DoAntiBerry(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) {
if (increment) totalAntiBerries++;
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 = 0f;
speedyLeft = 0f;
antiLeft = 10f;
goldenLeft = 0f;
UpdateStats(0, 0);
}
void DoAntiBerry(GameObject berry, bool increment) {
if (increment) totalAntiBerries++;
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 = 0f;
speedyLeft = 0f;
antiLeft = 10f;
goldenLeft = 0f;
UpdateStats(0, 0);
}
void DoGoldenBerry(GameObject berry, bool increment) {
if (increment) totalGoldenBerries++;
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Powerup"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
noGravityBerries.Remove(berry.GetInstanceID());
Destroy(berry);
boostLeft = 0f;
slownessLeft = 0f;
speedyLeft = 0f;
antiLeft = 0f;
goldenLeft = 10f;
UpdateStats(4, 0);
}
void DoGoldenBerry(GameObject berry, bool increment) {
if (increment) totalGoldenBerries++;
AudioSource.PlayClipAtPoint(Resources.Load<AudioClip>("Sounds/Powerup"), Camera.main.transform.position, 0.35f * BazookaManager.Instance.GetSettingSFXVolume());
noGravityBerries.Remove(berry.GetInstanceID());
Destroy(berry);
boostLeft = 0f;
slownessLeft = 0f;
speedyLeft = 0f;
antiLeft = 0f;
goldenLeft = 10f;
UpdateStats(4, 0);
}
}
+151 -151
View File
@@ -4,162 +4,162 @@ using UnityEngine;
using UnityEngine.UI;
public class GamePlayerPauseMenu : MonoBehaviour {
public static GamePlayerPauseMenu Instance;
[SerializeField] private Button backButton;
[SerializeField] private Button continueButton;
[SerializeField] private Button statsButton;
[SerializeField] private Button editUiButton;
[SerializeField] private Button resetUiButton;
[SerializeField] private AudioSource songLoop;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text highScoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private TMP_Text coinsText;
[SerializeField] private TMP_Text levelText;
[SerializeField] private Button pauseButton;
[SerializeField] private Button restartButton;
[SerializeField] private Button jumpButton;
[SerializeField] private Button rightButton;
[SerializeField] private Button leftButton;
internal bool editingUI = false;
public static GamePlayerPauseMenu Instance;
[SerializeField] private Button backButton;
[SerializeField] private Button continueButton;
[SerializeField] private Button statsButton;
[SerializeField] private Button editUiButton;
[SerializeField] private Button resetUiButton;
[SerializeField] private AudioSource songLoop;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text highScoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private TMP_Text coinsText;
[SerializeField] private TMP_Text levelText;
[SerializeField] private Button pauseButton;
[SerializeField] private Button restartButton;
[SerializeField] private Button jumpButton;
[SerializeField] private Button rightButton;
[SerializeField] private Button leftButton;
internal bool editingUI = false;
public GameObject statsMenu;
public Button statsMenuExitButton;
[SerializeField] private TMP_Text statsText;
public GameObject statsMenu;
public Button statsMenuExitButton;
[SerializeField] private TMP_Text statsText;
[SerializeField] private Toggle settingFullscreenToggle;
[SerializeField] private Toggle settingVSyncToggle;
[SerializeField] private Toggle settingRandomMusicToggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private TMP_Text musicSliderText;
[SerializeField] private TMP_Text sfxSliderText;
[SerializeField] private Toggle settingFullscreenToggle;
[SerializeField] private Toggle settingVSyncToggle;
[SerializeField] private Toggle settingRandomMusicToggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private TMP_Text musicSliderText;
[SerializeField] private TMP_Text sfxSliderText;
void Awake() {
Instance = this;
continueButton.onClick.AddListener(GamePlayer.Instance.DisablePause);
musicSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingMusicVolume(value);
songLoop.volume = value;
});
sfxSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingSFXVolume(value);
});
editUiButton.onClick.AddListener(() => {
ToggleEditingUI();
});
resetUiButton.onClick.AddListener(() => {
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
highScoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -190f);
coinsText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(260f, 47.5f);
levelText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-290f, 85f);
PlayerPrefs.DeleteKey("DraggedUIScoreText");
PlayerPrefs.DeleteKey("DraggedUIHighScoreText");
PlayerPrefs.DeleteKey("DraggedUIBoostText");
PlayerPrefs.DeleteKey("DraggedUICoinsText");
PlayerPrefs.DeleteKey("DraggedUILevelText");
if (Application.isMobilePlatform) {
pauseButton.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);
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
PlayerPrefs.DeleteKey("DraggedUIRightButton");
PlayerPrefs.DeleteKey("DraggedUILeftButton");
}
});
statsButton.onClick.AddListener(() => {
statsMenu.SetActive(true);
var text = new StringBuilder();
text.AppendLine("High Score: " + Tools.FormatWithCommas(GamePlayer.Instance.highscore));
text.AppendLine("Total Normal Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalNormalBerries));
text.AppendLine("Total Poison Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalPoisonBerries));
text.AppendLine("Total Slow Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalSlowBerries));
text.AppendLine("Total Ultra Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalUltraBerries));
text.AppendLine("Total Coin Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalCoinBerries));
text.AppendLine("Total Speedy Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalSpeedyBerries));
text.AppendLine("Total Random Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalRandomBerries));
text.AppendLine("Total Anti Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalAntiBerries));
text.AppendLine("Total Golden Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalGoldenBerries));
text.AppendLine("Total Attempts: " + Tools.FormatWithCommas(GamePlayer.Instance.totalAttempts));
statsText.text = text.ToString();
});
statsMenuExitButton.onClick.AddListener(() => {
statsMenu.SetActive(false);
statsText.text = string.Empty;
});
void Awake() {
Instance = this;
continueButton.onClick.AddListener(GamePlayer.Instance.DisablePause);
musicSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingMusicVolume(value);
songLoop.volume = value;
});
sfxSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingSFXVolume(value);
});
editUiButton.onClick.AddListener(() => {
ToggleEditingUI();
});
resetUiButton.onClick.AddListener(() => {
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
highScoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -190f);
coinsText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(260f, 47.5f);
levelText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-290f, 85f);
PlayerPrefs.DeleteKey("DraggedUIScoreText");
PlayerPrefs.DeleteKey("DraggedUIHighScoreText");
PlayerPrefs.DeleteKey("DraggedUIBoostText");
PlayerPrefs.DeleteKey("DraggedUICoinsText");
PlayerPrefs.DeleteKey("DraggedUILevelText");
if (Application.isMobilePlatform) {
pauseButton.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);
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
PlayerPrefs.DeleteKey("DraggedUIRightButton");
PlayerPrefs.DeleteKey("DraggedUILeftButton");
}
});
statsButton.onClick.AddListener(() => {
statsMenu.SetActive(true);
var text = new StringBuilder();
text.AppendLine("High Score: " + Tools.FormatWithCommas(GamePlayer.Instance.highscore));
text.AppendLine("Total Normal Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalNormalBerries));
text.AppendLine("Total Poison Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalPoisonBerries));
text.AppendLine("Total Slow Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalSlowBerries));
text.AppendLine("Total Ultra Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalUltraBerries));
text.AppendLine("Total Coin Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalCoinBerries));
text.AppendLine("Total Speedy Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalSpeedyBerries));
text.AppendLine("Total Random Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalRandomBerries));
text.AppendLine("Total Anti Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalAntiBerries));
text.AppendLine("Total Golden Berries: " + Tools.FormatWithCommas(GamePlayer.Instance.totalGoldenBerries));
text.AppendLine("Total Attempts: " + Tools.FormatWithCommas(GamePlayer.Instance.totalAttempts));
statsText.text = text.ToString();
});
statsMenuExitButton.onClick.AddListener(() => {
statsMenu.SetActive(false);
statsText.text = string.Empty;
});
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
settingFullscreenToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
settingVSyncToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
settingFullscreenToggle.interactable = false;
settingVSyncToggle.interactable = false;
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));
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
settingFullscreenToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
settingVSyncToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
settingFullscreenToggle.interactable = false;
settingVSyncToggle.interactable = false;
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));
}
public void ToggleEditingUI() {
editingUI = !editingUI;
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
continueButton.gameObject.SetActive(!continueButton.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";
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
highScoreText.GetComponent<DraggableUI>().canDrag = !highScoreText.GetComponent<DraggableUI>().canDrag;
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
coinsText.GetComponent<DraggableUI>().canDrag = !coinsText.GetComponent<DraggableUI>().canDrag;
levelText.GetComponent<DraggableUI>().canDrag = !levelText.GetComponent<DraggableUI>().canDrag;
if (Application.isMobilePlatform) {
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
pauseButton.interactable = !pauseDraggableUI.canDrag;
restartButton.interactable = !restartDraggableUI.canDrag;
jumpButton.interactable = !jumpDraggableUI.canDrag;
rightButton.interactable = !rightDraggableUI.canDrag;
leftButton.interactable = !leftDraggableUI.canDrag;
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;
}
public void ToggleEditingUI() {
editingUI = !editingUI;
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
backButton.gameObject.SetActive(!backButton.gameObject.activeSelf);
continueButton.gameObject.SetActive(!continueButton.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";
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
highScoreText.GetComponent<DraggableUI>().canDrag = !highScoreText.GetComponent<DraggableUI>().canDrag;
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
coinsText.GetComponent<DraggableUI>().canDrag = !coinsText.GetComponent<DraggableUI>().canDrag;
levelText.GetComponent<DraggableUI>().canDrag = !levelText.GetComponent<DraggableUI>().canDrag;
if (Application.isMobilePlatform) {
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
pauseButton.interactable = !pauseDraggableUI.canDrag;
restartButton.interactable = !restartDraggableUI.canDrag;
jumpButton.interactable = !jumpDraggableUI.canDrag;
rightButton.interactable = !rightDraggableUI.canDrag;
leftButton.interactable = !leftDraggableUI.canDrag;
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;
}
}
}
File diff suppressed because it is too large. Load diff
@@ -3,125 +3,125 @@ using UnityEngine;
using UnityEngine.UI;
public class MultiplayerGamePlayerPauseMenu : MonoBehaviour {
public static MultiplayerGamePlayerPauseMenu Instance;
[SerializeField] private Button leaveButton;
[SerializeField] private Button continueButton;
[SerializeField] private Button editUiButton;
[SerializeField] private Button resetUiButton;
[SerializeField] private AudioSource songLoop;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private Button pauseButton;
[SerializeField] private Button restartButton;
[SerializeField] private Button jumpButton;
[SerializeField] private Button rightButton;
[SerializeField] private Button leftButton;
internal bool editingUI = false;
public static MultiplayerGamePlayerPauseMenu Instance;
[SerializeField] private Button leaveButton;
[SerializeField] private Button continueButton;
[SerializeField] private Button editUiButton;
[SerializeField] private Button resetUiButton;
[SerializeField] private AudioSource songLoop;
[SerializeField] private TMP_Text scoreText;
[SerializeField] private TMP_Text boostText;
[SerializeField] private Button pauseButton;
[SerializeField] private Button restartButton;
[SerializeField] private Button jumpButton;
[SerializeField] private Button rightButton;
[SerializeField] private Button leftButton;
internal bool editingUI = false;
[SerializeField] private Toggle settingFullscreenToggle;
[SerializeField] private Toggle settingVSyncToggle;
[SerializeField] private Toggle settingRandomMusicToggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private TMP_Text musicSliderText;
[SerializeField] private TMP_Text sfxSliderText;
[SerializeField] private Toggle settingFullscreenToggle;
[SerializeField] private Toggle settingVSyncToggle;
[SerializeField] private Toggle settingRandomMusicToggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private TMP_Text musicSliderText;
[SerializeField] private TMP_Text sfxSliderText;
void Awake() {
Instance = this;
leaveButton.onClick.AddListener(MultiplayerGamePlayer.Instance.Disconnect);
continueButton.onClick.AddListener(MultiplayerGamePlayer.Instance.DisablePause);
musicSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingMusicVolume(value);
songLoop.volume = value;
});
sfxSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingSFXVolume(value);
});
editUiButton.onClick.AddListener(() => {
ToggleEditingUI();
});
resetUiButton.onClick.AddListener(() => {
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
PlayerPrefs.DeleteKey("DraggedUIScoreTextCustom");
PlayerPrefs.DeleteKey("DraggedUIBoostTextCustom");
if (Application.isMobilePlatform) {
pauseButton.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);
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
PlayerPrefs.DeleteKey("DraggedUIRightButton");
PlayerPrefs.DeleteKey("DraggedUILeftButton");
}
});
void Awake() {
Instance = this;
leaveButton.onClick.AddListener(MultiplayerGamePlayer.Instance.Disconnect);
continueButton.onClick.AddListener(MultiplayerGamePlayer.Instance.DisablePause);
musicSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingMusicVolume(value);
songLoop.volume = value;
});
sfxSlider.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingSFXVolume(value);
});
editUiButton.onClick.AddListener(() => {
ToggleEditingUI();
});
resetUiButton.onClick.AddListener(() => {
scoreText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -70f);
boostText.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0f, -140f);
PlayerPrefs.DeleteKey("DraggedUIScoreTextCustom");
PlayerPrefs.DeleteKey("DraggedUIBoostTextCustom");
if (Application.isMobilePlatform) {
pauseButton.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);
rightButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(-128f, 128f);
leftButton.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(128f, 128f);
PlayerPrefs.DeleteKey("DraggedUIPauseButton");
PlayerPrefs.DeleteKey("DraggedUIRestartButton");
PlayerPrefs.DeleteKey("DraggedUIJumpButton");
PlayerPrefs.DeleteKey("DraggedUIRightButton");
PlayerPrefs.DeleteKey("DraggedUILeftButton");
}
});
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
settingFullscreenToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
settingVSyncToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
settingFullscreenToggle.interactable = false;
settingVSyncToggle.interactable = false;
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));
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
settingFullscreenToggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
settingVSyncToggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
settingRandomMusicToggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
settingFullscreenToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
settingVSyncToggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
settingFullscreenToggle.interactable = false;
settingVSyncToggle.interactable = false;
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));
}
public void ToggleEditingUI() {
editingUI = !editingUI;
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
leaveButton.gameObject.SetActive(!leaveButton.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";
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
if (Application.isMobilePlatform) {
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
pauseButton.interactable = !pauseDraggableUI.canDrag;
restartButton.interactable = !restartDraggableUI.canDrag;
jumpButton.interactable = !jumpDraggableUI.canDrag;
rightButton.interactable = !rightDraggableUI.canDrag;
leftButton.interactable = !leftDraggableUI.canDrag;
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;
}
public void ToggleEditingUI() {
editingUI = !editingUI;
musicSlider.gameObject.SetActive(!musicSlider.gameObject.activeSelf);
sfxSlider.gameObject.SetActive(!sfxSlider.gameObject.activeSelf);
musicSliderText.gameObject.SetActive(!musicSliderText.gameObject.activeSelf);
sfxSliderText.gameObject.SetActive(!sfxSliderText.gameObject.activeSelf);
settingFullscreenToggle.gameObject.SetActive(!settingFullscreenToggle.gameObject.activeSelf);
settingVSyncToggle.gameObject.SetActive(!settingVSyncToggle.gameObject.activeSelf);
settingRandomMusicToggle.gameObject.SetActive(!settingRandomMusicToggle.gameObject.activeSelf);
leaveButton.gameObject.SetActive(!leaveButton.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";
resetUiButton.gameObject.SetActive(!resetUiButton.gameObject.activeSelf);
scoreText.GetComponent<DraggableUI>().canDrag = !scoreText.GetComponent<DraggableUI>().canDrag;
boostText.GetComponent<DraggableUI>().canDrag = !boostText.GetComponent<DraggableUI>().canDrag;
if (Application.isMobilePlatform) {
var pauseDraggableUI = pauseButton.GetComponent<DraggableUI>();
var restartDraggableUI = restartButton.GetComponent<DraggableUI>();
var jumpDraggableUI = jumpButton.GetComponent<DraggableUI>();
var rightDraggableUI = rightButton.GetComponent<DraggableUI>();
var leftDraggableUI = leftButton.GetComponent<DraggableUI>();
pauseButton.transform.parent.SetSiblingIndex(pauseDraggableUI.canDrag ? 0 : 2);
pauseDraggableUI.canDrag = !pauseDraggableUI.canDrag;
restartDraggableUI.canDrag = !restartDraggableUI.canDrag;
jumpDraggableUI.canDrag = !jumpDraggableUI.canDrag;
rightDraggableUI.canDrag = !rightDraggableUI.canDrag;
leftDraggableUI.canDrag = !leftDraggableUI.canDrag;
pauseButton.interactable = !pauseDraggableUI.canDrag;
restartButton.interactable = !restartDraggableUI.canDrag;
jumpButton.interactable = !jumpDraggableUI.canDrag;
rightButton.interactable = !rightDraggableUI.canDrag;
leftButton.interactable = !leftDraggableUI.canDrag;
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;
}
}
}
@@ -1,9 +1,9 @@
using UnityEngine;
public class MultiplayerGameTempData : MonoBehaviour {
public MultiplayerPlayerFromResponse[] players;
public MultiplayerPlayerFromResponse[] players;
void Awake() {
DontDestroyOnLoad(gameObject);
}
void Awake() {
DontDestroyOnLoad(gameObject);
}
}
+25 -25
View File
@@ -3,33 +3,33 @@ using UnityEngine;
[RequireComponent(typeof(TMP_Text))]
public class GlobalFPSText : MonoBehaviour {
private TMP_Text text;
private float timer;
private int frames;
private float fps;
private TMP_Text text;
private float timer;
private int frames;
private float fps;
void Awake() {
if (FindObjectsByType<GlobalFPSText>(FindObjectsSortMode.None).Length > 1) {
Destroy(gameObject.transform.parent.gameObject);
return;
}
DontDestroyOnLoad(transform.parent.gameObject);
text = GetComponent<TMP_Text>();
void Awake() {
if (FindObjectsByType<GlobalFPSText>(FindObjectsSortMode.None).Length > 1) {
Destroy(gameObject.transform.parent.gameObject);
return;
}
DontDestroyOnLoad(transform.parent.gameObject);
text = GetComponent<TMP_Text>();
}
void Update() {
var enabled = BazookaManager.Instance.GetSettingShowFPS();
if (!enabled && text.text != "") {
text.text = "";
return;
} else if (!enabled) return;
frames++;
timer += Time.unscaledDeltaTime;
if (timer >= 0.25f) {
fps = frames / timer;
text.text = "FPS: " + Mathf.RoundToInt(fps);
frames = 0;
timer = 0;
}
void Update() {
var enabled = BazookaManager.Instance.GetSettingShowFPS();
if (!enabled && text.text != "") {
text.text = "";
return;
} else if (!enabled) return;
frames++;
timer += Time.unscaledDeltaTime;
if (timer >= 0.25f) {
fps = frames / timer;
text.text = "FPS: " + Mathf.RoundToInt(fps);
frames = 0;
timer = 0;
}
}
}
@@ -11,273 +11,273 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class IconMarketplaceDownloadIcon : MonoBehaviour {
private readonly static WaitForSeconds _waitForSeconds2 = new(2f);
[SerializeField] private IconMarketplaceManager marketplaceManager;
[SerializeField] private TMP_Text statusText;
[SerializeField] private TMP_Text balanceText;
[SerializeField] private Button backButton;
public GameObject content;
[SerializeField] private GameObject sample;
private string statusMessage;
private Coroutine statusRoutine;
public AudioSource iconPurchaseSound;
[SerializeField] internal Button refreshButton;
[SerializeField] private Button optionsButton;
[SerializeField] internal GameObject optionsPanel;
[SerializeField] internal Button optionsPanelSubmitButton;
[SerializeField] private Button optionsPanelResetButton;
private readonly static WaitForSeconds _waitForSeconds2 = new(2f);
[SerializeField] private IconMarketplaceManager marketplaceManager;
[SerializeField] private TMP_Text statusText;
[SerializeField] private TMP_Text balanceText;
[SerializeField] private Button backButton;
public GameObject content;
[SerializeField] private GameObject sample;
private string statusMessage;
private Coroutine statusRoutine;
public AudioSource iconPurchaseSound;
[SerializeField] internal Button refreshButton;
[SerializeField] private Button optionsButton;
[SerializeField] internal GameObject optionsPanel;
[SerializeField] internal Button optionsPanelSubmitButton;
[SerializeField] private Button optionsPanelResetButton;
public TMP_Dropdown optionsPanelSortByDropdown;
public TMP_Dropdown optionsPanelSortByDropdown;
public Toggle optionsPanelPriceRangeToggle;
[SerializeField] private TMP_InputField optionsPanelPriceRangeMinInput;
[SerializeField] private TMP_InputField optionsPanelPriceRangeMaxInput;
internal string priceRangeMin = "10";
internal string priceRangeMax = "250";
public Toggle optionsPanelPriceRangeToggle;
[SerializeField] private TMP_InputField optionsPanelPriceRangeMinInput;
[SerializeField] private TMP_InputField optionsPanelPriceRangeMaxInput;
internal string priceRangeMin = "10";
internal string priceRangeMax = "250";
public Toggle optionsPanelSearchForToggle;
[SerializeField] private TMP_InputField optionsPanelSearchForInputField;
internal string searchForValue = "";
public Toggle optionsPanelSearchForToggle;
[SerializeField] private TMP_InputField optionsPanelSearchForInputField;
internal string searchForValue = "";
[SerializeField] private Toggle optionsPanelOnlyShowToggle;
[SerializeField] private TMP_Dropdown optionsPanelOnlyShowDropdown;
[SerializeField] private Toggle optionsPanelOnlyShowToggle;
[SerializeField] private TMP_Dropdown optionsPanelOnlyShowDropdown;
internal bool anyChanges = false;
internal bool anyChanges = false;
void Awake() {
optionsPanelPriceRangeMinInput.onSelect.AddListener((_) => optionsPanelPriceRangeMinInput.caretPosition = optionsPanelPriceRangeMinInput.text.Length);
optionsPanelPriceRangeMaxInput.onSelect.AddListener((_) => optionsPanelPriceRangeMaxInput.caretPosition = optionsPanelPriceRangeMaxInput.text.Length);
optionsPanelSearchForInputField.onSelect.AddListener((_) => optionsPanelSearchForInputField.caretPosition = optionsPanelSearchForInputField.text.Length);
void Awake() {
optionsPanelPriceRangeMinInput.onSelect.AddListener((_) => optionsPanelPriceRangeMinInput.caretPosition = optionsPanelPriceRangeMinInput.text.Length);
optionsPanelPriceRangeMaxInput.onSelect.AddListener((_) => optionsPanelPriceRangeMaxInput.caretPosition = optionsPanelPriceRangeMaxInput.text.Length);
optionsPanelSearchForInputField.onSelect.AddListener((_) => optionsPanelSearchForInputField.caretPosition = optionsPanelSearchForInputField.text.Length);
backButton.onClick.AddListener(() => marketplaceManager.SwitchPanel(0));
refreshButton.onClick.AddListener(GetIcons);
optionsButton.onClick.AddListener(() => optionsPanel.SetActive(true));
optionsPanelSubmitButton.onClick.AddListener(() => {
optionsPanel.SetActive(false);
if (anyChanges) {
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() {
backButton.onClick.AddListener(() => marketplaceManager.SwitchPanel(0));
refreshButton.onClick.AddListener(GetIcons);
optionsButton.onClick.AddListener(() => optionsPanel.SetActive(true));
optionsPanelSubmitButton.onClick.AddListener(() => {
optionsPanel.SetActive(false);
if (anyChanges) {
anyChanges = false;
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() {
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;
yield return _waitForSeconds2;
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;
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;
}
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;
}
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;
}
statusText.gameObject.SetActive(false);
statusText.text = "";
statusRoutine = null;
}
}
@@ -6,72 +6,72 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class IconMarketplaceManager : MonoBehaviour {
[SerializeField] private GameObject normalPanel;
[SerializeField] private GameObject downloadPanel;
[SerializeField] private GameObject uploadPanel;
[SerializeField] private GameObject normalPanel;
[SerializeField] private GameObject downloadPanel;
[SerializeField] private GameObject uploadPanel;
[SerializeField] private IconMarketplaceUploadIcon uploadPanelScript;
[SerializeField] private IconMarketplaceDownloadIcon downloadPanelScript;
[SerializeField] private IconMarketplaceUploadIcon uploadPanelScript;
[SerializeField] private IconMarketplaceDownloadIcon downloadPanelScript;
[SerializeField] private Button downloadButton;
[SerializeField] private Button uploadButton;
[SerializeField] private TMP_Text coinText;
[SerializeField] private Button downloadButton;
[SerializeField] private Button uploadButton;
[SerializeField] private TMP_Text coinText;
void Start() {
downloadPanelScript.iconPurchaseSound.volume = BazookaManager.Instance.GetSettingSFXVolume();
downloadButton.onClick.AddListener(() => SwitchPanel(1));
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
uploadButton.onClick.AddListener(() => SwitchPanel(2));
} else {
uploadButton.interactable = false;
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";
void Start() {
downloadPanelScript.iconPurchaseSound.volume = BazookaManager.Instance.GetSettingSFXVolume();
downloadButton.onClick.AddListener(() => SwitchPanel(1));
if (BazookaManager.Instance.GetAccountID() != null && BazookaManager.Instance.GetAccountName() != null && BazookaManager.Instance.GetAccountSession() != null) {
uploadButton.onClick.AddListener(() => SwitchPanel(2));
} else {
uploadButton.interactable = false;
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";
}
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) {
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);
}
}
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();
}
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;
public class IconMarketplaceUploadIcon : MonoBehaviour {
[SerializeField] private IconMarketplaceManager marketplaceManager;
[SerializeField] private TMP_Text statusText;
[SerializeField] private Button backButton;
[SerializeField] private Button uploadButton;
[SerializeField] private Button selectButton;
[SerializeField] private TMP_InputField verifyCodeInput;
[SerializeField] private TMP_InputField birdPriceInput;
[SerializeField] private TMP_InputField birdNameInput;
[SerializeField] private Image birdImage;
[SerializeField] private GameObject birdImageNone;
private string birdData = null;
[SerializeField] private IconMarketplaceManager marketplaceManager;
[SerializeField] private TMP_Text statusText;
[SerializeField] private Button backButton;
[SerializeField] private Button uploadButton;
[SerializeField] private Button selectButton;
[SerializeField] private TMP_InputField verifyCodeInput;
[SerializeField] private TMP_InputField birdPriceInput;
[SerializeField] private TMP_InputField birdNameInput;
[SerializeField] private Image birdImage;
[SerializeField] private GameObject birdImageNone;
private string birdData = null;
void Awake() {
verifyCodeInput.onSelect.AddListener((_) => verifyCodeInput.caretPosition = verifyCodeInput.text.Length);
birdPriceInput.onSelect.AddListener((_) => birdPriceInput.caretPosition = birdPriceInput.text.Length);
birdNameInput.onSelect.AddListener((_) => birdNameInput.caretPosition = birdNameInput.text.Length);
void Awake() {
verifyCodeInput.onSelect.AddListener((_) => verifyCodeInput.caretPosition = verifyCodeInput.text.Length);
birdPriceInput.onSelect.AddListener((_) => birdPriceInput.caretPosition = birdPriceInput.text.Length);
birdNameInput.onSelect.AddListener((_) => birdNameInput.caretPosition = birdNameInput.text.Length);
backButton.onClick.AddListener(() => marketplaceManager.SwitchPanel(0));
uploadButton.onClick.AddListener(() => {
if (birdPriceInput.text.Trim() == string.Empty) {
Tools.UpdateStatusText(statusText, "Bird price can't be empty", Color.red);
} else if (birdNameInput.text.Trim() == string.Empty) {
Tools.UpdateStatusText(statusText, "Bird name can't be empty", Color.red);
} else if (birdData == null) {
Tools.UpdateStatusText(statusText, "You must upload an image", Color.red);
} else {
UploadIcon();
}
});
selectButton.onClick.AddListener(async () => {
string path = await OpenFilePicker();
if (path == null) return;
byte[] fileContent;
try {
fileContent = File.ReadAllBytes(path);
if (fileContent.Length > 1024 * 1024) {
Tools.UpdateStatusText(statusText, "File size exceeds 1 MB limit", Color.red);
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;
backButton.onClick.AddListener(() => marketplaceManager.SwitchPanel(0));
uploadButton.onClick.AddListener(() => {
if (birdPriceInput.text.Trim() == string.Empty) {
Tools.UpdateStatusText(statusText, "Bird price can't be empty", Color.red);
} else if (birdNameInput.text.Trim() == string.Empty) {
Tools.UpdateStatusText(statusText, "Bird name can't be empty", Color.red);
} else if (birdData == null) {
Tools.UpdateStatusText(statusText, "You must upload an image", Color.red);
} else {
UploadIcon();
}
});
selectButton.onClick.AddListener(async () => {
string path = await OpenFilePicker();
if (path == null) return;
byte[] fileContent;
try {
fileContent = File.ReadAllBytes(path);
if (fileContent.Length > 1024 * 1024) {
Tools.UpdateStatusText(statusText, "File size exceeds 1 MB limit", 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;
}
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;
}
});
}
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;
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);
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
View File
@@ -8,208 +8,208 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class Iconsmenu : MonoBehaviour {
[SerializeField] private GameObject iconsPanel;
[SerializeField] private GameObject overlaysPanel;
[SerializeField] private GameObject marketplaceIconsPanel;
[SerializeField] private GameObject marketplaceIconsContent;
[SerializeField] private GameObject marketplaceIconsSample;
[SerializeField] private Sprite defaultIcon;
[SerializeField] private Button placeholderButton;
[SerializeField] private TMP_Text selectionText;
[SerializeField] private Image previewBird;
[SerializeField] private Image previewOverlay;
[SerializeField] private Button[] icons;
[SerializeField] private Button[] overlays;
[SerializeField] private GameObject previewBirdObject;
[SerializeField] private ColorPanel iconColorPanel;
[SerializeField] private ColorPanel overlayColorPanel;
private readonly Dictionary<string, Button> customIcons = new();
[SerializeField] private GameObject iconsPanel;
[SerializeField] private GameObject overlaysPanel;
[SerializeField] private GameObject marketplaceIconsPanel;
[SerializeField] private GameObject marketplaceIconsContent;
[SerializeField] private GameObject marketplaceIconsSample;
[SerializeField] private Sprite defaultIcon;
[SerializeField] private Button placeholderButton;
[SerializeField] private TMP_Text selectionText;
[SerializeField] private Image previewBird;
[SerializeField] private Image previewOverlay;
[SerializeField] private Button[] icons;
[SerializeField] private Button[] overlays;
[SerializeField] private GameObject previewBirdObject;
[SerializeField] private ColorPanel iconColorPanel;
[SerializeField] private ColorPanel overlayColorPanel;
private readonly Dictionary<string, Button> customIcons = new();
private void Start() {
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
foreach (var icon in customIconData.Purchased) {
var iconEntry = Instantiate(marketplaceIconsSample, marketplaceIconsContent.transform);
iconEntry.name = "MarketplaceIcon";
var button = iconEntry.GetComponent<Button>();
customIcons[icon] = button;
button.onClick.AddListener(() => SelectCustomIcon(icon));
iconEntry.transform.GetChild(0).AddComponent<WaitingForCustomIcon>().ID = icon;
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));
}
private void Start() {
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
foreach (var icon in customIconData.Purchased) {
var iconEntry = Instantiate(marketplaceIconsSample, marketplaceIconsContent.transform);
iconEntry.name = "MarketplaceIcon";
var button = iconEntry.GetComponent<Button>();
customIcons[icon] = button;
button.onClick.AddListener(() => SelectCustomIcon(icon));
iconEntry.transform.GetChild(0).AddComponent<WaitingForCustomIcon>().ID = icon;
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;
private void SwitchToIcon() {
iconsPanel.SetActive(true);
overlaysPanel.SetActive(false);
marketplaceIconsPanel.SetActive(false);
selectionText.text = "Icon selection";
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Overlays";
iconColorPanel.gameObject.SetActive(true);
overlayColorPanel.gameObject.SetActive(true);
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));
}
private void SwitchToOverlay() {
iconsPanel.SetActive(false);
overlaysPanel.SetActive(true);
marketplaceIconsPanel.SetActive(false);
selectionText.text = "Overlay selection";
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Marketplace";
for (int i = 0; i < overlays.Length; i++) {
int index = i;
overlays[i].onClick.AddListener(() => SelectOverlay(index));
}
}
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;
}
private void SwitchToIcon() {
iconsPanel.SetActive(true);
overlaysPanel.SetActive(false);
marketplaceIconsPanel.SetActive(false);
selectionText.text = "Icon selection";
placeholderButton.GetComponentInChildren<TMP_Text>().text = "Overlays";
iconColorPanel.gameObject.SetActive(true);
overlayColorPanel.gameObject.SetActive(true);
}
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() {
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;
private int GetCurrentKit() {
if (iconsPanel.activeSelf) return 1;
else if (overlaysPanel.activeSelf) return 2;
else if (marketplaceIconsPanel.activeSelf) return 3;
return 0;
}
SwitchToIcon();
SelectOverlay(BazookaManager.Instance.GetBirdOverlay());
SelectIcon(BazookaManager.Instance.GetBirdIcon());
iconColorPanel.SetColor(BazookaManager.Instance.GetColorSettingIcon());
overlayColorPanel.SetColor(BazookaManager.Instance.GetColorSettingOverlay());
private void SelectIcon(int iconID) {
var customData = BazookaManager.Instance.GetCustomBirdIconData();
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;
}
if (BazookaManager.Instance.GetBirdIcon() == 7) {
SelectOverlay(0);
placeholderButton.interactable = false;
}
}
private void SelectOverlay(int overlayID) {
var customData = BazookaManager.Instance.GetCustomBirdIconData();
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 (iconsPanel.activeSelf) return 1;
else if (overlaysPanel.activeSelf) return 2;
else if (marketplaceIconsPanel.activeSelf) return 3;
return 0;
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;
}
}
private void SelectIcon(int iconID) {
var customData = BazookaManager.Instance.GetCustomBirdIconData();
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;
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) await SceneManager.LoadSceneAsync("MainMenu");
}
private void SelectOverlay(int overlayID) {
var customData = BazookaManager.Instance.GetCustomBirdIconData();
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);
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);
}
void RenderIcons() {
var objects = FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None);
if (objects.Length != 0) CustomIconLoader.Init(objects);
}
}
+207 -207
View File
@@ -8,231 +8,231 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LeaderboardsMenu : MonoBehaviour {
[SerializeField] private TMP_Text statusText;
[SerializeField] private Button backButton;
[SerializeField] private Button refreshButton;
[SerializeField] private ProfileMenu profilePrefab;
[SerializeField] private TMP_Text statusText;
[SerializeField] private Button backButton;
[SerializeField] private Button refreshButton;
[SerializeField] private ProfileMenu profilePrefab;
[SerializeField] private GameObject selectionPanel;
[SerializeField] private Button selectionScoreButton;
[SerializeField] private Button selectionBerryButton;
[SerializeField] private Button selectionCoinButton;
[SerializeField] private Button selectionLegacyButton;
[SerializeField] private Button selectionLevelButton;
[SerializeField] private Button selectionTotalXPButton;
[SerializeField] private Button selectionTotalBerriesButton;
[SerializeField] private GameObject selectionPanel;
[SerializeField] private Button selectionScoreButton;
[SerializeField] private Button selectionBerryButton;
[SerializeField] private Button selectionCoinButton;
[SerializeField] private Button selectionLegacyButton;
[SerializeField] private Button selectionLevelButton;
[SerializeField] private Button selectionTotalXPButton;
[SerializeField] private Button selectionTotalBerriesButton;
[SerializeField] private GameObject scoresPanel;
[SerializeField] private GameObject content;
[SerializeField] private GameObject sampleObject;
[SerializeField] private TMP_Dropdown berryShowTypeDropdown;
[SerializeField] private GameObject scoresPanel;
[SerializeField] private GameObject content;
[SerializeField] private GameObject sampleObject;
[SerializeField] private TMP_Dropdown berryShowTypeDropdown;
private LeaderboardMode mode = LeaderboardMode.None;
private bool changedByCode = false;
private LeaderboardMode mode = LeaderboardMode.None;
private bool changedByCode = false;
void Awake() {
selectionScoreButton.onClick.AddListener(() => { mode = LeaderboardMode.Score; SwitchMenu(1); });
selectionBerryButton.onClick.AddListener(() => { mode = LeaderboardMode.Berry; SwitchMenu(1); });
selectionCoinButton.onClick.AddListener(() => { mode = LeaderboardMode.Coin; SwitchMenu(1); });
selectionLegacyButton.onClick.AddListener(() => { mode = LeaderboardMode.Legacy; SwitchMenu(1); });
selectionLevelButton.onClick.AddListener(() => { mode = LeaderboardMode.Level; SwitchMenu(1); });
selectionTotalXPButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalXP; SwitchMenu(1); });
selectionTotalBerriesButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalBerries; SwitchMenu(1); });
berryShowTypeDropdown.onValueChanged.AddListener(_ => GetTopPlayers());
void Awake() {
selectionScoreButton.onClick.AddListener(() => { mode = LeaderboardMode.Score; SwitchMenu(1); });
selectionBerryButton.onClick.AddListener(() => { mode = LeaderboardMode.Berry; SwitchMenu(1); });
selectionCoinButton.onClick.AddListener(() => { mode = LeaderboardMode.Coin; SwitchMenu(1); });
selectionLegacyButton.onClick.AddListener(() => { mode = LeaderboardMode.Legacy; SwitchMenu(1); });
selectionLevelButton.onClick.AddListener(() => { mode = LeaderboardMode.Level; SwitchMenu(1); });
selectionTotalXPButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalXP; SwitchMenu(1); });
selectionTotalBerriesButton.onClick.AddListener(() => { mode = LeaderboardMode.TotalBerries; SwitchMenu(1); });
berryShowTypeDropdown.onValueChanged.AddListener(_ => GetTopPlayers());
backButton.onClick.AddListener(async () => {
if (selectionPanel.activeSelf) await SceneManager.LoadSceneAsync("MainMenu");
else if (scoresPanel.activeSelf) SwitchMenu(0);
});
refreshButton.onClick.AddListener(GetTopPlayers);
backButton.onClick.AddListener(async () => {
if (selectionPanel.activeSelf) await SceneManager.LoadSceneAsync("MainMenu");
else if (scoresPanel.activeSelf) SwitchMenu(0);
});
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) {
UpdateStatus(false, "");
if (!selectionPanel.activeSelf) {
foreach (Transform item in content.transform) {
if (item.gameObject.activeSelf) {
Destroy(item.gameObject);
}
if (menu == 0) {
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);
}
}
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);
}
}
if (menu == 0) {
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);
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);
}
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>();
} 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
);
usernameText.text = $"{entry.Username} (#{i + 1})";
scoreText.text = (mode == LeaderboardMode.Berry || mode == LeaderboardMode.TotalBerries ? "Berries: " : mode == LeaderboardMode.Coin ? "Coins: " : "Score: ") + Tools.FormatWithCommas(entry.Value);
return new {
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 = $"<color=#7FFFD4>{usernameText.text}</color>";
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
}
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 (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);
}
} 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
);
if (BazookaManager.Instance.GetAccountID() == entry.UserID) {
usernameText.text = $"<color=#7FFFD4>{usernameText.text}</color>";
scoreText.text = $"<color=#7FFFD4>{scoreText.text}</color>";
}
return new {
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>();
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);
}
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);
}
CustomIconLoader.Init(FindObjectsByType<WaitingForCustomIcon>(FindObjectsSortMode.None));
} else {
UpdateStatus(true, (string)jsonResponse["message"]);
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);
}
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 = "") {
statusText.gameObject.SetActive(enabled);
statusText.text = message;
}
private void UpdateStatus(bool enabled, string message = "") {
statusText.gameObject.SetActive(enabled);
statusText.text = message;
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame && FindFirstObjectByType<ProfileMenu>() == null) {
if (!selectionPanel.activeSelf) SwitchMenu(0);
else await SceneManager.LoadSceneAsync("MainMenu");
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame && FindFirstObjectByType<ProfileMenu>() == null) {
if (!selectionPanel.activeSelf) SwitchMenu(0);
else await SceneManager.LoadSceneAsync("MainMenu");
}
}
}
+54 -54
View File
@@ -5,62 +5,62 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LoadingMenu : MonoBehaviour {
[SerializeField] private TMP_Text text;
[SerializeField] private Button updateButton;
[SerializeField] private Button continueButton;
[SerializeField] private TMP_Text text;
[SerializeField] private Button updateButton;
[SerializeField] private Button continueButton;
void Start() {
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;
}
PlayerPrefs.SetString("latestVersion", Application.version);
CheckUpdate();
void Start() {
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;
}
PlayerPrefs.SetString("latestVersion", Application.version);
CheckUpdate();
}
async void CheckUpdate() {
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.CAN_LOAD_CLIENT_ENDPOINT);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
text.text = "Failed to check version";
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);
}
async void CheckUpdate() {
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.CAN_LOAD_CLIENT_ENDPOINT);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
text.text = "Failed to check version";
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);
}
}
}
+64 -64
View File
@@ -6,81 +6,81 @@ using UnityEngine.InputSystem;
using UnityEngine.UI;
public class MainMenu : MonoBehaviour {
[SerializeField] private Button closeButton;
[SerializeField] private TMP_Text updateText;
[SerializeField] private Button updateButton;
[SerializeField] private TMP_Text splashText;
[SerializeField] private Button profileButton;
[SerializeField] private ProfileMenu profilePrefab;
[SerializeField] private TMP_Text copyrightText;
[SerializeField] private GameObject closePopup;
[SerializeField] private Button closePopupCancelButton;
[SerializeField] private Button closePopupCloseButton;
[SerializeField] private Button iconMarketplaceButton;
[SerializeField] private TMP_Text iconMarketplaceButtonText;
[SerializeField] private Button closeButton;
[SerializeField] private TMP_Text updateText;
[SerializeField] private Button updateButton;
[SerializeField] private TMP_Text splashText;
[SerializeField] private Button profileButton;
[SerializeField] private ProfileMenu profilePrefab;
[SerializeField] private TMP_Text copyrightText;
[SerializeField] private GameObject closePopup;
[SerializeField] private Button closePopupCancelButton;
[SerializeField] private Button closePopupCloseButton;
[SerializeField] private Button iconMarketplaceButton;
[SerializeField] private TMP_Text iconMarketplaceButtonText;
void Awake() {
if (PresistentData.latestVersion != null) {
if (PresistentData.latestVersion != "-1") {
updateText.text = "Latest: v" + PresistentData.latestVersion ?? "N/A";
updateButton.gameObject.SetActive(PresistentData.latestVersion != Application.version);
} else {
updateText.text = "Latest: Loading...";
}
}
if (PresistentData.randomSplashes != null && PresistentData.randomSplashes.Count != 0)
DoSplashText(splashText, PresistentData.randomSplashes[UnityEngine.Random.Range(0, PresistentData.randomSplashes.Count)]);
copyrightText.text = $"\\u00A9 {DateTime.Now.Year} Lncvrt. All rights reserved.";
void Awake() {
if (PresistentData.latestVersion != null) {
if (PresistentData.latestVersion != "-1") {
updateText.text = "Latest: v" + PresistentData.latestVersion ?? "N/A";
updateButton.gameObject.SetActive(PresistentData.latestVersion != Application.version);
} else {
updateText.text = "Latest: Loading...";
}
}
if (PresistentData.randomSplashes != null && PresistentData.randomSplashes.Count != 0)
DoSplashText(splashText, PresistentData.randomSplashes[UnityEngine.Random.Range(0, PresistentData.randomSplashes.Count)]);
copyrightText.text = $"\\u00A9 {DateTime.Now.Year} Lncvrt. All rights reserved.";
if (!Application.isMobilePlatform && !Application.isEditor) {
closeButton.gameObject.SetActive(true);
closeButton.onClick.AddListener(() => closePopup.SetActive(true));
}
closePopupCancelButton.onClick.AddListener(() => closePopup.SetActive(false));
closePopupCloseButton.onClick.AddListener(() => Application.Quit());
if (!Application.isMobilePlatform && !Application.isEditor) {
closeButton.gameObject.SetActive(true);
closeButton.onClick.AddListener(() => closePopup.SetActive(true));
}
void Start() {
if (BazookaManager.Instance.GetAccountID() != null) {
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);
}
closePopupCancelButton.onClick.AddListener(() => closePopup.SetActive(false));
closePopupCloseButton.onClick.AddListener(() => Application.Quit());
}
if (Tools.GetLevelInfo().level < 3) {
iconMarketplaceButton.interactable = false;
iconMarketplaceButtonText.text += "\n<size=12>You need level 3 or higher to access this</size>";
}
void Start() {
if (BazookaManager.Instance.GetAccountID() != null) {
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 (Keyboard.current.escapeKey.wasPressedThisFrame && !GameObject.Find("ProfilePrefab(Clone)")) closePopup.SetActive(!closePopup.activeSelf);
if (Tools.GetLevelInfo().level < 3) {
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) {
text.text = splash.Content;
void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame && !GameObject.Find("ProfilePrefab(Clone)")) closePopup.SetActive(!closePopup.activeSelf);
}
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;
public static void DoSplashText(TMP_Text text, SplashEntry splash) {
text.text = splash.Content;
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.Color == "rainbow" && splash.Attributes.RainbowSpeed != -1) {
text.color = Color.white;
var rainbowText = text.AddComponent<RainbowText>();
rainbowText.frequency = splash.Attributes.RainbowSpeed;
} else if (splash.Attributes.Color.Length == 6) {
UnityEngine.ColorUtility.TryParseHtmlString("#" + splash.Attributes.Color, out Color splashColor);
text.color = splashColor;
}
}
if (splash.Attributes.BounceSpeed != -1) text.GetComponent<BouncyText>().frequency = splash.Attributes.BounceSpeed;
if (splash.Attributes.Color != null) {
if (splash.Attributes.Color == "rainbow" && splash.Attributes.RainbowSpeed != -1) {
text.color = Color.white;
var rainbowText = text.AddComponent<RainbowText>();
rainbowText.frequency = splash.Attributes.RainbowSpeed;
} else if (splash.Attributes.Color.Length == 6) {
UnityEngine.ColorUtility.TryParseHtmlString("#" + splash.Attributes.Color, out Color splashColor);
text.color = splashColor;
}
}
}
}
+17 -17
View File
@@ -2,26 +2,26 @@ using UnityEngine;
using UnityEngine.SceneManagement;
public class MenuMusic : MonoBehaviour {
public static MenuMusic Instance;
public static MenuMusic Instance;
void Awake() {
if (Instance == null) {
Instance = this;
DontDestroyOnLoad(gameObject);
SceneManager.sceneLoaded += OnSceneLoaded;
} else {
Destroy(gameObject);
}
void Awake() {
if (Instance == null) {
Instance = this;
DontDestroyOnLoad(gameObject);
SceneManager.sceneLoaded += OnSceneLoaded;
} else {
Destroy(gameObject);
}
}
void Start() {
GetComponent<AudioSource>().volume = BazookaManager.Instance.GetSettingMusicVolume();
}
void Start() {
GetComponent<AudioSource>().volume = BazookaManager.Instance.GetSettingMusicVolume();
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
if (scene.name == "GamePlayer" || scene.name == "CustomGamePlayer" || scene.name == "AutoGamePlayer" || scene.name == "MultiplayerGamePlayer") {
SceneManager.sceneLoaded -= OnSceneLoaded;
Destroy(gameObject);
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
if (scene.name == "GamePlayer" || scene.name == "CustomGamePlayer" || scene.name == "AutoGamePlayer" || scene.name == "MultiplayerGamePlayer") {
SceneManager.sceneLoaded -= OnSceneLoaded;
Destroy(gameObject);
}
}
}
File diff suppressed because it is too large. Load diff
+59 -59
View File
@@ -3,71 +3,71 @@ using UnityEngine.EventSystems;
using UnityEngine.InputSystem;
public class BouncyButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler {
private bool isHovered = false;
private bool isHeld = false;
private bool didBounce = false;
private Vector3 originalScale;
private Vector3 finalScale;
private bool isHovered = false;
private bool isHeld = false;
private bool didBounce = false;
private Vector3 originalScale;
private Vector3 finalScale;
void Start() {
originalScale = transform.localScale;
finalScale = originalScale * 1.1f;
void Start() {
originalScale = transform.localScale;
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;
public void OnPointerExit(PointerEventData eventData) {
isHovered = false;
ResetScale();
}
void OnDisable() {
isHovered = false;
ResetScale();
if (isHovered && isHeld && !didBounce) {
StartCoroutine(BounceOnce());
didBounce = true;
}
void Update() {
if (Application.isMobilePlatform) {
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();
}
if ((!isHovered || !isHeld) && didBounce) {
ResetScale();
}
}
void ResetScale() {
StopAllCoroutines();
transform.localScale = originalScale;
didBounce = false;
}
System.Collections.IEnumerator BounceOnce() {
float t = 0.125f;
Vector3 s1 = originalScale * 1.12f;
Vector3 s2 = originalScale * 1.06f;
Vector3 s3 = finalScale;
yield return LerpScale(originalScale, s1, t);
yield return LerpScale(s1, s2, t * 0.5f);
yield return LerpScale(s2, s3, t * 0.5f);
transform.localScale = s3;
}
System.Collections.IEnumerator LerpScale(Vector3 from, Vector3 to, float duration) {
float elapsed = 0f;
while (elapsed < duration) {
elapsed += Time.deltaTime;
float p = elapsed / duration;
transform.localScale = Vector3.Lerp(from, to, p);
yield return null;
}
transform.localScale = to;
void ResetScale() {
StopAllCoroutines();
transform.localScale = originalScale;
didBounce = false;
}
System.Collections.IEnumerator BounceOnce() {
float t = 0.125f;
Vector3 s1 = originalScale * 1.12f;
Vector3 s2 = originalScale * 1.06f;
Vector3 s3 = finalScale;
yield return LerpScale(originalScale, s1, t);
yield return LerpScale(s1, s2, t * 0.5f);
yield return LerpScale(s2, s3, t * 0.5f);
transform.localScale = s3;
}
System.Collections.IEnumerator LerpScale(Vector3 from, Vector3 to, float duration) {
float elapsed = 0f;
while (elapsed < duration) {
elapsed += Time.deltaTime;
float p = elapsed / duration;
transform.localScale = Vector3.Lerp(from, to, p);
yield return null;
}
transform.localScale = to;
}
}
+8 -8
View File
@@ -1,13 +1,13 @@
using UnityEngine;
public class BouncyPanel : MonoBehaviour {
public float frequency = 8f;
public float minSize = 1f;
public float maxSize = 1.1f;
public float frequency = 8f;
public float minSize = 1f;
public float maxSize = 1.1f;
void Update() {
float newsize = (Mathf.Sin(Time.time * frequency) + 1f) / 2f;
var size = Mathf.Lerp(minSize, maxSize, newsize);
gameObject.transform.localScale = new(size, size, size);
}
void Update() {
float newsize = (Mathf.Sin(Time.time * frequency) + 1f) / 2f;
var size = Mathf.Lerp(minSize, maxSize, newsize);
gameObject.transform.localScale = new(size, size, size);
}
}
+17 -17
View File
@@ -3,24 +3,24 @@ using UnityEngine;
[RequireComponent(typeof(TextMeshProUGUI))]
public class BouncyText : MonoBehaviour {
public float frequency = 2f;
public float minSize = 10f;
public float maxSize = 12f;
public bool add;
private TextMeshProUGUI text;
private float startSize = 0;
public float frequency = 2f;
public float minSize = 10f;
public float maxSize = 12f;
public bool add;
private TextMeshProUGUI text;
private float startSize = 0;
void Awake() {
text = GetComponent<TextMeshProUGUI>();
if (add) {
text.ForceMeshUpdate();
startSize = text.fontSize;
text.enableAutoSizing = false;
}
void Awake() {
text = GetComponent<TextMeshProUGUI>();
if (add) {
text.ForceMeshUpdate();
startSize = text.fontSize;
text.enableAutoSizing = false;
}
}
void Update() {
float newsize = (Mathf.Sin(Time.time * frequency) + 1f) / 2f;
text.fontSize = Mathf.Lerp(add ? startSize : minSize, maxSize + (add ? startSize : 0), newsize);
}
void Update() {
float newsize = (Mathf.Sin(Time.time * frequency) + 1f) / 2f;
text.fontSize = Mathf.Lerp(add ? startSize : minSize, maxSize + (add ? startSize : 0), newsize);
}
}
+12 -12
View File
@@ -2,18 +2,18 @@ using TMPro;
using UnityEngine;
public class ImageColorSync : MonoBehaviour {
[SerializeField] private TMP_Text originalText;
[SerializeField] private TMP_Text toSync;
[SerializeField] private TMP_Text originalText;
[SerializeField] private TMP_Text toSync;
void Update() {
Color baseColor = originalText.color;
Color graphicColor = originalText.canvasRenderer.GetColor();
void Update() {
Color baseColor = originalText.color;
Color graphicColor = originalText.canvasRenderer.GetColor();
toSync.color = new Color(
baseColor.r * graphicColor.r,
baseColor.g * graphicColor.g,
baseColor.b * graphicColor.b,
baseColor.a * graphicColor.a
);
}
toSync.color = new Color(
baseColor.r * graphicColor.r,
baseColor.g * graphicColor.g,
baseColor.b * graphicColor.b,
baseColor.a * graphicColor.a
);
}
}
+6 -6
View File
@@ -3,11 +3,11 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class ButtonToScene : MonoBehaviour {
[SerializeField] private string sceneName;
[SerializeField] private string sceneName;
void Awake() {
gameObject.GetComponent<Button>().onClick.AddListener(async () => {
await SceneManager.LoadSceneAsync(sceneName);
});
}
void Awake() {
gameObject.GetComponent<Button>().onClick.AddListener(async () => {
await SceneManager.LoadSceneAsync(sceneName);
});
}
}
+6 -6
View File
@@ -2,11 +2,11 @@ using UnityEngine;
using UnityEngine.UI;
public class ButtonToURL : MonoBehaviour {
[SerializeField] private string url;
[SerializeField] private string url;
void Awake() {
gameObject.GetComponent<Button>().onClick.AddListener(() => {
Application.OpenURL(url);
});
}
void Awake() {
gameObject.GetComponent<Button>().onClick.AddListener(() => {
Application.OpenURL(url);
});
}
}
+80 -80
View File
@@ -5,94 +5,94 @@ using UnityEngine;
using UnityEngine.UI;
public class ColorPanel : MonoBehaviour {
public Slider rSlider;
public Slider gSlider;
public Slider bSlider;
public ColorPickerUI colorPickerUI;
public GameObject manualModeUI;
public TMP_InputField hexValue;
public Image previewImage;
public Button resetButton;
public Button switchModeButton;
public event Action<JArray> OnColorChanged;
public Color defaultColor;
public Slider rSlider;
public Slider gSlider;
public Slider bSlider;
public ColorPickerUI colorPickerUI;
public GameObject manualModeUI;
public TMP_InputField hexValue;
public Image previewImage;
public Button resetButton;
public Button switchModeButton;
public event Action<JArray> OnColorChanged;
public Color defaultColor;
void Awake() {
hexValue.onSelect.AddListener((_) => hexValue.caretPosition = hexValue.text.Length);
}
void Awake() {
hexValue.onSelect.AddListener((_) => hexValue.caretPosition = hexValue.text.Length);
}
public void Init(Color color, Color defaultColorArg) {
defaultColor = defaultColorArg;
rSlider.value = color.r * 255f;
gSlider.value = color.g * 255f;
bSlider.value = color.b * 255f;
public void Init(Color color, Color defaultColorArg) {
defaultColor = defaultColorArg;
rSlider.value = color.r * 255f;
gSlider.value = color.g * 255f;
bSlider.value = color.b * 255f;
SyncAll();
SyncAll();
rSlider.onValueChanged.AddListener(_ => SyncAll());
gSlider.onValueChanged.AddListener(_ => SyncAll());
bSlider.onValueChanged.AddListener(_ => SyncAll());
rSlider.onValueChanged.AddListener(_ => SyncAll());
gSlider.onValueChanged.AddListener(_ => SyncAll());
bSlider.onValueChanged.AddListener(_ => SyncAll());
hexValue.onValueChanged.AddListener(value => {
var hex = value.StartsWith("#") ? value : "#" + value;
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) {
hexValue.onValueChanged.AddListener(value => {
var hex = value.StartsWith("#") ? value : "#" + value;
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();
}
}
});
public void SetColor(JArray color) {
rSlider.SetValueWithoutNotify((int)color[0]);
gSlider.SetValueWithoutNotify((int)color[1]);
bSlider.SetValueWithoutNotify((int)color[2]);
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);
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();
}
}
+150 -150
View File
@@ -4,165 +4,165 @@ using UnityEngine.InputSystem;
using UnityEngine.UI;
public class ColorPickerUI : MonoBehaviour {
public RawImage hueImage;
public RawImage svImage;
public RectTransform svCursor;
public RectTransform hueCursor;
public event Action<Color> OnColorChanged;
public RawImage hueImage;
public RawImage svImage;
public RectTransform svCursor;
public RectTransform hueCursor;
public event Action<Color> OnColorChanged;
private Texture2D hueTexture;
private Texture2D svTexture;
private Texture2D hueTexture;
private Texture2D svTexture;
private const int hueHeight = 256;
private const int svSize = 256;
private const int hueHeight = 256;
private const int svSize = 256;
private float selectedHue = 0f;
private float selectedS = 1f;
private float selectedV = 1f;
private float selectedHue = 0f;
private float selectedS = 1f;
private float selectedV = 1f;
private enum DragTarget { None, Hue, SV }
private DragTarget currentDrag = DragTarget.None;
private enum DragTarget { None, Hue, SV }
private DragTarget currentDrag = DragTarget.None;
private Color lastColor;
private Color lastColor;
void Start() {
GenerateHueBar();
void Start() {
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);
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);
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);
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();
UpdateHueCursor();
var current = GetSelectedColor();
if (current != lastColor) {
lastColor = current;
OnColorChanged?.Invoke(current);
}
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();
UpdateHueCursor();
var current = GetSelectedColor();
if (current != lastColor) {
lastColor = current;
OnColorChanged?.Invoke(current);
}
}
}
+136 -136
View File
@@ -4,147 +4,147 @@ using UnityEngine;
using UnityEngine.UI;
public class CustomColorObject : MonoBehaviour {
[SerializeField] private ColorObjectType type;
[SerializeField] private bool invert;
[SerializeField] private Color addMore;
[SerializeField] private bool reverseAdd;
[SerializeField] private ColorObjectType type;
[SerializeField] private bool invert;
[SerializeField] private Color addMore;
[SerializeField] private bool reverseAdd;
Color ApplyModifiers(Color baseColor) {
if (invert) baseColor = new(1f - baseColor.r, 1f - baseColor.g, 1f - baseColor.b);
Color ApplyModifiers(Color baseColor) {
if (invert) baseColor = new(1f - baseColor.r, 1f - baseColor.g, 1f - baseColor.b);
if (reverseAdd) {
baseColor.r = Mathf.Clamp01(baseColor.r - addMore.r);
baseColor.g = Mathf.Clamp01(baseColor.g - addMore.g);
baseColor.b = Mathf.Clamp01(baseColor.b - addMore.b);
} else {
baseColor.r = Mathf.Clamp01(baseColor.r + addMore.r);
baseColor.g = Mathf.Clamp01(baseColor.g + addMore.g);
baseColor.b = Mathf.Clamp01(baseColor.b + addMore.b);
}
return baseColor;
if (reverseAdd) {
baseColor.r = Mathf.Clamp01(baseColor.r - addMore.r);
baseColor.g = Mathf.Clamp01(baseColor.g - addMore.g);
baseColor.b = Mathf.Clamp01(baseColor.b - addMore.b);
} else {
baseColor.r = Mathf.Clamp01(baseColor.r + addMore.r);
baseColor.g = Mathf.Clamp01(baseColor.g + addMore.g);
baseColor.b = Mathf.Clamp01(baseColor.b + addMore.b);
}
public void SetColor() {
JArray color = null;
Color colorType = Color.white;
Color currentColor = Color.white;
return baseColor;
}
switch (type) {
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;
}
}
public void SetColor() {
JArray color = null;
Color colorType = Color.white;
Color currentColor = Color.white;
void Start() {
SetColor();
switch (type) {
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();
}
}
+33 -33
View File
@@ -6,39 +6,39 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class CustomIconLoader : MonoBehaviour {
public static async void Init(WaitingForCustomIcon[] objects) {
var iconsToDownload = new HashSet<string>();
foreach (var obj in objects)
if (!BazookaManager.Instance.iconCache.Any(icon => icon.ID == obj.ID))
iconsToDownload.Add(obj.ID);
public static async void Init(WaitingForCustomIcon[] objects) {
var iconsToDownload = new HashSet<string>();
foreach (var obj in objects)
if (!BazookaManager.Instance.iconCache.Any(icon => icon.ID == obj.ID))
iconsToDownload.Add(obj.ID);
if (iconsToDownload.Count != 0) {
var ids = string.Join(",", iconsToDownload.Select(id => $"\"{id}\""));
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ICON_MARKETPLACE_ICON_ENDPOINT + $"?ids=[{ids}]");
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
var icons = jsonResponse["data"].ToObject<MarketplaceIconWithData[]>();
foreach (var icon in icons) BazookaManager.Instance.iconCache.Add(new MarketplaceIcon { ID = icon.ID, Data = icon.Data });
}
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);
}
if (iconsToDownload.Count != 0) {
var ids = string.Join(",", iconsToDownload.Select(id => $"\"{id}\""));
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.ICON_MARKETPLACE_ICON_ENDPOINT + $"?ids=[{ids}]");
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
if (request.downloadHandler.text == null) {
return;
}
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
var icons = jsonResponse["data"].ToObject<MarketplaceIconWithData[]>();
foreach (var icon in icons) BazookaManager.Instance.iconCache.Add(new MarketplaceIcon { ID = icon.ID, Data = icon.Data });
}
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);
}
}
}
+55 -55
View File
@@ -2,69 +2,69 @@ using DiscordRPC;
using UnityEngine;
public class DiscordRPCHandler : MonoBehaviour {
public static DiscordRPCHandler Instance;
public DiscordRpcClient client;
private readonly Timestamps timestamp = Timestamps.Now;
public static DiscordRPCHandler Instance;
public DiscordRpcClient client;
private readonly Timestamps timestamp = Timestamps.Now;
private bool isIdle = false;
private string savedDetails;
private string savedState;
private bool isIdle = false;
private string savedDetails;
private string savedState;
void Awake() {
if (Application.isMobilePlatform || Instance != null) {
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
client = new DiscordRpcClient("1421877993176961155");
client.Initialize();
void Awake() {
if (Application.isMobilePlatform || Instance != null) {
Destroy(gameObject);
return;
}
void OnDestroy() {
client?.Dispose();
Instance = this;
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?.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;
}
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[]
{
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 = "Lncvrt Games", Url = "https://games.lncvrt.xyz" }
},
Timestamps = timestamp
});
Timestamps = timestamp
});
savedDetails = details;
savedState = state;
}
savedDetails = details;
savedState = state;
}
}
+5 -5
View File
@@ -1,10 +1,10 @@
using UnityEngine;
public class DiscordRPCUpdater : MonoBehaviour {
public string details;
public string state;
public string details;
public string state;
void Awake() {
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC(details, state);
}
void Awake() {
if (DiscordRPCHandler.Instance != null) DiscordRPCHandler.Instance.UpdateRPC(details, state);
}
}
+84 -84
View File
@@ -4,92 +4,92 @@ using UnityEngine.EventSystems;
using UnityEngine.UI;
public class DraggableUI : MonoBehaviour, IDragHandler, IBeginDragHandler {
public static DraggableUI Instance;
private Vector2 offset;
[SerializeField] private string uiName;
public bool canDrag = false;
public static DraggableUI Instance;
private Vector2 offset;
[SerializeField] private string uiName;
public bool canDrag = false;
private readonly List<GameObject> outlineSides = new();
private readonly List<GameObject> outlineSides = new();
void CreateOutline() {
var color = BazookaManager.Instance.GetColorSettingButton();
Color borderColor = new(((float)color[0]) / 255f, ((float)color[1]) / 255f, ((float)color[2]) / 255f);
float thickness = 2f;
void CreateOutline() {
var color = BazookaManager.Instance.GetColorSettingButton();
Color borderColor = new(((float)color[0]) / 255f, ((float)color[1]) / 255f, ((float)color[2]) / 255f);
float thickness = 2f;
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("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);
}
void CreateSide(string name, Vector2 anchorMin, Vector2 anchorMax, Vector2 size, Color color) {
var go = new GameObject(name, typeof(Image));
go.transform.SetParent(transform, false);
var rt = go.GetComponent<RectTransform>();
var img = go.GetComponent<Image>();
img.color = color;
img.raycastTarget = false;
rt.anchorMin = anchorMin;
rt.anchorMax = anchorMax;
rt.sizeDelta = size;
rt.anchoredPosition = Vector2.zero;
outlineSides.Add(go);
}
void Awake() {
Instance = this;
}
void Start() {
CreateOutline();
}
void OnEnable() {
string key = "DraggedUI" + uiName;
if (PlayerPrefs.HasKey(key) && TryParseVector3(PlayerPrefs.GetString(key), out Vector3 savedPos)) transform.localPosition = savedPos;
}
void Update() {
foreach (var side in outlineSides)
side.SetActive(canDrag);
}
public void OnBeginDrag(PointerEventData eventData) {
if (!canDrag) return;
RectTransformUtility.ScreenPointToLocalPointInRectangle(
(RectTransform)transform.parent,
eventData.position,
eventData.pressEventCamera,
out offset
);
offset = (Vector2)transform.localPosition - offset;
PlayerPrefs.SetString("DraggedUI" + uiName, transform.localPosition.ToString());
}
public void OnDrag(PointerEventData eventData) {
if (!canDrag) return;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(
(RectTransform)transform.parent,
eventData.position,
eventData.pressEventCamera,
out Vector2 localPoint
)) transform.localPosition = localPoint + offset;
PlayerPrefs.SetString("DraggedUI" + uiName, transform.localPosition.ToString());
}
private bool TryParseVector3(string s, out Vector3 result) {
s = s.Trim('(', ')');
string[] parts = s.Split(',');
if (parts.Length == 3 &&
float.TryParse(parts[0], out float x) &&
float.TryParse(parts[1], out float y) &&
float.TryParse(parts[2], out float z)) {
result = new Vector3(x, y, z);
return true;
}
result = Vector3.zero;
return false;
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("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);
}
void CreateSide(string name, Vector2 anchorMin, Vector2 anchorMax, Vector2 size, Color color) {
var go = new GameObject(name, typeof(Image));
go.transform.SetParent(transform, false);
var rt = go.GetComponent<RectTransform>();
var img = go.GetComponent<Image>();
img.color = color;
img.raycastTarget = false;
rt.anchorMin = anchorMin;
rt.anchorMax = anchorMax;
rt.sizeDelta = size;
rt.anchoredPosition = Vector2.zero;
outlineSides.Add(go);
}
void Awake() {
Instance = this;
}
void Start() {
CreateOutline();
}
void OnEnable() {
string key = "DraggedUI" + uiName;
if (PlayerPrefs.HasKey(key) && TryParseVector3(PlayerPrefs.GetString(key), out Vector3 savedPos)) transform.localPosition = savedPos;
}
void Update() {
foreach (var side in outlineSides)
side.SetActive(canDrag);
}
public void OnBeginDrag(PointerEventData eventData) {
if (!canDrag) return;
RectTransformUtility.ScreenPointToLocalPointInRectangle(
(RectTransform)transform.parent,
eventData.position,
eventData.pressEventCamera,
out offset
);
offset = (Vector2)transform.localPosition - offset;
PlayerPrefs.SetString("DraggedUI" + uiName, transform.localPosition.ToString());
}
public void OnDrag(PointerEventData eventData) {
if (!canDrag) return;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(
(RectTransform)transform.parent,
eventData.position,
eventData.pressEventCamera,
out Vector2 localPoint
)) transform.localPosition = localPoint + offset;
PlayerPrefs.SetString("DraggedUI" + uiName, transform.localPosition.ToString());
}
private bool TryParseVector3(string s, out Vector3 result) {
s = s.Trim('(', ')');
string[] parts = s.Split(',');
if (parts.Length == 3 &&
float.TryParse(parts[0], out float x) &&
float.TryParse(parts[1], out float y) &&
float.TryParse(parts[2], out float z)) {
result = new Vector3(x, y, z);
return true;
}
result = Vector3.zero;
return false;
}
}
+27 -27
View File
@@ -1,29 +1,29 @@
public class Endpoints {
private const string HOST = "games.lncvrt.xyz";
public const string BASE_URL = "https://" + HOST + "/api";
public const string BERRYDASH_ENDPOINT = BASE_URL + "/berrydash";
public const string WS_ENDPOINT = "wss://" + HOST + "/api/ws";
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 RANDOM_SPLASHES_ENDPOINT = BERRYDASH_ENDPOINT + "/splash-text";
public const string LEADERBOARDS_ENDPOINT = BERRYDASH_ENDPOINT + "/leaderboards";
public const string LEADERBOARDS_SCORE_ENDPOINT = LEADERBOARDS_ENDPOINT + "/score";
public const string LEADERBOARDS_BERRY_ENDPOINT = LEADERBOARDS_ENDPOINT + "/berry";
public const string LEADERBOARDS_COIN_ENDPOINT = LEADERBOARDS_ENDPOINT + "/coin";
public const string LEADERBOARDS_LEGACY_ENDPOINT = LEADERBOARDS_ENDPOINT + "/legacy";
public const string LEADERBOARDS_TOTAL_ENDPOINT = LEADERBOARDS_ENDPOINT + "/total";
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_UPLOAD_ENDPOINT = ICON_MARKETPLACE_ENDPOINT + "/upload";
public const string ICON_MARKETPLACE_ICON_ENDPOINT = ICON_MARKETPLACE_ENDPOINT + "/icon";
public const string BD_ACCOUNT_ENDPOINT = BERRYDASH_ENDPOINT + "/account";
public const string LG_ACCOUNT_ENDPOINT = BASE_URL + "/account";
public const string ACCOUNT_LOGIN_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/login";
public const string ACCOUNT_REGISTER_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/register";
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_PASSWORD_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/change-password";
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 CHATROOM_REPORT_MESSAGE_ENDPOINT = BERRYDASH_ENDPOINT + "/chatroom/report";
private const string HOST = "games.lncvrt.xyz";
public const string BASE_URL = "https://" + HOST + "/api";
public const string BERRYDASH_ENDPOINT = BASE_URL + "/berrydash";
public const string WS_ENDPOINT = "wss://" + HOST + "/api/ws";
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 RANDOM_SPLASHES_ENDPOINT = BERRYDASH_ENDPOINT + "/splash-text";
public const string LEADERBOARDS_ENDPOINT = BERRYDASH_ENDPOINT + "/leaderboards";
public const string LEADERBOARDS_SCORE_ENDPOINT = LEADERBOARDS_ENDPOINT + "/score";
public const string LEADERBOARDS_BERRY_ENDPOINT = LEADERBOARDS_ENDPOINT + "/berry";
public const string LEADERBOARDS_COIN_ENDPOINT = LEADERBOARDS_ENDPOINT + "/coin";
public const string LEADERBOARDS_LEGACY_ENDPOINT = LEADERBOARDS_ENDPOINT + "/legacy";
public const string LEADERBOARDS_TOTAL_ENDPOINT = LEADERBOARDS_ENDPOINT + "/total";
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_UPLOAD_ENDPOINT = ICON_MARKETPLACE_ENDPOINT + "/upload";
public const string ICON_MARKETPLACE_ICON_ENDPOINT = ICON_MARKETPLACE_ENDPOINT + "/icon";
public const string BD_ACCOUNT_ENDPOINT = BERRYDASH_ENDPOINT + "/account";
public const string LG_ACCOUNT_ENDPOINT = BASE_URL + "/account";
public const string ACCOUNT_LOGIN_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/login";
public const string ACCOUNT_REGISTER_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/register";
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_PASSWORD_ENDPOINT = LG_ACCOUNT_ENDPOINT + "/change-password";
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 CHATROOM_REPORT_MESSAGE_ENDPOINT = BERRYDASH_ENDPOINT + "/chatroom/report";
}
+16 -16
View File
@@ -1,22 +1,22 @@
using UnityEngine;
public class HideIfSettingFalse : MonoBehaviour {
[SerializeField] private SettingTypes setting;
[SerializeField] private bool reverse;
[SerializeField] private SettingTypes setting;
[SerializeField] private bool reverse;
void Start() {
bool value = GetSettingValue(setting);
gameObject.SetActive(value == !reverse);
}
void Start() {
bool value = GetSettingValue(setting);
gameObject.SetActive(value == !reverse);
}
bool GetSettingValue(SettingTypes s) {
var b = BazookaManager.Instance;
return s switch {
SettingTypes.FullScreen => b.GetSettingFullScreen(),
SettingTypes.ShowFPS => b.GetSettingShowFPS(),
SettingTypes.Vsync => b.GetSettingVsync(),
SettingTypes.HideSocials => b.GetSettingHideSocials() ?? false,
_ => false
};
}
bool GetSettingValue(SettingTypes s) {
var b = BazookaManager.Instance;
return s switch {
SettingTypes.FullScreen => b.GetSettingFullScreen(),
SettingTypes.ShowFPS => b.GetSettingShowFPS(),
SettingTypes.Vsync => b.GetSettingVsync(),
SettingTypes.HideSocials => b.GetSettingHideSocials() ?? false,
_ => false
};
}
}
+7 -7
View File
@@ -2,13 +2,13 @@ using UnityEngine;
using UnityEngine.EventSystems;
public class HoldableButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler {
public bool isPressed;
public bool isPressed;
public void OnPointerDown(PointerEventData eventData) {
isPressed = true;
}
public void OnPointerDown(PointerEventData eventData) {
isPressed = true;
}
public void OnPointerUp(PointerEventData eventData) {
isPressed = false;
}
public void OnPointerUp(PointerEventData eventData) {
isPressed = false;
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
using UnityEngine;
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;
}
+18 -18
View File
@@ -1,26 +1,26 @@
using UnityEngine;
public class ObjectSpinner : MonoBehaviour {
[SerializeField] private float frequency = 1f;
[SerializeField] private bool spinX = false;
[SerializeField] private bool spinY = true;
[SerializeField] private bool spinZ = false;
[SerializeField] private bool useLocalSpace = true;
[SerializeField] private bool reverseDirection = false;
[SerializeField] private float frequency = 1f;
[SerializeField] private bool spinX = false;
[SerializeField] private bool spinY = true;
[SerializeField] private bool spinZ = false;
[SerializeField] private bool useLocalSpace = true;
[SerializeField] private bool reverseDirection = false;
private float DegreesPerSecond => frequency * 360f;
private float DegreesPerSecond => frequency * 360f;
void Update() {
float direction = reverseDirection ? -1f : 1f;
float delta = DegreesPerSecond * direction * Time.deltaTime;
void Update() {
float direction = reverseDirection ? -1f : 1f;
float delta = DegreesPerSecond * direction * Time.deltaTime;
Vector3 rotationAxis = new(
spinX ? delta : 0f,
spinY ? delta : 0f,
spinZ ? delta : 0f
);
Vector3 rotationAxis = new(
spinX ? delta : 0f,
spinY ? delta : 0f,
spinZ ? delta : 0f
);
if (useLocalSpace) transform.Rotate(rotationAxis, Space.Self);
else transform.Rotate(rotationAxis, Space.World);
}
if (useLocalSpace) transform.Rotate(rotationAxis, Space.Self);
else transform.Rotate(rotationAxis, Space.World);
}
}
+26 -26
View File
@@ -5,32 +5,32 @@ using System.Text;
using UnityEngine;
public class OldSavefileEncryption {
public const string BAZOOKA_MANAGER_KEY = "5de0d5798d4eb751e13b668c1fc5297d";
public const string BAZOOKA_MANAGER_FILE_KEY = "e74af7ba21b8b4edd0e3f1d572d63c67";
public const string BAZOOKA_MANAGER_KEY = "5de0d5798d4eb751e13b668c1fc5297d";
public const string BAZOOKA_MANAGER_FILE_KEY = "e74af7ba21b8b4edd0e3f1d572d63c67";
public static string DecryptRaw(byte[] data) {
if (BAZOOKA_MANAGER_KEY.Trim() == string.Empty) {
Debug.LogError("Failed to decrypt: Encryption/Decryption keys not present");
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;
}
public static string DecryptRaw(byte[] data) {
if (BAZOOKA_MANAGER_KEY.Trim() == string.Empty) {
Debug.LogError("Failed to decrypt: Encryption/Decryption keys not present");
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;
}
}
}
+10 -10
View File
@@ -1,15 +1,15 @@
using UnityEngine;
public class RainbowCamera : MonoBehaviour {
public float frequency = 1f;
[Range(0, 255)]
public int brightness = 255;
public float frequency = 1f;
[Range(0, 255)]
public int brightness = 255;
void Update() {
float t = Time.time * frequency;
float r = (Mathf.Sin(t) * 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);
Camera.main.backgroundColor = new Color(r, g, b);
}
void Update() {
float t = Time.time * frequency;
float r = (Mathf.Sin(t) * 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);
Camera.main.backgroundColor = new Color(r, g, b);
}
}
+12 -12
View File
@@ -2,18 +2,18 @@ using UnityEngine;
using UnityEngine.UI;
public class RainbowImage : MonoBehaviour {
public float frequency = 1f;
private Image targetImage;
public float frequency = 1f;
private Image targetImage;
void Awake() {
targetImage = gameObject.GetComponent<Image>();
}
void Awake() {
targetImage = gameObject.GetComponent<Image>();
}
void Update() {
float t = Time.time * frequency;
float r = Mathf.Sin(t) * 0.5f + 0.5f;
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
targetImage.color = new Color(r, g, b);
}
void Update() {
float t = Time.time * frequency;
float r = Mathf.Sin(t) * 0.5f + 0.5f;
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
targetImage.color = new Color(r, g, b);
}
}
+12 -12
View File
@@ -1,18 +1,18 @@
using UnityEngine;
public class RainbowSpriteRender : MonoBehaviour {
public float frequency = 1f;
private SpriteRenderer targetImage;
public float frequency = 1f;
private SpriteRenderer targetImage;
void Awake() {
targetImage = gameObject.GetComponent<SpriteRenderer>();
}
void Awake() {
targetImage = gameObject.GetComponent<SpriteRenderer>();
}
void Update() {
float t = Time.time * frequency;
float r = Mathf.Sin(t) * 0.5f + 0.5f;
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
targetImage.color = new Color(r, g, b);
}
void Update() {
float t = Time.time * frequency;
float r = Mathf.Sin(t) * 0.5f + 0.5f;
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
targetImage.color = new Color(r, g, b);
}
}
+12 -12
View File
@@ -2,18 +2,18 @@ using TMPro;
using UnityEngine;
public class RainbowText : MonoBehaviour {
public float frequency = 1f;
private TMP_Text targetImage;
public float frequency = 1f;
private TMP_Text targetImage;
void Awake() {
targetImage = gameObject.GetComponent<TMP_Text>();
}
void Awake() {
targetImage = gameObject.GetComponent<TMP_Text>();
}
void Update() {
float t = Time.time * frequency;
float r = Mathf.Sin(t) * 0.5f + 0.5f;
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
targetImage.color = new Color(r, g, b);
}
void Update() {
float t = Time.time * frequency;
float r = Mathf.Sin(t) * 0.5f + 0.5f;
float g = Mathf.Sin(t + 2f) * 0.5f + 0.5f;
float b = Mathf.Sin(t + 4f) * 0.5f + 0.5f;
targetImage.color = new Color(r, g, b);
}
}
+137 -137
View File
@@ -8,157 +8,157 @@ using UnityEngine;
using UnityEngine.UI;
public static class Tools {
public static Sprite GetIconForUser(BigInteger user) {
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 == 4) return Resources.Load<Sprite>("Icons/Icons/bird_-3");
else if (user == 3) return Resources.Load<Sprite>("Icons/Icons/bird_-4");
else return Resources.Load<Sprite>("Icons/Icons/bird_1");
}
public static Sprite GetIconForUser(BigInteger user) {
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 == 4) return Resources.Load<Sprite>("Icons/Icons/bird_-3");
else if (user == 3) return Resources.Load<Sprite>("Icons/Icons/bird_-4");
else return Resources.Load<Sprite>("Icons/Icons/bird_1");
}
public static string FormatWithCommas(string number) {
try { return FormatWithCommas(BigInteger.Parse(number)); }
catch { return number; }
}
public static string FormatWithCommas(string number) {
try { return FormatWithCommas(BigInteger.Parse(number)); }
catch { return number; }
}
public static string FormatWithCommas(BigInteger number) {
return string.Format("{0:N0}", number);
}
public static string FormatWithCommas(BigInteger number) {
return string.Format("{0:N0}", number);
}
public static void UpdateStatusText(TMP_Text statusText, string message, Color color) {
statusText.text = message;
statusText.color = color;
}
public static void UpdateStatusText(TMP_Text statusText, string message, Color color) {
statusText.text = message;
statusText.color = color;
}
public static Sprite GetSpriteFromBase64(string base64) {
byte[] imageData = Convert.FromBase64String(base64);
Texture2D tex = new(2, 2, TextureFormat.ARGB32, false);
if (!tex.LoadImage(imageData)) return null;
public static Sprite GetSpriteFromBase64(string base64) {
byte[] imageData = Convert.FromBase64String(base64);
Texture2D tex = new(2, 2, TextureFormat.ARGB32, false);
if (!tex.LoadImage(imageData)) return null;
tex.filterMode = FilterMode.Point;
tex.Apply(false, false);
tex.filterMode = FilterMode.Point;
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) {
foreach (Transform child in root.transform) RefreshHierarchy(child.gameObject);
if (root.TryGetComponent<RectTransform>(out var rect)) LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
}
public static void RefreshHierarchy(GameObject root) {
foreach (Transform child in root.transform) RefreshHierarchy(child.gameObject);
if (root.TryGetComponent<RectTransform>(out var rect)) LayoutRebuilder.ForceRebuildLayoutImmediate(rect);
}
public static string Sha512Sum(byte[] data) {
using var sha512 = SHA512.Create();
var hash = sha512.ComputeHash(data);
public static string Sha512Sum(byte[] data) {
using var sha512 = SHA512.Create();
var hash = sha512.ComputeHash(data);
var sb = new StringBuilder(hash.Length * 2);
foreach (var b in hash)
sb.Append(b.ToString("x2"));
var sb = new StringBuilder(hash.Length * 2);
foreach (var b in hash)
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) {
BigInteger totalXp = 0;
totalXp += normalBerries;
totalXp -= poisonBerries;
totalXp -= slowBerries;
totalXp += ultraBerries * 5;
totalXp += speedyBerries * 10;
totalXp += coinBerries * 10;
totalXp += randomBerries;
totalXp -= antiBerries;
totalXp += goldenBerries * 4;
if (totalXp < 0) totalXp = 0;
return totalXp;
}
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;
totalXp += normalBerries;
totalXp -= poisonBerries;
totalXp -= slowBerries;
totalXp += ultraBerries * 5;
totalXp += speedyBerries * 10;
totalXp += coinBerries * 10;
totalXp += randomBerries;
totalXp -= antiBerries;
totalXp += goldenBerries * 4;
if (totalXp < 0) totalXp = 0;
return totalXp;
}
public static BigInteger CalculateXP() {
return CalculateXP(
BazookaManager.Instance.GetGameStoreTotalNormalBerries(),
BazookaManager.Instance.GetGameStoreTotalPoisonBerries(),
BazookaManager.Instance.GetGameStoreTotalSlowBerries(),
BazookaManager.Instance.GetGameStoreTotalUltraBerries(),
BazookaManager.Instance.GetGameStoreTotalSpeedyBerries(),
BazookaManager.Instance.GetGameStoreTotalCoinBerries(),
BazookaManager.Instance.GetGameStoreTotalRandomBerries(),
BazookaManager.Instance.GetGameStoreTotalAntiBerries(),
BazookaManager.Instance.GetGameStoreTotalGoldenBerries()
public static BigInteger CalculateXP() {
return CalculateXP(
BazookaManager.Instance.GetGameStoreTotalNormalBerries(),
BazookaManager.Instance.GetGameStoreTotalPoisonBerries(),
BazookaManager.Instance.GetGameStoreTotalSlowBerries(),
BazookaManager.Instance.GetGameStoreTotalUltraBerries(),
BazookaManager.Instance.GetGameStoreTotalSpeedyBerries(),
BazookaManager.Instance.GetGameStoreTotalCoinBerries(),
BazookaManager.Instance.GetGameStoreTotalRandomBerries(),
BazookaManager.Instance.GetGameStoreTotalAntiBerries(),
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) {
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 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;
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;
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
using UnityEngine;
public class WaitingForCustomIcon : MonoBehaviour {
public string ID;
public string ID;
}
+82 -82
View File
@@ -5,102 +5,102 @@ using UnityEngine.SceneManagement;
using System;
public class WebsocketHandler : MonoBehaviour {
public static WebsocketHandler Instance;
public WebSocketConnection _Connection;
public static WebsocketHandler Instance;
public WebSocketConnection _Connection;
private bool isReconnecting = false;
private bool intentionalDisconnect = false;
private bool isReconnecting = false;
private bool intentionalDisconnect = false;
private static readonly WaitForSeconds _waitForSeconds2 = new(2f);
private string lastSceneName = null;
private static readonly WaitForSeconds _waitForSeconds2 = new(2f);
private string lastSceneName = null;
private float _lastPingMs = -1f;
private float _lastPingMs = -1f;
private void Awake() {
if (Instance != null) {
Destroy(gameObject);
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 Awake() {
if (Instance != null) {
Destroy(gameObject);
return;
}
private void OnDestroy() {
if (_Connection != null) {
_Connection.StateChanged -= OnStateChanged;
_Connection.ErrorMessageReceived -= OnErrorMessageReceived;
}
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() {
if (_Connection != null) {
_Connection.StateChanged -= OnStateChanged;
_Connection.ErrorMessageReceived -= OnErrorMessageReceived;
}
}
public void Connect() {
intentionalDisconnect = false;
public void Connect() {
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());
}
public void Disconnect() {
intentionalDisconnect = true;
_Connection.Disconnect();
if (newState == WebSocketState.Connected) {
var currentSceneName = SceneManager.GetActiveScene().name;
ConnectedWithCurrentSceneMessage msg = new() {
sceneName = currentSceneName
};
_Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
}
}
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) {
var currentSceneName = SceneManager.GetActiveScene().name;
ConnectedWithCurrentSceneMessage msg = new() {
sceneName = currentSceneName
};
_Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
}
private void OnErrorMessageReceived(WebSocketConnection connection, string errorMessage) {
Debug.LogError($"WS error {errorMessage}");
}
private IEnumerator ReconnectWithDelay() {
isReconnecting = true;
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;
}
private void OnErrorMessageReceived(WebSocketConnection connection, string errorMessage) {
Debug.LogError($"WS error {errorMessage}");
}
public float GetPing() => _lastPingMs;
private IEnumerator ReconnectWithDelay() {
isReconnecting = true;
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;
}
private void OnPongReceived(WebSocketConnection connection, DateTime timestamp) {
_lastPingMs = (float)connection.LastPingPongInterval.TotalMilliseconds;
}
}
+333 -333
View File
@@ -8,373 +8,373 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PlayMenu : MonoBehaviour {
[SerializeField] private GameObject selectionMenu;
[SerializeField] private GameObject customMenu;
[SerializeField] private GameObject autoWarningMenu;
[SerializeField] private Button customButton;
[SerializeField] private Button customBackButton;
[SerializeField] private Button customPlayButton;
[SerializeField] private Button customNormalizeButton;
[SerializeField] private Button multiplayerButton;
[SerializeField] private GameObject multiplayerJoinStatusPanel;
[SerializeField] private GameObject multiplayerJoiningPanel;
[SerializeField] private GameObject multiplayerDeniedPanel;
[SerializeField] private Button multiplayerDeniedBackButton;
[SerializeField] private TMP_Text multiplayerDeniedReasonText;
[SerializeField] private Button autoButton;
[SerializeField] private Button autoBackButton;
[SerializeField] private Button autoPlayButton;
[SerializeField] private GameObject selectionMenu;
[SerializeField] private GameObject customMenu;
[SerializeField] private GameObject autoWarningMenu;
[SerializeField] private Button customButton;
[SerializeField] private Button customBackButton;
[SerializeField] private Button customPlayButton;
[SerializeField] private Button customNormalizeButton;
[SerializeField] private Button multiplayerButton;
[SerializeField] private GameObject multiplayerJoinStatusPanel;
[SerializeField] private GameObject multiplayerJoiningPanel;
[SerializeField] private GameObject multiplayerDeniedPanel;
[SerializeField] private Button multiplayerDeniedBackButton;
[SerializeField] private TMP_Text multiplayerDeniedReasonText;
[SerializeField] private Button autoButton;
[SerializeField] private Button autoBackButton;
[SerializeField] private Button autoPlayButton;
[SerializeField] private TMP_InputField normalBerryChance;
[SerializeField] private TMP_InputField poisonBerryChance;
[SerializeField] private TMP_InputField slowBerryChance;
[SerializeField] private TMP_InputField ultraBerryChance;
[SerializeField] private TMP_InputField speedyBerryChance;
[SerializeField] private TMP_InputField randomBerryChance;
[SerializeField] private TMP_InputField antiBerryChance;
[SerializeField] private TMP_InputField goldenBerryChance;
[SerializeField] private TMP_InputField nothingBerryChance;
[SerializeField] private Toggle useAiToggle;
[SerializeField] private TMP_InputField normalBerryChance;
[SerializeField] private TMP_InputField poisonBerryChance;
[SerializeField] private TMP_InputField slowBerryChance;
[SerializeField] private TMP_InputField ultraBerryChance;
[SerializeField] private TMP_InputField speedyBerryChance;
[SerializeField] private TMP_InputField randomBerryChance;
[SerializeField] private TMP_InputField antiBerryChance;
[SerializeField] private TMP_InputField goldenBerryChance;
[SerializeField] private TMP_InputField nothingBerryChance;
[SerializeField] private Toggle useAiToggle;
[SerializeField] private TMP_Text validateTotalText;
[SerializeField] private TMP_Text validateTotalText;
private readonly float defaultNormalBerryChance = 42.5f;
private readonly float defaultPoisonBerryChance = 12.5f;
private readonly float defaultSlowBerryChance = 10f;
private readonly float defaultUltraBerryChance = 10f;
private readonly float defaultSpeedyBerryChance = 10f;
private readonly float defaultRandomBerryChance = 5f;
private readonly float defaultAntiBerryChance = 5f;
private readonly float defaultGoldenBerryChance = 5f;
private readonly float defaultNothingBerryChance = 0f;
private readonly float defaultNormalBerryChance = 42.5f;
private readonly float defaultPoisonBerryChance = 12.5f;
private readonly float defaultSlowBerryChance = 10f;
private readonly float defaultUltraBerryChance = 10f;
private readonly float defaultSpeedyBerryChance = 10f;
private readonly float defaultRandomBerryChance = 5f;
private readonly float defaultAntiBerryChance = 5f;
private readonly float defaultGoldenBerryChance = 5f;
private readonly float defaultNothingBerryChance = 0f;
void Awake() {
customButton.onClick.AddListener(() => {
selectionMenu.SetActive(false);
customMenu.SetActive(true);
if (DiscordRPCHandler.Instance != null)
DiscordRPCHandler.Instance.UpdateRPC("Customizing to play the custom mode", "");
});
customBackButton.onClick.AddListener(() => {
customMenu.SetActive(false);
selectionMenu.SetActive(true);
void Awake() {
customButton.onClick.AddListener(() => {
selectionMenu.SetActive(false);
customMenu.SetActive(true);
if (DiscordRPCHandler.Instance != null)
DiscordRPCHandler.Instance.UpdateRPC("Customizing to play the custom mode", "");
});
customBackButton.onClick.AddListener(() => {
customMenu.SetActive(false);
selectionMenu.SetActive(true);
normalBerryChance.text = defaultNormalBerryChance.ToString() + "%";
poisonBerryChance.text = defaultPoisonBerryChance.ToString() + "%";
slowBerryChance.text = defaultSlowBerryChance.ToString() + "%";
ultraBerryChance.text = defaultUltraBerryChance.ToString() + "%";
speedyBerryChance.text = defaultSpeedyBerryChance.ToString() + "%";
randomBerryChance.text = defaultRandomBerryChance.ToString() + "%";
antiBerryChance.text = defaultAntiBerryChance.ToString() + "%";
goldenBerryChance.text = defaultGoldenBerryChance.ToString() + "%";
nothingBerryChance.text = defaultNothingBerryChance.ToString() + "%";
useAiToggle.isOn = false;
ValidateTotal();
if (DiscordRPCHandler.Instance != null)
DiscordRPCHandler.Instance.UpdateRPC("Picking what mode they want to play", "");
});
customNormalizeButton.onClick.AddListener(() => {
float normalBerry = GetValueFrom(normalBerryChance);
float poisonBerry = GetValueFrom(poisonBerryChance);
float slowBerry = GetValueFrom(slowBerryChance);
float ultraBerry = GetValueFrom(ultraBerryChance);
float speedyBerry = GetValueFrom(speedyBerryChance);
float randomBerry = GetValueFrom(randomBerryChance);
float antiBerry = GetValueFrom(antiBerryChance);
float goldenBerry = GetValueFrom(goldenBerryChance);
float nothingBerry = GetValueFrom(nothingBerryChance);
normalBerryChance.text = defaultNormalBerryChance.ToString() + "%";
poisonBerryChance.text = defaultPoisonBerryChance.ToString() + "%";
slowBerryChance.text = defaultSlowBerryChance.ToString() + "%";
ultraBerryChance.text = defaultUltraBerryChance.ToString() + "%";
speedyBerryChance.text = defaultSpeedyBerryChance.ToString() + "%";
randomBerryChance.text = defaultRandomBerryChance.ToString() + "%";
antiBerryChance.text = defaultAntiBerryChance.ToString() + "%";
goldenBerryChance.text = defaultGoldenBerryChance.ToString() + "%";
nothingBerryChance.text = defaultNothingBerryChance.ToString() + "%";
useAiToggle.isOn = false;
ValidateTotal();
if (DiscordRPCHandler.Instance != null)
DiscordRPCHandler.Instance.UpdateRPC("Picking what mode they want to play", "");
});
customNormalizeButton.onClick.AddListener(() => {
float normalBerry = GetValueFrom(normalBerryChance);
float poisonBerry = GetValueFrom(poisonBerryChance);
float slowBerry = GetValueFrom(slowBerryChance);
float ultraBerry = GetValueFrom(ultraBerryChance);
float speedyBerry = GetValueFrom(speedyBerryChance);
float randomBerry = GetValueFrom(randomBerryChance);
float antiBerry = GetValueFrom(antiBerryChance);
float goldenBerry = GetValueFrom(goldenBerryChance);
float nothingBerry = GetValueFrom(nothingBerryChance);
int divideBy = 0;
int divideBy = 0;
divideBy += normalBerry > 0 ? 1 : 0;
divideBy += poisonBerry > 0 ? 1 : 0;
divideBy += slowBerry > 0 ? 1 : 0;
divideBy += ultraBerry > 0 ? 1 : 0;
divideBy += speedyBerry > 0 ? 1 : 0;
divideBy += randomBerry > 0 ? 1 : 0;
divideBy += antiBerry > 0 ? 1 : 0;
divideBy += goldenBerry > 0 ? 1 : 0;
divideBy += nothingBerry > 0 ? 1 : 0;
divideBy += normalBerry > 0 ? 1 : 0;
divideBy += poisonBerry > 0 ? 1 : 0;
divideBy += slowBerry > 0 ? 1 : 0;
divideBy += ultraBerry > 0 ? 1 : 0;
divideBy += speedyBerry > 0 ? 1 : 0;
divideBy += randomBerry > 0 ? 1 : 0;
divideBy += antiBerry > 0 ? 1 : 0;
divideBy += goldenBerry > 0 ? 1 : 0;
divideBy += nothingBerry > 0 ? 1 : 0;
float addedChances = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + goldenBerry + nothingBerry;
float difference = addedChances - 100f;
float addedChances = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + goldenBerry + nothingBerry;
float difference = addedChances - 100f;
if (normalBerry > 0) NormalizeOne(normalBerryChance, normalBerry, divideBy, difference);
if (poisonBerry > 0) NormalizeOne(poisonBerryChance, poisonBerry, divideBy, difference);
if (slowBerry > 0) NormalizeOne(slowBerryChance, slowBerry, divideBy, difference);
if (ultraBerry > 0) NormalizeOne(ultraBerryChance, ultraBerry, divideBy, difference);
if (speedyBerry > 0) NormalizeOne(speedyBerryChance, speedyBerry, divideBy, difference);
if (randomBerry > 0) NormalizeOne(randomBerryChance, randomBerry, divideBy, difference);
if (antiBerry > 0) NormalizeOne(antiBerryChance, antiBerry, divideBy, difference);
if (goldenBerry > 0) NormalizeOne(goldenBerryChance, goldenBerry, divideBy, difference);
if (nothingBerry > 0) NormalizeOne(nothingBerryChance, nothingBerry, divideBy, difference);
if (normalBerry > 0) NormalizeOne(normalBerryChance, normalBerry, divideBy, difference);
if (poisonBerry > 0) NormalizeOne(poisonBerryChance, poisonBerry, divideBy, difference);
if (slowBerry > 0) NormalizeOne(slowBerryChance, slowBerry, divideBy, difference);
if (ultraBerry > 0) NormalizeOne(ultraBerryChance, ultraBerry, divideBy, difference);
if (speedyBerry > 0) NormalizeOne(speedyBerryChance, speedyBerry, divideBy, difference);
if (randomBerry > 0) NormalizeOne(randomBerryChance, randomBerry, divideBy, difference);
if (antiBerry > 0) NormalizeOne(antiBerryChance, antiBerry, divideBy, difference);
if (goldenBerry > 0) NormalizeOne(goldenBerryChance, goldenBerry, divideBy, difference);
if (nothingBerry > 0) NormalizeOne(nothingBerryChance, nothingBerry, divideBy, difference);
normalBerry = GetValueFrom(normalBerryChance);
poisonBerry = GetValueFrom(poisonBerryChance);
slowBerry = GetValueFrom(slowBerryChance);
ultraBerry = GetValueFrom(ultraBerryChance);
speedyBerry = GetValueFrom(speedyBerryChance);
randomBerry = GetValueFrom(randomBerryChance);
antiBerry = GetValueFrom(antiBerryChance);
goldenBerry = GetValueFrom(goldenBerryChance);
nothingBerry = GetValueFrom(nothingBerryChance);
normalBerry = GetValueFrom(normalBerryChance);
poisonBerry = GetValueFrom(poisonBerryChance);
slowBerry = GetValueFrom(slowBerryChance);
ultraBerry = GetValueFrom(ultraBerryChance);
speedyBerry = GetValueFrom(speedyBerryChance);
randomBerry = GetValueFrom(randomBerryChance);
antiBerry = GetValueFrom(antiBerryChance);
goldenBerry = GetValueFrom(goldenBerryChance);
nothingBerry = GetValueFrom(nothingBerryChance);
if (normalBerry > 0) normalBerry = (float)Math.Floor(normalBerry);
if (poisonBerry > 0) poisonBerry = (float)Math.Floor(poisonBerry);
if (slowBerry > 0) slowBerry = (float)Math.Floor(slowBerry);
if (ultraBerry > 0) ultraBerry = (float)Math.Floor(ultraBerry);
if (speedyBerry > 0) speedyBerry = (float)Math.Floor(speedyBerry);
if (randomBerry > 0) randomBerry = (float)Math.Floor(randomBerry);
if (antiBerry > 0) antiBerry = (float)Math.Floor(antiBerry);
if (goldenBerry > 0) goldenBerry = (float)Math.Floor(goldenBerry);
if (nothingBerry > 0) nothingBerry = (float)Math.Floor(nothingBerry);
if (normalBerry > 0) normalBerry = (float)Math.Floor(normalBerry);
if (poisonBerry > 0) poisonBerry = (float)Math.Floor(poisonBerry);
if (slowBerry > 0) slowBerry = (float)Math.Floor(slowBerry);
if (ultraBerry > 0) ultraBerry = (float)Math.Floor(ultraBerry);
if (speedyBerry > 0) speedyBerry = (float)Math.Floor(speedyBerry);
if (randomBerry > 0) randomBerry = (float)Math.Floor(randomBerry);
if (antiBerry > 0) antiBerry = (float)Math.Floor(antiBerry);
if (goldenBerry > 0) goldenBerry = (float)Math.Floor(goldenBerry);
if (nothingBerry > 0) nothingBerry = (float)Math.Floor(nothingBerry);
float addedChances2 = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + goldenBerry + nothingBerry;
float difference2 = addedChances2 - 100f;
bool fixedValues = false;
float addedChances2 = normalBerry + poisonBerry + slowBerry + ultraBerry + speedyBerry + randomBerry + antiBerry + goldenBerry + nothingBerry;
float difference2 = addedChances2 - 100f;
bool fixedValues = false;
if (normalBerry > 0) {
NormalizeTwo(normalBerryChance, fixedValues, normalBerry, difference2);
fixedValues = true;
}
if (poisonBerry > 0) {
NormalizeTwo(poisonBerryChance, fixedValues, poisonBerry, difference2);
fixedValues = true;
}
if (slowBerry > 0) {
NormalizeTwo(slowBerryChance, fixedValues, slowBerry, difference2);
fixedValues = true;
}
if (ultraBerry > 0) {
NormalizeTwo(ultraBerryChance, fixedValues, ultraBerry, difference2);
fixedValues = true;
}
if (speedyBerry > 0) {
NormalizeTwo(speedyBerryChance, fixedValues, speedyBerry, difference2);
fixedValues = true;
}
if (randomBerry > 0) {
NormalizeTwo(randomBerryChance, fixedValues, randomBerry, difference2);
fixedValues = true;
}
if (antiBerry > 0) {
NormalizeTwo(antiBerryChance, fixedValues, antiBerry, difference2);
fixedValues = true;
}
if (goldenBerry > 0) {
NormalizeTwo(goldenBerryChance, fixedValues, goldenBerry, difference2);
fixedValues = true;
}
if (nothingBerry > 0) {
NormalizeTwo(nothingBerryChance, fixedValues, nothingBerry, difference2);
fixedValues = true;
}
if (normalBerry > 0) {
NormalizeTwo(normalBerryChance, fixedValues, normalBerry, difference2);
fixedValues = true;
}
if (poisonBerry > 0) {
NormalizeTwo(poisonBerryChance, fixedValues, poisonBerry, difference2);
fixedValues = true;
}
if (slowBerry > 0) {
NormalizeTwo(slowBerryChance, fixedValues, slowBerry, difference2);
fixedValues = true;
}
if (ultraBerry > 0) {
NormalizeTwo(ultraBerryChance, fixedValues, ultraBerry, difference2);
fixedValues = true;
}
if (speedyBerry > 0) {
NormalizeTwo(speedyBerryChance, fixedValues, speedyBerry, difference2);
fixedValues = true;
}
if (randomBerry > 0) {
NormalizeTwo(randomBerryChance, fixedValues, randomBerry, difference2);
fixedValues = true;
}
if (antiBerry > 0) {
NormalizeTwo(antiBerryChance, fixedValues, antiBerry, difference2);
fixedValues = true;
}
if (goldenBerry > 0) {
NormalizeTwo(goldenBerryChance, fixedValues, goldenBerry, difference2);
fixedValues = true;
}
if (nothingBerry > 0) {
NormalizeTwo(nothingBerryChance, fixedValues, nothingBerry, difference2);
fixedValues = true;
}
ValidateTotal();
});
customPlayButton.onClick.AddListener(async () => {
GameObject obj = new("CustomGameTempData");
obj.AddComponent<CustomGameTempData>();
CustomGameTempData customGameTempData = obj.GetComponent<CustomGameTempData>();
customGameTempData.normalBerryChance = GetValueFrom(normalBerryChance);
customGameTempData.poisonBerryChance = GetValueFrom(poisonBerryChance);
customGameTempData.slowBerryChance = GetValueFrom(slowBerryChance);
customGameTempData.ultraBerryChance = GetValueFrom(ultraBerryChance);
customGameTempData.speedyBerryChance = GetValueFrom(speedyBerryChance);
customGameTempData.randomBerryChance = GetValueFrom(randomBerryChance);
customGameTempData.antiBerryChance = GetValueFrom(antiBerryChance);
customGameTempData.goldenBerryChance = GetValueFrom(goldenBerryChance);
customGameTempData.nothingBerryChance = GetValueFrom(nothingBerryChance);
customGameTempData.useAI = useAiToggle.isOn;
await SceneManager.LoadSceneAsync("CustomGamePlayer");
});
multiplayerButton.onClick.AddListener(() => {
selectionMenu.SetActive(false);
multiplayerJoinStatusPanel.SetActive(true);
multiplayerJoiningPanel.SetActive(true);
ValidateTotal();
});
customPlayButton.onClick.AddListener(async () => {
GameObject obj = new("CustomGameTempData");
obj.AddComponent<CustomGameTempData>();
CustomGameTempData customGameTempData = obj.GetComponent<CustomGameTempData>();
customGameTempData.normalBerryChance = GetValueFrom(normalBerryChance);
customGameTempData.poisonBerryChance = GetValueFrom(poisonBerryChance);
customGameTempData.slowBerryChance = GetValueFrom(slowBerryChance);
customGameTempData.ultraBerryChance = GetValueFrom(ultraBerryChance);
customGameTempData.speedyBerryChance = GetValueFrom(speedyBerryChance);
customGameTempData.randomBerryChance = GetValueFrom(randomBerryChance);
customGameTempData.antiBerryChance = GetValueFrom(antiBerryChance);
customGameTempData.goldenBerryChance = GetValueFrom(goldenBerryChance);
customGameTempData.nothingBerryChance = GetValueFrom(nothingBerryChance);
customGameTempData.useAI = useAiToggle.isOn;
await SceneManager.LoadSceneAsync("CustomGamePlayer");
});
multiplayerButton.onClick.AddListener(() => {
selectionMenu.SetActive(false);
multiplayerJoinStatusPanel.SetActive(true);
multiplayerJoiningPanel.SetActive(true);
MultiplayerJoinRequestMessage msg = new() {
auth = BazookaManager.Instance.GetAccountSession()
};
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
});
multiplayerDeniedBackButton.onClick.AddListener(() => {
multiplayerDeniedReasonText.text = "";
multiplayerDeniedPanel.SetActive(false);
multiplayerJoinStatusPanel.SetActive(false);
selectionMenu.SetActive(true);
});
autoButton.onClick.AddListener(async () => {
if (BazookaManager.Instance.GetReadAutoWarning() == true) {
await SceneManager.LoadSceneAsync("AutoGamePlayer");
return;
}
selectionMenu.SetActive(false);
autoWarningMenu.SetActive(true);
});
autoBackButton.onClick.AddListener(() => {
selectionMenu.SetActive(true);
autoWarningMenu.SetActive(false);
});
autoPlayButton.onClick.AddListener(async () => {
BazookaManager.Instance.SetReadAutoWarning(true);
await SceneManager.LoadSceneAsync("AutoGamePlayer");
});
MultiplayerJoinRequestMessage msg = new() {
auth = BazookaManager.Instance.GetAccountSession()
};
WebsocketHandler.Instance._Connection.AddOutgoingMessage(JsonUtility.ToJson(msg));
});
multiplayerDeniedBackButton.onClick.AddListener(() => {
multiplayerDeniedReasonText.text = "";
multiplayerDeniedPanel.SetActive(false);
multiplayerJoinStatusPanel.SetActive(false);
selectionMenu.SetActive(true);
});
autoButton.onClick.AddListener(async () => {
if (BazookaManager.Instance.GetReadAutoWarning() == true) {
await SceneManager.LoadSceneAsync("AutoGamePlayer");
return;
}
selectionMenu.SetActive(false);
autoWarningMenu.SetActive(true);
});
autoBackButton.onClick.AddListener(() => {
selectionMenu.SetActive(true);
autoWarningMenu.SetActive(false);
});
autoPlayButton.onClick.AddListener(async () => {
BazookaManager.Instance.SetReadAutoWarning(true);
await SceneManager.LoadSceneAsync("AutoGamePlayer");
});
normalBerryChance.onSelect.AddListener((value) => OnSelect(value, normalBerryChance));
normalBerryChance.onDeselect.AddListener((value) => OnDeselect(value, normalBerryChance));
poisonBerryChance.onSelect.AddListener((value) => OnSelect(value, poisonBerryChance));
poisonBerryChance.onDeselect.AddListener((value) => OnDeselect(value, poisonBerryChance));
slowBerryChance.onSelect.AddListener((value) => OnSelect(value, slowBerryChance));
slowBerryChance.onDeselect.AddListener((value) => OnDeselect(value, slowBerryChance));
ultraBerryChance.onSelect.AddListener((value) => OnSelect(value, ultraBerryChance));
ultraBerryChance.onDeselect.AddListener((value) => OnDeselect(value, ultraBerryChance));
speedyBerryChance.onSelect.AddListener((value) => OnSelect(value, speedyBerryChance));
speedyBerryChance.onDeselect.AddListener((value) => OnDeselect(value, speedyBerryChance));
randomBerryChance.onSelect.AddListener((value) => OnSelect(value, randomBerryChance));
randomBerryChance.onDeselect.AddListener((value) => OnDeselect(value, randomBerryChance));
antiBerryChance.onSelect.AddListener((value) => OnSelect(value, antiBerryChance));
antiBerryChance.onDeselect.AddListener((value) => OnDeselect(value, antiBerryChance));
goldenBerryChance.onSelect.AddListener((value) => OnSelect(value, goldenBerryChance));
goldenBerryChance.onDeselect.AddListener((value) => OnDeselect(value, goldenBerryChance));
nothingBerryChance.onSelect.AddListener((value) => OnSelect(value, nothingBerryChance));
nothingBerryChance.onDeselect.AddListener((value) => OnDeselect(value, nothingBerryChance));
normalBerryChance.onSelect.AddListener((value) => OnSelect(value, normalBerryChance));
normalBerryChance.onDeselect.AddListener((value) => OnDeselect(value, normalBerryChance));
poisonBerryChance.onSelect.AddListener((value) => OnSelect(value, poisonBerryChance));
poisonBerryChance.onDeselect.AddListener((value) => OnDeselect(value, poisonBerryChance));
slowBerryChance.onSelect.AddListener((value) => OnSelect(value, slowBerryChance));
slowBerryChance.onDeselect.AddListener((value) => OnDeselect(value, slowBerryChance));
ultraBerryChance.onSelect.AddListener((value) => OnSelect(value, ultraBerryChance));
ultraBerryChance.onDeselect.AddListener((value) => OnDeselect(value, ultraBerryChance));
speedyBerryChance.onSelect.AddListener((value) => OnSelect(value, speedyBerryChance));
speedyBerryChance.onDeselect.AddListener((value) => OnDeselect(value, speedyBerryChance));
randomBerryChance.onSelect.AddListener((value) => OnSelect(value, randomBerryChance));
randomBerryChance.onDeselect.AddListener((value) => OnDeselect(value, randomBerryChance));
antiBerryChance.onSelect.AddListener((value) => OnSelect(value, antiBerryChance));
antiBerryChance.onDeselect.AddListener((value) => OnDeselect(value, antiBerryChance));
goldenBerryChance.onSelect.AddListener((value) => OnSelect(value, goldenBerryChance));
goldenBerryChance.onDeselect.AddListener((value) => OnDeselect(value, goldenBerryChance));
nothingBerryChance.onSelect.AddListener((value) => OnSelect(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) {
if (message.String != null && connection.State == WebSocketState.Connected) {
JToken data = JToken.Parse(message.String);
if (data["type"] != null) {
if (data["type"].ToString() == "multiplayer_join_response") {
bool accepted = bool.Parse(data["accepted"].ToString());
string denyReason = data["denyReason"].ToString();
MultiplayerPlayerFromResponse[] players = data["players"].ToObject<MultiplayerPlayerFromResponse[]>();
if (accepted) {
GameObject obj = new("MultiplayerGameTempData");
obj.AddComponent<MultiplayerGameTempData>();
MultiplayerGameTempData multiplayerGameTempData = obj.GetComponent<MultiplayerGameTempData>();
multiplayerGameTempData.players = players;
SceneManager.LoadScene("MultiplayerGamePlayer");
} else {
multiplayerJoiningPanel.SetActive(false);
multiplayerDeniedPanel.SetActive(true);
multiplayerDeniedReasonText.text = denyReason;
}
}
}
private void OnMessageReceived(WebSocketConnection connection, WebSocketMessage message) {
if (message.String != null && connection.State == WebSocketState.Connected) {
JToken data = JToken.Parse(message.String);
if (data["type"] != null) {
if (data["type"].ToString() == "multiplayer_join_response") {
bool accepted = bool.Parse(data["accepted"].ToString());
string denyReason = data["denyReason"].ToString();
MultiplayerPlayerFromResponse[] players = data["players"].ToObject<MultiplayerPlayerFromResponse[]>();
if (accepted) {
GameObject obj = new("MultiplayerGameTempData");
obj.AddComponent<MultiplayerGameTempData>();
MultiplayerGameTempData multiplayerGameTempData = obj.GetComponent<MultiplayerGameTempData>();
multiplayerGameTempData.players = players;
SceneManager.LoadScene("MultiplayerGamePlayer");
} else {
multiplayerJoiningPanel.SetActive(false);
multiplayerDeniedPanel.SetActive(true);
multiplayerDeniedReasonText.text = denyReason;
}
}
}
}
}
void Start() {
if (DiscordRPCHandler.Instance != null)
DiscordRPCHandler.Instance.UpdateRPC("Picking what mode they want to play", "");
void Start() {
if (DiscordRPCHandler.Instance != null)
DiscordRPCHandler.Instance.UpdateRPC("Picking what mode they want to play", "");
if (Tools.GetLevelInfo().level < 5) {
useAiToggle.gameObject.SetActive(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>";
}
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 < 5) {
useAiToggle.gameObject.SetActive(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>";
}
void OnDestroy() {
WebsocketHandler.Instance._Connection.MessageReceived -= OnMessageReceived;
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>";
}
void ValidateTotal() {
customBackButton.interactable = false;
customPlayButton.interactable = false;
customNormalizeButton.interactable = false;
float total = 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);
}
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>";
}
}
private float GetValueFrom(TMP_InputField inputField) {
return GetValueFroText(inputField.text);
}
void OnDestroy() {
WebsocketHandler.Instance._Connection.MessageReceived -= OnMessageReceived;
}
private float GetValueFroText(string text) {
try {
return float.Parse(text.Replace("%", "").Trim());
}
catch {
return 0f;
}
void ValidateTotal() {
customBackButton.interactable = false;
customPlayButton.interactable = false;
customNormalizeButton.interactable = false;
float total = 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) {
validateTotalText.gameObject.SetActive(false);
customBackButton.interactable = false;
customPlayButton.interactable = false;
customNormalizeButton.interactable = false;
inputField.text = value.Replace("%", "");
inputField.stringPosition = inputField.text.Length;
}
private float GetValueFrom(TMP_InputField inputField) {
return GetValueFroText(inputField.text);
}
void OnDeselect(string value, TMP_InputField inputField) {
if (float.TryParse(value, out var value2) && value2 < 0f) {
value = "0";
}
inputField.text = value + "%";
ValidateTotal();
private float GetValueFroText(string text) {
try {
return float.Parse(text.Replace("%", "").Trim());
}
catch {
return 0f;
}
}
void NormalizeOne(TMP_InputField inputField, float berryChance, int divideBy, float difference) {
inputField.text = (berryChance - (difference / divideBy)).ToString() + "%";
inputField.stringPosition = inputField.text.Length;
}
void OnSelect(string value, TMP_InputField inputField) {
validateTotalText.gameObject.SetActive(false);
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) {
if (!fixedValues) {
inputField.text = (berryChance - difference2).ToString() + "%";
inputField.stringPosition = inputField.text.Length;
} else {
inputField.text = berryChance.ToString() + "%";
inputField.stringPosition = inputField.text.Length;
}
void OnDeselect(string value, TMP_InputField inputField) {
if (float.TryParse(value, out var value2) && value2 < 0f) {
value = "0";
}
inputField.text = value + "%";
ValidateTotal();
}
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");
}
void NormalizeOne(TMP_InputField inputField, float berryChance, int divideBy, float difference) {
inputField.text = (berryChance - (difference / divideBy)).ToString() + "%";
inputField.stringPosition = inputField.text.Length;
}
void NormalizeTwo(TMP_InputField inputField, bool fixedValues, float berryChance, float difference2) {
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");
}
}
}
+45 -45
View File
@@ -7,55 +7,55 @@ using UnityEngine.Networking;
using UnityEngine.SceneManagement;
public class PresistentData : MonoBehaviour {
public static PresistentData Instance;
private bool loadingDone = false;
public static string latestVersion = null;
public static List<SplashEntry> randomSplashes = new();
public static PresistentData Instance;
private bool loadingDone = false;
public static string latestVersion = null;
public static List<SplashEntry> randomSplashes = new();
private async void Awake() {
if (Instance != null && Instance != this) {
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
if (!loadingDone) {
loadingDone = true;
await GetLatestVersion();
await GetRandomSplashes();
}
private async void Awake() {
if (Instance != null && Instance != this) {
Destroy(gameObject);
return;
}
private async static Task GetLatestVersion() {
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.LATEST_VERSION_ENDPOINT);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
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);
}
Instance = this;
DontDestroyOnLoad(gameObject);
if (!loadingDone) {
loadingDone = true;
await GetLatestVersion();
await GetRandomSplashes();
}
}
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)]);
private async static Task GetLatestVersion() {
using UnityWebRequest request = UnityWebRequest.Get(Endpoints.LATEST_VERSION_ENDPOINT);
request.SetRequestHeader("Requester", "BerryDashClient");
request.SetRequestHeader("ClientVersion", Application.version);
request.SetRequestHeader("ClientPlatform", Application.platform.ToString());
await request.SendWebRequest();
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() {
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
View File
@@ -10,336 +10,336 @@ using UnityEngine.Networking;
using UnityEngine.UI;
public class ProfileMenu : MonoBehaviour {
[SerializeField] private Button exitButton;
[SerializeField] private Button refreshButton;
[SerializeField] private Button postButton;
[SerializeField] private Button exitButton;
[SerializeField] private Button refreshButton;
[SerializeField] private Button postButton;
[SerializeField] private GameObject contentPanel;
[SerializeField] private TMP_Text loadingText;
[SerializeField] private GameObject voteOverlay;
[SerializeField] private GameObject postOverlay;
[SerializeField] private GameObject contentPanel;
[SerializeField] private TMP_Text loadingText;
[SerializeField] private GameObject voteOverlay;
[SerializeField] private GameObject postOverlay;
[SerializeField] private TMP_Text normalBerryStat;
[SerializeField] private TMP_Text poisonBerryStat;
[SerializeField] private TMP_Text slowBerryStat;
[SerializeField] private TMP_Text ultraBerryStat;
[SerializeField] private TMP_Text speedyBerryStat;
[SerializeField] private TMP_Text coinBerryStat;
[SerializeField] private TMP_Text randomBerryStat;
[SerializeField] private TMP_Text antiBerryStat;
[SerializeField] private TMP_Text goldenBerryStat;
[SerializeField] private TMP_Text coinStat;
[SerializeField] private TMP_Text playerLevelAndXPStat;
[SerializeField] private TMP_Text playerNameText;
[SerializeField] private Image playerIconImage;
[SerializeField] private Image playerOverlayImage;
[SerializeField] private GameObject postSample;
[SerializeField] private TMP_Text normalBerryStat;
[SerializeField] private TMP_Text poisonBerryStat;
[SerializeField] private TMP_Text slowBerryStat;
[SerializeField] private TMP_Text ultraBerryStat;
[SerializeField] private TMP_Text speedyBerryStat;
[SerializeField] private TMP_Text coinBerryStat;
[SerializeField] private TMP_Text randomBerryStat;
[SerializeField] private TMP_Text antiBerryStat;
[SerializeField] private TMP_Text goldenBerryStat;
[SerializeField] private TMP_Text coinStat;
[SerializeField] private TMP_Text playerLevelAndXPStat;
[SerializeField] private TMP_Text playerNameText;
[SerializeField] private Image playerIconImage;
[SerializeField] private Image playerOverlayImage;
[SerializeField] private GameObject postSample;
[SerializeField] private bool canVote = true;
[SerializeField] private bool canVote = true;
private GameObject popupObject;
private GameObject popupObject;
void Awake() {
exitButton.onClick.AddListener(() => Destroy(gameObject));
void Awake() {
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(
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;
contentPanel.SetActive(true);
loadingText.gameObject.SetActive(false);
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;
Tools.RefreshHierarchy(gameObject);
refreshButton.onClick.AddListener(async () => await RefreshPosts(playerID, playerName));
await RefreshPosts(playerID, 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);
}
contentPanel.SetActive(true);
loadingText.gameObject.SetActive(false);
Tools.RefreshHierarchy(gameObject);
refreshButton.onClick.AddListener(async () => await RefreshPosts(playerID, playerName));
await RefreshPosts(playerID, playerName);
public async Task Init(BigInteger playerID) {
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"]) {
public async Task Init(BigInteger playerID) {
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 data = jsonResponse["data"].ToObject<Account>();
var iconColorArray = data.BirdColor;
var overlayColorArray = data.OverlayColor;
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;
var iconColorArray = data.BirdColor;
var overlayColorArray = data.OverlayColor;
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(
BazookaManager.Instance.GetGameStoreTotalNormalBerries().ToString(),
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
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);
}
}
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);
}
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(
BazookaManager.Instance.GetGameStoreTotalNormalBerries().ToString(),
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");
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>();
});
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));
}
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);
}
});
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;
entry.SetActive(true);
entry.name = "PostEntry_" + post.ID;
entry.SetActive(true);
Tools.RefreshHierarchy(entry);
}
exitButton.interactable = true;
refreshButton.interactable = true;
postButton.interactable = true;
Tools.RefreshHierarchy(entry);
}
exitButton.interactable = true;
refreshButton.interactable = true;
postButton.interactable = true;
}
void VotePost(BigInteger postId, TMP_Text entryLikesCount, TMP_Text entryLikesTexture) {
var popup = Instantiate(voteOverlay, voteOverlay.transform.parent);
popupObject = popup;
popup.SetActive(true);
var exitButton = popup.transform.GetChild(0).GetChild(0).GetComponent<Button>();
var likeButton = popup.transform.GetChild(0).GetChild(2).GetComponent<Button>();
var dislikeButton = popup.transform.GetChild(0).GetChild(3).GetComponent<Button>();
exitButton.onClick.AddListener(() => Destroy(popup));
likeButton.onClick.AddListener(async () => {
canVote = false;
popupObject = null;
Destroy(popup);
await SendPostVote(postId, true, entryLikesCount, entryLikesTexture);
canVote = true;
});
dislikeButton.onClick.AddListener(async () => {
canVote = false;
popupObject = null;
Destroy(popup);
await SendPostVote(postId, false, entryLikesCount, entryLikesTexture);
canVote = true;
});
}
void VotePost(BigInteger postId, TMP_Text entryLikesCount, TMP_Text entryLikesTexture) {
var popup = Instantiate(voteOverlay, voteOverlay.transform.parent);
popupObject = popup;
popup.SetActive(true);
var exitButton = popup.transform.GetChild(0).GetChild(0).GetComponent<Button>();
var likeButton = popup.transform.GetChild(0).GetChild(2).GetComponent<Button>();
var dislikeButton = popup.transform.GetChild(0).GetChild(3).GetComponent<Button>();
exitButton.onClick.AddListener(() => Destroy(popup));
likeButton.onClick.AddListener(async () => {
canVote = false;
popupObject = null;
Destroy(popup);
await SendPostVote(postId, true, entryLikesCount, entryLikesTexture);
canVote = true;
});
dislikeButton.onClick.AddListener(async () => {
canVote = false;
popupObject = null;
Destroy(popup);
await SendPostVote(postId, false, entryLikesCount, entryLikesTexture);
canVote = true;
});
}
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);
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) return;
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BigInteger likes = BigInteger.Parse((string)jsonResponse["data"]["likes"]);
entryLikesCount.text = Tools.FormatWithCommas(likes);
entryLikesTexture.text = likes < 0 ? "\\uf165" : "\\uf164";
entryLikesTexture.color = likes < 0 ? new Color(1f, 0f, 0.5f) : new Color(1f, 1f, 0f);
var likedPosts = BazookaManager.Instance.GetLikedPosts();
likedPosts.Add(postId.ToString());
BazookaManager.Instance.SetLikedPosts(likedPosts);
}
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);
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) return;
var jsonResponse = JObject.Parse(request.downloadHandler.text);
if ((bool)jsonResponse["success"]) {
BigInteger likes = BigInteger.Parse((string)jsonResponse["data"]["likes"]);
entryLikesCount.text = Tools.FormatWithCommas(likes);
entryLikesTexture.text = likes < 0 ? "\\uf165" : "\\uf164";
entryLikesTexture.color = likes < 0 ? new Color(1f, 0f, 0.5f) : new Color(1f, 1f, 0f);
var likedPosts = BazookaManager.Instance.GetLikedPosts();
likedPosts.Add(postId.ToString());
BazookaManager.Instance.SetLikedPosts(likedPosts);
}
}
void UploadPostPopup() {
var popup = Instantiate(postOverlay, postOverlay.transform.parent);
popupObject = popup;
popup.SetActive(true);
var inputBox = popup.transform.GetChild(0).GetChild(1).GetComponent<TMP_InputField>();
inputBox.onSelect.AddListener((_) => inputBox.caretPosition = inputBox.text.Length);
var cancelButton = popup.transform.GetChild(0).GetChild(2).GetComponent<Button>();
var submitButton = popup.transform.GetChild(0).GetChild(3).GetComponent<Button>();
cancelButton.onClick.AddListener(() => {
Destroy(popup);
popupObject = null;
});
submitButton.onClick.AddListener(async () => {
if (inputBox.text.Trim().Length == 0) return;
popupObject = null;
Destroy(popup);
await UploadPost(inputBox.text);
});
}
void UploadPostPopup() {
var popup = Instantiate(postOverlay, postOverlay.transform.parent);
popupObject = popup;
popup.SetActive(true);
var inputBox = popup.transform.GetChild(0).GetChild(1).GetComponent<TMP_InputField>();
inputBox.onSelect.AddListener((_) => inputBox.caretPosition = inputBox.text.Length);
var cancelButton = popup.transform.GetChild(0).GetChild(2).GetComponent<Button>();
var submitButton = popup.transform.GetChild(0).GetChild(3).GetComponent<Button>();
cancelButton.onClick.AddListener(() => {
Destroy(popup);
popupObject = null;
});
submitButton.onClick.AddListener(async () => {
if (inputBox.text.Trim().Length == 0) return;
popupObject = null;
Destroy(popup);
await UploadPost(inputBox.text);
});
}
async Task UploadPost(string message) {
WWWForm dataForm = new();
dataForm.AddField("content", message);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.PROFILE_POSTS_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.result == UnityWebRequest.Result.Success && request.responseCode == 200) {
await RefreshPosts(BazookaManager.Instance.GetAccountID() ?? 0, BazookaManager.Instance.GetAccountName());
}
async Task UploadPost(string message) {
WWWForm dataForm = new();
dataForm.AddField("content", message);
using UnityWebRequest request = UnityWebRequest.Post(Endpoints.PROFILE_POSTS_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.result == UnityWebRequest.Result.Success && request.responseCode == 200) {
await RefreshPosts(BazookaManager.Instance.GetAccountID() ?? 0, BazookaManager.Instance.GetAccountName());
}
}
async Task DeletePost(GameObject entryObject, BigInteger targetId) {
using UnityWebRequest request = UnityWebRequest.Delete(Endpoints.PROFILE_POSTS_ENDPOINT + "?id=" + targetId.ToString());
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.result == UnityWebRequest.Result.Success && request.responseCode == 200) {
Destroy(entryObject);
}
async Task DeletePost(GameObject entryObject, BigInteger targetId) {
using UnityWebRequest request = UnityWebRequest.Delete(Endpoints.PROFILE_POSTS_ENDPOINT + "?id=" + targetId.ToString());
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.result == UnityWebRequest.Result.Success && request.responseCode == 200) {
Destroy(entryObject);
}
}
void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
if (popupObject != null) {
if (!canVote) canVote = true;
Destroy(popupObject);
} else Destroy(gameObject);
}
void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
if (popupObject != null) {
if (!canVote) canVote = true;
Destroy(popupObject);
} else Destroy(gameObject);
}
}
}
+113 -113
View File
@@ -6,128 +6,128 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class SettingsMenu : MonoBehaviour {
[SerializeField] private GameObject settingsMenu;
[SerializeField] private ColorPanel colorMenu;
[SerializeField] private Button toggleButton;
[SerializeField] private GameObject settingsMenu;
[SerializeField] private ColorPanel colorMenu;
[SerializeField] private Button toggleButton;
[SerializeField] private Toggle setting1toggle;
[SerializeField] private Toggle setting2toggle;
[SerializeField] private Toggle setting3toggle;
[SerializeField] private Toggle setting4toggle;
[SerializeField] private Toggle setting5toggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private GameObject settingsUI;
[SerializeField] private Toggle setting1toggle;
[SerializeField] private Toggle setting2toggle;
[SerializeField] private Toggle setting3toggle;
[SerializeField] private Toggle setting4toggle;
[SerializeField] private Toggle setting5toggle;
[SerializeField] private Slider musicSlider;
[SerializeField] private Slider sfxSlider;
[SerializeField] private GameObject settingsUI;
[SerializeField] private Button switchColorTypeButton;
[SerializeField] private int colorType = 0;
[SerializeField] private bool colorCanSave = true;
[SerializeField] private Button switchColorTypeButton;
[SerializeField] private int colorType = 0;
[SerializeField] private bool colorCanSave = true;
private void Start() {
colorMenu.Init(Color.white, Color.white);
colorMenu.OnColorChanged += color => {
if (!colorCanSave) return;
private void Start() {
colorMenu.Init(Color.white, Color.white);
colorMenu.OnColorChanged += color => {
if (!colorCanSave) return;
if (colorType == 0) BazookaManager.Instance.SetColorSettingBackground(color);
else if (colorType == 1) BazookaManager.Instance.SetColorSettingMenuBackground(color);
else if (colorType == 2) BazookaManager.Instance.SetColorSettingButton(color);
else if (colorType == 3) BazookaManager.Instance.SetColorSettingButtonContent(color);
else if (colorType == 4) BazookaManager.Instance.SetColorSettingText(color);
if (colorType == 0) BazookaManager.Instance.SetColorSettingBackground(color);
else if (colorType == 1) BazookaManager.Instance.SetColorSettingMenuBackground(color);
else if (colorType == 2) BazookaManager.Instance.SetColorSettingButton(color);
else if (colorType == 3) BazookaManager.Instance.SetColorSettingButtonContent(color);
else if (colorType == 4) BazookaManager.Instance.SetColorSettingText(color);
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
};
toggleButton.onClick.AddListener(() => {
settingsMenu.SetActive(!settingsMenu.activeSelf);
colorMenu.gameObject.SetActive(!colorMenu.gameObject.activeSelf);
toggleButton.transform.GetChild(0).GetComponent<TMP_Text>().text = settingsMenu.activeSelf ? "Colors" : "Settings";
SwitchColorType(4);
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
});
switchColorTypeButton.onClick.AddListener(() => SwitchColorType());
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
};
toggleButton.onClick.AddListener(() => {
settingsMenu.SetActive(!settingsMenu.activeSelf);
colorMenu.gameObject.SetActive(!colorMenu.gameObject.activeSelf);
toggleButton.transform.GetChild(0).GetComponent<TMP_Text>().text = settingsMenu.activeSelf ? "Colors" : "Settings";
SwitchColorType(4);
foreach (CustomColorObject customColorObject in FindObjectsByType<CustomColorObject>(FindObjectsSortMode.None)) customColorObject.SetColor();
});
switchColorTypeButton.onClick.AddListener(() => SwitchColorType());
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
setting1toggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
setting3toggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == true;
setting5toggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
setting1toggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
setting3toggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
setting1toggle.gameObject.SetActive(false);
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
setting3toggle.gameObject.SetActive(false);
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == 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);
musicSlider.value = BazookaManager.Instance.GetSettingMusicVolume();
sfxSlider.value = BazookaManager.Instance.GetSettingSFXVolume();
if (!Application.isMobilePlatform) {
setting1toggle.isOn = BazookaManager.Instance.GetSettingFullScreen() == true;
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
setting3toggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == true;
setting5toggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
setting1toggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingFullScreen(value);
var width = Display.main.systemWidth;
var height = Display.main.systemHeight;
Screen.SetResolution(width, height, value);
});
setting3toggle.onValueChanged.AddListener(value => {
BazookaManager.Instance.SetSettingVsync(value);
QualitySettings.vSyncCount = value ? 1 : -1;
});
} else {
setting1toggle.gameObject.SetActive(false);
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
setting3toggle.gameObject.SetActive(false);
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == 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);
}
void SwitchColorType(int color = -1) {
var type = color == -1 ? colorType : color;
var text = colorMenu.transform.GetChild(0).GetComponent<TMP_Text>();
var colorToSet = new JArray(255, 255, 255);
switch (type) {
case 0: //IGBGColor
text.text = "Menu background color";
colorType = 1;
colorToSet = BazookaManager.Instance.GetColorSettingMenuBackground();
colorMenu.defaultColor = new(24f / 255f, 24f / 255f, 24f / 255f);
break;
case 1: //MBGColor
text.text = "Button color";
colorType = 2;
colorToSet = BazookaManager.Instance.GetColorSettingButton();
colorMenu.defaultColor = new(1f, 1f, 1f);
break;
case 2: //BCColor
text.text = "Button content color";
colorType = 3;
colorToSet = BazookaManager.Instance.GetColorSettingButtonContent();
colorMenu.defaultColor = new(0f, 0f, 0f);
break;
case 3: //TColor
text.text = "Text color";
colorType = 4;
colorToSet = BazookaManager.Instance.GetColorSettingText();
colorMenu.defaultColor = new(1f, 1f, 1f);
break;
case 4: //IGColor
text.text = "In game background color";
colorType = 0;
colorToSet = BazookaManager.Instance.GetColorSettingBackground();
colorMenu.defaultColor = new(58f / 255f, 58f / 255f, 58f / 255f);
break;
}
colorCanSave = false;
colorMenu.SetColor(new Color((int)colorToSet[0] / 255f, (int)colorToSet[1] / 255f, (int)colorToSet[2] / 255f));
colorCanSave = true;
void SwitchColorType(int color = -1) {
var type = color == -1 ? colorType : color;
var text = colorMenu.transform.GetChild(0).GetComponent<TMP_Text>();
var colorToSet = new JArray(255, 255, 255);
switch (type) {
case 0: //IGBGColor
text.text = "Menu background color";
colorType = 1;
colorToSet = BazookaManager.Instance.GetColorSettingMenuBackground();
colorMenu.defaultColor = new(24f / 255f, 24f / 255f, 24f / 255f);
break;
case 1: //MBGColor
text.text = "Button color";
colorType = 2;
colorToSet = BazookaManager.Instance.GetColorSettingButton();
colorMenu.defaultColor = new(1f, 1f, 1f);
break;
case 2: //BCColor
text.text = "Button content color";
colorType = 3;
colorToSet = BazookaManager.Instance.GetColorSettingButtonContent();
colorMenu.defaultColor = new(0f, 0f, 0f);
break;
case 3: //TColor
text.text = "Text color";
colorType = 4;
colorToSet = BazookaManager.Instance.GetColorSettingText();
colorMenu.defaultColor = new(1f, 1f, 1f);
break;
case 4: //IGColor
text.text = "In game background color";
colorType = 0;
colorToSet = BazookaManager.Instance.GetColorSettingBackground();
colorMenu.defaultColor = new(58f / 255f, 58f / 255f, 58f / 255f);
break;
}
colorCanSave = false;
colorMenu.SetColor(new Color((int)colorToSet[0] / 255f, (int)colorToSet[1] / 255f, (int)colorToSet[2] / 255f));
colorCanSave = true;
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
if (colorMenu.gameObject.activeSelf) toggleButton.onClick.Invoke();
else await SceneManager.LoadSceneAsync("MainMenu");
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) {
if (colorMenu.gameObject.activeSelf) toggleButton.onClick.Invoke();
else await SceneManager.LoadSceneAsync("MainMenu");
}
}
}
+78 -78
View File
@@ -6,91 +6,91 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class StatsMenu : MonoBehaviour {
[SerializeField] private GameObject panel;
[SerializeField] private GameObject panel;
[SerializeField] private TMP_Text normalBerryStat;
[SerializeField] private TMP_Text poisonBerryStat;
[SerializeField] private TMP_Text slowBerryStat;
[SerializeField] private TMP_Text ultraBerryStat;
[SerializeField] private TMP_Text speedyBerryStat;
[SerializeField] private TMP_Text coinBerryStat;
[SerializeField] private TMP_Text randomBerryStat;
[SerializeField] private TMP_Text antiBerryStat;
[SerializeField] private TMP_Text goldenBerryStat;
[SerializeField] private TMP_Text coinStat;
[SerializeField] private TMP_Text normalBerryStat;
[SerializeField] private TMP_Text poisonBerryStat;
[SerializeField] private TMP_Text slowBerryStat;
[SerializeField] private TMP_Text ultraBerryStat;
[SerializeField] private TMP_Text speedyBerryStat;
[SerializeField] private TMP_Text coinBerryStat;
[SerializeField] private TMP_Text randomBerryStat;
[SerializeField] private TMP_Text antiBerryStat;
[SerializeField] private TMP_Text goldenBerryStat;
[SerializeField] private TMP_Text coinStat;
[SerializeField] private Image playerIcon;
[SerializeField] private Image playerOverlay;
[SerializeField] private Image playerIcon;
[SerializeField] private Image playerOverlay;
[SerializeField] private TMP_Text xpUsernameText;
[SerializeField] private TMP_Text xpText;
[SerializeField] private TMP_Text xpLevelText;
[SerializeField] private TMP_Text xpUsernameText;
[SerializeField] private TMP_Text xpText;
[SerializeField] private TMP_Text xpLevelText;
[SerializeField] private RectTransform progressFilledRect;
[SerializeField] private RectTransform progressFilledRect;
void Start() {
normalBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalNormalBerries());
poisonBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalPoisonBerries());
slowBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalSlowBerries());
ultraBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalUltraBerries());
speedyBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalSpeedyBerries());
coinBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalCoinBerries());
randomBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalRandomBerries());
antiBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalAntiBerries());
goldenBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalGoldenBerries());
coinStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance);
void Start() {
normalBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalNormalBerries());
poisonBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalPoisonBerries());
slowBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalSlowBerries());
ultraBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalUltraBerries());
speedyBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalSpeedyBerries());
coinBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalCoinBerries());
randomBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalRandomBerries());
antiBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalAntiBerries());
goldenBerryStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetGameStoreTotalGoldenBerries());
coinStat.text = Tools.FormatWithCommas(BazookaManager.Instance.GetCustomBirdIconData().Balance);
var customIcon = BazookaManager.Instance.GetCustomBirdIconData().Selected;
if (customIcon == null) {
int icon = BazookaManager.Instance.GetBirdIcon();
int overlay = BazookaManager.Instance.GetBirdOverlay();
var iconColor = BazookaManager.Instance.GetColorSettingIcon();
var overlayColor = BazookaManager.Instance.GetColorSettingOverlay();
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + icon);
if (icon == 1) playerIcon.sprite = Tools.GetIconForUser(BazookaManager.Instance.GetAccountID() ?? 0);
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + overlay);
if (overlay != 0) playerOverlay.gameObject.SetActive(true);
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 == 13) playerOverlay.rectTransform.localPosition = new Vector3(-27.56624f, 23.25544f, 0f);
try {
playerIcon.color = new Color(
int.Parse(iconColor[0].ToString()) / 255f,
int.Parse(iconColor[1].ToString()) / 255f,
int.Parse(iconColor[2].ToString()) / 255f
);
playerOverlay.color = new Color(
int.Parse(overlayColor[0].ToString()) / 255f,
int.Parse(overlayColor[1].ToString()) / 255f,
int.Parse(overlayColor[2].ToString()) / 255f
);
}
catch {
playerIcon.color = Color.white;
playerOverlay.color = Color.white;
}
} else {
var waitingForCustomIcon = playerIcon.gameObject.AddComponent<WaitingForCustomIcon>();
waitingForCustomIcon.ID = customIcon;
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);
var customIcon = BazookaManager.Instance.GetCustomBirdIconData().Selected;
if (customIcon == null) {
int icon = BazookaManager.Instance.GetBirdIcon();
int overlay = BazookaManager.Instance.GetBirdOverlay();
var iconColor = BazookaManager.Instance.GetColorSettingIcon();
var overlayColor = BazookaManager.Instance.GetColorSettingOverlay();
playerIcon.sprite = Resources.Load<Sprite>("Icons/Icons/bird_" + icon);
if (icon == 1) playerIcon.sprite = Tools.GetIconForUser(BazookaManager.Instance.GetAccountID() ?? 0);
playerOverlay.sprite = Resources.Load<Sprite>("Icons/Overlays/overlay_" + overlay);
if (overlay != 0) playerOverlay.gameObject.SetActive(true);
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 == 13) playerOverlay.rectTransform.localPosition = new Vector3(-27.56624f, 23.25544f, 0f);
try {
playerIcon.color = new Color(
int.Parse(iconColor[0].ToString()) / 255f,
int.Parse(iconColor[1].ToString()) / 255f,
int.Parse(iconColor[2].ToString()) / 255f
);
playerOverlay.color = new Color(
int.Parse(overlayColor[0].ToString()) / 255f,
int.Parse(overlayColor[1].ToString()) / 255f,
int.Parse(overlayColor[2].ToString()) / 255f
);
}
catch {
playerIcon.color = Color.white;
playerOverlay.color = Color.white;
}
} else {
var waitingForCustomIcon = playerIcon.gameObject.AddComponent<WaitingForCustomIcon>();
waitingForCustomIcon.ID = customIcon;
CustomIconLoader.Init(new[] { waitingForCustomIcon });
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame) await SceneManager.LoadSceneAsync("MainMenu");
}
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);
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);
}
Tools.RefreshHierarchy(panel);
}
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);
}
}
+24 -24
View File
@@ -4,35 +4,35 @@ using UnityEngine.Scripting;
[Preserve]
public class Account {
[Preserve]
[JsonProperty("id")]
public BigInteger UserID { get; set; }
[Preserve]
[JsonProperty("id")]
public BigInteger UserID { get; set; }
[Preserve]
[JsonProperty("username")]
public string Username { get; set; }
[Preserve]
[JsonProperty("username")]
public string Username { get; set; }
[Preserve]
[JsonProperty("icon")]
public int Icon { get; set; }
[Preserve]
[JsonProperty("icon")]
public int Icon { get; set; }
[Preserve]
[JsonProperty("overlay")]
public int Overlay { get; set; }
[Preserve]
[JsonProperty("overlay")]
public int Overlay { get; set; }
[Preserve]
[JsonProperty("birdColor")]
public int[] BirdColor { get; set; }
[Preserve]
[JsonProperty("birdColor")]
public int[] BirdColor { get; set; }
[Preserve]
[JsonProperty("overlayColor")]
public int[] OverlayColor { get; set; }
[Preserve]
[JsonProperty("overlayColor")]
public int[] OverlayColor { get; set; }
[Preserve]
[JsonProperty("customIcon")]
public string CustomIcon { get; set; }
[Preserve]
[JsonProperty("customIcon")]
public string CustomIcon { get; set; }
[Preserve]
[JsonProperty("stats")]
public Stats Stats { get; set; }
[Preserve]
[JsonProperty("stats")]
public Stats Stats { get; set; }
}
+33 -33
View File
@@ -4,47 +4,47 @@ using UnityEngine.Scripting;
[Preserve]
public class ChatroomMessage {
[Preserve]
[JsonProperty("username")]
public string Username { get; set; }
[Preserve]
[JsonProperty("username")]
public string Username { get; set; }
[Preserve]
[JsonProperty("userId")]
public BigInteger UserID { get; set; }
[Preserve]
[JsonProperty("userId")]
public BigInteger UserID { get; set; }
[Preserve]
[JsonProperty("content")]
public string Content { get; set; }
[Preserve]
[JsonProperty("content")]
public string Content { get; set; }
[Preserve]
[JsonProperty("id")]
public BigInteger ID { get; set; }
[Preserve]
[JsonProperty("id")]
public BigInteger ID { get; set; }
[Preserve]
[JsonProperty("icon")]
public int Icon { get; set; }
[Preserve]
[JsonProperty("icon")]
public int Icon { get; set; }
[Preserve]
[JsonProperty("overlay")]
public int Overlay { get; set; }
[Preserve]
[JsonProperty("overlay")]
public int Overlay { get; set; }
[Preserve]
[JsonProperty("birdColor")]
public int[] BirdColor { get; set; }
[Preserve]
[JsonProperty("birdColor")]
public int[] BirdColor { get; set; }
[Preserve]
[JsonProperty("overlayColor")]
public int[] OverlayColor { get; set; }
[Preserve]
[JsonProperty("overlayColor")]
public int[] OverlayColor { get; set; }
[Preserve]
[JsonProperty("customIcon")]
public string CustomIcon { get; set; }
[Preserve]
[JsonProperty("customIcon")]
public string CustomIcon { get; set; }
[Preserve]
[JsonProperty("timestamp")]
public long Timestamp { get; set; }
[Preserve]
[JsonProperty("timestamp")]
public long Timestamp { get; set; }
[Preserve]
[JsonProperty("editedAt")]
public long EditedAt { get; set; }
[Preserve]
[JsonProperty("editedAt")]
public long EditedAt { get; set; }
}
+10 -10
View File
@@ -1,12 +1,12 @@
public enum ColorObjectType {
InGameBackgroundColor,
MenuBackgroundColor,
ButtonColor,
ButtonColorText,
TextColor,
TextColorImage,
MenuBackgroundColorImage,
MenuBackgroundColorText,
ButtonContentColorImage,
ButtonContentColorText
InGameBackgroundColor,
MenuBackgroundColor,
ButtonColor,
ButtonColorText,
TextColor,
TextColorImage,
MenuBackgroundColorImage,
MenuBackgroundColorText,
ButtonContentColorImage,
ButtonContentColorText
}
+24 -24
View File
@@ -4,35 +4,35 @@ using UnityEngine.Scripting;
[Preserve]
public class LeaderboardEntry {
[Preserve]
[JsonProperty("id")]
public BigInteger UserID { get; set; }
[Preserve]
[JsonProperty("id")]
public BigInteger UserID { get; set; }
[Preserve]
[JsonProperty("username")]
public string Username { get; set; }
[Preserve]
[JsonProperty("username")]
public string Username { get; set; }
[Preserve]
[JsonProperty("value")]
public BigInteger Value { get; set; }
[Preserve]
[JsonProperty("value")]
public BigInteger Value { get; set; }
[Preserve]
[JsonProperty("icon")]
public int Icon { get; set; }
[Preserve]
[JsonProperty("icon")]
public int Icon { get; set; }
[Preserve]
[JsonProperty("overlay")]
public int Overlay { get; set; }
[Preserve]
[JsonProperty("overlay")]
public int Overlay { get; set; }
[Preserve]
[JsonProperty("birdColor")]
public int[] BirdColor { get; set; }
[Preserve]
[JsonProperty("birdColor")]
public int[] BirdColor { get; set; }
[Preserve]
[JsonProperty("overlayColor")]
public int[] OverlayColor { get; set; }
[Preserve]
[JsonProperty("overlayColor")]
public int[] OverlayColor { get; set; }
[Preserve]
[JsonProperty("customIcon")]
public string CustomIcon { get; set; }
[Preserve]
[JsonProperty("customIcon")]
public string CustomIcon { get; set; }
}
+8 -8
View File
@@ -1,10 +1,10 @@
public enum LeaderboardMode {
None,
Score,
Berry,
Coin,
Legacy,
Level,
TotalXP,
TotalBerries
None,
Score,
Berry,
Coin,
Legacy,
Level,
TotalXP,
TotalBerries
}
+6 -6
View File
@@ -3,11 +3,11 @@ using UnityEngine.Scripting;
[Preserve]
public class MarketplaceIcon {
[Preserve]
[JsonProperty("data")]
public string Data { get; set; }
[Preserve]
[JsonProperty("data")]
public string Data { get; set; }
[Preserve]
[JsonProperty("id")]
public string ID { get; set; }
[Preserve]
[JsonProperty("id")]
public string ID { get; set; }
}
@@ -3,10 +3,10 @@ using System.Numerics;
using Newtonsoft.Json;
public class MarketplaceIconStorageType {
[JsonProperty("selected")]
public string Selected { get; set; } = null;
[JsonProperty("balance")]
public BigInteger Balance { get; set; } = 0;
[JsonProperty("purchased")]
public List<string> Purchased { get; set; } = new();
[JsonProperty("selected")]
public string Selected { get; set; } = null;
[JsonProperty("balance")]
public BigInteger Balance { get; set; } = 0;
[JsonProperty("purchased")]
public List<string> Purchased { get; set; } = new();
}
+21 -21
View File
@@ -4,31 +4,31 @@ using UnityEngine.Scripting;
[Preserve]
public class MarketplaceIconWithData {
[Preserve]
[JsonProperty("username")]
public string CreatorUsername { get; set; }
[Preserve]
[JsonProperty("username")]
public string CreatorUsername { get; set; }
[Preserve]
[JsonProperty("userid")]
public BigInteger CreatorUserID { get; set; }
[Preserve]
[JsonProperty("userid")]
public BigInteger CreatorUserID { get; set; }
[Preserve]
[JsonProperty("data")]
public string Data { get; set; }
[Preserve]
[JsonProperty("data")]
public string Data { get; set; }
[Preserve]
[JsonProperty("hash")]
public string Hash { get; set; }
[Preserve]
[JsonProperty("hash")]
public string Hash { get; set; }
[Preserve]
[JsonProperty("id")]
public string ID { get; set; }
[Preserve]
[JsonProperty("id")]
public string ID { get; set; }
[Preserve]
[JsonProperty("price")]
public BigInteger Price { get; set; }
[Preserve]
[JsonProperty("price")]
public BigInteger Price { get; set; }
[Preserve]
[JsonProperty("name")]
public string Name { get; set; }
[Preserve]
[JsonProperty("name")]
public string Name { get; set; }
}
+15 -15
View File
@@ -4,23 +4,23 @@ using UnityEngine.Scripting;
[Preserve]
public class MarketplaceTempIcon {
[Preserve]
[JsonProperty("username")]
public string CreatorUsername { get; set; }
[Preserve]
[JsonProperty("username")]
public string CreatorUsername { get; set; }
[Preserve]
[JsonProperty("userid")]
public BigInteger CreatorUserID { get; set; }
[Preserve]
[JsonProperty("userid")]
public BigInteger CreatorUserID { get; set; }
[Preserve]
[JsonProperty("id")]
public string ID { get; set; }
[Preserve]
[JsonProperty("id")]
public string ID { get; set; }
[Preserve]
[JsonProperty("price")]
public BigInteger Price { get; set; }
[Preserve]
[JsonProperty("price")]
public BigInteger Price { get; set; }
[Preserve]
[JsonProperty("name")]
public string Name { get; set; }
[Preserve]
[JsonProperty("name")]
public string Name { get; set; }
}
+5 -5
View File
@@ -1,7 +1,7 @@
public class MultiplayerBerry {
public string ID { get; set; }
public string Type { get; set; }
public float PosX { get; set; }
public long Timestamp { get; set; }
public bool Spawned { get; set; }
public string ID { get; set; }
public string Type { get; set; }
public float PosX { get; set; }
public long Timestamp { get; set; }
public bool Spawned { get; set; }
}
@@ -5,48 +5,48 @@ using UnityEngine.Scripting;
[Preserve]
public class MultiplayerPlayerIconData {
[Preserve]
[JsonProperty("icon")]
public int Icon { get; set; }
[Preserve]
[JsonProperty("icon")]
public int Icon { get; set; }
[Preserve]
[JsonProperty("overlay")]
public int Overlay { get; set; }
[Preserve]
[JsonProperty("overlay")]
public int Overlay { get; set; }
[Preserve]
[JsonProperty("iconColor")]
public JArray IconColor { get; set; }
[Preserve]
[JsonProperty("iconColor")]
public JArray IconColor { get; set; }
[Preserve]
[JsonProperty("overlayColor")]
public JArray OverlayColor { get; set; }
[Preserve]
[JsonProperty("overlayColor")]
public JArray OverlayColor { get; set; }
[Preserve]
[JsonProperty("customIcon")]
public string CustomIcon { get; set; }
[Preserve]
[JsonProperty("customIcon")]
public string CustomIcon { get; set; }
}
public class MultiplayerPlayerFromResponse {
[Preserve]
[JsonProperty("id")]
public string ID { get; set; }
[Preserve]
[JsonProperty("id")]
public string ID { get; set; }
[Preserve]
[JsonProperty("userId")]
public BigInteger UserID { get; set; }
[Preserve]
[JsonProperty("username")]
public string Username { get; set; }
[Preserve]
[JsonProperty("userId")]
public BigInteger UserID { get; set; }
[Preserve]
[JsonProperty("username")]
public string Username { get; set; }
[Preserve]
[JsonProperty("admin")]
public bool Admin { get; set; }
[Preserve]
[JsonProperty("admin")]
public bool Admin { get; set; }
[Preserve]
[JsonProperty("timestamp")]
public long JoinedAt { get; set; }
[Preserve]
[JsonProperty("timestamp")]
public long JoinedAt { get; set; }
[Preserve]
[JsonProperty("iconData")]
public MultiplayerPlayerIconData IconData { get; set; }
[Preserve]
[JsonProperty("iconData")]
public MultiplayerPlayerIconData IconData { get; set; }
}
+4 -4
View File
@@ -1,6 +1,6 @@
public class MultiplayerUser {
public string ID { get; set; }
public string Username { get; set; }
public bool Admin { get; set; }
public long JoinedAt { get; set; }
public string ID { get; set; }
public string Username { get; set; }
public bool Admin { get; set; }
public long JoinedAt { get; set; }
}
+12 -12
View File
@@ -4,19 +4,19 @@ using UnityEngine.Scripting;
[Preserve]
public class ProfileMessageResponse {
[Preserve]
[JsonProperty("id")]
public BigInteger ID { get; set; }
[Preserve]
[JsonProperty("id")]
public BigInteger ID { get; set; }
[Preserve]
[JsonProperty("content")]
public string Content { get; set; }
[Preserve]
[JsonProperty("content")]
public string Content { get; set; }
[Preserve]
[JsonProperty("timestamp")]
public string Timestamp { get; set; }
[Preserve]
[JsonProperty("timestamp")]
public string Timestamp { get; set; }
[Preserve]
[JsonProperty("likes")]
public BigInteger Likes { get; set; }
[Preserve]
[JsonProperty("likes")]
public BigInteger Likes { get; set; }
}
+4 -4
View File
@@ -1,6 +1,6 @@
public enum SettingTypes {
FullScreen,
ShowFPS,
Vsync,
HideSocials
FullScreen,
ShowFPS,
Vsync,
HideSocials
}
+21 -21
View File
@@ -3,34 +3,34 @@ using UnityEngine.Scripting;
[Preserve]
public class SplashEntry {
[Preserve]
[JsonProperty("content")]
public string Content { get; set; }
[Preserve]
[JsonProperty("content")]
public string Content { get; set; }
[Preserve]
[JsonProperty("attributes")]
public SplashAttributes Attributes { get; set; } = new SplashAttributes();
[Preserve]
[JsonProperty("attributes")]
public SplashAttributes Attributes { get; set; } = new SplashAttributes();
}
[Preserve]
public class SplashAttributes {
[Preserve]
[JsonProperty("flip")]
public bool Flip { get; set; } = false;
[Preserve]
[JsonProperty("flip")]
public bool Flip { get; set; } = false;
[Preserve]
[JsonProperty("reverse")]
public bool Reverse { get; set; } = false;
[Preserve]
[JsonProperty("reverse")]
public bool Reverse { get; set; } = false;
[Preserve]
[JsonProperty("bounceSpeed")]
public int BounceSpeed { get; set; } = -1;
[Preserve]
[JsonProperty("bounceSpeed")]
public int BounceSpeed { get; set; } = -1;
[Preserve]
[JsonProperty("color")]
public string Color { get; set; } = null;
[Preserve]
[JsonProperty("color")]
public string Color { get; set; } = null;
[Preserve]
[JsonProperty("rainbowSpeed")]
public int RainbowSpeed { get; set; } = -1;
[Preserve]
[JsonProperty("rainbowSpeed")]
public int RainbowSpeed { get; set; } = -1;
}
+33 -33
View File
@@ -4,47 +4,47 @@ using UnityEngine.Scripting;
[Preserve]
public class Stats {
[Preserve]
[JsonProperty("highScore")]
public BigInteger HighScore { get; set; }
[Preserve]
[JsonProperty("highScore")]
public BigInteger HighScore { get; set; }
[Preserve]
[JsonProperty("totalNormalBerries")]
public BigInteger TotalNormalBerries { get; set; }
[Preserve]
[JsonProperty("totalNormalBerries")]
public BigInteger TotalNormalBerries { get; set; }
[Preserve]
[JsonProperty("totalPoisonBerries")]
public BigInteger TotalPoisonBerries { get; set; }
[Preserve]
[JsonProperty("totalPoisonBerries")]
public BigInteger TotalPoisonBerries { get; set; }
[Preserve]
[JsonProperty("totalSlowBerries")]
public BigInteger TotalSlowBerries { get; set; }
[Preserve]
[JsonProperty("totalSlowBerries")]
public BigInteger TotalSlowBerries { get; set; }
[Preserve]
[JsonProperty("totalUltraBerries")]
public BigInteger TotalUltraBerries { get; set; }
[Preserve]
[JsonProperty("totalUltraBerries")]
public BigInteger TotalUltraBerries { get; set; }
[Preserve]
[JsonProperty("totalSpeedyBerries")]
public BigInteger TotalSpeedyBerries { get; set; }
[Preserve]
[JsonProperty("totalSpeedyBerries")]
public BigInteger TotalSpeedyBerries { get; set; }
[Preserve]
[JsonProperty("totalCoinBerries")]
public BigInteger TotalCoinBerries { get; set; }
[Preserve]
[JsonProperty("totalCoinBerries")]
public BigInteger TotalCoinBerries { get; set; }
[Preserve]
[JsonProperty("totalRandomBerries")]
public BigInteger TotalRandomBerries { get; set; }
[Preserve]
[JsonProperty("totalRandomBerries")]
public BigInteger TotalRandomBerries { get; set; }
[Preserve]
[JsonProperty("totalAntiBerries")]
public BigInteger TotalAntiBerries { get; set; }
[Preserve]
[JsonProperty("totalAntiBerries")]
public BigInteger TotalAntiBerries { get; set; }
[Preserve]
[JsonProperty("totalGoldenBerries")]
public BigInteger TotalGoldenBerries { get; set; }
[Preserve]
[JsonProperty("totalGoldenBerries")]
public BigInteger TotalGoldenBerries { get; set; }
[Preserve]
[JsonProperty("coins")]
public BigInteger Coins { get; set; }
[Preserve]
[JsonProperty("coins")]
public BigInteger Coins { get; set; }
}
+75 -75
View File
@@ -7,86 +7,86 @@ using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class UserSearchMenu : MonoBehaviour {
[SerializeField] private GameObject content;
[SerializeField] private GameObject sampleObject;
[SerializeField] private Button searchButton;
[SerializeField] private TMP_InputField usernameInput;
[SerializeField] private TMP_Text statusText;
[SerializeField] private ProfileMenu profilePrefab;
[SerializeField] private GameObject content;
[SerializeField] private GameObject sampleObject;
[SerializeField] private Button searchButton;
[SerializeField] private TMP_InputField usernameInput;
[SerializeField] private TMP_Text statusText;
[SerializeField] private ProfileMenu profilePrefab;
void Awake() {
usernameInput.onSelect.AddListener((_) => usernameInput.caretPosition = usernameInput.text.Length);
searchButton.onClick.AddListener(Search);
Search();
void Awake() {
usernameInput.onSelect.AddListener((_) => usernameInput.caretPosition = usernameInput.text.Length);
searchButton.onClick.AddListener(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() {
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>();
usernameText.text = entry.Username;
highScoreText.text += Tools.FormatWithCommas(entry.Stats.HighScore);
usernameText.text = entry.Username;
highScoreText.text += Tools.FormatWithCommas(entry.Stats.HighScore);
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));
} else {
UpdateStatus(true, (string)jsonResponse["message"]);
}
searchButton.interactable = true;
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));
} else {
UpdateStatus(true, (string)jsonResponse["message"]);
}
searchButton.interactable = true;
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame && !GameObject.Find("ProfilePrefab(Clone)")) await SceneManager.LoadSceneAsync("MainMenu");
}
async void Update() {
if (Keyboard.current.escapeKey.wasPressedThisFrame && !GameObject.Find("ProfilePrefab(Clone)")) await SceneManager.LoadSceneAsync("MainMenu");
}
private void UpdateStatus(bool enabled, string message = "") {
statusText.gameObject.SetActive(enabled);
statusText.text = message;
}
private void UpdateStatus(bool enabled, string message = "") {
statusText.gameObject.SetActive(enabled);
statusText.text = message;
}
}
+5 -5
View File
@@ -2,9 +2,9 @@ using TMPro;
using UnityEngine;
public class VersionText : MonoBehaviour {
private TMP_Text text;
void Awake() {
text = gameObject.GetComponent<TMP_Text>();
text.text = "Current: v" + Application.version;
}
private TMP_Text text;
void Awake() {
text = gameObject.GetComponent<TMP_Text>();
text.text = "Current: v" + Application.version;
}
}
@@ -3,10 +3,10 @@ using UnityEngine;
[Serializable]
public class ConnectedWithCurrentSceneMessage {
public string type = "connected_with_current_scene";
public string sceneName;
public string Requester = "BerryDashClient";
public string ClientVersion = Application.version;
public string ClientPlatform = Application.platform.ToString();
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "connected_with_current_scene";
public string sceneName;
public string Requester = "BerryDashClient";
public string ClientVersion = Application.version;
public string ClientPlatform = Application.platform.ToString();
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
+4 -4
View File
@@ -3,8 +3,8 @@ using Newtonsoft.Json.Linq;
[Serializable]
public class DeleteMessage {
public string type = "delete";
public string kind;
public JObject data;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "delete";
public string kind;
public JObject data;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
+4 -4
View File
@@ -3,8 +3,8 @@ using Newtonsoft.Json.Linq;
[Serializable]
public class EditMessage {
public string type = "edit";
public string kind;
public JObject data;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "edit";
public string kind;
public JObject data;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
@@ -2,7 +2,7 @@ using System;
[Serializable]
public class MultiplayerJoinRequestMessage {
public string type = "multiplayer_join_request";
public string auth;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "multiplayer_join_request";
public string auth;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
@@ -2,6 +2,6 @@ using System;
[Serializable]
public class MultiplayerLeaveMessage {
public string type = "multiplayer_leave";
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "multiplayer_leave";
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
@@ -2,9 +2,9 @@ using System;
[Serializable]
public class MultiplayerPlayerMove {
public string type = "multiplayer_player_move";
public float x;
public float y;
public bool f;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "multiplayer_player_move";
public float x;
public float y;
public bool f;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
@@ -2,6 +2,6 @@ using System;
[Serializable]
public class MultiplayerPlayerPause {
public string type = "multiplayer_player_pause";
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "multiplayer_player_pause";
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
@@ -2,6 +2,6 @@ using System;
[Serializable]
public class MultiplayerPlayerUnPause {
public string type = "multiplayer_player_unpause";
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "multiplayer_player_unpause";
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
@@ -2,7 +2,7 @@ using System;
[Serializable]
public class RequestInfoMessage {
public string type = "info_request";
public string kind;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "info_request";
public string kind;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
@@ -2,8 +2,8 @@ using System;
[Serializable]
public class SceneChangeMessage {
public string type = "scene_change";
public string to;
public string from;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "scene_change";
public string to;
public string from;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}
+4 -4
View File
@@ -3,8 +3,8 @@ using Newtonsoft.Json.Linq;
[Serializable]
public class UploadMessage {
public string type = "upload";
public string kind;
public JObject data;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
public string type = "upload";
public string kind;
public JObject data;
public long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}