using System.Collections.Generic; using BitStrap; using I2.Loc; using UnityEngine; using UnityEngine.UI; public class ProfilesScreen : MonoBehaviour { public enum ProfilesState { SELECT = 0, CREATE = 1, DELETE = 2, RENAME = 3, DIFFICULTY = 4, DIFFICULTY_CHANGE = 5 } private static ProfilesScreen instance; [HideInInspector] public ProfilesState currentState; public List windows = new List(); public List profileWidgets = new List(); public InputField profileNameField; public InputField profileRenameField; public Button btnCreateProfile; public Button btnRenameProfile; public Button[] changeDifficultyButtons = new Button[3]; private SaveManager saveManager; public int currentProfile = -1; public static ProfilesScreen Instance { get { return instance; } } private ProfilesScreen() { } private void Awake() { if (instance == null) { instance = this; } } private void Start() { saveManager = GlobalSettings.Instance.saveManager; Refresh(); ChangeState(ProfilesState.SELECT); if (!saveManager.HasAnyProfiles()) { } if (GlobalSettings.Instance.isDemo) { LocalizationManager.CurrentLanguage = LocalizationManager.GetAllLanguages()[0]; } else if (GlobalSettings.Instance.saveManager.firstLangugeSaved != string.Empty) { LocalizationManager.CurrentLanguage = GlobalSettings.Instance.saveManager.firstLangugeSaved; } else if (LocalizationManager.HasLanguage(Application.systemLanguage.ToString())) { LocalizationManager.CurrentLanguage = Application.systemLanguage.ToString(); } else { LocalizationManager.CurrentLanguage = LocalizationManager.GetAllLanguages()[0]; } FisheryEditor_LoadSave.GetSaveFolderPath(); if (GlobalSettings.Instance.currentPlatform == GlobalSettings.Platform.ARCADE) { currentProfile = 0; if (!saveManager.GetProfile(currentProfile).wasCreated) { saveManager.CreateProfile(currentProfile, "Player"); Refresh(); } SelectProfile(currentProfile); } } private void OnEnable() { Refresh(); } private void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { if (currentState == ProfilesState.CREATE) { ChangeState(ProfilesState.SELECT); } else if (currentState == ProfilesState.DELETE) { ChangeState(ProfilesState.SELECT); } else if (currentState == ProfilesState.DIFFICULTY) { ChangeState(ProfilesState.SELECT); } } } public void ChangeState(ProfilesState newState) { foreach (GameObject window in windows) { window.SetActive(false); } windows[(int)newState].SetActive(true); currentState = newState; } public void Refresh() { if (saveManager == null) { return; } for (int i = 0; i < saveManager.nrOfProfiles; i++) { if (saveManager.GetProfile(i).playerName == string.Empty) { profileWidgets[i].lblProfileName.text = LocalizationManager.GetTermTranslation("GUI/PROFILE_EMPTY"); profileWidgets[i].lblDifficulty.transform.parent.gameObject.SetActive(false); } else { profileWidgets[i].lblProfileName.text = saveManager.GetProfile(i).playerName; if (saveManager.isProfileLoaded && i == currentProfile) { saveManager.GetProfile(i).playerLevel = GlobalSettings.Instance.playerSettings.playersLevel; } profileWidgets[i].lblLevel.text = LocalizationManager.GetTermTranslation("GUI/SHOP_REQUIRED_LEVEL") + " " + saveManager.GetProfile(i).playerLevel; PlayerSettingsMy.Difficulty difficulty = saveManager.GetProfile(i).difficulty; profileWidgets[i].lblDifficulty.text = PlayerSettingsMy.GetDifficultyTranslation(difficulty); switch (difficulty) { case PlayerSettingsMy.Difficulty.CASUAL: profileWidgets[i].lblDifficulty.color = profileWidgets[i].difficultyColors[1]; break; case PlayerSettingsMy.Difficulty.SIMULATOR: profileWidgets[i].lblDifficulty.color = profileWidgets[i].difficultyColors[2]; break; default: profileWidgets[i].lblDifficulty.color = profileWidgets[i].difficultyColors[0]; break; } profileWidgets[i].lblDifficulty.transform.parent.gameObject.SetActive(true); profileWidgets[i].lblDifficulty.transform.parent.localScale = new Vector3(profileWidgets[i].lblDifficulty.transform.parent.localScale.y, profileWidgets[i].lblDifficulty.transform.parent.localScale.y, profileWidgets[i].lblDifficulty.transform.parent.localScale.z); } profileWidgets[i].btnDelete.gameObject.SetActive(saveManager.GetProfile(i).wasCreated); } } public void SelectProfile(int profileId) { currentProfile = profileId; if (saveManager.GetProfile(currentProfile).wasCreated) { if (GlobalSettings.Instance.isFinal) { GlobalSettings.Instance.turnOnCheats = false; GlobalSettings.Instance.turnOnMyCheats = false; } else { GlobalSettings.Instance.turnOnCheats = true; GlobalSettings.Instance.turnOnMyCheats = false; } if (GlobalSettings.Instance.cheatProfileName != string.Empty && GlobalSettings.Instance.CheckTeamSteamID()) { if (saveManager.GetProfile(currentProfile).playerName == GlobalSettings.Instance.cheatProfileName) { GlobalSettings.Instance.turnOnCheats = true; GlobalSettings.Instance.turnOnMyCheats = false; } if (saveManager.GetProfile(currentProfile).playerName == GlobalSettings.Instance.myCheatProfileName) { GlobalSettings.Instance.turnOnCheats = true; GlobalSettings.Instance.turnOnMyCheats = true; } } saveManager.SelectProfile(currentProfile); if (GlobalSettings.Instance.currentPlatform == GlobalSettings.Platform.ARCADE) { if (VRManager.IsVROn()) { TutorialManager.Instance.ShowTutorial(TutorialManager.TutorialsId.VR_START, 0.5f); } MenuManager.Instance.ChangeState(MenuManager.MenuState.LEVELS); } else if (VRManager.IsVROn() && (int)GlobalSettings.Instance.playerSettings.playersScore == 0) { MenuManager.Instance.ShowHelpScreen(2); TutorialManager.Instance.ShowTutorial(TutorialManager.TutorialsId.VR_START, 0.5f); } else if (!VRManager.IsVROn() && (int)GlobalSettings.Instance.playerSettings.playersScore == 0) { MenuManager.Instance.ShowHelpScreen(1); } else { MenuManager.Instance.ChangeState(MenuManager.MenuState.CHANGELOG); } MenuManager.Instance.RefreshMenuObjects(); GlobalTournamentManager.Instance.CheckServerTime(); LeaderboardsManager.Instance.FindAllLeaderboards(); GlobalTournamentSteamworks.Instance.GetCurrentLeaderboardSettings().FindLeaderboard(false); if (GlobalSettings.Instance.turnOnMyCheats && !VRManager.IsVROn()) { SRDebug.Instance.IsTriggerEnabled = true; } GlobalSettings.Instance.LanguageChanged(); GlobalSettings.Instance.IsMyProfileCracked(); saveManager.isProfileLoaded = true; if (GlobalSettings.Instance.levelsManager.multiRoomName != string.Empty) { MenuManager.Instance.LoadInviteFishery(GlobalSettings.Instance.levelsManager.GetCurrentFishery().fisheryId, GlobalSettings.Instance.levelsManager.isTournament ? 1 : 0, GlobalSettings.Instance.levelsManager.multiRoomName); } } else { DifficultyLevel(); } } public void CreateProfile() { profileNameField.text = string.Empty; StartProfileName(); ChangeState(ProfilesState.CREATE); } public void CreateProfileCreate() { if (profileNameField.text.Length > 0) { saveManager.DeleteProfile(currentProfile); saveManager.CreateProfile(currentProfile, profileNameField.text); Refresh(); if (GlobalSettings.Instance.playerSettings.IsSandbox()) { GlobalSettings.Instance.playerSettings.UnlockEverythingAndSave(true); } else { GlobalSettings.Instance.playerSettings.Save(); } ChangeState(ProfilesState.SELECT); } } public void CreateProfileCancel() { ChangeState(ProfilesState.SELECT); } public void DifficultyLevel() { ChangeState(ProfilesState.DIFFICULTY); } public void DifficultyLevelChoose(int difficultyLevel) { if (VRManager.IsVROn()) { profileNameField.text = "Player " + (currentProfile + 1); } else { profileNameField.text = string.Empty; } saveManager.GetProfile(currentProfile).difficulty = (PlayerSettingsMy.Difficulty)difficultyLevel; GlobalSettings.Instance.playerSettings.tempDifficulty = (PlayerSettingsMy.Difficulty)difficultyLevel; ChangeState(ProfilesState.CREATE); } public void DifficultyLevelChange() { changeDifficultyButtons[1].gameObject.SetActive(false); changeDifficultyButtons[0].interactable = GlobalSettings.Instance.playerSettings.difficulty == PlayerSettingsMy.Difficulty.SIMULATOR; changeDifficultyButtons[2].interactable = GlobalSettings.Instance.playerSettings.difficulty != PlayerSettingsMy.Difficulty.SANDBOX; ChangeState(ProfilesState.DIFFICULTY_CHANGE); } public void DifficultyLevelChangeChoose(int difficultyLevel) { GlobalSettings.Instance.playerSettings.difficulty = (PlayerSettingsMy.Difficulty)difficultyLevel; GlobalSettings.Instance.playerSettings.difficultyObscured = difficultyLevel; if (difficultyLevel == 2) { GlobalSettings.Instance.playerSettings.UnlockEverythingAndSave(true); } else { GlobalSettings.Instance.playerSettings.Save(); } GlobalSettings.Instance.saveManager.GetCurrentProfile().difficulty = (PlayerSettingsMy.Difficulty)difficultyLevel; GlobalSettings.Instance.saveManager.isProfileLoaded = false; GlobalSettings.Instance.saveManager.currentProfileId = -1; Refresh(); ChangeState(ProfilesState.SELECT); } public void DifficultyLevelChangeCancel() { MenuManager.Instance.ChangeState(MenuManager.MenuState.PROFILE_SCREEN); } public void DeleteProfile(int profileId) { currentProfile = profileId; ChangeState(ProfilesState.DELETE); } public void DeleteProfileYes() { saveManager.DeleteProfile(currentProfile); Refresh(); ChangeState(ProfilesState.SELECT); } public void DeleteProfileNo() { ChangeState(ProfilesState.SELECT); } [Button] public void LoadProfilesFromSteamCloud() { saveManager.currentProfileId = -1; saveManager.MakeBackup(); SteamCloudManager.Instance.FileRead(); saveManager.LoadProfiles(); Refresh(); } public void RenameProfile() { ChangeState(ProfilesState.RENAME); profileRenameField.text = saveManager.GetCurrentProfile().playerName; StartProfileRename(); } public void RenameProfileRename() { if (profileRenameField.text.Length > 0) { saveManager.RenameProfile(profileRenameField.text); Refresh(); MenuManager.Instance.ChangeState(MenuManager.MenuState.PROFILE_SCREEN); } } public void RenameProfileCancel() { MenuManager.Instance.ChangeState(MenuManager.MenuState.PROFILE_SCREEN); } public void StartProfileName() { btnCreateProfile.interactable = profileNameField.text != string.Empty; profileNameField.ActivateInputField(); profileNameField.Select(); } public void StartProfileRename() { btnRenameProfile.interactable = true; profileRenameField.ActivateInputField(); profileRenameField.Select(); } public void ProfileNameChanged() { AudioController.Play("input_field"); } public void ProfileRenameChanged() { AudioController.Play("input_field"); } public void LanguageChanged() { for (int i = 0; i < profileWidgets.Count; i++) { if (!profileWidgets[i].btnDelete.gameObject.activeSelf) { profileWidgets[i].lblProfileName.text = LocalizationManager.GetTermTranslation("GUI/PROFILE_EMPTY"); continue; } profileWidgets[i].lblDifficulty.text = PlayerSettingsMy.GetDifficultyTranslation(saveManager.GetProfile(i).difficulty); profileWidgets[i].lblLevel.text = LocalizationManager.GetTermTranslation("GUI/SHOP_REQUIRED_LEVEL") + " " + saveManager.GetProfile(i).playerLevel; } } }