WorldObjectManager: DlcOnly flag

This commit is contained in:
JohnCorby 2022-03-11 10:04:11 -08:00
parent 4bc0b16379
commit ff3d139ac7
7 changed files with 13 additions and 2 deletions

View File

@ -8,6 +8,7 @@ namespace QSB.EchoesOfTheEye.AirlockSync;
internal class AirlockManager : WorldObjectManager
{
public override WorldObjectScene WorldObjectScene => WorldObjectScene.SolarSystem;
public override bool DlcOnly => true;
public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct) => QSBWorldSync.Init<QSBGhostAirlock, GhostAirlock>();
}

View File

@ -8,6 +8,7 @@ namespace QSB.EchoesOfTheEye.LightSensorSync;
internal class LightSensorManager : WorldObjectManager
{
public override WorldObjectScene WorldObjectScene => WorldObjectScene.Both;
public override bool DlcOnly => true;
public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct) => QSBWorldSync.Init<QSBLightSensor, SingleLightSensor>();
}

View File

@ -8,6 +8,7 @@ namespace QSB.EchoesOfTheEye.PictureFrameDoors;
internal class PictureFrameDoorsManager : WorldObjectManager
{
public override WorldObjectScene WorldObjectScene => WorldObjectScene.SolarSystem;
public override bool DlcOnly => true;
public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
{

View File

@ -10,6 +10,7 @@ namespace QSB.EchoesOfTheEye.RaftSync;
public class RaftManager : WorldObjectManager
{
public override WorldObjectScene WorldObjectScene => WorldObjectScene.SolarSystem;
public override bool DlcOnly => true;
public static readonly List<RaftController> Rafts = new();

View File

@ -8,6 +8,7 @@ namespace QSB.EchoesOfTheEye.SlideProjectors;
internal class SlideProjectorManager : WorldObjectManager
{
public override WorldObjectScene WorldObjectScene => WorldObjectScene.SolarSystem;
public override bool DlcOnly => true;
public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct) => QSBWorldSync.Init<QSBSlideProjector, SlideProjector>();
}

View File

@ -51,6 +51,11 @@ public static class QSBWorldSync
foreach (var manager in Managers)
{
if (manager.DlcOnly && !QSBCore.DLCInstalled)
{
continue;
}
switch (manager.WorldObjectScene)
{
case WorldObjectScene.SolarSystem when QSBSceneManager.CurrentScene != OWScene.SolarSystem:
@ -360,4 +365,4 @@ public static class QSBWorldSync
SaveGame = saveGame
});
}
}
}

View File

@ -15,10 +15,11 @@ public enum WorldObjectScene
public abstract class WorldObjectManager : MonoBehaviour, IAddComponentOnStart
{
public abstract WorldObjectScene WorldObjectScene { get; }
public virtual bool DlcOnly => false;
public abstract UniTask BuildWorldObjects(OWScene scene, CancellationToken ct);
public virtual void UnbuildWorldObjects() { }
public override string ToString() => GetType().Name;
}
}