UnityGameProjectsCode / AbandondedGame / SpookManager.cs
SpookManager.cs
Raw
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpookManager : MonoBehaviour
{
    private List<GameObject> spookLightTriggers = new List<GameObject>();
    private List<GameObject> spookAudioTriggers = new List<GameObject>();
    private List<GameObject> spookSoundSources = new List<GameObject>();
    private List<GameObject> spookLightSources = new List<GameObject>();

    private bool lightsEnabled;
    private bool soundsEnabled;

    private void Awake()
    {
        foreach(Transform child in GetComponentsInChildren<Transform>())
        {
            if (child.name.Contains("Spook Trigger"))
            {
                TriggerSpook spookComponent = child.gameObject.GetComponent<TriggerSpook>();

                if (spookComponent.audioSpook)
                {
                    spookSoundSources.Add(spookComponent.aSource.gameObject);
                    spookAudioTriggers.Add(child.gameObject);
                    child.gameObject.SetActive(false);
                    spookComponent.aSource.gameObject.SetActive(false);
                }

                if (spookComponent.lightSpook)
                {
                    spookLightSources.Add(spookComponent.lightSource);
                    spookLightTriggers.Add(child.gameObject);
                    child.gameObject.SetActive(false);
                    spookComponent.lightSource.SetActive(false);
                }
            }
        }
    }

    public void EnableSoundSpooks()
    {
        for (int i = 0; i < spookAudioTriggers.Count; i++)
        {
            spookAudioTriggers[i].SetActive(true);
        }

        for (int i = 0; i < spookSoundSources.Count; i++)
        {
            spookSoundSources[i].SetActive(true);
        }

        soundsEnabled = true;
    }

    public void EnableLightSpooks()
    {
        for (int i = 0; i < spookLightTriggers.Count; i++)
        {
            spookLightTriggers[i].SetActive(true);
        }

        for (int i = 0; i < spookLightSources.Count; i++)
        {
            spookLightSources[i].SetActive(true);
        }

        lightsEnabled = true;
    }

    public bool GetSoundSpooksState()
    {
        return soundsEnabled;
    }

    public bool GetLightSpooksState()
    {
        return lightsEnabled;
    }

    public void OnGameReset()
    {
        for (int i = 0; i < spookLightTriggers.Count; i++)
        {
            spookLightTriggers[i].SetActive(false);
            spookLightTriggers[i].GetComponent<TriggerSpook>().ResetSpook();
        }

        for (int i = 0; i < spookLightSources.Count; i++)
        {
            spookLightSources[i].SetActive(false);
        }

        lightsEnabled = false;

        for (int i = 0; i < spookAudioTriggers.Count; i++)
        {
            spookAudioTriggers[i].SetActive(false);
            spookAudioTriggers[i].GetComponent<TriggerSpook>().ResetSpook();
        }

        for (int i = 0; i < spookSoundSources.Count; i++)
        {
            spookSoundSources[i].SetActive(false);
        }

        soundsEnabled = false;
    }
}