233 lines
9.1 KiB
C#
233 lines
9.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Playables;
|
|
|
|
public class BedHideBehaviourBase : MonoBehaviour
|
|
{
|
|
public bool isInRightSide;
|
|
|
|
[SerializeField] private PlayableDirector bedHideRightPlayableDirector;
|
|
[SerializeField] private PlayableDirector bedHideLeftPlayableDirector;
|
|
|
|
[SerializeField] private PlayableDirector bedComeOutRightPlayableDirector;
|
|
[SerializeField] private PlayableDirector bedComeOutLeftPlayableDirector;
|
|
|
|
public bool playerIsHidingUnderBed;
|
|
|
|
[Header("Medea Related")]
|
|
public Transform enemySearchPositionRight;
|
|
public Transform enemySearchPositionLeft;
|
|
[SerializeField] private PlayableDirector enemyBedSearchPlayableDirector;
|
|
[SerializeField] private PlayableDirector enemyKillPlayerBedRightPlayableDirector;
|
|
[SerializeField] private PlayableDirector enemyKillPlayerBedLeftPlayableDirector;
|
|
|
|
public void HideInRightSide()
|
|
{
|
|
PlayerManager.GetInstance()._PlayerMovement.ForcePlayerStandUpFromCrouch();
|
|
isInRightSide = true;
|
|
HideManager.GetInstance().isInBedRightSide = true;
|
|
Vector3 newPosition = enemySearchPositionRight.position;
|
|
PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.enabled = false;
|
|
//PlayerManager.GetInstance().PlayerCharacterController.enabled = false;
|
|
PlayerManager.GetInstance()._PlayerMovement.enabled = false;
|
|
PlayerManager.GetInstance().playerGameObj.transform.position = newPosition;
|
|
PlayerManager.GetInstance().playerGameObj.transform.rotation = enemySearchPositionRight.rotation;
|
|
bedHideRightPlayableDirector.Play();
|
|
ClockController.GetInstance().canUsePocketWatch = false;
|
|
FlashlightController.GetInstance().canUseFlashlight = false;
|
|
if (FlashlightController.GetInstance()._IsOpen)
|
|
{
|
|
FlashlightController.GetInstance().PutFlashlightDown();
|
|
FlashlightController.GetInstance()._IsOpen = false;
|
|
}
|
|
if (MedeaDemonicEnemyBehaviour.GetInstance() != null)
|
|
{
|
|
MedeaDemonicEnemyBehaviour.GetInstance()._medeaAI.isStopped = true;
|
|
}
|
|
}
|
|
|
|
public void HideInLeftSide()
|
|
{
|
|
ClockController.GetInstance().canUsePocketWatch = false;
|
|
PlayerManager.GetInstance()._PlayerMovement.ForcePlayerStandUpFromCrouch();
|
|
Vector3 newPosition = enemySearchPositionLeft.position;
|
|
PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.enabled = false;
|
|
//PlayerManager.GetInstance().PlayerCharacterController.enabled = false;
|
|
PlayerManager.GetInstance()._PlayerMovement.enabled = false;
|
|
PlayerManager.GetInstance().playerGameObj.transform.position = newPosition;
|
|
PlayerManager.GetInstance().playerGameObj.transform.rotation = enemySearchPositionLeft.rotation;
|
|
bedHideLeftPlayableDirector.Play();
|
|
ClockController.GetInstance().canUsePocketWatch = false;
|
|
FlashlightController.GetInstance().canUseFlashlight = false;
|
|
if (FlashlightController.GetInstance()._IsOpen)
|
|
{
|
|
FlashlightController.GetInstance().PutFlashlightDown();
|
|
FlashlightController.GetInstance()._IsOpen = false;
|
|
}
|
|
if (MedeaDemonicEnemyBehaviour.GetInstance() != null)
|
|
{
|
|
MedeaDemonicEnemyBehaviour.GetInstance()._medeaAI.isStopped = true;
|
|
}
|
|
}
|
|
|
|
public void IsUnderBed()
|
|
{
|
|
playerIsHidingUnderBed = true;
|
|
HideManager.GetInstance().UnderBed = true;
|
|
HideManager.GetInstance().CanPressKey = true;
|
|
HideManager.GetInstance().StartPlayerHideTimer();
|
|
//Enable Bed camera Movement (CHANGE AND IMPLEMENT THIS!!!!!!!)
|
|
PlayerManager.GetInstance()._cameraMovement.cameraBedHideMovement = true;
|
|
PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.enabled = true;
|
|
print("Is UNDER bed");
|
|
if (MedeaDemonicEnemyBehaviour.GetInstance() != null)
|
|
{
|
|
MedeaDemonicEnemyBehaviour.GetInstance()._medeaAI.isStopped = false;
|
|
PatrolManager.GetInstance().UpdateTakeOutPlayerSpot();
|
|
PatrolManager.GetInstance().CanPatrol = true;
|
|
MedeaDemonicEnemyBehaviour.GetInstance().StopPlayerLostContinueChasingTimer();
|
|
}
|
|
}
|
|
|
|
public void UnderBedAnimationIdleTrue()
|
|
{
|
|
//PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.enabled = true;
|
|
Quaternion RotationAfterIsUnderBed = PlayerManager.GetInstance()._PlayerMovement.cameraBedHidePosition.localRotation;
|
|
PlayerManager.GetInstance()._cameraMovement.transform.localPosition = PlayerManager.GetInstance()._PlayerMovement.cameraBedHidePosition.localPosition;
|
|
PlayerManager.GetInstance()._cameraMovement.transform.localRotation = RotationAfterIsUnderBed;
|
|
PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.SetBool("IsUnderBed", true);
|
|
}
|
|
|
|
public void UnderBedAnimationIdleFalse()
|
|
{
|
|
PlayerManager.GetInstance()._cameraMovement.transform.localPosition = PlayerManager.GetInstance()._PlayerMovement._cameraDefaultPOS;
|
|
PlayerManager.GetInstance()._cameraMovement.transform.localRotation = PlayerManager.GetInstance()._PlayerMovement.cameraDefaultROT;
|
|
PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.SetBool("IsUnderBed", false);
|
|
}
|
|
|
|
public void ComeOutRightSide()
|
|
{
|
|
PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.enabled = false;
|
|
bedComeOutRightPlayableDirector.Play();
|
|
isInRightSide = false;
|
|
HideManager.GetInstance().isInBedRightSide = false;
|
|
HideManager.GetInstance().StopPlayerHideTimer();
|
|
}
|
|
|
|
public void ComeOutLeftSide()
|
|
{
|
|
PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.enabled = false;
|
|
bedComeOutLeftPlayableDirector.Play();
|
|
HideManager.GetInstance().StopPlayerHideTimer();
|
|
}
|
|
|
|
public void IsOutOfBed()
|
|
{
|
|
playerIsHidingUnderBed = false;
|
|
HideManager.GetInstance().UnderBed = false;
|
|
HideManager.GetInstance().CanPressKey = true;
|
|
//Disable Bed camera Movement (CHANGE AND IMPLEMENT THIS!!!!!!!)
|
|
PlayerManager.GetInstance()._PlayerMovement.enabled = true;
|
|
PlayerManager.GetInstance().PlayerCharacterController.enabled = true;
|
|
PlayerManager.GetInstance()._cameraMovement.cameraBedHideMovement = false;
|
|
PlayerManager.GetInstance()._PlayerMovement._CharacterAnimator.enabled = true;
|
|
ClockController.GetInstance().canUsePocketWatch = true;
|
|
FlashlightController.GetInstance().canUseFlashlight = true;
|
|
|
|
print("Is OUT of bed");
|
|
|
|
if(MedeaDemonicEnemyBehaviour.GetInstance()!= null)
|
|
{
|
|
StopEnemySearchCutscene();
|
|
StopEnemyKillPlayerUnderBedLeft();
|
|
StopEnemyKillPlayerUnderBedRight();
|
|
}
|
|
}
|
|
|
|
public void IfPlayerIsUnderTheBedTransitionToKillCutscene()
|
|
{
|
|
if (HideManager.GetInstance().UnderBed)
|
|
{
|
|
if (isInRightSide)
|
|
{
|
|
PlayEnemyKillPlayerUnderBedRightCutscene();
|
|
}
|
|
else
|
|
{
|
|
PlayEnemyKillPlayerUnderBedLeftCutscene();
|
|
}
|
|
}
|
|
}
|
|
|
|
#region Enemy Related
|
|
public void PlayEnemyKillPlayerUnderBedRightCutscene()
|
|
{
|
|
print("Is killing player under bed Right");
|
|
enemyKillPlayerBedRightPlayableDirector.Play();
|
|
}
|
|
|
|
public void PlayEnemyKillPlayerUnderBedLeftCutscene()
|
|
{
|
|
print("Is killing player under bed Left");
|
|
enemyKillPlayerBedLeftPlayableDirector.Play();
|
|
}
|
|
|
|
public void PlayEnemyBedSearchCutscene()
|
|
{
|
|
print("Is searching for player under bed");
|
|
enemyBedSearchPlayableDirector.Play();
|
|
PatrolManager.GetInstance().medeasCurrentPlayableDirector = enemyBedSearchPlayableDirector;
|
|
}
|
|
|
|
public void StopEnemyBedSearchCutscene()
|
|
{
|
|
print("Interrupted the searching for player under bed");
|
|
//enemyBedSearchPlayableDirector.Stop();
|
|
PatrolManager.GetInstance().medeasCurrentPlayableDirector.Stop();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Call when the search playable director is over.
|
|
/// </summary>
|
|
public void EnemyCanChangePointAfterSearching()
|
|
{
|
|
PatrolManager.GetInstance()._canChangePoint = true;
|
|
}
|
|
|
|
public void PlayPlayerKillCutscene()
|
|
{
|
|
PlayerDeath.GetInstance().LowSanityGhostKillsPlayer();
|
|
}
|
|
|
|
public void StopEnemySearchCutscene()
|
|
{
|
|
if (enemyBedSearchPlayableDirector.time > 0)
|
|
{
|
|
enemyBedSearchPlayableDirector.Stop();
|
|
print("Stopped enemy search playable director");
|
|
}
|
|
}
|
|
|
|
public void StopEnemyKillPlayerUnderBedLeft()
|
|
{
|
|
if (enemyKillPlayerBedLeftPlayableDirector.time > 0)
|
|
{
|
|
enemyKillPlayerBedLeftPlayableDirector.Stop();
|
|
print("Stopped enemy bed kill left playable director");
|
|
}
|
|
}
|
|
|
|
public void StopEnemyKillPlayerUnderBedRight()
|
|
{
|
|
if (enemyKillPlayerBedRightPlayableDirector.time > 0)
|
|
{
|
|
enemyKillPlayerBedRightPlayableDirector.Stop();
|
|
print("Stopped enemy bed kill right playable director");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|