summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/LevelAudio.cs
blob: 0ced3a97ba9d7dcb124f7bf161be7eb1faedc57e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using System.Collections.Generic;
using UnityEngine;

public class LevelAudio : MonoBehaviour
{
	[Serializable]
	public class CivilisationAudioSource
	{
		public AudioSource audioSource;

		public float volumeAtCastleCenterBuild = 0.1f;

		public float targetVolume;

		public int targetBuildingAmount;
	}

	public List<CivilisationAudioSource> managedCivAudioSources;

	private int buildingCount;

	private void OnValidate()
	{
		foreach (CivilisationAudioSource managedCivAudioSource in managedCivAudioSources)
		{
			if (managedCivAudioSource.audioSource != null)
			{
				managedCivAudioSource.targetVolume = managedCivAudioSource.audioSource.volume;
			}
		}
	}

	private void Start()
	{
		for (int num = managedCivAudioSources.Count - 1; num >= 0; num--)
		{
			CivilisationAudioSource civilisationAudioSource = managedCivAudioSources[num];
			if (civilisationAudioSource.audioSource == null)
			{
				managedCivAudioSources.RemoveAt(num);
			}
			else
			{
				civilisationAudioSource.targetVolume = civilisationAudioSource.audioSource.volume;
				civilisationAudioSource.audioSource.volume = 0f;
			}
		}
		ThronefallAudioManager.Instance.onBuildingBuild.AddListener(OnNewBuildingBuilt);
	}

	private void OnNewBuildingBuilt()
	{
		for (int num = managedCivAudioSources.Count - 1; num >= 0; num--)
		{
			CivilisationAudioSource civilisationAudioSource = managedCivAudioSources[num];
			civilisationAudioSource.audioSource.volume = Mathf.Lerp(civilisationAudioSource.volumeAtCastleCenterBuild, civilisationAudioSource.targetVolume, Mathf.InverseLerp(0f, civilisationAudioSource.targetBuildingAmount, buildingCount));
			if (buildingCount >= civilisationAudioSource.targetBuildingAmount)
			{
				managedCivAudioSources.RemoveAt(num);
			}
		}
		buildingCount++;
		if (managedCivAudioSources.Count < 1)
		{
			ThronefallAudioManager.Instance.onBuildingBuild.RemoveListener(OnNewBuildingBuilt);
		}
	}
}