Skip to content
This repository was archived by the owner on Oct 21, 2022. It is now read-only.

Commit 22e6515

Browse files
committed
Add SceneHelper
1 parent dcdbe23 commit 22e6515

1 file changed

Lines changed: 95 additions & 0 deletions

File tree

ModLoader/Helpers/SceneHelper.cs

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using UnityEngine;
7+
using UnityEngine.SceneManagement;
8+
9+
namespace ModLoader.Helpers
10+
{
11+
/// <summary>
12+
/// Trigger events related to scene change
13+
/// </summary>
14+
/// Authors: RYAN8990, dani0105
15+
class SceneHelper : MonoBehaviour
16+
{
17+
/// <summary>
18+
/// Fired when the Base Scene (the first scene when game loads) is loaded
19+
/// </summary>
20+
public static event EventHandler<Scene> OnBaseSceneLoaded;
21+
22+
/// <summary>
23+
/// Fired when the start menu scene loaded -> After player has gone to another scene and come back
24+
/// </summary>
25+
public static event EventHandler<Scene> OnHomeSceneLoaded;
26+
27+
/// <summary>
28+
/// Fired when the Build Scene is loaded
29+
/// </summary>
30+
public static event EventHandler<Scene> OnBuildSceneLoaded;
31+
32+
/// <summary>
33+
/// Fired when the World Scene is Loaded
34+
/// </summary>
35+
public static event EventHandler<Scene> OnWorldSceneLoaded;
36+
37+
/// <summary>
38+
/// Fired when the any scene is loaded
39+
/// </summary>
40+
public static event EventHandler<Scene> OnSceneLoaded;
41+
42+
/// <summary>
43+
/// Get current scene
44+
/// </summary>
45+
public static scene currentScene;
46+
47+
private void Awake()
48+
{
49+
SceneManager.sceneLoaded += handleSceneLoaded;
50+
}
51+
52+
/// <summary>
53+
/// Fire all of the OnSceneLoaded Events
54+
/// </summary>
55+
private void handleSceneLoaded(Scene scene, LoadSceneMode mode)
56+
{
57+
OnSceneLoaded?.Invoke(this, scene);
58+
switch (scene.name)
59+
{
60+
case "Base_PC":
61+
currentScene = SceneHelper.scene.Base;
62+
OnBaseSceneLoaded?.Invoke(this, scene);
63+
break;
64+
65+
case "Home_PC":
66+
currentScene = SceneHelper.scene.Home;
67+
OnHomeSceneLoaded?.Invoke(this, scene);
68+
break;
69+
70+
case "Build_PC":
71+
currentScene = SceneHelper.scene.Build;
72+
OnBuildSceneLoaded?.Invoke(this, scene);
73+
break;
74+
75+
case "World_PC":
76+
currentScene = SceneHelper.scene.World;
77+
OnWorldSceneLoaded?.Invoke(this, scene);
78+
break;
79+
}
80+
}
81+
82+
/// <summary>
83+
/// Enume for all available SFS scenes
84+
/// </summary>
85+
public enum scene
86+
{
87+
Base,
88+
Home,
89+
Build,
90+
World
91+
}
92+
}
93+
94+
95+
}

0 commit comments

Comments
 (0)