Format again
This commit is contained in:
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;
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -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,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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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,5 +1,5 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class WaitingForCustomIcon : MonoBehaviour {
|
||||
public string ID;
|
||||
public string ID;
|
||||
}
|
||||
@@ -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
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
public enum LeaderboardMode {
|
||||
None,
|
||||
Score,
|
||||
Berry,
|
||||
Coin,
|
||||
Legacy,
|
||||
Level,
|
||||
TotalXP,
|
||||
TotalBerries
|
||||
None,
|
||||
Score,
|
||||
Berry,
|
||||
Coin,
|
||||
Legacy,
|
||||
Level,
|
||||
TotalXP,
|
||||
TotalBerries
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
public enum SettingTypes {
|
||||
FullScreen,
|
||||
ShowFPS,
|
||||
Vsync,
|
||||
HideSocials
|
||||
FullScreen,
|
||||
ShowFPS,
|
||||
Vsync,
|
||||
HideSocials
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
Reference in new issue
Block a user