diff --git a/Assets/Resources/Data/MusicData.asset b/Assets/Resources/Data/MusicData.asset index a9410774..e51f20a4 100644 --- a/Assets/Resources/Data/MusicData.asset +++ b/Assets/Resources/Data/MusicData.asset @@ -12,7 +12,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ad850cd32937403f853eb6043fd04112, type: 3} m_Name: MusicData m_EditorClassIdentifier: + _settingsDataPath: /Resources/JSONData/Settings.json startMusic: {fileID: 0} backMusic: {fileID: 0} sfxMusic: - _step: {fileID: 8300000, guid: db2b24c43cc41514b85fb4a4950c1299, type: 3} + steps: + - {fileID: 8300000, guid: db2b24c43cc41514b85fb4a4950c1299, type: 3} + - {fileID: 8300000, guid: 14662fc30f12b7847929c0d90295de95, type: 3} + - {fileID: 8300000, guid: ed81a29d95a7c6843855e95917ff40ed, type: 3} diff --git a/Assets/Resources/JSONData/Settings.json b/Assets/Resources/JSONData/Settings.json index aed92b52..66077129 100644 --- a/Assets/Resources/JSONData/Settings.json +++ b/Assets/Resources/JSONData/Settings.json @@ -1 +1 @@ -{"isMusicAllowed":true,"isSFXAllowed":false} \ No newline at end of file +{"isMusicAllowed":true,"isSFXAllowed":true} \ No newline at end of file diff --git a/Assets/Scripts/Controller/GameInit.cs b/Assets/Scripts/Controller/GameInit.cs index 50baee38..22f42b41 100644 --- a/Assets/Scripts/Controller/GameInit.cs +++ b/Assets/Scripts/Controller/GameInit.cs @@ -19,7 +19,7 @@ namespace Controller new MusicController(); MusicController.Instance.SetMusicData(data.MusicData); controllers.Add(hexGrid); - hexGrid.OnHexPainted += DoSomething; + UIController uiController = new UIController(data.UIData); uiController.Spawn(); @@ -29,7 +29,7 @@ namespace Controller { if (unit.isPlayer) { - player = new Unit(unit, JsonUtility.FromJson(data.ChosenWeapon.text), hexGrid); + player = new Unit(unit, JsonUtility.FromJson(data.ChosenWeapon), hexGrid); PlayerControl playerControl = new PlayerControl(player, uiController.PlayerControlView); controllers.Add(playerControl); CameraControl cameraControl = @@ -54,9 +54,6 @@ namespace Controller hexGrid.OnGridLoaded += unitFactory.Spawn; } - private void DoSomething(HexCell cell) - { - Debug.Log("Painted! " + cell.coordinates); - } + } } \ No newline at end of file diff --git a/Assets/Scripts/Data/Data.cs b/Assets/Scripts/Data/Data.cs index 9eb401bf..850b9895 100644 --- a/Assets/Scripts/Data/Data.cs +++ b/Assets/Scripts/Data/Data.cs @@ -20,9 +20,9 @@ namespace Data private UIData _uiData; [SerializeField] private string musicDataPath; private MusicData _musicData; - [SerializeField] private TextAsset chosenWeapon; + [SerializeField] private string chosenWeaponDataPath; - public TextAsset ChosenWeapon => chosenWeapon; + public string ChosenWeapon => File.ReadAllText(Application.dataPath + chosenWeaponDataPath); public MusicData MusicData { diff --git a/Assets/Scripts/Data/MusicData.cs b/Assets/Scripts/Data/MusicData.cs index cb2ffd08..5ac359b3 100644 --- a/Assets/Scripts/Data/MusicData.cs +++ b/Assets/Scripts/Data/MusicData.cs @@ -1,12 +1,17 @@ using System; +using System.Collections.Generic; +using System.IO; +using MainMenu; using MK.Toon; using UnityEngine; +using AudioSettings = MainMenu.AudioSettings; namespace Data { [CreateAssetMenu(fileName = "MusicData", menuName = "Data/MusicData", order = 0)] public class MusicData : ScriptableObject { + [SerializeField] private string _settingsDataPath; [SerializeField] private AudioClip startMusic; [SerializeField] private AudioClip backMusic; [SerializeField] private SFXMusic sfxMusic; @@ -14,13 +19,15 @@ namespace Data public AudioClip StartMusic => startMusic; public AudioClip BackMusic => backMusic; public SFXMusic SfxMusic => sfxMusic; + + public AudioSettings Settings => JsonUtility.FromJson(File.ReadAllText(Application.dataPath + _settingsDataPath)); } [Serializable] public struct SFXMusic { - [SerializeField] private AudioClip _step; + [SerializeField] private List steps; - public AudioClip Step => _step; + public List Step => steps; } } \ No newline at end of file diff --git a/Assets/Scripts/MainMenu/Settings.cs b/Assets/Scripts/MainMenu/AudioSettings.cs similarity index 78% rename from Assets/Scripts/MainMenu/Settings.cs rename to Assets/Scripts/MainMenu/AudioSettings.cs index 3d3b2467..cec87ff2 100644 --- a/Assets/Scripts/MainMenu/Settings.cs +++ b/Assets/Scripts/MainMenu/AudioSettings.cs @@ -4,12 +4,12 @@ using DefaultNamespace; namespace MainMenu { [Serializable] - public class Settings + public class AudioSettings { public bool isMusicAllowed; public bool isSFXAllowed; - public Settings(GameMenuData data) + public AudioSettings(GameMenuData data) { isMusicAllowed = data.isMusicAllowed; isSFXAllowed = data.isMusicAllowed; diff --git a/Assets/Scripts/MainMenu/Settings.cs.meta b/Assets/Scripts/MainMenu/AudioSettings.cs.meta similarity index 100% rename from Assets/Scripts/MainMenu/Settings.cs.meta rename to Assets/Scripts/MainMenu/AudioSettings.cs.meta diff --git a/Assets/Scripts/MainMenu/SettingsController.cs b/Assets/Scripts/MainMenu/SettingsController.cs index a05b7b9a..eff7a64e 100644 --- a/Assets/Scripts/MainMenu/SettingsController.cs +++ b/Assets/Scripts/MainMenu/SettingsController.cs @@ -4,6 +4,7 @@ using DG.Tweening; using MainMenu; using UnityEngine; using UnityEngine.UI; +using AudioSettings = MainMenu.AudioSettings; public class SettingsController : MonoBehaviour { @@ -17,7 +18,7 @@ public class SettingsController : MonoBehaviour private bool _isActive = false; private bool _isMusicAllowed = true; private bool _isSFXAllowed = true; - private Settings _settings; + private AudioSettings _audioSettings; private Vector3 defailtPosition; private void Start() @@ -25,11 +26,11 @@ public class SettingsController : MonoBehaviour dataFilePath = Application.dataPath + dataFilePath; if(File.Exists(dataFilePath)) - _settings = JsonUtility.FromJson(File.ReadAllText(dataFilePath)); + _audioSettings = JsonUtility.FromJson(File.ReadAllText(dataFilePath)); else { - _settings = new Settings(GameData); - File.WriteAllText(dataFilePath, JsonUtility.ToJson(_settings)); + _audioSettings = new AudioSettings(GameData); + File.WriteAllText(dataFilePath, JsonUtility.ToJson(_audioSettings)); } defailtPosition = transform.position; @@ -39,8 +40,8 @@ public class SettingsController : MonoBehaviour private void UpdateVisuals() { - musImg.sprite = _settings.isMusicAllowed ? musOnSpr : musOffSpr; - sfxImg.sprite = _settings.isSFXAllowed ? sfxOnSpr : sfxOffSpr; + musImg.sprite = _audioSettings.isMusicAllowed ? musOnSpr : musOffSpr; + sfxImg.sprite = _audioSettings.isSFXAllowed ? sfxOnSpr : sfxOffSpr; } public void OnSettingsBtnClick() @@ -56,22 +57,22 @@ public class SettingsController : MonoBehaviour public void OnMusicBtnClick() { - _settings.isMusicAllowed = !_settings.isMusicAllowed; - musImg.sprite = _settings.isMusicAllowed ? musOnSpr : musOffSpr; + _audioSettings.isMusicAllowed = !_audioSettings.isMusicAllowed; + musImg.sprite = _audioSettings.isMusicAllowed ? musOnSpr : musOffSpr; SetMenuMusicState(); - File.WriteAllText(dataFilePath, JsonUtility.ToJson(_settings)); + File.WriteAllText(dataFilePath, JsonUtility.ToJson(_audioSettings)); } public void OnSFXBtnClick() { - _settings.isSFXAllowed = !_settings.isSFXAllowed; - sfxImg.sprite = _settings.isSFXAllowed ? sfxOnSpr : sfxOffSpr; - File.WriteAllText(dataFilePath, JsonUtility.ToJson(_settings)); + _audioSettings.isSFXAllowed = !_audioSettings.isSFXAllowed; + sfxImg.sprite = _audioSettings.isSFXAllowed ? sfxOnSpr : sfxOffSpr; + File.WriteAllText(dataFilePath, JsonUtility.ToJson(_audioSettings)); } private void SetMenuMusicState() { - if (_settings.isMusicAllowed) + if (_audioSettings.isMusicAllowed) { menuMusSRC.Play(); } diff --git a/Assets/Scripts/MusicController.cs b/Assets/Scripts/MusicController.cs index e0ab893d..f513261e 100644 --- a/Assets/Scripts/MusicController.cs +++ b/Assets/Scripts/MusicController.cs @@ -20,7 +20,7 @@ namespace DefaultNamespace Instance ??= this; _sources = new Dictionary(); } - + public void SetMusicData(MusicData data) { _data = data; @@ -29,6 +29,7 @@ namespace DefaultNamespace public void PlayerAudioClip(AudioClip clip, GameObject source) { _sources[source].clip = clip; + _sources[source].volume = _data.Settings.isSFXAllowed ? 1f : 0f; _sources[source].Play(); } @@ -39,10 +40,6 @@ namespace DefaultNamespace public void AddAudioSource(GameObject gameObject) { - if (_sources.ContainsKey(new GameObject(null))) - { - _sources.Remove(new GameObject(null)); - } var source = gameObject.AddComponent(); _sources.Add(gameObject, source); } diff --git a/Assets/Scripts/Units/Views/UnitView.cs b/Assets/Scripts/Units/Views/UnitView.cs index e49ab15e..f8d75685 100644 --- a/Assets/Scripts/Units/Views/UnitView.cs +++ b/Assets/Scripts/Units/Views/UnitView.cs @@ -10,6 +10,8 @@ using TMPro; using UnityEngine; using UnityEngine.UI; using Weapons; +using Random = UnityEngine.Random; + public class UnitView : MonoBehaviour { @@ -45,8 +47,6 @@ public class UnitView : MonoBehaviour _startRegen = regenMana; _manaRegen = manaRegen; _capureHex = captureHex; - - } public void HardCaptureHex() @@ -97,7 +97,9 @@ public class UnitView : MonoBehaviour private void Step() { OnStep?.Invoke(); - MusicController.Instance.PlayerAudioClip(MusicController.Instance.MusicData.SfxMusic.Step, gameObject); + MusicController.Instance.PlayerAudioClip( + MusicController.Instance.MusicData.SfxMusic.Step[ + Random.Range(0, MusicController.Instance.MusicData.SfxMusic.Step.Count - 1)], gameObject); } private void AttackEnd()