mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-11 06:40:39 +00:00
some more work
This commit is contained in:
parent
2219dfd26a
commit
aeee63ac90
@ -4,6 +4,7 @@ using QSB.Patches;
|
|||||||
using QSB.Utility;
|
using QSB.Utility;
|
||||||
using QSB.WorldSync;
|
using QSB.WorldSync;
|
||||||
using System;
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace QSB;
|
namespace QSB;
|
||||||
|
|
||||||
@ -11,9 +12,11 @@ public static class QSBSceneManager
|
|||||||
{
|
{
|
||||||
public static OWScene CurrentScene => LoadManager.GetCurrentScene();
|
public static OWScene CurrentScene => LoadManager.GetCurrentScene();
|
||||||
|
|
||||||
public static bool IsInUniverse => InUniverse(CurrentScene);
|
public static bool IsInUniverse => CurrentScene.IsUniverseScene();
|
||||||
|
|
||||||
|
[Obsolete]
|
||||||
public static event Action<OWScene, OWScene, bool> OnSceneLoaded;
|
public static event Action<OWScene, OWScene, bool> OnSceneLoaded;
|
||||||
|
[Obsolete]
|
||||||
public static event Action<OWScene, OWScene> OnUniverseSceneLoaded;
|
public static event Action<OWScene, OWScene> OnUniverseSceneLoaded;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -27,9 +30,6 @@ public static class QSBSceneManager
|
|||||||
|
|
||||||
static QSBSceneManager()
|
static QSBSceneManager()
|
||||||
{
|
{
|
||||||
LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad;
|
|
||||||
DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success);
|
|
||||||
|
|
||||||
LoadManager.OnStartSceneLoad += (originalScene, loadScene) =>
|
LoadManager.OnStartSceneLoad += (originalScene, loadScene) =>
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"PRE SCENE LOAD ({originalScene} -> {loadScene})", MessageType.Info);
|
DebugLog.DebugWrite($"PRE SCENE LOAD ({originalScene} -> {loadScene})", MessageType.Info);
|
||||||
@ -41,37 +41,34 @@ public static class QSBSceneManager
|
|||||||
DebugLog.DebugWrite($"POST SCENE LOAD ({originalScene} -> {loadScene})", MessageType.Info);
|
DebugLog.DebugWrite($"POST SCENE LOAD ({originalScene} -> {loadScene})", MessageType.Info);
|
||||||
OnPostSceneLoad?.SafeInvoke(originalScene, loadScene);
|
OnPostSceneLoad?.SafeInvoke(originalScene, loadScene);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
OnPreSceneLoad += (_, _) =>
|
||||||
|
QSBWorldSync.RemoveWorldObjects();
|
||||||
|
OnPostSceneLoad += (_, loadScene) =>
|
||||||
|
{
|
||||||
|
if (QSBCore.IsInMultiplayer)
|
||||||
|
{
|
||||||
|
if (loadScene.IsUniverseScene())
|
||||||
|
{
|
||||||
|
QSBWorldSync.BuildWorldObjects(loadScene).Forget();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loadScene == OWScene.TitleScreen)
|
||||||
|
{
|
||||||
|
QSBNetworkManager.singleton.StopHost();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene)
|
public static bool IsUniverseScene(this OWScene scene) =>
|
||||||
{
|
|
||||||
DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info);
|
|
||||||
QSBWorldSync.RemoveWorldObjects();
|
|
||||||
var universe = InUniverse(newScene);
|
|
||||||
if (QSBCore.IsInMultiplayer && universe)
|
|
||||||
{
|
|
||||||
// So objects have time to be deleted, made, whatever
|
|
||||||
Delay.RunNextFrame(() => QSBWorldSync.BuildWorldObjects(newScene).Forget());
|
|
||||||
}
|
|
||||||
|
|
||||||
OnSceneLoaded?.SafeInvoke(oldScene, newScene, universe);
|
|
||||||
if (universe)
|
|
||||||
{
|
|
||||||
OnUniverseSceneLoaded?.SafeInvoke(oldScene, newScene);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (newScene == OWScene.TitleScreen && QSBCore.IsInMultiplayer)
|
|
||||||
{
|
|
||||||
QSBNetworkManager.singleton.StopHost();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool InUniverse(OWScene scene) =>
|
|
||||||
scene is OWScene.SolarSystem or OWScene.EyeOfTheUniverse;
|
scene is OWScene.SolarSystem or OWScene.EyeOfTheUniverse;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HarmonyPatch(typeof(GhostBrain))]
|
[HarmonyPatch(typeof(GhostBrain))]
|
||||||
internal class Patch : QSBPatch
|
internal class TestPatch : QSBPatch
|
||||||
{
|
{
|
||||||
public override QSBPatchTypes Type => QSBPatchTypes.OnModStart;
|
public override QSBPatchTypes Type => QSBPatchTypes.OnModStart;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user