get theme colours from engine instead of storing reference to theme in module

This commit is contained in:
2022-11-28 22:14:00 +01:00
parent 8398d29f25
commit 60e390a993
32 changed files with 151 additions and 14 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 392e042234faea84aab057c8329c8589
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 392e042234faea84aab057c8329c8589
guid: 0558edff2d866f6428c81f676abdeab2
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -1,15 +1,22 @@
using EscapeRoomEngine.Engine.Runtime;
using EscapeRoomEngine.Engine.Runtime.Modules;
using EscapeRoomEngine.Engine.Runtime.Modules;
using NaughtyAttributes;
using UnityEngine;
namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
{
public class Ball : ModuleState
{
public EngineTheme theme;
[BoxGroup("Internal")] [Required] public Emission statusLight;
[BoxGroup("Internal")] [Required] public Ring ring;
private Color _puzzleColor, _solvedColor;
private void Awake()
{
_puzzleColor = Engine.Runtime.Engine.DefaultEngine.theme.puzzleColor;
_solvedColor = Engine.Runtime.Engine.DefaultEngine.theme.solvedColor;
}
public bool StatusLight
{
set => statusLight.active = value;
@@ -22,7 +29,7 @@ namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
{
_active = value;
statusLight.color = _active ? theme.puzzleColor : theme.solvedColor;
statusLight.color = _active ? _puzzleColor : _solvedColor;
ring.rotating = _active;
if (!_active)
{

View File

@@ -1,5 +1,4 @@
using EscapeRoomEngine.Engine.Runtime;
using NaughtyAttributes;
using NaughtyAttributes;
using UnityEngine;
namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
@@ -10,14 +9,17 @@ namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
private static readonly int Color = Shader.PropertyToID("_Color");
public int symbolNumber;
public EngineTheme theme;
[BoxGroup("Internal")] [Required] public MeshRenderer holoRenderer;
private Material _material;
private Color _puzzleColor, _solvedColor, _activeColor;
private void Awake()
{
_material = holoRenderer.material;
_puzzleColor = Engine.Runtime.Engine.DefaultEngine.theme.puzzleColor;
_solvedColor = Engine.Runtime.Engine.DefaultEngine.theme.solvedColor;
_activeColor = Engine.Runtime.Engine.DefaultEngine.theme.activeColor;
}
protected override void Start()
@@ -26,13 +28,13 @@ namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
ButtonEvent += (_, _) =>
{
var color = theme.puzzleColor;
var color = _puzzleColor;
if (!Active)
{
color = theme.solvedColor;
color = _solvedColor;
} else if (Pressed)
{
color = theme.activeColor;
color = _activeColor;
}
_material.SetColor(FresnelColor, color);

View File

@@ -26,6 +26,7 @@ namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
private IOption<Symbol> _activeSymbol;
private Animator _animator;
private Ball _ball;
private Color _puzzleColor, _solvedColor;
private void Awake()
{
@@ -34,6 +35,9 @@ namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
List<SymbolButton> symbolInstances = new(symbols.Count);
symbolInstances.AddRange(symbols.Select((t, i) => Instantiate(t, symbolSlots[i], false)));
symbols = symbolInstances;
_puzzleColor = Engine.Runtime.Engine.DefaultEngine.theme.puzzleColor;
_solvedColor = Engine.Runtime.Engine.DefaultEngine.theme.solvedColor;
}
protected override void Start()
@@ -46,12 +50,12 @@ namespace EscapeRoomEngine.Desert.Runtime.Puzzle_A
{
case PuzzleEventType.Restarted:
_ball.Active = true;
terminalLight.color = theme.puzzleColor;
terminalLight.color = _puzzleColor;
symbols.ForEach(symbol => symbol.Enable());
break;
case PuzzleEventType.Solved:
_ball.Active = false;
terminalLight.color = theme.solvedColor;
terminalLight.color = _solvedColor;
symbols.ForEach(symbol => symbol.Disable());
break;
case PuzzleEventType.WrongInput:

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d97e612b38c148c1a988eefa9af29b75
timeCreated: 1669687251

View File

@@ -0,0 +1,27 @@
using System.Collections.Generic;
using EscapeRoomEngine.Engine.Runtime.Modules;
using JetBrains.Annotations;
using NaughtyAttributes;
using UnityEngine;
namespace EscapeRoomEngine.Desert.Runtime.Puzzle_B
{
public class PuzzleB : StatePuzzle
{
[ValidateInput("CorrectRotatorCount")]
public List<Transform> rotators;
protected override void StatesUpdate()
{
base.StatesUpdate();
for (var i = 0; i < stateCount; i++)
{
rotators[i].localRotation = Quaternion.AngleAxis(states[i], Vector3.up);
}
}
[UsedImplicitly]
private bool CorrectRotatorCount(List<Transform> list) => list != null && list.Count == stateCount;
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8b80d4bcd2f6465189d94b993e13a034
timeCreated: 1669688216