namespace Wizard; public class BGMManager { private Bgm.BGM_TYPE _nextPlayBGM; private readonly Bgm.BGM_TYPE[] BATTLE_LIST = new Bgm.BGM_TYPE[2] { Bgm.BGM_TYPE.BATTLE, Bgm.BGM_TYPE.SYS_WIN_LOOP }; private readonly Bgm.BGM_TYPE[] ARENA_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.BATTLE_STANDBY }; private readonly Bgm.BGM_TYPE[] COLOSSEUM_FINAL_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.COLOSSEUM_FINAL }; private readonly Bgm.BGM_TYPE[] GRAND_PRIX_SPECIAL_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.GRANDPRIX_SPECIAL }; private readonly Bgm.BGM_TYPE[] GRAND_PRIX_SPECIAL_FINAL_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.GRANDPRIX_SPECIAL_FINAL }; private readonly Bgm.BGM_TYPE[] SEALED_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.SEALED }; private readonly Bgm.BGM_TYPE[] QUEST_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.QUEST }; private readonly Bgm.BGM_TYPE[] TITLE_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.TITLE }; private readonly Bgm.BGM_TYPE[] HOME_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.HOME }; private readonly Bgm.BGM_TYPE[] COMPETITION_LOBBY_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.COMPETITION_LOBBY }; private readonly Bgm.BGM_TYPE[] BINGO_LIST = new Bgm.BGM_TYPE[1] { Bgm.BGM_TYPE.BINGO }; private static BGMManager _instance; public static BGMManager Instance { get { if (_instance == null) { _instance = new BGMManager(); } return _instance; } } public static void Dispose() { if (_instance != null) { _instance = null; } } private BGMManager() { } public void RegistBgmByScene(UIManager.ViewScene currentScene, UIManager.ViewScene nextScene, UIManager.ChangeViewSceneParam param) { Bgm.BGM_TYPE[] nowBgmList = GetBgmList(currentScene); Bgm.BGM_TYPE[] bgmList = GetBgmList(nextScene); if (nowBgmList == bgmList && currentScene != UIManager.ViewScene.Battle && nextScene != UIManager.ViewScene.Battle) { return; } SoundMgr soundMgr = GameMgr.GetIns().GetSoundMgr(); if (bgmList != null) { _nextPlayBGM = bgmList[0]; for (int i = 0; i < bgmList.Length; i++) { UIManager.GetInstance().Increment_LockCountChangeView(); soundMgr.LoadBGM(bgmList[i], delegate { UIManager.GetInstance().Decrement_LockCountChangeView(); }); } } if (nowBgmList == null) { return; } UIManager.GetInstance().Increment_LockCountChangeView(); soundMgr.StopBGM(delegate { for (int j = 0; j < nowBgmList.Length; j++) { soundMgr.UnloadBGM(nowBgmList[j]); } UIManager.GetInstance().Decrement_LockCountChangeView(); }); } public void OnChangeSceneStart() { _nextPlayBGM = Bgm.BGM_TYPE.NONE; } public void OnUnLockUIManager() { GameMgr.GetIns().GetSoundMgr().PlayBGM(_nextPlayBGM); } private Bgm.BGM_TYPE[] GetBgmList(UIManager.ViewScene scene) { switch (scene) { case UIManager.ViewScene.Battle: return BATTLE_LIST; case UIManager.ViewScene.TwoPick: return ARENA_LIST; case UIManager.ViewScene.Sealed: case UIManager.ViewScene.SealedDeckEdit: return SEALED_LIST; case UIManager.ViewScene.QuestSelectionPage: return QUEST_LIST; case UIManager.ViewScene.SealedCardPackOpen: return null; case UIManager.ViewScene.BossRushLobby: return GRAND_PRIX_SPECIAL_LIST; case UIManager.ViewScene.Colosseum: { ArenaColosseum colosseumData = Data.ArenaData.ColosseumData; if (colosseumData.GetStageNoFromRoundId(colosseumData.Round) == ArenaColosseum.eStageNo.FinalStage) { return COLOSSEUM_FINAL_LIST; } return ARENA_LIST; } case UIManager.ViewScene.Title: case UIManager.ViewScene.Prologue: case UIManager.ViewScene.Ending: case UIManager.ViewScene.LoginBonus: case UIManager.ViewScene.FreePackCampaign: return TITLE_LIST; case UIManager.ViewScene.Scenario: case UIManager.ViewScene.Scenario2: return null; case UIManager.ViewScene.Competition2Pick: case UIManager.ViewScene.CompetitionLobby: return COMPETITION_LOBBY_LIST; case UIManager.ViewScene.Bingo: return BINGO_LIST; default: return HOME_LIST; } } }