Added contextual UI switching depending on level type

This commit is contained in:
journaliciouz
2025-11-08 21:08:01 +01:00
parent 0e55248698
commit 2ec53629c6
2 changed files with 83 additions and 0 deletions

View File

@@ -670,10 +670,13 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f97ef53b4012e4149b61bbd63c298b6f, type: 3}
m_Name:
m_EditorClassIdentifier: '::'
currentUIMode: 0
landscapeObject: {fileID: 7681264016039674288}
portraitObject: {fileID: 2258532551510216878}
cinematicsParentObject: {fileID: 5598823553633962789}
CinematicBackground: {fileID: 1256355336041814197}
appSwitcher: {fileID: 3087409191859087859}
eagleEye: {fileID: 8093509920149135307}
cinematicSprites: {fileID: 0}
cinematicBackgroundSprites: {fileID: 0}
currentCinematicPlayer: {fileID: 0}
@@ -1058,6 +1061,11 @@ RectTransform:
m_CorrespondingSourceObject: {fileID: 5445689290567702089, guid: 428a0feafda9d6d4e87ecf43ad41dc20, type: 3}
m_PrefabInstance: {fileID: 1192924796845315568}
m_PrefabAsset: {fileID: 0}
--- !u!1 &8093509920149135307 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6980564769726958139, guid: 428a0feafda9d6d4e87ecf43ad41dc20, type: 3}
m_PrefabInstance: {fileID: 1192924796845315568}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4473383355500896076
PrefabInstance:
m_ObjectHideFlags: 0
@@ -1186,6 +1194,11 @@ PrefabInstance:
insertIndex: -1
addedObject: {fileID: 1247411094983283289}
m_SourcePrefab: {fileID: 100100000, guid: ccd858c7962d48147b0233c1bf1382f5, type: 3}
--- !u!1 &3087409191859087859 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1498581815400593087, guid: ccd858c7962d48147b0233c1bf1382f5, type: 3}
m_PrefabInstance: {fileID: 4473383355500896076}
m_PrefabAsset: {fileID: 0}
--- !u!224 &3194400469127591113 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 1315170081792486277, guid: ccd858c7962d48147b0233c1bf1382f5, type: 3}

View File

@@ -9,11 +9,17 @@ using Core.Lifecycle;
public class PlayerHudManager : ManagedBehaviour
{
public enum UIMode { Overworld, Puzzle, Minigame, HideAll };
public UIMode currentUIMode;
private AppSwitcher _appSwitcher;
public GameObject landscapeObject;
public GameObject portraitObject;
public GameObject cinematicsParentObject;
public GameObject CinematicBackground;
public GameObject appSwitcher;
public GameObject eagleEye;
[HideInInspector] public Image cinematicSprites;
[HideInInspector] public Image cinematicBackgroundSprites;
@@ -30,6 +36,7 @@ public class PlayerHudManager : ManagedBehaviour
public static PlayerHudManager Instance => _instance;
private new void Awake()
{
base.Awake();
if (Instance != null)
{
Destroy(this);
@@ -39,6 +46,26 @@ public class PlayerHudManager : ManagedBehaviour
_instance = this;
InitializeReferences();
}
protected override void OnManagedAwake()
{
if (SceneManagerService.Instance != null)
{
SceneManagerService.Instance.SceneLoadCompleted += NewSceneLoaded;
}
if (SceneManagerService.Instance.CurrentGameplayScene == "AppleHillsOverworld")
{
NewSceneLoaded("AppleHillsOverworld");
}
if (SceneManagerService.Instance.CurrentGameplayScene == "StartingScene")
{
// TODO: Hide all UI until cinematics have played
NewSceneLoaded("AppleHillsOverworld");
}
}
private void InitializeReferences()
@@ -67,4 +94,47 @@ public class PlayerHudManager : ManagedBehaviour
UpateCinematicReferences(landscapeObject);
}
}
public void NewSceneLoaded(string sceneName)
{
switch (sceneName)
{
case "AppleHillsOverworld":
UpdateUIMode(UIMode.Overworld);
break;
case "Quarry":
UpdateUIMode(UIMode.Puzzle);
break;
case "DivingForPictures":
UpdateUIMode(UIMode.Minigame);
break;
}
}
public void UpdateUIMode(UIMode mode)
{
switch (mode)
{
case UIMode.Overworld:
// Show app switcher
appSwitcher.SetActive(true);
// Hide eagle eye
eagleEye.SetActive(false);
break;
case UIMode.Puzzle:
// Hide app switcher
appSwitcher.SetActive(false);
// show eagle eye
eagleEye.SetActive(true);
break;
case UIMode.Minigame:
// Hide app switcher
appSwitcher.SetActive(false);
// Hide birds eye
eagleEye.SetActive(false);
break;
}
}
}