r2mods/ilspy_dump/ror2_csproj/RoR2.UI.MainMenu/ProfileMainMenuScreen.cs

194 lines
5.2 KiB
C#

using System.Collections.Generic;
using TMPro;
using UnityEngine;
namespace RoR2.UI.MainMenu;
[RequireComponent(typeof(MPEventSystemLocator))]
public class ProfileMainMenuScreen : BaseMainMenuScreen
{
public GameObject createProfilePanel;
public TMP_InputField createProfileNameInputField;
public MPButton submitProfileNameButton;
public GameObject gotoSelectProfilePanelButtonContainer;
public GameObject selectProfilePanel;
public MPButton gotoCreateProfilePanelButton;
public UserProfileListController existingProfileListController;
private MPEventSystemLocator eventSystemLocator;
private bool firstTimeConfiguration;
private const string defaultName = "Nameless Survivor";
private string GuessDefaultProfileName()
{
return PlatformSystems.saveSystem.GetPlatformUsernameOrDefault("Nameless Survivor");
}
public UserProfile Editor_TryOpenTestProfile()
{
List<string> availableProfileNames = PlatformSystems.saveSystem.GetAvailableProfileNames();
if (availableProfileNames.Count > 0)
{
Debug.LogWarning("Got existing profile!");
return PlatformSystems.saveSystem.GetProfile(availableProfileNames[0]);
}
return null;
}
public void OpenDefaultProfile()
{
GuessDefaultProfileName();
UserProfile mainProfile = null;
SetMainProfile(mainProfile);
}
protected new void Awake()
{
eventSystemLocator = GetComponent<MPEventSystemLocator>();
existingProfileListController.onProfileSelected += SetMainProfile;
existingProfileListController.onListRebuilt += OnListRebuilt;
}
protected new void OnEnable()
{
firstTimeConfiguration = true;
List<string> availableProfileNames = PlatformSystems.saveSystem.GetAvailableProfileNames();
for (int i = 0; i < availableProfileNames.Count; i++)
{
if (IsProfileCustom(PlatformSystems.saveSystem.GetProfile(availableProfileNames[i])))
{
firstTimeConfiguration = false;
break;
}
}
if (firstTimeConfiguration)
{
OpenCreateProfileMenu(firstTime: true);
return;
}
createProfilePanel.SetActive(value: false);
selectProfilePanel.SetActive(value: true);
OnListRebuilt();
gotoSelectProfilePanelButtonContainer.SetActive(value: true);
}
public void OpenCreateProfileMenu(bool firstTime)
{
selectProfilePanel.SetActive(value: false);
createProfilePanel.SetActive(value: true);
createProfileNameInputField.text = GuessDefaultProfileName();
if (firstTime)
{
gotoSelectProfilePanelButtonContainer.SetActive(value: false);
}
}
private void OnListRebuilt()
{
existingProfileListController.GetReadOnlyElementsList();
}
protected void OnDisable()
{
}
private void SetMainProfile(UserProfile profile)
{
LocalUserManager.SetLocalUsers(new LocalUserManager.LocalUserInitializationInfo[1]
{
new LocalUserManager.LocalUserInitializationInfo
{
profile = profile
}
});
if (myMainMenuController != null)
{
myMainMenuController.desiredMenuScreen = myMainMenuController.titleMenuScreen;
}
else
{
Debug.LogError("myMainMenuController reference null on ProfileMainMenuScreen.cs while trying to run SetMainProfile(UserProfile profile)");
}
}
private static bool IsProfileCustom(UserProfile profile)
{
return profile.fileName != "default";
}
private static bool IsNewProfileNameAcceptable(string newProfileName)
{
if (PlatformSystems.saveSystem.GetProfile(newProfileName) != null)
{
return false;
}
if (newProfileName == "")
{
return false;
}
return true;
}
public void OnAddProfilePressed()
{
if (eventSystemLocator.eventSystem.currentSelectedGameObject == createProfileNameInputField.gameObject && !Input.GetKeyDown(KeyCode.Return) && !Input.GetKeyDown(KeyCode.KeypadEnter))
{
return;
}
string text = createProfileNameInputField.text;
if (IsNewProfileNameAcceptable(text))
{
createProfileNameInputField.text = "";
UserProfile userProfile = PlatformSystems.saveSystem.CreateProfile(RoR2Application.cloudStorage, text, 0uL);
if (userProfile != null)
{
SetMainProfile(userProfile);
}
}
}
protected new void Update()
{
if (!eventSystemLocator.eventSystem || eventSystemLocator.eventSystem.player == null || !eventSystemLocator.eventSystem.player.GetButton(31))
{
return;
}
GameObject currentSelectedGameObject = MPEventSystemManager.combinedEventSystem.currentSelectedGameObject;
if (!currentSelectedGameObject)
{
return;
}
UserProfileListElementController component = currentSelectedGameObject.GetComponent<UserProfileListElementController>();
if ((bool)component)
{
if (component.userProfile == null)
{
Debug.LogError("!!!???");
return;
}
SimpleDialogBox simpleDialogBox = SimpleDialogBox.Create();
string consoleString = "user_profile_delete \"" + component.userProfile.fileName + "\"";
simpleDialogBox.headerToken = new SimpleDialogBox.TokenParamsPair
{
token = "USER_PROFILE_DELETE_HEADER",
formatParams = null
};
simpleDialogBox.descriptionToken = new SimpleDialogBox.TokenParamsPair
{
token = "USER_PROFILE_DELETE_DESCRIPTION",
formatParams = new object[1] { component.userProfile.name }
};
simpleDialogBox.AddCommandButton(consoleString, "USER_PROFILE_DELETE_YES");
simpleDialogBox.AddCancelButton("USER_PROFILE_DELETE_NO");
}
}
}