Add initial project files and configurations for Unity setup

This commit is contained in:
2025-12-12 22:04:14 +01:00
commit b6106cf82b
205 changed files with 79202 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
using System;
using KBCore.Refs;
using UnityEngine;
namespace Infrastructure.Unity
{
[RequireComponent(typeof(AudioSource))]
public class SoundManager : MonoBehaviour
{
[Header("Music")]
[SerializeField] private AudioClip bgMusicClip;
[Header("Sound Effects")]
[SerializeField] private AudioClip startClip;
[SerializeField] private AudioClip scoreClip;
[SerializeField] private AudioClip gameOverClip;
[SerializeField] private AudioClip tileWarningClip;
[SerializeField] private AudioClip tileBreakClip;
[Self] [SerializeField] private AudioSource musicSource;
[Self] [SerializeField] private AudioSource sfxSource;
private void Awake()
{
musicSource.loop = true;
musicSource.playOnAwake = false;
}
public void PlayMusic()
{
if (!bgMusicClip) return;
musicSource.clip = bgMusicClip;
musicSource.Play();
}
public void StopMusic()
{
musicSource.Stop();
}
public void PlayGameStart() => PlaySfx(startClip);
public void PlayScore() => PlaySfx(scoreClip);
public void PlayGameOver() => PlaySfx(gameOverClip);
public void PlayTileBreak(Vector3 position)
{
if (!tileBreakClip) return;
AudioSource.PlayClipAtPoint(tileBreakClip, position, 1f);
}
public void PlayTileWarning(Vector3 position)
{
if (!tileWarningClip) return;
AudioSource.PlayClipAtPoint(tileWarningClip, position, 0.5f);
}
private void PlaySfx(AudioClip clip)
{
if (!clip) return;
sfxSource.PlayOneShot(clip);
}
}
}