module state game objects
This commit is contained in:
@@ -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}");
|
||||
|
||||
Reference in New Issue
Block a user