Files
SVSimServer/SVSim.BattleEngine/Engine/Bgm.cs
gamer147 0d9d8acae0 feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
2026-06-05 16:57:20 -04:00

220 lines
5.5 KiB
C#

using System;
using System.Collections.Generic;
using CriWare;
using Cute;
using Wizard;
public class Bgm
{
public enum BGM_TYPE
{
NONE,
TITLE,
TITLE_SPECIAL_1,
TITLE_SPECIAL_2,
HOME,
BATTLE_STANDBY,
BATTLE,
SYS_WIN_LOOP,
SYS_LOSE_LOOP,
COLOSSEUM_FINAL,
GRANDPRIX_SPECIAL,
GRANDPRIX_SPECIAL_FINAL,
SEALED,
QUEST,
COMPETITION_LOBBY,
BINGO,
MAX
}
private class BgmInfo
{
public string CueName { get; private set; }
public string CueSheet { get; private set; }
public BgmInfo(string cueName, string cueSheet)
{
CueName = cueName;
CueSheet = cueSheet;
}
}
private const string CATEGORY_NAME = "BGM";
private Dictionary<BGM_TYPE, BgmInfo> m_AudioData;
private string m_PlayBgmCueName;
private int m_CurrentBgmIdx;
private int m_MaxBgmCount;
private float m_volume;
private bool m_isMuted;
public Bgm()
{
m_AudioData = new Dictionary<BGM_TYPE, BgmInfo>();
m_PlayBgmCueName = null;
m_CurrentBgmIdx = 0;
m_MaxBgmCount = Toolbox.AudioManager.GetBgmMaxCount();
SetVolume(PlayerPrefsWrapper.GetValue(PlayerPrefsWrapper.BGM_VOLUME));
Mute(PlayerPrefsWrapper.GetBool(PlayerPrefsWrapper.SOUND_MUTE));
}
public void AddList(BGM_TYPE BgmType, string cueName, string cueSheet = null)
{
if (!m_AudioData.ContainsKey(BgmType))
{
m_AudioData.Add(BgmType, new BgmInfo(cueName, (cueSheet == null) ? cueName : cueSheet));
}
}
public void RemoveList(BGM_TYPE BgmType)
{
if (m_AudioData.ContainsKey(BgmType))
{
m_AudioData.Remove(BgmType);
}
}
public virtual void Play(BGM_TYPE BgmType, float FadeTime = 0f, long startTime = 0L)
{
if (BgmType != BGM_TYPE.NONE)
{
BgmInfo bgmInfo = m_AudioData[BgmType];
string cueSheet = bgmInfo.CueSheet;
m_PlayBgmCueName = bgmInfo.CueName;
Toolbox.AudioManager.PlayBgmFromName(cueSheet, m_PlayBgmCueName, cueSheet, cueSheet, m_CurrentBgmIdx, loop: false, FadeTime, 0f, startTime);
}
}
public virtual void PlayCrossFade(BGM_TYPE BgmType, float fadeOutTime, float fadeInTime, long startTime)
{
if (BgmType != BGM_TYPE.NONE)
{
BgmInfo bgmInfo = m_AudioData[BgmType];
string cueSheet = bgmInfo.CueSheet;
m_PlayBgmCueName = bgmInfo.CueName;
Toolbox.AudioManager.StopFadeBgm(m_CurrentBgmIdx, fadeOutTime);
m_CurrentBgmIdx = (m_CurrentBgmIdx + 1) % m_MaxBgmCount;
Toolbox.AudioManager.PlayBgmFromName(cueSheet, m_PlayBgmCueName, cueSheet, cueSheet, m_CurrentBgmIdx, loop: false, fadeInTime, 0f, startTime);
}
}
public virtual void PlayFadeOut(BGM_TYPE BgmType, float FadeOutTime = 0f, float FadeInTime = 0f)
{
Toolbox.AudioManager.StopFadeBgm(m_CurrentBgmIdx, FadeOutTime);
if (BgmType != BGM_TYPE.NONE)
{
m_CurrentBgmIdx = (m_CurrentBgmIdx + 1) % m_MaxBgmCount;
BgmInfo bgmInfo = m_AudioData[BgmType];
string cueSheet = bgmInfo.CueSheet;
m_PlayBgmCueName = bgmInfo.CueName;
Toolbox.AudioManager.PlayBgmFromName(cueSheet, m_PlayBgmCueName, cueSheet, cueSheet, m_CurrentBgmIdx, loop: false, FadeInTime, FadeOutTime, 0L);
}
}
public virtual void Play(string cuename, float fadeInTime, long startTime)
{
if (IsPreInstall(cuename, out var type))
{
Play(type, fadeInTime, startTime);
return;
}
m_PlayBgmCueName = cuename;
Toolbox.AudioManager.PlayBgmFromName(cuename, cuename, cuename, cuename, m_CurrentBgmIdx, loop: false, fadeInTime, 0f, startTime);
}
public virtual void PlayCrossFade(string cuename, float fadeOutTime, float fadeInTime, long startTime)
{
if (IsPreInstall(cuename, out var type))
{
PlayCrossFade(type, fadeOutTime, fadeInTime, startTime);
return;
}
m_PlayBgmCueName = cuename;
Toolbox.AudioManager.StopFadeBgm(m_CurrentBgmIdx, fadeOutTime);
m_CurrentBgmIdx = (m_CurrentBgmIdx + 1) % m_MaxBgmCount;
Toolbox.AudioManager.PlayBgmFromName(cuename, cuename, cuename, cuename, m_CurrentBgmIdx, loop: false, fadeInTime, 0f, startTime);
}
public virtual void Pause()
{
for (int i = 0; i < m_MaxBgmCount; i++)
{
Toolbox.AudioManager.PauseBgm(isPause: true, i);
}
}
public virtual void Stop(float FadeTime, Action onStopped)
{
m_PlayBgmCueName = null;
AudioManager audioManager = Toolbox.AudioManager;
audioManager.StopFadeBgm(m_CurrentBgmIdx, FadeTime);
audioManager.StartCoroutine_DelayMethod(FadeTime, onStopped);
}
public virtual void StopAll(float FadeTime)
{
m_PlayBgmCueName = null;
for (int i = 0; i < m_MaxBgmCount; i++)
{
Toolbox.AudioManager.StopFadeBgm(i, FadeTime);
}
}
public bool IsPlayBGM(BGM_TYPE bgmType)
{
if (bgmType != BGM_TYPE.NONE)
{
return m_AudioData[bgmType].CueName == m_PlayBgmCueName;
}
return m_PlayBgmCueName != null;
}
public string GetCueSheet(BGM_TYPE bgmType)
{
return m_AudioData[bgmType].CueSheet;
}
public bool IsPreInstall(string cuename, out BGM_TYPE type)
{
foreach (KeyValuePair<BGM_TYPE, BgmInfo> audioDatum in m_AudioData)
{
BgmInfo value = audioDatum.Value;
if (value.CueName == cuename && value.CueSheet == SoundMgr.PREINSTALL_CUESHEET)
{
type = audioDatum.Key;
return true;
}
}
type = BGM_TYPE.NONE;
return false;
}
public void SetVolume(float Prm)
{
CriAtomExCategory.SetVolume("BGM", Prm);
m_volume = Prm;
}
public void Mute(bool isMute)
{
CriAtomExCategory.Mute("BGM", isMute);
m_isMuted = isMute;
}
public float GetVolume()
{
return m_volume;
}
public bool IsMuted()
{
return m_isMuted;
}
}