Sync DreamLantern sounds + rename QSBDreamLantern to QSBDreamLanternController

This commit is contained in:
Nick 2022-10-04 22:52:29 -04:00
parent 30256a18eb
commit 096b295eb1
10 changed files with 53 additions and 18 deletions

View File

@ -33,4 +33,20 @@ internal class PlayerAudioControllerPatches : QSBPatch
[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerAudioController), nameof(PlayerAudioController.PlayRefuel))]
public static void PlayerAudioController_PlayRefuel() => PlayOneShot(AudioType.ShipCabinUseRefueller);
[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerAudioController), nameof(PlayerAudioController.OnArtifactFocus))]
public static void PlayerAudioController_OnArtifactFocus() => PlayOneShot(AudioType.Artifact_Focus);
[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerAudioController), nameof(PlayerAudioController.OnArtifactUnfocus))]
public static void PlayerAudioController_OnArtifactUnfocus() => PlayOneShot(AudioType.Artifact_Unfocus);
[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerAudioController), nameof(PlayerAudioController.OnArtifactConceal))]
public static void PlayerAudioController_OnArtifactConceal() => PlayOneShot(AudioType.Artifact_Conceal);
[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerAudioController), nameof(PlayerAudioController.OnArtifactUnconceal))]
public static void PlayerAudioController_OnArtifactUnconceal() => PlayOneShot(AudioType.Artifact_Unconceal);
}

View File

@ -11,5 +11,5 @@ public class DreamLanternManager : WorldObjectManager
public override bool DlcOnly => true;
public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct) =>
QSBWorldSync.Init<QSBDreamLantern, DreamLanternController>();
QSBWorldSync.Init<QSBDreamLanternController, DreamLanternController>();
}

View File

@ -3,10 +3,10 @@ using QSB.Messaging;
namespace QSB.EchoesOfTheEye.DreamLantern.Messages;
internal class SetConcealedMessage : QSBWorldObjectMessage<QSBDreamLantern, bool>
internal class SetConcealedMessage : QSBWorldObjectMessage<QSBDreamLanternController, bool>
{
public SetConcealedMessage(bool concealed) : base(concealed) { }
public override void OnReceiveRemote()
=> WorldObject.AttachedObject.SetConcealed(Data);
public override void OnReceiveRemote() =>
WorldObject.AttachedObject.SetConcealed(Data);
}

View File

@ -3,7 +3,7 @@ using QSB.Messaging;
namespace QSB.EchoesOfTheEye.DreamLantern.Messages;
internal class SetFocusMessage : QSBWorldObjectMessage<QSBDreamLantern, float>
internal class SetFocusMessage : QSBWorldObjectMessage<QSBDreamLanternController, float>
{
public SetFocusMessage(float focus) : base(focus) { }

View File

@ -1,12 +1,16 @@
using QSB.EchoesOfTheEye.DreamLantern.WorldObjects;
using QSB.Messaging;
using System.Collections.Generic;
namespace QSB.EchoesOfTheEye.DreamLantern.Messages;
internal class SetLitMessage : QSBWorldObjectMessage<QSBDreamLantern, bool>
internal class SetLitMessage : QSBWorldObjectMessage<QSBDreamLanternController, bool>
{
public SetLitMessage(bool lit) : base(lit) { }
public override void OnReceiveRemote()
=> WorldObject.AttachedObject.SetLit(Data);
{
WorldObject.AttachedObject.SetLit(Data);
WorldObject.DreamLanternItem._oneShotSource.PlayOneShot(Data ? AudioType.Artifact_Light : AudioType.Artifact_Extinguish, 1f);
}
}

View File

@ -3,7 +3,7 @@ using QSB.Messaging;
namespace QSB.EchoesOfTheEye.DreamLantern.Messages;
internal class SetRangeMessage : QSBWorldObjectMessage<QSBDreamLantern, (float minRange, float maxRange)>
internal class SetRangeMessage : QSBWorldObjectMessage<QSBDreamLanternController, (float minRange, float maxRange)>
{
public SetRangeMessage(float minRange, float maxRange) : base((minRange, maxRange)) { }

View File

@ -31,7 +31,7 @@ internal class DreamLanternPatches : QSBPatch
return;
}
var qsbDreamLantern = __instance.GetWorldObject<QSBDreamLantern>();
var qsbDreamLantern = __instance.GetWorldObject<QSBDreamLanternController>();
// ghost lanterns should only be controlled by the host
if (qsbDreamLantern.IsGhostLantern && !QSBCore.IsHost)
{
@ -59,7 +59,7 @@ internal class DreamLanternPatches : QSBPatch
return;
}
var qsbDreamLantern = __instance.GetWorldObject<QSBDreamLantern>();
var qsbDreamLantern = __instance.GetWorldObject<QSBDreamLanternController>();
// ghost lanterns should only be controlled by the host
if (qsbDreamLantern.IsGhostLantern && !QSBCore.IsHost)
{
@ -88,7 +88,7 @@ internal class DreamLanternPatches : QSBPatch
return;
}
var qsbDreamLantern = __instance.GetWorldObject<QSBDreamLantern>();
var qsbDreamLantern = __instance.GetWorldObject<QSBDreamLanternController>();
// ghost lanterns should only be controlled by the host
if (qsbDreamLantern.IsGhostLantern && !QSBCore.IsHost)
{
@ -116,7 +116,7 @@ internal class DreamLanternPatches : QSBPatch
return;
}
var qsbDreamLantern = __instance.GetWorldObject<QSBDreamLantern>();
var qsbDreamLantern = __instance.GetWorldObject<QSBDreamLanternController>();
// ghost lanterns should only be controlled by the host
if (qsbDreamLantern.IsGhostLantern && !QSBCore.IsHost)
{

View File

@ -1,11 +1,26 @@
using QSB.EchoesOfTheEye.DreamLantern.Messages;
using Cysharp.Threading.Tasks;
using QSB.EchoesOfTheEye.DreamLantern.Messages;
using QSB.Messaging;
using QSB.WorldSync;
using System.Threading;
namespace QSB.EchoesOfTheEye.DreamLantern.WorldObjects;
public class QSBDreamLantern : WorldObject<DreamLanternController>
public class QSBDreamLanternController : WorldObject<DreamLanternController>
{
public DreamLanternItem DreamLanternItem { get; private set; }
public override async UniTask Init(CancellationToken ct)
{
await base.Init(ct);
// Ghosts don't have the item and instead the effects are controlled by GhostEffects
if (!IsGhostLantern)
{
DreamLanternItem = AttachedObject.GetComponent<DreamLanternItem>();
}
}
public override void SendInitialState(uint to)
{
this.SendMessage(new SetLitMessage(AttachedObject._lit) { To = to });

View File

@ -10,12 +10,12 @@ namespace QSB.EchoesOfTheEye.LightSensorSync.Messages;
internal class IlluminatingLanternsMessage : QSBWorldObjectMessage<QSBLightSensor, int[]>
{
public IlluminatingLanternsMessage(IEnumerable<DreamLanternController> lanterns) :
base(lanterns.Select(x => x.GetWorldObject<QSBDreamLantern>().ObjectId).ToArray()) { }
base(lanterns.Select(x => x.GetWorldObject<QSBDreamLanternController>().ObjectId).ToArray()) { }
public override void OnReceiveRemote()
{
WorldObject.AttachedObject._illuminatingDreamLanternList.Clear();
WorldObject.AttachedObject._illuminatingDreamLanternList.AddRange(
Data.Select(x => x.GetWorldObject<QSBDreamLantern>().AttachedObject));
Data.Select(x => x.GetWorldObject<QSBDreamLanternController>().AttachedObject));
}
}

View File

@ -12,7 +12,7 @@ internal class PlayerIlluminatingLanternsMessage : QSBMessage<(uint playerId, in
public PlayerIlluminatingLanternsMessage(uint playerId, IEnumerable<DreamLanternController> lanterns) :
base((
playerId,
lanterns.Select(x => x.GetWorldObject<QSBDreamLantern>().ObjectId).ToArray()
lanterns.Select(x => x.GetWorldObject<QSBDreamLanternController>().ObjectId).ToArray()
)) { }
public override void OnReceiveRemote()
@ -21,6 +21,6 @@ internal class PlayerIlluminatingLanternsMessage : QSBMessage<(uint playerId, in
lightSensor._illuminatingDreamLanternList.Clear();
lightSensor._illuminatingDreamLanternList.AddRange(
Data.lanterns.Select(x => x.GetWorldObject<QSBDreamLantern>().AttachedObject));
Data.lanterns.Select(x => x.GetWorldObject<QSBDreamLanternController>().AttachedObject));
}
}