module state game objects

This commit is contained in:
2022-11-13 20:49:32 +01:00
parent 14ab0374cc
commit 5f19adcb43
13 changed files with 251 additions and 84 deletions

View File

@@ -14,6 +14,7 @@ namespace Escape_Room_Engine.Engine.Scripts
private readonly List<Space> _spaces = new();
private readonly List<PuzzleModule> _puzzles = new();
private readonly List<DoorModule> _doors = new();
internal Room(Passage entrance)
{
@@ -26,12 +27,6 @@ namespace Escape_Room_Engine.Engine.Scripts
exit = spaceExit;
}
internal void AddPuzzle(PuzzleModule puzzle)
{
_puzzles.Add(puzzle);
puzzle.PuzzleEvent += OnPuzzleEvent;
}
/// <summary>
/// Solves all puzzles in this room.
/// </summary>
@@ -39,20 +34,40 @@ namespace Escape_Room_Engine.Engine.Scripts
{
Logger.Log($"Skipping {this}...", LogType.PuzzleFlow);
_puzzles.ForEach(puzzle => puzzle.Solve());
_puzzles.ForEach(puzzle => puzzle.State.Solve());
}
internal void AddPuzzle(PuzzleModule puzzle)
{
_puzzles.Add(puzzle);
puzzle.State.PuzzleEvent += OnPuzzleEvent;
}
private void OnPuzzleEvent(PuzzleModule puzzle, PuzzleEventType type)
{
if (type == PuzzleEventType.Solved)
{
if (_puzzles.All(p => p.Solved))
if (_puzzles.All(p => p.State.Solved))
{
exit.fromOut.Unlock();
exit.fromOut.State.Unlock();
}
}
}
internal void AddDoor(DoorModule door)
{
_doors.Add(door);
door.State.DoorEvent += OnDoorEvent;
}
private void OnDoorEvent(DoorModule door, DoorEventType type)
{
if (type == DoorEventType.Unlocked && door.Equals(exit.fromOut))
{
Engine.DefaultEngine.GenerateRoom();
}
}
internal void InstantiateRoom(Transform parent, string name)
{
roomObject = new GameObject($"Room {name}");