586 lines
30 KiB
C#
586 lines
30 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System;
|
|
|
|
|
|
public class StorylineChildrenPastManager : MonoBehaviour
|
|
{
|
|
[SerializeField] ManageDoorsInRoom manageDoorsInMainHall;
|
|
[SerializeField] ManageDoorsInRoom manageDoorsInBedroomsLoop9;
|
|
[SerializeField] ManageWindowsInRoom manageWindowsInMainHall;
|
|
[SerializeField] ManageWindowsInRoom manageWindowsInBedroomsLoop9;
|
|
|
|
public bool demoBuild;
|
|
|
|
public GameObject[] eventTriggers;
|
|
|
|
[SerializeField]
|
|
GameObject SceneRoot_ChildrenLoops;
|
|
|
|
private static StorylineChildrenPastManager _instance;
|
|
public static StorylineChildrenPastManager GetInstance() { return _instance; }
|
|
|
|
void Awake()
|
|
{
|
|
if (!_instance)
|
|
{
|
|
_instance = this;
|
|
}
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
eventTriggers = GameObject.FindGameObjectsWithTag("Event");
|
|
|
|
//Commented out for testing one single scene.
|
|
//StartCoroutine(CheckIfLoadIsCompleted());
|
|
}
|
|
|
|
IEnumerator CheckIfLoadIsCompleted()
|
|
{
|
|
while (LoadManager.GetInstance().LoadingGame || LoadManager.GetInstance().IsEnteringNewGame)
|
|
{
|
|
yield return null;
|
|
}
|
|
//When done loading:
|
|
childrenPastStorylineState = (ChildrenPastStorylineState)Enum.Parse(typeof(ChildrenPastStorylineState), GameProgressManager.GetInstance().currentStorylineState);
|
|
UpdateStoryline();
|
|
}
|
|
|
|
public void UpdateStorylineAfterLoad()
|
|
{
|
|
//When done loading:
|
|
childrenPastStorylineState = (ChildrenPastStorylineState)Enum.Parse(typeof(ChildrenPastStorylineState), GameProgressManager.GetInstance().currentStorylineState);
|
|
UpdateStoryline();
|
|
}
|
|
|
|
public enum ChildrenPastStorylineState
|
|
{
|
|
//Empty,
|
|
LoopedRoom0,
|
|
LoopedRoom1,
|
|
LoopedRoom2,
|
|
LoopedRoom3,
|
|
LoopedRoom4,
|
|
LoopedRoom5,
|
|
LoopedRoom6,
|
|
LoopedRoom7,
|
|
LoopedRoom8,
|
|
LoopedRoom9,
|
|
LoopedRoom9_B,
|
|
LoopedRoom10,
|
|
LoopedRoom11,
|
|
LoopedRoom12,
|
|
LoopedRoom13,
|
|
LoopedRoom14,
|
|
LoopedRoom15,
|
|
LoopedRoom16,
|
|
LoopedRoom17,
|
|
LoopedRoom18
|
|
}
|
|
|
|
public ChildrenPastStorylineState childrenPastStorylineState = ChildrenPastStorylineState.LoopedRoom0;
|
|
|
|
/// <summary>
|
|
/// Updates the storyline's gameplay. (For example what the current room the player is being in should do)
|
|
/// </summary>
|
|
public void UpdateStoryline()
|
|
{
|
|
if (demoBuild == false)
|
|
{
|
|
switch (childrenPastStorylineState)
|
|
{
|
|
case ChildrenPastStorylineState.LoopedRoom0:
|
|
////Nothing needs to be set here. (Probably mhn to deneis kai kompo because we are talking about programming here [skull emoji])
|
|
////Kai telika eixa dikaio na mhn to desw kompo [skull emoji].
|
|
//MemorizeTemporarilyCurrentStorylineState();
|
|
//if (GameProgressManager.GetInstance().loadCurrentStorylineState) //If it should load the current storylinestate:
|
|
//{
|
|
// childrenPastStorylineState = (ChildrenPastStorylineState)Enum.Parse(typeof(ChildrenPastStorylineState), GameProgressManager.GetInstance().currentStorylineState);
|
|
// GameProgressManager.GetInstance().loadCurrentStorylineState = false;
|
|
//}
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom1:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom2:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//This event enables the trigger that when the player is going to pass through will make the planks fall from the balcony.
|
|
GameObject Loop2EventTrigger = GameObject.Find("Loop2EventTrigger");
|
|
Loop2EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom3:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//This event enables medea and plays her walking animation.
|
|
GameObject Loop3EventTrigger = GameObject.Find("Loop3EventTrigger");
|
|
Loop3EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom4:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//Force the first (0 window) window to Open Pos when the player enters the loop.
|
|
manageWindowsInMainHall.window[0].ForceWindowToOpenPosition();
|
|
manageWindowsInMainHall.window[0].CanOpenWindow = true;
|
|
GameObject Loop4CloseWindowEvent = GameObject.Find("Loop4CloseWindow Event");
|
|
manageWindowsInMainHall.window[0].onWindowDown += () => Loop4CloseWindowEvent.GetComponent<EventTrigger>().Invoke();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom5:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//Light should break at the beggining of the hall.
|
|
GameObject Loop5EventTrigger = GameObject.Find("Loop5EventTrigger");
|
|
Loop5EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom6:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
GameObject Loop6EventTrigger = GameObject.Find("Loop6EventTrigger");
|
|
Loop6EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom7:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
//Unlocks all windows at the beginning of the loop.
|
|
UnlockWindowsForBeginningOfLoop();
|
|
//Forces all the windows to open in the main loop hall.
|
|
ForceToOpenWindowsForBeginningOfLoop();
|
|
|
|
GameObject Loop7WindowPuzzle = GameObject.Find("Loop7WindowPuzzle");
|
|
//Checks the combination for every window the player is dragging down. If the combination is correct and all the windows are down then the basement door unlocks and all the windows are locking.
|
|
manageWindowsInMainHall.window[0].onWindowDown += () => Loop7WindowPuzzle.GetComponent<WindowPuzzle>().CheckPuzzleCombination();
|
|
manageWindowsInMainHall.window[1].onWindowDown += () => Loop7WindowPuzzle.GetComponent<WindowPuzzle>().CheckPuzzleCombination();
|
|
manageWindowsInMainHall.window[2].onWindowDown += () => Loop7WindowPuzzle.GetComponent<WindowPuzzle>().CheckPuzzleCombination();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom8:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//Unlock bedroom hall door.
|
|
manageDoorsInMainHall.door[3].UnlockDoor();
|
|
//Lock basmenet door because player needs to find the key from the bedroom hall's drawer.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom9:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
GameObject Loop9EventTrigger = GameObject.Find("Loop9EventTrigger");
|
|
//Invokes event in order to enable the trigger for the piano to start playing.
|
|
Loop9EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
//Opens the door for the bedroom hall:
|
|
manageDoorsInMainHall.door[3].UnlockDoor();
|
|
//Opens the door for the bedroom:
|
|
manageDoorsInBedroomsLoop9.door[0].UnlockDoor();
|
|
|
|
GameObject EventTriggerLoop9Bedroom = GameObject.Find("EventTrigger LoopedRoom (9) (Bedroom)");
|
|
//Invokes the event that disables the piano and unlocks the door to get to the bedroom hall again.
|
|
manageWindowsInBedroomsLoop9.window[0].onWindowDown += () => EventTriggerLoop9Bedroom.GetComponent<EventTrigger>().Invoke();
|
|
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom10:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
GameObject Loop10EventTrigger = GameObject.Find("Loop10EventTrigger");
|
|
//Invokes event in order to enable the triggers for this loop.
|
|
Loop10EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom11:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
GameObject loop11EventTriggerGO = GameObject.Find("Loop11EventTrigger");
|
|
EventTrigger loop11EventTrigger = loop11EventTriggerGO.GetComponent<EventTrigger>();
|
|
//Invokes event....
|
|
loop11EventTrigger.Invoke();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom12:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
manageDoorsInMainHall.door[3].UnlockDoor();
|
|
//Opens the door for the bedroom:
|
|
manageDoorsInBedroomsLoop9.door[0].UnlockDoor();
|
|
GameObject Loop12EventTriggerGO = GameObject.Find("Loop12EventTrigger");
|
|
EventTrigger loop12EventTrigger = Loop12EventTriggerGO.GetComponent<EventTrigger>();
|
|
loop12EventTrigger.Invoke();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom13:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom14:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom15:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom16:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom17:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom18:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (childrenPastStorylineState)
|
|
{
|
|
//case ChildrenPastStorylineState.Empty:
|
|
|
|
// break;
|
|
case ChildrenPastStorylineState.LoopedRoom0:
|
|
//Nothing neets to be set here. (Probably mhn to deneis kai kompo because we are talking about programming here [skull emoji])
|
|
//Kai telika eixa dikaio na mhn to desw kompo [skull emoji].
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
if (GameProgressManager.GetInstance().loadCurrentStorylineState) //If it should load the current storylinestate:
|
|
{
|
|
childrenPastStorylineState = (ChildrenPastStorylineState)Enum.Parse(typeof(ChildrenPastStorylineState), GameProgressManager.GetInstance().currentStorylineState);
|
|
EnableSceneRoot();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
UpdateStoryline();
|
|
print("Testing to see if its working");
|
|
//GameProgressManager.GetInstance().loadCurrentStorylineState = false;
|
|
}
|
|
BackgroundSoundsManager.GetInstance().PlayHouseSounds();
|
|
CutscenesManager.GetInstance().AssignPlayerToTimelines();
|
|
//manageDoorsInMainHall.door[0].LockDoor();
|
|
print("Is trying to assign player to the timelines of Children Loops scene");
|
|
EnableSceneRoot();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom1:
|
|
EnableSceneRoot();
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//GameObject Loop1EventTrigger = GameObject.Find("Loop1EventTrigger");
|
|
GameObject Loop1EventTrigger = FindEventTriggerGameObjectByName("Loop1EventTrigger");
|
|
Loop1EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
print("Loopedroom1");
|
|
GameProgressManager.GetInstance().loadCurrentGlobalStorylineState = false;
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom2:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//This event enables the trigger that when the player is going to pass through will make the planks fall from the balcony.
|
|
//GameObject Loop2EventTrigger = GameObject.Find("Loop2EventTrigger");
|
|
GameObject Loop2EventTrigger = FindEventTriggerGameObjectByName("Loop2EventTrigger");
|
|
Loop2EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom3:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//This event enables medea and plays her walking animation.
|
|
//GameObject Loop3EventTrigger = GameObject.Find("Loop3EventTrigger");
|
|
GameObject Loop3EventTrigger = FindEventTriggerGameObjectByName("Loop3EventTrigger");
|
|
Loop3EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom4:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
//Force the first (0 window) window to Open Pos when the player enters the loop.
|
|
manageWindowsInMainHall.window[0].ForceWindowToOpenPosition();
|
|
manageWindowsInMainHall.window[0].CanOpenWindow = true;
|
|
|
|
//GameObject Loop4EventTrigger = GameObject.Find("Loop4EventTrigger");
|
|
GameObject Loop4EventTrigger = FindEventTriggerGameObjectByName("Loop4EventTrigger");
|
|
Loop4EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
|
|
//GameObject Loop4CloseWindowEvent = GameObject.Find("Loop4CloseWindow Event");
|
|
GameObject Loop4CloseWindowEvent = FindEventTriggerGameObjectByName("Loop4CloseWindow Event");
|
|
manageWindowsInMainHall.window[0].onWindowDown += () => Loop4CloseWindowEvent.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom5:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//Light should break at the beggining of the hall.
|
|
//GameObject Loop5EventTrigger = GameObject.Find("Loop5EventTrigger");
|
|
GameObject Loop5EventTrigger = FindEventTriggerGameObjectByName("Loop5EventTrigger");
|
|
Loop5EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom6:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//GameObject Loop6EventTrigger = GameObject.Find("Loop6EventTrigger");
|
|
GameObject Loop6EventTrigger = FindEventTriggerGameObjectByName("Loop6EventTrigger");
|
|
Loop6EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom7:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
//Unlocks all windows at the beginning of the loop.
|
|
UnlockWindowsForBeginningOfLoop();
|
|
//Forces all the windows to open in the main loop hall.
|
|
ForceToOpenWindowsForBeginningOfLoop();
|
|
|
|
//DELETE THIS!!!!!
|
|
#region UNDER CONSTRUCTION FOR 15/12/2023 BUILD (DELETE ME!!!)
|
|
//GameObject Loop7EventTrigger = GameObject.Find("Loop7EventTrigger");
|
|
GameObject Loop7EventTrigger = FindEventTriggerGameObjectByName("Loop7EventTrigger");
|
|
Loop7EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
#endregion
|
|
//--------------------------------------------------------
|
|
|
|
//GameObject Loop7WindowPuzzle = GameObject.Find("Loop7WindowPuzzle");
|
|
GameObject Loop7WindowPuzzle = FindEventTriggerGameObjectByName("Loop7WindowPuzzle");
|
|
//Checks the combination for every window the player is dragging down. If the combination is correct and all the windows are down then the basement door unlocks and all the windows are locking.
|
|
manageWindowsInMainHall.window[0].onWindowDown += () => Loop7WindowPuzzle.GetComponent<WindowPuzzle>().CheckPuzzleCombination();
|
|
manageWindowsInMainHall.window[1].onWindowDown += () => Loop7WindowPuzzle.GetComponent<WindowPuzzle>().CheckPuzzleCombination();
|
|
manageWindowsInMainHall.window[2].onWindowDown += () => Loop7WindowPuzzle.GetComponent<WindowPuzzle>().CheckPuzzleCombination();
|
|
EnableSceneRoot();
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom8:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//Unlock bedroom hall door.
|
|
manageDoorsInMainHall.door[3].UnlockDoor();
|
|
//Lock basmenet door because player needs to find the key from the bedroom hall's drawer.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
//GameObject Loop8EventTrigger = GameObject.Find("Loop8EventTrigger");
|
|
GameObject Loop8EventTrigger = FindEventTriggerGameObjectByName("Loop8EventTrigger");
|
|
//Invokes event in order to enable the trigger for the piano to start playing.
|
|
Loop8EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom9:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
//GameObject Loop9EventTrigger = GameObject.Find("Loop9EventTrigger");
|
|
GameObject Loop9EventTrigger = FindEventTriggerGameObjectByName("Loop9EventTrigger");
|
|
//Invokes event in order to enable the trigger for the piano to start playing.
|
|
Loop9EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
//Opens the door for the bedroom hall:
|
|
manageDoorsInMainHall.door[3].UnlockDoor();
|
|
//Opens the door for the bedroom:
|
|
manageDoorsInBedroomsLoop9.door[0].UnlockDoor();
|
|
|
|
GameObject EventTriggerLoop9Bedroom = GameObject.Find("EventTrigger LoopedRoom (9) (Bedroom)");
|
|
//GameObject EventTriggerLoop9Bedroom = FindEventTriggerGameObjectByName("EventTrigger LoopedRoom (9) (Bedroom)");
|
|
//Invokes the event that disables the piano and unlocks the door to get to the bedroom hall again.
|
|
manageWindowsInBedroomsLoop9.window[0].onWindowDown += () => EventTriggerLoop9Bedroom.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom9_B:
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
//GameObject Loop9BEventTrigger = GameObject.Find("Loop9BEventTrigger");
|
|
GameObject Loop9BEventTrigger = FindEventTriggerGameObjectByName("Loop9BEventTrigger");
|
|
//Invokes event in order to enable Medea Window Jump Scare.
|
|
Loop9BEventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom10:
|
|
//Window drawing appears in this section and the player must close the window. Then blood decals appear that lead to the basement door.
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
//GameObject Loop10EventTrigger = GameObject.Find("Loop10EventTrigger");
|
|
GameObject Loop10EventTrigger = FindEventTriggerGameObjectByName("Loop10EventTrigger");
|
|
//Invokes event in order to enable the triggers for this loop.
|
|
Loop10EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom11:
|
|
//The player must find the missing mannequin pieces.
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//GameObject Loop11EventTrigger = GameObject.Find("Loop11EventTrigger");
|
|
GameObject Loop11EventTrigger = FindEventTriggerGameObjectByName("Loop11EventTrigger");
|
|
//Invokes event in order to enable the triggers for this loop.
|
|
Loop11EventTrigger.GetComponent<EventTrigger>().Invoke();
|
|
EnableSceneRoot();
|
|
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom12:
|
|
//Medea bathroom dancing.
|
|
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
manageDoorsInMainHall.door[1].LockDoor();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
//GameObject loop12EventTriggerGO = GameObject.Find("Loop12EventTrigger");
|
|
GameObject loop12EventTriggerGO = FindEventTriggerGameObjectByName("Loop12EventTrigger");
|
|
EventTrigger loop12EventTrigger = loop12EventTriggerGO.GetComponent<EventTrigger>();
|
|
//Invokes event....
|
|
loop12EventTrigger.Invoke();
|
|
EnableSceneRoot();
|
|
|
|
break;
|
|
|
|
case ChildrenPastStorylineState.LoopedRoom13:
|
|
//Medea Chase.
|
|
|
|
MemorizeTemporarilyCurrentStorylineState();
|
|
|
|
ForceToCloseDoorsForBeginningOfLoop();
|
|
manageDoorsInMainHall.door[0].LockDoor();
|
|
//Lock DefinedPath Door.
|
|
manageDoorsInMainHall.door[5].LockDoor();
|
|
manageDoorsInMainHall.door[3].UnlockDoor();
|
|
//Opens the door for the bedroom:
|
|
manageDoorsInBedroomsLoop9.door[0].UnlockDoor();
|
|
//GameObject Loop13EventTriggerGO = GameObject.Find("Loop13EventTrigger");
|
|
GameObject Loop13EventTriggerGO = FindEventTriggerGameObjectByName("Loop13EventTrigger");
|
|
EventTrigger loop13EventTrigger = Loop13EventTriggerGO.GetComponent<EventTrigger>();
|
|
loop13EventTrigger.Invoke();
|
|
EnableSceneRoot();
|
|
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom14:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom15:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom16:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom17:
|
|
break;
|
|
case ChildrenPastStorylineState.LoopedRoom18:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public void EnableSceneRoot()
|
|
{
|
|
SceneRoot_ChildrenLoops.SetActive(true);
|
|
}
|
|
|
|
GameObject FindEventTriggerGameObjectByName(string name)
|
|
{
|
|
foreach (GameObject obj in eventTriggers)
|
|
{
|
|
if (obj.name == name)
|
|
{
|
|
return obj;
|
|
}
|
|
}
|
|
return null; // If no matching GameObject found
|
|
}
|
|
|
|
public void MemorizeTemporarilyCurrentStorylineState()
|
|
{
|
|
GameProgressManager.GetInstance().currentStorylineState = childrenPastStorylineState.ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Forces the doors to close when the player has transitioned to the next loop.
|
|
/// </summary>
|
|
private void ForceToCloseDoorsForBeginningOfLoop()
|
|
{
|
|
for (int i = 1; i < manageDoorsInMainHall.door.Length; i++)
|
|
{
|
|
manageDoorsInMainHall.door[i].ForceDoorToClosePosition();
|
|
//Forces all of the doors in the loop to be closed without doing an animation or sound when the next round of the loops start.
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Forces the Windoes to close when the player has transitioned to the next loop.
|
|
/// </summary>
|
|
private void UnlockWindowsForBeginningOfLoop()
|
|
{
|
|
for (int i = 0; i < manageWindowsInMainHall.window.Length; i++)
|
|
{
|
|
manageWindowsInMainHall.window[i].UnlockWindow();
|
|
//Forces all of the windows in the loop to be closed without doing an animation or sound when the next round of the loops start.
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Forces the Windoes to close when the player has transitioned to the next loop.
|
|
/// </summary>
|
|
private void ForceToCloseWindowsForBeginningOfLoop()
|
|
{
|
|
for (int i = 0; i < manageWindowsInMainHall.window.Length; i++)
|
|
{
|
|
manageWindowsInMainHall.window[i].ForceWindowToClosePosition();
|
|
//Forces all of the windows in the loop to be closed without doing an animation or sound when the next round of the loops start.
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Forces the Windoes to open when the player has transitioned to the next loop.
|
|
/// </summary>
|
|
private void ForceToOpenWindowsForBeginningOfLoop()
|
|
{
|
|
for (int i = 0; i < manageWindowsInMainHall.window.Length; i++)
|
|
{
|
|
manageWindowsInMainHall.window[i].ForceWindowToOpenPosition();
|
|
//Forces all of the windows in the loop to be closed without doing an animation or sound when the next round of the loops start.
|
|
}
|
|
}
|
|
|
|
//private void Update()
|
|
//{
|
|
// UpdateStoryline();
|
|
//}
|
|
|
|
/// <summary>
|
|
/// /Increases to the next loop
|
|
/// </summary>
|
|
public void UpdateToTheNextLoopState()
|
|
{
|
|
// Get all values of the enum
|
|
ChildrenPastStorylineState[] allCases = (ChildrenPastStorylineState[])Enum.GetValues(typeof(ChildrenPastStorylineState));
|
|
|
|
// Get the index of the current case
|
|
int currentIndex = Array.IndexOf(allCases, childrenPastStorylineState);
|
|
|
|
// Increment the index
|
|
currentIndex++;
|
|
|
|
// Wrap around if it exceeds the array length
|
|
if (currentIndex >= allCases.Length)
|
|
{
|
|
currentIndex = 0; // Go back to the first case or handle differently if desired
|
|
}
|
|
|
|
// Update the current case
|
|
childrenPastStorylineState = allCases[currentIndex];
|
|
|
|
UpdateStoryline();
|
|
}
|
|
}
|