ClientServer/Client/Assets/Scripts/UI/ActionButton.cs
TG9six 03a642d635 first push
first push
2025-09-06 17:17:39 +04:00

391 lines
15 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class ActionButton
{
public static void ButtonPressed(string buttonName)
{
AudioManager.Instance.playSound("button_press");
if (CharacterPool.ServerToClientIndex.ContainsKey(buttonName))
{
Debug.Log(buttonName); buttonName = $"Character_{CharacterPool.ServerToClientIndex[buttonName]}";
}
PacketManager.sendButtonClick(buttonName);
switch (buttonName)
{
case "flipButton_DiviFlipFountainScreen":
{
//get number from countInputField
int count = int.Parse(GameObject.Find("countInputField").GetComponent<TMP_InputField>().text);
//send command "/fountain"
PacketManager.sendChatMessage($"/fountain {count}");
}
break;
case "joinlobby_exit_button":
{
PacketManager.sendChatMessage("/lobby");
}
break;
case "loginButton_CreateAccount":
Application.OpenURL("http://siegeworlds.com/signup.php");
//UIManager.Instance.showInterface("CreateAccountCanvas");
Debug.Log("Create Account Button Pressed!");
//System.Diagnostics.Process.Start("https://www.siegeworlds.com/register/");
break;
case "LoginScreen_ToggleSound":
if (PlayerPrefs.GetInt("LoginMusic") == 1)
{
GameObject.Find("LoginScreen_ToggleSound").GetComponent<Image>().sprite = OnDemandLoader.Load<Sprite>("Sprites/musicOn");
PlayerPrefs.SetInt("LoginMusic", 0);
AudioManager.Instance.playSong("main_theme", true);
}
else
{
AudioManager.Instance.stopSong();
GameObject.Find("LoginScreen_ToggleSound").GetComponent<Image>().sprite = OnDemandLoader.Load<Sprite>("Sprites/musicOff");
PlayerPrefs.SetInt("LoginMusic", 1);
}
break;
case "loginButton_LoginScreen":
if (Input.GetKey(KeyCode.LeftControl))
{
loginActionButton(Config.LOCAL_HOST);
//TestServerLobbyText.Instance.SetWelcomeText("Welcome To \n Local Server!", false, false, true);
}
else if (Input.GetKey(KeyCode.LeftShift))
{
Debug.Log("Logging into test server.");
loginActionButton(Config.TEST_SERVER);
//TestServerLobbyText.Instance.SetWelcomeText("Welcome To \n Test Server!", false, true, false);
}
else
{
//Debug.Log($"IP is: {UIManager.Instance.ipInputData}");
loginActionButton(UIManager.Instance.ipInputData);
//TestServerLobbyText.Instance.SetWelcomeText("", true, false, false);
}
//if password or username has an "I" in it, it will toggle the chat input field.
//when logging in, set chat input field to false so you can open the inventory normally.
UIManager.Instance.ChatInputField.interactable = false;
break;
case "Set_IP_Button":
UIManager.Instance.SetIPInputData();
break;
case "Reset_IP_Button":
UIManager.Instance.ResetIPToDefault();
break;
case "DiscordButton":
Application.OpenURL("https://discord.gg/invite/siegeworlds");
break;
// ESCAPE MENU
case "ButtonOptions_EscapeMenu":
UIManager.Instance.hideInterface("EscapeMenu");
UIManager.Instance.showInterface("OptionsCanvas");
SettingsMenu.Instance.settingsIsActive = true;
break;
case "ButtonStats_EscapeMenu":
UIManager.Instance.hideInterface("EscapeMenu");
UIManager.Instance.showInterface("StatsCanvas");
break;
case "StatsButton_Return":
UIManager.Instance.hideInterface("StatsCanvas");
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
case "ButtonMyDiviAccount_EscapeMenu":
UIManager.Instance.hideInterface("EscapeMenu");
Application.OpenURL("https://siegeworlds.com/");
break;
case "ButtonLogout_EscapeMenu":
UIManager.Instance.hideInterface("EscapeMenu");
UIManager.Instance.hideInterface("PreGameCanvas");
UIManager.Instance.hideInterface("InstanceFinderCanvas");
UIManager.Instance.LoginMessage.text = "You have logged out.";
Player.Instance.CancelDeathCamera();
PacketManager.sendLogoutPacket();;
Player.Instance.updatePlayer = false;
Client.LocalPlayerLoggedIn = false;
GISocket.Instance.close();
break;
case "ButtonReturn_EscapeMenu":
UIManager.Instance.hideInterface("EscapeMenu");
if (!UIManager.Instance.IsGameLobbyCanvasesActive())
{
Player.Instance.UpdatePlayerOnMenuClose();
}
break;
case "ButtonWallet_EscapeMenu":
UIManager.Instance.hideInterface("EscapeMenu");
UIManager.Instance.showInterface("CryptoWallet");
SettingsMenu.Instance.settingsIsActive = true;
break;
// GRAPHIC SETTINGS
case "Graphics_ButtonCloseSettings":
UIManager.Instance.hideInterface("OptionsCanvas");
Player.Instance.UpdatePlayerOnMenuClose();
break;
case "Graphics_ButtonSaveReturn":
UIManager.Instance.hideInterface("OptionsCanvas");
SettingsMenu.Instance.SaveGraphicSettings();
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
case "Graphics_ButtonResetPrefs":
SettingsMenu.Instance.ResetGraphicSettings();
UIManager.Instance.hideInterface("OptionsCanvas");
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
//AUDIO SETTINGS
case "Audio_ButtonCloseSettings":
UIManager.Instance.hideInterface("OptionsCanvas");
Player.Instance.UpdatePlayerOnMenuClose();
break;
case "Audio_ButtonSaveReturn":
UIManager.Instance.hideInterface("OptionsCanvas");
SettingsMenu.Instance.SaveAudioSettings();
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
case "Audio_ButtonResetPrefs":
SettingsMenu.Instance.ResetAudioSettings();
UIManager.Instance.hideInterface("OptionsCanvas");
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
//GAMEPLAY MENU
case "Gameplay_ButtonSaveReturn":
UIManager.Instance.hideInterface("OptionsCanvas");
SettingsMenu.Instance.SaveGameplaySettings();
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
case "Gameplay_ButtonResetPrefs":
SettingsMenu.Instance.ResetGameplaySettings();
UIManager.Instance.hideInterface("OptionsCanvas");
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
//CONTROLS MENU
case "Controls_Save":
UIManager.Instance.hideInterface("OptionsCanvas");
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
//Crypto Wallet Menu
case "CryptoWallet_Return_Button":
UIManager.Instance.hideInterface("CryptoWallet");
SettingsMenu.Instance.settingsIsActive = false;
Player.Instance.UpdatePlayerOnMenuClose();
break;
//VictoryOrDefeat Canvas
case "Victory_EndInstance":
Player.Instance.UpdatePlayerOnMenuClose();
break;
//Exit Game Canvas
case "ExitGame_No":
UIManager.Instance.hideInterface("ExitGameCanvas");
break;
case "ExitGame_Yes":
Debug.Log("QUITTING APPLICATION!");
Application.Quit();
break;
//Create Account Canvas
case "CA_RegisterButton":
Debug.Log("Register Button pressed!");
break;
case "CA_BackButton":
UIManager.Instance.hideInterface("CreateAccountCanvas");
break;
//Bank Vault Close
case "BankVault_ExitVault_Button":
UIManager.Instance.ResetDefaultCanvasesOnVaultClose();
break;
//instance finder canvas
case "Join_Room_Solo_Button":
UIManager.Instance.GameInstanceType = GameInstanceType.Base;
UIManager.Instance.OnGameInstancePress?.Invoke();
Player.Instance.InSoloInstance = true;
break;
case "Join_Room_Solo_Button_2":
UIManager.Instance.GameInstanceType = GameInstanceType.Zombie;
UIManager.Instance.OnGameInstancePress?.Invoke();
break;
case "Join_Room_Solo_Button_3":
UIManager.Instance.GameInstanceType = GameInstanceType.Waves;
UIManager.Instance.OnGameInstancePress?.Invoke();
break;
case "Join_Room_Solo_Button_Fumarole":
UIManager.Instance.GameInstanceType = GameInstanceType.Fumarole;
UIManager.Instance.OnGameInstancePress?.Invoke();
Player.Instance.InSoloInstance = true;
break;
case "CreateRoom_Duo":
UIManager.Instance.GameInstanceType = GameInstanceType.Duo;
UIManager.Instance.OnGameInstancePress?.Invoke();
break;
case "CreateRoom_Squad":
UIManager.Instance.GameInstanceType = GameInstanceType.Squad;
UIManager.Instance.OnGameInstancePress?.Invoke();
break;
case "Exchange_ExitButton":
break;
case "Game_Store":
{
PacketManager.sendChatMessage("/gamestore");
}
break;
//tutorial
case "Tutorial_StartPlaying":
UIManager.Instance.hideInterface("TutorialCanvas");
Player.Instance.UpdatePlayerOnMenuClose();
break;
}
}
public static void SliderValueChanged(Slider s)
{
switch (s.gameObject.name)
{
case "Sensitivity_Slider":
SettingsMenu.Instance.SetSensitivity(s.value);
break;
case "Music_Slider":
SettingsMenu.Instance.SetMusicVolume(s.value);
break;
case "SFX_Slider":
SettingsMenu.Instance.SetSFXVolume(s.value);
break;
case "VoiceChatVolumeSlider":
SettingsMenu.Instance.SetVoiceVolume(s.value);
break;
}
}
public static void ToggleValueChanged(Toggle t)
{
switch (t.gameObject.name)
{
//aimAssist toggle
case "AimAssistToggle":
SettingsMenu.Instance.ToggleAimAssist = t.isOn;
break;
case "FPSToggle":
SettingsMenu.Instance.ToggleFPSCounter = t.isOn;
break;
case "PostProcessingToggle":
SettingsMenu.Instance.TogglePostProcessing = t.isOn;
break;
case "InvertYToggle":
SettingsMenu.Instance.ToggleInvertY = t.isOn;
break;
case "RawInputToggle":
SettingsMenu.Instance.ToggleRawInput = t.isOn;
break;
case "SprintToggle":
SettingsMenu.Instance.ToggleSprintInput = t.isOn;
break;
case "ADSToggle":
SettingsMenu.Instance.ToggleADS = t.isOn;
break;
}
}
public static void DropdownValueChanged(TMP_Dropdown d)
{
switch (d.gameObject.name)
{
//graphics settings
case "Resolution_Dropdown":
SettingsMenu.Instance.SetResolution(d.value);
break;
case "Quality_Dropdown":
SettingsMenu.Instance.SetQuality(d.value);
break;
case "FPS_Dropdown":
SettingsMenu.Instance.SetFPS(d.value);
break;
}
}
public static void loginActionButton(string serverIP)
{
TextMeshProUGUI loginMessage = GameObject.Find("loginMessage").GetComponent<TextMeshProUGUI>();
//trim the inputs to remove ending whitespaces.
string usernameInput = UIManager.Instance.UserNameInputField.text.Trim();
string passwordInput = UIManager.Instance.PasswordInputField.text.Trim();
Client.Instance.myUsername = usernameInput;
Client.Instance.myPassword = passwordInput;
Client.Instance.myServerIp = serverIP.Trim();
// if radio field checked to remember username, save it to preferences
if (GameObject.Find("ToggleRememberUsername_LoginScreen").GetComponent<Toggle>().isOn == true)
{
PlayerPreferences.WriteRememberLoginDetails(1);
PlayerPreferences.WriteUsername(usernameInput);
PlayerPreferences.WritePassword(passwordInput);
}
else
{
PlayerPreferences.WriteUsername("");
PlayerPreferences.WritePassword("");
PlayerPreferences.WriteRememberLoginDetails(0);
}
if (usernameInput == "" || passwordInput == "")
{
loginMessage.text = "Enter a username and password.";
return;
}
GISocket.Instance.connect(serverIP);
PacketManager.sendLoginRequest(usernameInput, passwordInput);
//Client.Instance.pushOutStreamCR();
loginMessage.text = "Connecting to server...";
}
}