using EscapeRoomEngine.Engine.Runtime.Modules.State;
using JetBrains.Annotations;
using NaughtyAttributes;
using Station46.Scripts;
using UnityEngine;
namespace Station46.Modules.Portal.Scripts
{
///
/// The Station 46 theme includes its own version of a portal that changes colour when it is unlocked.
///
[RequireComponent(typeof(Emission))]
public class Station46Portal : EscapeRoomEngine.Portal.Runtime.Portal
{
[BoxGroup("Internal")] [SerializeField] [CanBeNull] private LineRenderer beacon;
[BoxGroup("Internal")] [SerializeField] [CanBeNull] private AudioSource beaconAudio;
private Emission _emission;
protected override void Awake()
{
base.Awake();
_emission = GetComponent();
DoorEvent += (_, type) =>
{
// ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault ConvertSwitchStatementToSwitchExpression
switch (type)
{
case DoorEventType.Unlocked:
_emission.color = EscapeRoomEngine.Engine.Runtime.Engine.Theme.solvedColor.hdr;
if (beacon != null)
{
beacon.enabled = true;
}
if (beaconAudio != null)
{
beaconAudio.Play();
}
break;
case DoorEventType.Locked:
_emission.color = EscapeRoomEngine.Engine.Runtime.Engine.Theme.puzzleColor.hdr;
if (beacon != null)
{
beacon.enabled = false;
}
if (beaconAudio != null)
{
beaconAudio.Stop();
}
break;
}
};
_emission.active = true;
}
}
}