Files
2026-02-21 16:45:37 +08:00

418 lines
12 KiB
C#

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<GameObject> windows = new List<GameObject>();
public List<ProfileWidget> profileWidgets = new List<ProfileWidget>();
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;
}
}
}