void AudioUnderBedScratch()
 {
     if (!AudioController.instance.isPlaying(TYPE.MONSTER))
     {
         currentStage = MonsterStages.ShowMonster;
     }
 }
 protected override void setupMonsterToStartAttack()
 {
     currentStage      = (MonsterStages)0;
     moveUpDestination = transform.position + new Vector3(0, MoveUpY, 0);
     currentSeconds    = seconds;
     //AUDIO
     AudioController.instance.PLAY(AudioController.instance.AUDIO.UnderTheBed, TYPE.MONSTER);
 }
 void audioRunningInAttic()
 {
     if (!AudioController.instance.isPlaying(TYPE.MONSTER))
     {
         currentStage = MonsterStages.OpenTile;
         //AUDIO - Run audio of tile sliding
         AudioController.instance.PLAY(AudioController.instance.AUDIO.SlidingTile, TYPE.MONSTER);
     }
 }
 void doorOpen()
 {
     door.setDoorAngleWithDuration(openDoorAngle, timeForDoorToOpen);
     //AUDIO
     AudioController.instance.PLAY(AudioController.instance.AUDIO.DoorCreak, TYPE.MONSTER);
     currentStage = MonsterStages.JumpScare;
     //only deactive mesh
     setModelActive(false);
 }
 protected override void setupMonsterToStartAttack()
 {
     currentStage = (MonsterStages)0;
     CeilingPositionSetup();
     TimersSetup();
     MonsterSetup();
     //Start Audio
     //AUDIO
     AudioController.instance.PLAY(AudioController.instance.AUDIO.RunningAttic, TYPE.MONSTER);
 }
    void HideMonster()
    {
        Vector3 current = transform.position;

        transform.position = Vector3.MoveTowards(current, monsterTarget, 0.5f * monsterHideSpeed * Time.deltaTime);
        if (current == monsterTarget)
        {
            currentStage = MonsterStages.JumpScare;
        }
    }
    void IsMonsterMovingUp(bool up)
    {
        Vector3 current     = transform.position;
        Vector3 destination = up? moveUpDestination : base.originalPosition;

        transform.position = Vector3.MoveTowards(current, destination, speed * Time.deltaTime);
        if (transform.position == destination)
        {
            currentStage = up ? MonsterStages.InteractiveMonster : MonsterStages.UserWin;
        }
    }
    public override void resetMonster()
    {
        //Set Door
        LeftDoorHinge.transform.eulerAngles = new Vector3(0, -90, 0);

        //Turn on all Models again
        setModelActive(true);

        //Stage
        currentStage = MonsterStages.UserInteraction;
    }
    public override void resetMonster()
    {
        //Set Ceiling Tile
        CeilingTile.transform.localPosition = CeilingOriginal;


        //Reset Monster position
        transform.position = base.originalPosition;

        //Set Current stage
        currentStage = (MonsterStages)0;
    }
    void OpenTile()
    {
        Vector3 current = CeilingTile.transform.localPosition;

        CeilingTile.transform.localPosition = Vector3.MoveTowards(current, CeilingTarget, ceilingSpeed * Time.deltaTime);
        if (current == CeilingTarget)
        {
            //AUDIO
            AudioController.instance.STOP(TYPE.MONSTER);
            currentStage = MonsterStages.UserInteraction;
        }
    }
    protected override void setupMonsterToStartAttack()
    {
        //Curtains
        timeForCurtainsToStayOpen = UnityEngine.Random.Range(5, 8);
        currentTimeToStayOpen     = timeForCurtainsToStayOpen;
        timeForUserToLose         = timeForCurtainsToStayOpen + UnityEngine.Random.Range(3, 5);

        //Door
        timeForDoorToOpen = UnityEngine.Random.Range(2, 3);

        currentStage = MonsterStages.UserInteraction;
    }
    void InterActiveMonster()
    {
        currentSeconds -= Time.deltaTime;
        if (currentSeconds < 0)
        {
            currentStage = MonsterStages.HideMonster;
        }
        float cameraAngle = cameraObject.transform.localEulerAngles.y;

        if (cameraAngle > 36 && cameraAngle < 95)
        {
            currentStage = MonsterStages.JumpScare;
        }
    }
    void UserInteraction()
    {
        if (blanket.isBlanketUp)
        {
            currentTimeUntilWin -= Time.deltaTime;
        }
        else
        {
            currentTimeUntilWin = TimeUntilUserWins;
            TimeUntilUserLoses -= Time.deltaTime;
        }

        if (currentTimeUntilWin < 0)
        {
            currentStage = MonsterStages.UserWin;
            //AUDIO
            AudioController.instance.PLAY(AudioController.instance.AUDIO.SlidingTile, TYPE.MONSTER);
        }

        if (TimeUntilUserLoses < 0)
        {
            currentStage = MonsterStages.HideMonster;
        }
    }
    void userInteraction()
    {
        if (curtain.isCurtainOpen)
        {
            currentTimeToStayOpen -= Time.deltaTime;
        }
        else
        {
            currentTimeToStayOpen = timeForCurtainsToStayOpen;
            timeForUserToLose    -= Time.deltaTime;
        }

        if (currentTimeToStayOpen < 0)
        {
            //User Wins
            currentStage = MonsterStages.UserWin;
        }

        if (timeForUserToLose < 0)
        {
            //User Loses
            currentStage = MonsterStages.DoorOpen;
        }
    }