timed button stand puzzle
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules;
|
||||
using EscapeRoomEngine.Engine.Runtime.Modules.State;
|
||||
using EscapeRoomEngine.Engine.Runtime.Utilities;
|
||||
using NaughtyAttributes;
|
||||
using Station46.Modules.Hoop.Scripts;
|
||||
using Station46.Scripts;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Station46.Modules.Button_Stand.Scripts
|
||||
{
|
||||
public class TimedButtonStand : StatePuzzle
|
||||
{
|
||||
[BoxGroup("Internal")] [SerializeField] private HoloButton button;
|
||||
[BoxGroup("Internal")] [SerializeField] private Emission standLight;
|
||||
|
||||
private ButtonHoop _hoop;
|
||||
|
||||
protected override void Start()
|
||||
{
|
||||
base.Start();
|
||||
|
||||
PuzzleEvent += (_, type) =>
|
||||
{
|
||||
// ReSharper disable once SwitchStatementMissingSomeEnumCasesNoDefault
|
||||
switch (type)
|
||||
{
|
||||
case PuzzleEventType.Restarted:
|
||||
standLight.color = EscapeRoomEngine.Engine.Runtime.Engine.Theme.puzzleColor.hdr;
|
||||
button.hideWhenDisabled = true;
|
||||
button.Enable();
|
||||
button.Disable();
|
||||
break;
|
||||
case PuzzleEventType.Solved:
|
||||
standLight.color = EscapeRoomEngine.Engine.Runtime.Engine.Theme.solvedColor.hdr;
|
||||
button.hideWhenDisabled = false;
|
||||
button.Enable();
|
||||
button.Disable();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
button.ButtonEvent += (_, type) =>
|
||||
{
|
||||
if (type == ButtonEventType.Pressed)
|
||||
{
|
||||
Solve();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public override void SetModule(Module module)
|
||||
{
|
||||
base.SetModule(module);
|
||||
|
||||
// The hoop requires a related dispenser module
|
||||
// We use the second slot because the first slot is reserved for the platform
|
||||
var secondRelatedModule = Module.relatedModules[1];
|
||||
if (secondRelatedModule.State is ButtonHoop hoop)
|
||||
{
|
||||
hoop.Button.ButtonEvent += (_, type) =>
|
||||
{
|
||||
if (type == ButtonEventType.Pressed)
|
||||
{
|
||||
button.Enable();
|
||||
}
|
||||
else
|
||||
{
|
||||
button.Disable();
|
||||
}
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new EngineException($"{this} was not assigned a related button hoop.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 04813ea711414777bb27154ebd3671b4
|
||||
timeCreated: 1683734810
|
||||
Reference in New Issue
Block a user