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().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().sprite = OnDemandLoader.Load("Sprites/musicOn"); PlayerPrefs.SetInt("LoginMusic", 0); AudioManager.Instance.playSong("main_theme", true); } else { AudioManager.Instance.stopSong(); GameObject.Find("LoginScreen_ToggleSound").GetComponent().sprite = OnDemandLoader.Load("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(); //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().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..."; } }