using System.Collections; using System.Collections.Generic; using UnityEngine; using InfallibleCode; public class GameManagerEarly : MonoBehaviour { public bool DoAction; public bool RunCode; private static GameManagerEarly _instance; public static GameManagerEarly GetInstance() { return _instance; } void Awake() { if (!_instance) { _instance = this; } } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { StorylineStates(); #region Do Action Debbuging if (DoAction) { print("DoAction = true"); } else { print("DoAction = false"); } #endregion } public enum StorylineState { MainHouseStoryline, LoopsToGhostReveal, LampsSequence } public StorylineState storylineState = StorylineState.LoopsToGhostReveal; public enum LoopsState { LoopedRoom0, LoopedRoom1, LoopedRoom2, LoopedRoom3, LoopedRoom4, LoopedRoom5, LoopedRoom6, LoopedRoom7, LoopedRoom8, LoopedRoom9, LoopedRoom10, LoopedRoom11, LoopedRoom12, LoopedRoom13, LoopedRoom14, LoopedRoom15, LoopedRoom16, LoopedRoom17, LoopedRoom18 } public LoopsState loopsState = LoopsState.LoopedRoom0; public void StorylineStates() { switch (storylineState) { case StorylineState.LoopsToGhostReveal: LoopsStates(); break; case StorylineState.LampsSequence: //LampsSequence break; case StorylineState.MainHouseStoryline: // MainHouseGameManager.GetInstance().Story(); break; } } public void LoopsStates() { switch (loopsState) { case LoopsState.LoopedRoom0: #region OLD IMPLEMENTATION //if (RunCode) //{ // #region DEEEEEELEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEETEEEEEEEEEEEE!!!!!!!!!!!!!!! // //DoorsManager.GetInstance().OpenDoorTEST(DoorsManager.GetInstance().manageDoorsInHouse, 0, 0, 0.5f); // #endregion // #region Manage Doors // //DoorsManager.GetInstance().LockDoor(0/*Loop0*/, 0/*Door0*/); // this is an example // #endregion // RunCode = false; //} //else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 1) //{ // loopsState = LoopsState.LoopedRoom1; // RunCode = true; //} #endregion break; case LoopsState.LoopedRoom1: #region OLD IMPLEMENTATION //if (RunCode) //{ // #region Manage Doors // DoorsManager.GetInstance().LockDoor(1/*Loop1*/, 0/*Door0*/); // this is an example // #endregion // RunCode = false; //} //else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 2) //{ // loopsState = LoopsState.LoopedRoom2; // RunCode = true; //} #endregion break; case LoopsState.LoopedRoom2: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(2/*Loop2*/, 0/*Door0*/); // this is an example #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 3) { loopsState = LoopsState.LoopedRoom3; RunCode = true; } break; case LoopsState.LoopedRoom3: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(3/*Loop3*/, 0/*Door0*/); // this is an example #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 4) { loopsState = LoopsState.LoopedRoom4; RunCode = true; } break; case LoopsState.LoopedRoom4: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(4/*Loop4*/, 0/*Door0*/); // this is an example #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 5) { loopsState = LoopsState.LoopedRoom5; RunCode = true; } break; case LoopsState.LoopedRoom5: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(5/*Loop5*/, 0/*Door0*/); // this is an example #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 6) { loopsState = LoopsState.LoopedRoom6; RunCode = true; } break; case LoopsState.LoopedRoom6: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(6/*Loop6*/, 0/*Door0*/); //Locks Firt loop door. DoorsManager.GetInstance().LockDoor(6, 5); //locks door (5) *DefinedPath* #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 7) { loopsState = LoopsState.LoopedRoom7; RunCode = true; } #region Windows Managment if (!WindowsManager.GetInstance().WindowIsOpen(6, 0)) //If window is closed: { DoorsManager.GetInstance().UnlockDoor(6, 5); //unlocks door (5) *DefinedPath* #region Implement When window script is corrected //IN ORDER FOR PLAYER TO NOT BE ABLE TO OPEN THE WINDOWS AGAIN: WindowsManager.GetInstance().LockWindow(6, 0); #endregion } #endregion break; case LoopsState.LoopedRoom7: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(7/*Loop7*/, 0/*Door0*/); //Locks Firt loop door. DoorsManager.GetInstance().LockDoor(7, 5); //locks door (5) *DefinedPath* #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 8) { loopsState = LoopsState.LoopedRoom8; RunCode = true; } #region Windows Managment if (!WindowsManager.GetInstance().WindowIsOpen(7,0) && !WindowsManager.GetInstance().WindowIsOpen(7, 1) && !WindowsManager.GetInstance().WindowIsOpen(7, 2)) { DoorsManager.GetInstance().UnlockDoor(7, 5); //unlocks door (5) *DefinedPath* #region Implement When window script is corrected //IN ORDER FOR PLAYER TO NOT BE ABLE TO OPEN THE WINDOWS AGAIN: WindowsManager.GetInstance().LockWindow(7, 0); WindowsManager.GetInstance().LockWindow(7, 1); WindowsManager.GetInstance().LockWindow(7, 2); #endregion } //else //If windows are open: //{ // DoorsManager.GetInstance().LockDoor(7, 5); //locks door (5) *DefinedPath* //} #endregion break; case LoopsState.LoopedRoom8: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(8/*Loop8*/, 0/*Door0*/); //Locks Firt loop door. //-> It's already closed from inspector-> //DoorsManager.GetInstance().LockDoor(8, 5); //locks door (5) *DefinedPath* #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 9) { loopsState = LoopsState.LoopedRoom9; LoopsManager.GetInstance().loopedRoom[0].LoadNextRoom = false; //Do not load next room. RunCode = true; } break; case LoopsState.LoopedRoom9: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(9/*Loop9*/, 0/*Door0*/); //Locks Firt loop door. DoorsManager.GetInstance().LockDoor(9, 5); //locks door (5) *DefinedPath* DoorsManager.GetInstance().UnlockDoor(9, 6); //locks door (6) *Bedroom* #endregion DoAction = true; //Sets true to perform the event; RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 10) { loopsState = LoopsState.LoopedRoom10; LoopsManager.GetInstance().loopedRoom[0].UpdateTeleportPOS = false; //Do not teleport the current room. RunCode = true; } if (!WindowsManager.GetInstance().WindowIsOpen(9, 3) && DoAction) //If window is closed: { WindowsManager.GetInstance().LockWindow(9, 3); DoorsManager.GetInstance().LockDoor(9, 3); //locks door (3) *Bedroom hall* DoorsManager.GetInstance().CloseDoor(9, 3, 0.5f); //Closes door (3) *bedroom hall* in loop 9. //DoAction #region Event Trigger GameObject eventTriggerGO = GameObject.Find("EventTrigger LoopedRoom (9) (Bedroom)"); eventTriggerGO.GetComponent().Invoke(); DoAction = false; //Sets false to stop the event from running every frame. #endregion //Set active pentagram. //Set false piano in room. } break; case LoopsState.LoopedRoom10: if (RunCode) { //DoAction = true; //Sets true to perform the event; RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 11) { loopsState = LoopsState.LoopedRoom11; LoopsManager.GetInstance().loopedRoom[0].LoadNextRoom = true; //Load next room. RunCode = true; } if (DoAction) //DoAction will be enabled when player closes the cap. { GameObject eventTriggerGO = GameObject.Find("EventTrigger LoopedRoom (10) (Bedroom)"); eventTriggerGO.GetComponent().Invoke(); //Event trigger Sets active the mannequin with the knife. //Makes the light in the bedroom hall flickering. //Unlocks Door in current bedroom loop. //Unlocks Door in bedroom hall. #region Manage Doors DoorsManager.GetInstance().UnlockDoor(10/*Loop 10*/, 0/*Door 0*/); //Unlocks door (0) *Hall door Bedroom* #endregion DoAction = false; } break; case LoopsState.LoopedRoom11: //Epanefere: if (RunCode) { WindowsManager.GetInstance().UnlockWindow(11/*Loop 11*/, 0/*window 0 Bedroom*/); WindowsManager.GetInstance().OpenWindow(11, 0, 0.5f); DoAction = true; //Sets true to perform the event; RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 12) { loopsState = LoopsState.LoopedRoom12; LoopsManager.GetInstance().loopedRoom[0].UpdateTeleportPOS = false; //Do not teleport the current room. RunCode = true; } if (!WindowsManager.GetInstance().WindowIsOpen(11/*Loop 11*/, 0/*window 0 Bedroom*/) && DoAction && !EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom11_afterPianoCap) //If window is closed: { WindowsManager.GetInstance().LockWindow(11/*Loop 11*/, 0/*window 0 Bedroom*/); //DoAction #region Event Trigger GameObject eventTriggerGO = GameObject.Find("EventTrigger LoopedRoom (11) (Bedroom)"); eventTriggerGO.GetComponent().Invoke(); DoAction = false; //Sets false to stop the event from running every frame. #endregion //Sets active piano. //Piano starts playing audio clip. //Sets active candles in piano. //Teleports rocking chair to new position right next to the piano. EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom11_afterPianoCap = true; } if(EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom11_afterPianoCap && DoAction) { //DoAction #region Event Trigger GameObject eventTriggerGO = GameObject.Find("EventTrigger LoopedRoom (11) (Bedroom) (PianoCloseCap)"); eventTriggerGO.GetComponent().Invoke(); DoAction = false; //Sets false to stop the event from running every frame. #endregion //Stops the sound of the piano. //Unlocks Door in bedroom in order for the player to leave. //Teleports the loop trigger. //Sets active the mannequin. Debug.Log("Piano cap Closed"); } break; case LoopsState.LoopedRoom12: if (RunCode) { LoopsManager.GetInstance().loopedRoom[0].UpdateTeleportPOS = true; //teleport the rooms again. RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 13) { loopsState = LoopsState.LoopedRoom13; RunCode = true; } break; case LoopsState.LoopedRoom13: if (RunCode) { RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 14) { loopsState = LoopsState.LoopedRoom14; RunCode = true; } break; case LoopsState.LoopedRoom14: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(14/*Loop13*/, 0/*Door0*/); //Locks Firt loop door. DoorsManager.GetInstance().LockDoor(14, 5); //locks door (5) *DefinedPath* #endregion DoAction = true; //Sets true to perform the event; RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 15) { loopsState = LoopsState.LoopedRoom15; RunCode = true; } if (DoorsManager.GetInstance().CanOpenDoor(14, 2) && DoAction && !EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom14_afterCollectedKeyFromBathroom)//If player can open door && DoAction is set to true: { //Fore Stop sound. GameObject.Find("DoorKnockingSoundEffect").GetComponent().Stop(); GameObject.Find("StopMultipleSounds LoopedRoom14").GetComponent().StopMultipleSoundsNow(); Debug.Log("Stop door knocking sound"); EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom14_afterCollectedKeyFromBathroom = true; DoAction = false; } if (DoAction && EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom14_afterCollectedKeyFromBathroom) { #region Event Trigger GameObject eventTriggerGO = GameObject.Find("EventTrigger(Bathroom Loop 14)"); eventTriggerGO.GetComponent().Invoke(); EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom14_afterCollectedKeyFromBathroom = false; #endregion DoorsManager.GetInstance().OpenDoor(14, 5, 0.5f); //Opens door *DefinedPath*. DoorsManager.GetInstance().UnlockDoor(14, 5); //Unlocks door *DefinedPath*. DoAction = false; } break; case LoopsState.LoopedRoom15: if (RunCode) { #region Event Trigger GameObject eventTriggerGO = GameObject.Find("EventTrigger (Enable Bedroom Loop15)"); eventTriggerGO.GetComponent().Invoke(); #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 16) { loopsState = LoopsState.LoopedRoom16; RunCode = true; } if (!EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom15_afterMannequinJumpscare && DoAction) //If jump scare has not happened yet and Do action is set to true(Do action is set to true from the Spaw_Or_Animation_Trigger) { //DoAction #region Event Trigger DoorsManager.GetInstance().UnlockDoor(15, 3); //Unlocks door (3) *bedroom hall * in loop 15. DoorsManager.GetInstance().OpenDoor(15, 3, 0.5f); //Opens door (3) *bedroom hall* in loop 15. DoorsManager.GetInstance().UnlockDoor(15, 6); //Unlocks door (6) *bedroom * in loop 15. GameObject.Find("PlaySound (Piano Loop 15)").GetComponent().PlayThisSoundLooped(); //Piano starts playing. GameObject.Find("StopMultipleSoundTrigger (Loop 15)").GetComponent().StopMultipleSoundsNow(); //Stops the sounds from the bathroom. DoAction = false; //Sets false to stop the event from running every frame. #endregion EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom15_afterMannequinJumpscare = true; } if (!EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom15_afterPianoCap && DoAction) //If jump scare has not happened yet and Do action is set to true(Do action is set to true from the Spaw_Or_Animation_Trigger) { //DoAction #region Event Trigger WindowsManager.GetInstance().UnlockWindow(15, 3); //Bedroom window Unlock. WindowsManager.GetInstance().OpenWindow(15, 3, 0.5f); //Bedroom window Open. DoorsManager.GetInstance().CloseDoor(15, 3, 0.5f); //Closes door in the bedroom hall that leads to the loop room 15. (Door belongs to loopedRoom15) GameObject eventTriggerGO = GameObject.Find("EventTrigger LoopedRoom (15) (Bedroom) (PianoCloseCap)"); eventTriggerGO.GetComponent().Invoke(); print("Piano cap closed."); #endregion EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom15_afterPianoCap = true; } if (!WindowsManager.GetInstance().WindowIsOpen(15, 3)/* && EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom15_afterPianoCap*/ && DoAction) //If window 4 *Bedroom* in loop 15 is open: { #region Event Trigger WindowsManager.GetInstance().LockWindow(15, 3); //Loop 15 window 4 *Bedroom*. DoorsManager.GetInstance().OpenDoor(15, 5, 0.5f); //Opens door for the basement. GameObject eventTriggerGO = GameObject.Find("EventTrigger LoopedRoom (15) (Bedroom) (WindowClose)"); eventTriggerGO.GetComponent().Invoke(); print(":))))))))))Window is closed in room 15!"); DoAction = false; //Sets false to stop the event from running every frame. #endregion //Enables pentagram. //Open window. } break; case LoopsState.LoopedRoom16: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(16/*Loop13*/, 0/*Door0*/); //Locks Firt loop door. DoorsManager.GetInstance().LockDoor(16, 5); //locks door (5) *DefinedPath* #endregion #region Event Trigger (Enable bathroom) //Find me the bathroom loop 16 and enable it: GameObject eventTriggerGO = GameObject.Find("EventTrigger (Enable Bathroom Loop16)"); eventTriggerGO.GetComponent().Invoke(); #endregion RunCode = false; DoAction = true; EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterPickedUpKeyInMainHall = true; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 17) { loopsState = LoopsState.LoopedRoom17; RunCode = true; } if (DoorsManager.GetInstance().CanOpenDoor(16, 2) && DoAction && EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterPickedUpKeyInMainHall && !EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterPickedUpDrawingInBathroom) { GameObject.Find("DoorKnockingSoundEffect").GetComponent().Stop(); GameObject.Find("StopMultipleSounds LoopedRoom16").GetComponent().StopMultipleSoundsNow(); EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterPickedUpKeyInMainHall = false; EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterPickedUpDrawingInBathroom = true; DoAction = false; } if (DoAction && EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterPickedUpDrawingInBathroom) //It becomes true when player is no longer examining the bathroom child's drawing. { #region Event Trigger GameObject eventTriggerGO = GameObject.Find("BathroomChildsDrawing (Loop 16)"); CutscenesManager.GetInstance().PlayCutscene(CutscenesManager.GetInstance().MedeaKillingBabyCutscene); print("Medea bathroom cutscene started playing"); EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterPickedUpDrawingInBathroom = false; EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterCollectedKeyFromBathroom = true; DoAction = false; //Sets false to stop the event from running every frame. #endregion } if(DoAction && EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterCollectedKeyFromBathroom) { print("Loop 16, Door in bathroom unlocked & opened after key collected."); DoorsManager.GetInstance().UnlockDoor(16, 2); //Unlock bathroom door in Loop 16. DoorsManager.GetInstance().OpenDoor(16, 2, 0.5f); //Opend bathroom door in loop 16. EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterCollectedKeyFromBathroom = false; EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterAllLightsInBasementAreBroken = true; DoAction = false; //#region EventTrigger //#endregion } if (DoAction && EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterAllLightsInBasementAreBroken && !EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterCollectedKeyFromBathroom) { GameObject eventTriggerGO = GameObject.Find("EventTrigger (Loop 16 DefinedPath)"); eventTriggerGO.GetComponent().Invoke(); print("All lambs are broken and mannequins, red lights are enabled"); EventTriggerManager.GetInstance().DoEventTriggerLoopedRoom16_afterAllLightsInBasementAreBroken = false; DoAction = false; } break; case LoopsState.LoopedRoom17: if (RunCode) { DoAction = false; #region Manage Doors DoorsManager.GetInstance().LockDoor(17/*Loop13*/, 0/*Door0*/); //Locks Firt loop door. DoorsManager.GetInstance().LockDoor(17, 5); //locks door (5) *DefinedPath* #endregion RunCode = false; } else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 18) { //LoopsManager.GetInstance().loopedRoom[0].LoadNextRoom = false; //Do not Load next room. //if (LoopsManager.GetInstance().loopedRoom[0].LoadNextRoom == false) //{ loopsState = LoopsState.LoopedRoom18; RunCode = true; //} } if (DoAction) //When player get's the key from the child's bedroom hallway. { GameObject eventTriggerGO = GameObject.Find("EventTrigger (Loop 17)"); eventTriggerGO.GetComponent().Invoke(); DoAction = false; } break; case LoopsState.LoopedRoom18: if (RunCode) { #region Manage Doors DoorsManager.GetInstance().LockDoor(18/*Loop13*/, 0/*Door0*/); //Locks Firt loop door. //DoorsManager.GetInstance().LockDoor(18, 5); //locks door (5) *DefinedPath* #endregion RunCode = false; } //else if (LoopsManager.GetInstance().loopedRoom[0].CurrentRoomLoopID == 19) //There is no loop 19! //{ // //loopsState = LoopsState.LoopedRoom19; // RunCode = true; //} if (DoAction) //Do action is true when player gets the drawing from the child's bedroom. { DoorsManager.GetInstance().OpenDoor(18/*Loop18*/, 1/*Door1*/,0.5f); GameObject loopTrigger = GameObject.Find("LoopTrigger"); loopTrigger.gameObject.SetActive(false); print("Got drawing (Bye mom)"); GameObject eventTriggerGO = GameObject.Find("EventTrigger (AfterDrawing Loop 18)"); eventTriggerGO.GetComponent().Invoke(); DoAction = false; } break; } } }