Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions Assets/Audio/Audio Manager.asset

This file was deleted.

43 changes: 35 additions & 8 deletions Assets/Audio/AudioManager.cs
Original file line number Diff line number Diff line change
@@ -1,36 +1,63 @@
using FMOD.Studio;
using FMODUnity;
using System;
using Settings.Bundles;
using UnityEngine;
using UnityEngine.SceneManagement;
using Utils;

namespace Audio {
public class AudioManager : ScriptableObject {
public class AudioManager : MonoBehaviour {
[Inject] [SerializeField] private AudioSettingsBundle _bundle;

[SerializeField] private FMODEventInstance _ambienceAudio;
[SerializeField] private FMODParameterInstance _ambienceSceneParam;

private VCA _masterVca;
private VCA _musicVca;
private VCA _sfxVca;

private void OnEnable() {
#if UNITY_EDITOR
if (!Application.isPlaying) {
return;
}
#endif
_ambienceAudio.Setup();
_ambienceSceneParam.Setup();

RuntimeManager.StudioSystem.getVCA("vca:/Master", out _masterVca);
RuntimeManager.StudioSystem.getVCA("vca:/Music", out _musicVca);
RuntimeManager.StudioSystem.getVCA("vca:/SFX", out _sfxVca);

_bundle.MasterVolume.Changed += HandleMasterVolumeChanged;
_bundle.MusicVolume.Changed += HandleMusicVolumeChanged;
_bundle.SfxVolume.Changed += HandleSfxVolumeChanged;
}

private void OnDisable() {
_ambienceAudio.Release();

_bundle.MasterVolume.Changed -= HandleMasterVolumeChanged;
_bundle.MusicVolume.Changed -= HandleMusicVolumeChanged;
_bundle.MusicVolume.Changed -= HandleMusicVolumeChanged;
}

public void PlayAmbience() {
if (_ambienceAudio.IsInitialized) {
_ambienceSceneParam.CurrentValue = SceneManager.GetActiveScene().buildIndex;
_ambienceSceneParam.CurrentValue =
SceneManager.GetActiveScene().buildIndex;
_ambienceAudio.Instance.getPlaybackState(out var state);
if (state == PLAYBACK_STATE.STOPPED) {
_ambienceAudio.Play();
}
}
}

private void HandleMasterVolumeChanged(int value) {
_masterVca.setVolume(value / 100f);
}

private void HandleMusicVolumeChanged(int value) {
_musicVca.setVolume(value / 100f);
}

private void HandleSfxVolumeChanged(int value) {
_sfxVca.setVolume(value / 100f);
}
}
}
2 changes: 1 addition & 1 deletion Assets/Framework/GameManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Framework {
public class GameManager : MonoBehaviour {
[Inject] public MenuMode MenuMode;
[Inject] public StoryMode StoryMode;
[Inject] public AudioManager Audio;
public AudioManager Audio;

private GameMode _currentMode;
private GameMode _switchingTo;
Expand Down
20 changes: 19 additions & 1 deletion Assets/Scenes/App.unity

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions Assets/Settings/Bundles/AudioSettingsBundle.asset

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions Assets/Settings/Bundles/AudioSettingsBundle.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using UnityEngine;

namespace Settings.Bundles {
public class AudioSettingsBundle : ScriptableObject {
public SettingProperty MasterVolume;
public SettingProperty MusicVolume;
public SettingProperty SfxVolume;

private void OnEnable() {
MasterVolume = new SettingProperty("masterVolume", 100);
MusicVolume = new SettingProperty("musicVolume", 100);
SfxVolume = new SettingProperty("sfxVolume", 100);
}
}
}
3 changes: 3 additions & 0 deletions Assets/Settings/Bundles/AudioSettingsBundle.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

66 changes: 64 additions & 2 deletions Assets/View/Prefabs/Settings.prefab

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 31 additions & 0 deletions Assets/View/Settings/AudioSettingsView.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Settings.Bundles;
using UnityEngine;
using Utils;
using View.Controls;

namespace View.Settings {
[DefaultExecutionOrder(100)]
public class AudioSettingsView : MonoBehaviour {
[Inject] [SerializeField] private AudioSettingsBundle _bundle;

[SerializeField] private PaperSlider _masterVolume;
[SerializeField] private PaperSlider _musicVolume;
[SerializeField] private PaperSlider _sfxVolume;

private void OnEnable() {
_masterVolume.Value = _bundle.MasterVolume.Get();
_musicVolume.Value = _bundle.MusicVolume.Get();
_sfxVolume.Value = _bundle.SfxVolume.Get();

_masterVolume.ValueChanged += _bundle.MasterVolume.Set;
_musicVolume.ValueChanged += _bundle.MusicVolume.Set;
_sfxVolume.ValueChanged += _bundle.SfxVolume.Set;
}

private void OnDisable() {
_masterVolume.ValueChanged -= _bundle.MasterVolume.Set;
_musicVolume.ValueChanged -= _bundle.MusicVolume.Set;
_sfxVolume.ValueChanged -= _bundle.SfxVolume.Set;
}
}
}
3 changes: 3 additions & 0 deletions Assets/View/Settings/AudioSettingsView.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Assets/View/Settings/GameplaySettingsView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using View.Controls;

namespace View.Settings {
[DefaultExecutionOrder(100)]
public class GameplaySettingsView : MonoBehaviour {
[Inject] [SerializeField] private GameplaySettingsBundle _bundle;

Expand Down
1 change: 1 addition & 0 deletions Assets/View/Settings/VideoSettingsView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using View.Controls;

namespace View.Settings {
[DefaultExecutionOrder(100)]
public class VideoSettingsView : MonoBehaviour {
[Inject] [SerializeField] private VideoSettingsBundle _bundle;

Expand Down