split into multiple assemblies
This commit is contained in:
44
Assets/Desert/Runtime/Puzzle A/Ring.cs
Normal file
44
Assets/Desert/Runtime/Puzzle A/Ring.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using System.Collections.Generic;
|
||||
using NaughtyAttributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
|
||||
{
|
||||
public class Ring : MonoBehaviour
|
||||
{
|
||||
public float rotationAngle;
|
||||
[MinMaxSlider(-180, 180)] public Vector2 activeRange;
|
||||
[Required] public Crystal crystal;
|
||||
public List<Symbol> symbols;
|
||||
|
||||
public bool Solved
|
||||
{
|
||||
set
|
||||
{
|
||||
_solved = value;
|
||||
crystal.Active = !_solved;
|
||||
symbols.ForEach(symbol => symbol.Active = !_solved);
|
||||
}
|
||||
}
|
||||
|
||||
private bool _solved;
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if(!_solved)
|
||||
{
|
||||
transform.localRotation = Quaternion.AngleAxis(rotationAngle, Vector3.forward);
|
||||
|
||||
var activeSymbol = false;
|
||||
symbols.ForEach(symbol =>
|
||||
{
|
||||
var angle = (rotationAngle - symbol.anglePosition) % 360;
|
||||
var active = angle > activeRange.x && angle < activeRange.y || angle > 360 + activeRange.x;
|
||||
symbol.Active = active;
|
||||
activeSymbol |= active;
|
||||
});
|
||||
crystal.Active = activeSymbol;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user