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);
}
}
}
|