refactor modules
This commit is contained in:
40
Assets/Station46/Scripts/CyclicStepPuzzle.cs
Normal file
40
Assets/Station46/Scripts/CyclicStepPuzzle.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Station46.Runtime
|
||||
{
|
||||
/// <summary>
|
||||
/// A <see cref="StepPuzzle"/> whose steps are considered a cycle that can be started anywhere and must be stepped through once.
|
||||
/// </summary>
|
||||
public class CyclicStepPuzzle : StepPuzzle
|
||||
{
|
||||
[Tooltip("The current step in the cycle.")]
|
||||
[BoxGroup("Step Puzzle")] [Min(0)]
|
||||
public int cycleStep;
|
||||
|
||||
protected override void CheckStep(int step)
|
||||
{
|
||||
if (!Solved)
|
||||
{
|
||||
if (currentStep == 0)
|
||||
{
|
||||
// begin at any step
|
||||
cycleStep = NextInCycle(step);
|
||||
Step();
|
||||
}
|
||||
else if (step == cycleStep)
|
||||
{
|
||||
// next step in cycle
|
||||
cycleStep = NextInCycle(cycleStep);
|
||||
Step();
|
||||
}
|
||||
else
|
||||
{
|
||||
WrongInput();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int NextInCycle(int step) => (step + 1) % totalSteps;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user