r2mods/ilspy_dump/ror2_csproj/RoR2/TutorialManager.cs

106 lines
2.7 KiB
C#

using RoR2.ConVar;
using RoR2.UI;
using UnityEngine;
namespace RoR2;
[DisallowMultipleComponent]
public class TutorialManager : MonoBehaviour
{
private static BoolConVar cvIsTutorialEnabled = new BoolConVar("enable_tutorial", ConVarFlags.None, "0", "Enables the tutorial.");
private LocalUser _cachedLocalUser;
private Inventory _cachedInventory;
private float itemTriggerTimeBuffer = 5f;
public static bool isTutorialEnabled => cvIsTutorialEnabled.value;
private void Start()
{
if (isTutorialEnabled)
{
_cachedLocalUser = LocalUserManager.GetFirstLocalUser();
if (_cachedLocalUser != null)
{
_cachedLocalUser.onBodyChanged += OnBodyChanged;
}
}
}
private void OnBodyChanged()
{
_cachedInventory = _cachedLocalUser.cachedMasterController.master.inventory;
if ((bool)_cachedInventory)
{
_cachedLocalUser.onBodyChanged -= OnBodyChanged;
BindPickups();
}
}
private void BindPickups()
{
_cachedInventory.onItemAddedClient += OnItemAddedClient;
_cachedInventory.onEquipmentChangedClient += OnEquipmentChangedClient;
}
private void UnbindPickups()
{
_cachedInventory.onItemAddedClient -= OnItemAddedClient;
_cachedInventory.onEquipmentChangedClient -= OnEquipmentChangedClient;
}
private void OnItemAddedClient(ItemIndex itemIndex)
{
CameraRigController cameraRigController = _cachedLocalUser.cameraRigController;
if (!cameraRigController)
{
return;
}
HUD hud = cameraRigController.hud;
if (!hud)
{
return;
}
InspectPanelController inspectPanelController = hud.inspectPanelController;
if ((bool)inspectPanelController && (!Run.instance || !(Run.instance.GetRunStopwatch() < itemTriggerTimeBuffer)))
{
hud.scoreboardPanel.SetActive(value: true);
if (_cachedLocalUser.userProfile.useInspectFeature)
{
InspectInfo inspectInfo = ItemCatalog.GetItemDef(itemIndex);
inspectInfo.MarkForceShowInfo();
inspectPanelController.Show(inspectInfo);
}
UnbindPickups();
}
}
private void OnEquipmentChangedClient(EquipmentIndex newEquipmentIndex, uint equipmentSlot)
{
CameraRigController cameraRigController = _cachedLocalUser.cameraRigController;
if (!cameraRigController)
{
return;
}
HUD hud = cameraRigController.hud;
if (!hud)
{
return;
}
InspectPanelController inspectPanelController = hud.inspectPanelController;
if ((bool)inspectPanelController && (!Run.instance || !(Run.instance.GetRunStopwatch() < itemTriggerTimeBuffer)))
{
hud.scoreboardPanel.SetActive(value: true);
if (_cachedLocalUser.userProfile.useInspectFeature)
{
InspectInfo inspectInfo = EquipmentCatalog.GetEquipmentDef(newEquipmentIndex);
inspectInfo.MarkForceShowInfo();
inspectPanelController.Show(inspectInfo);
}
UnbindPickups();
}
}
}