Initial card audio

This commit is contained in:
2025-11-19 15:51:54 +01:00
parent fee5515bbd
commit a432fd45bd
56 changed files with 1102 additions and 8 deletions

View File

@@ -444,6 +444,13 @@ namespace UI.CardSystem
// Generate the impulse with strength 1 and random velocity
impulseSource.GenerateImpulse(randomVelocity);
}
// Cycle through audio clips depending on how much the booster was tapped
if (currentTaps <= maxTaps)
{
AudioManager.Instance.LoadAndPlayUIAudio($"buildup_loop{currentTaps}",true);
}
}
/// <summary>
@@ -468,6 +475,9 @@ namespace UI.CardSystem
// Play the particle system
openingParticleSystem.Play();
}
// Play fanfare audio clio
AudioManager.Instance.LoadAndPlayUIAudio("Fanfare",false);
}
/// <summary>

View File

@@ -1,12 +1,16 @@
using UnityEngine;
using UnityEngine.Audio;
using AppleHills.Core;
using AppleHills.Core.Interfaces;
using System.Collections.Generic;
using AudioSourceEvents;
using System;
using Core;
using Core.Lifecycle;
using System;
using System.Collections.Generic;
using UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Audio;
using UnityEngine.Playables;
using UnityEngine.ResourceManagement.AsyncOperations;
public class AudioManager : ManagedBehaviour, IPausable
{
@@ -32,6 +36,12 @@ public class AudioManager : ManagedBehaviour, IPausable
public List<AppleAudioSource> ambienceSources;
public List<AppleAudioSource> SFXSources;
public AppleAudioSource uiAudioSource;
public AppleAudioSource uiMusicSource;
// Dictionary to track addressable handles by AudioManager
private Dictionary<AppleAudioSource, AsyncOperationHandle<AudioResource>> _addressableHandles
= new Dictionary<AppleAudioSource, AsyncOperationHandle<AudioResource>>();
private IAudioEventSource _eventSource;
private bool wasInterrupted;
@@ -212,7 +222,7 @@ public class AudioManager : ManagedBehaviour, IPausable
private void OnApplicationQuit()
{
// TODO: Release the handles safely ReleaseAllHandles();
ReleaseAllHandles();
}
private void SetupNewAudioSource(AppleAudioSource audioSource)
@@ -284,4 +294,54 @@ public class AudioManager : ManagedBehaviour, IPausable
}
}
public void LoadAndPlayUIAudio(string key, bool isMusic)
{
var _targetAudioPlayer = uiAudioSource;
if (isMusic)
{
_targetAudioPlayer = uiMusicSource;
}
// Load the asset via addressables
var handle = Addressables.LoadAssetAsync<AudioResource>(key);
var result = handle.WaitForCompletion();
// Store the handle for later release
_addressableHandles[uiAudioSource] = handle;
Logging.Debug($"[CinematicsManager] Loaded addressable UI audio clip: {key}");
_targetAudioPlayer.audioSource.resource = result;
_targetAudioPlayer.Play(0);
}
/// <summary>
/// Releases all active addressable handles
/// </summary>
private void ReleaseAllHandles()
{
foreach (var handle in _addressableHandles.Values)
{
if (handle.IsValid())
{
Addressables.Release(handle);
}
}
_addressableHandles.Clear();
}
private void OnEnable()
{
// Subscribe to application quit event to ensure cleanup
Application.quitting += OnApplicationQuit;
}
private void OnDisable()
{
// Unsubscribe from application quit event
Application.quitting -= OnApplicationQuit;
// Clean up any remaining addressable handles when disabled
ReleaseAllHandles();
}
}

View File

@@ -0,0 +1,18 @@
using Core.Lifecycle;
using UnityEngine;
public class UIAudio : ManagedBehaviour
{
public AppleAudioSource uiAudioSource;
[Header("Card audio clips")]
public AudioClip buildup1;
public AudioClip buildup2;
public AudioClip buildup3;
public AudioClip fanfare;
internal override void OnManagedStart()
{
uiAudioSource = GetComponent<AppleAudioSource>();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 028994d903ad5194f8e5fc0e5a580661