sync initial state of GhostAirlock

This commit is contained in:
Mister_Nebula 2022-07-25 10:19:16 +01:00
parent 32a9b68948
commit 01f1425ac0
3 changed files with 38 additions and 2 deletions

View File

@ -10,6 +10,9 @@ internal class AirlockManager : WorldObjectManager
public override WorldObjectScene WorldObjectScene => WorldObjectScene.SolarSystem;
public override bool DlcOnly => true;
public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct) =>
public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
{
QSBWorldSync.Init<QSBAirlockInterface, AirlockInterface>();
}
QSBWorldSync.Init<QSBGhostAirlock, GhostAirlock>();
}
}

View File

@ -0,0 +1,17 @@
using QSB.EchoesOfTheEye.AirlockSync.WorldObjects;
using QSB.Messaging;
namespace QSB.EchoesOfTheEye.AirlockSync.Messages;
internal class AirlockInitialStateMessage : QSBWorldObjectMessage<QSBGhostAirlock, (bool innerDoorOpen, bool outerDoorOpen, bool pressurized)>
{
public AirlockInitialStateMessage(bool innerDoorOpen, bool outerDoorOpen, bool pressurized) : base((innerDoorOpen, outerDoorOpen, pressurized)) { }
public override void OnReceiveRemote()
{
var airlock = WorldObject.AttachedObject;
airlock._innerDoor.SetOpenImmediate(Data.innerDoorOpen);
airlock._outerDoor.SetOpenImmediate(Data.outerDoorOpen);
airlock.SetPressurization(Data.pressurized);
}
}

View File

@ -0,0 +1,16 @@
using QSB.EchoesOfTheEye.AirlockSync.Messages;
using QSB.Messaging;
using QSB.WorldSync;
namespace QSB.EchoesOfTheEye.AirlockSync.WorldObjects;
internal class QSBGhostAirlock : WorldObject<GhostAirlock>
{
public override void SendInitialState(uint to)
=> this.SendMessage(
new AirlockInitialStateMessage(
AttachedObject._innerDoor.IsOpen(),
AttachedObject._outerDoor.IsOpen(),
AttachedObject._pressurized
));
}