178 lines
6.4 KiB
C#
178 lines
6.4 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using AK.Wwise;
|
|
using Ichni.RhythmGame.Beatmap;
|
|
|
|
namespace Ichni.RhythmGame
|
|
{
|
|
public partial class NoteAudioSubmodule : SubmoduleBase
|
|
{
|
|
public List<string> generalJudgeAudioList;
|
|
public List<string> perfectAudioList;
|
|
public List<string> goodAudioList;
|
|
public List<string> badAudioList;
|
|
public List<string> missAudioList;
|
|
public List<string> holdStartAudioList;
|
|
|
|
private NoteBase note => attachedGameElement as NoteBase;
|
|
private AudioContainer audioContainer => note.audioContainer;
|
|
|
|
public NoteAudioSubmodule(NoteBase attachedGameElement, string defaultAudio) : base(attachedGameElement)
|
|
{
|
|
generalJudgeAudioList = new List<string>();
|
|
perfectAudioList = new List<string>();
|
|
goodAudioList = new List<string>();
|
|
badAudioList = new List<string>();
|
|
missAudioList = new List<string>();
|
|
holdStartAudioList = new List<string>();
|
|
|
|
generalJudgeAudioList.Add(defaultAudio);
|
|
|
|
if (!HaveSameSubmodule)
|
|
{
|
|
this.note.noteAudioSubmodule = this;
|
|
}
|
|
|
|
InitializeAudio();
|
|
}
|
|
|
|
public NoteAudioSubmodule(NoteBase attachedGameElement, List<string> generalJudgeAudioList,
|
|
List<string> perfectAudioList, List<string> goodAudioList, List<string> badAudioList,
|
|
List<string> missAudioList, List<string> holdStartAudioList) : base(attachedGameElement)
|
|
{
|
|
this.generalJudgeAudioList = generalJudgeAudioList;
|
|
this.perfectAudioList = perfectAudioList;
|
|
this.goodAudioList = goodAudioList;
|
|
this.badAudioList = badAudioList;
|
|
this.missAudioList = missAudioList;
|
|
this.holdStartAudioList = holdStartAudioList ?? new List<string>();
|
|
|
|
if (!HaveSameSubmodule)
|
|
{
|
|
this.note.noteAudioSubmodule = this;
|
|
}
|
|
|
|
InitializeAudio();
|
|
}
|
|
|
|
public void InitializeAudio()
|
|
{
|
|
Dictionary<string, Event> noteSounds = GameManager.instance.basePrefabs.noteSounds;
|
|
foreach (string audioName in generalJudgeAudioList.Where(audioName => noteSounds.ContainsKey(audioName)))
|
|
{
|
|
audioContainer.SoundEventDictionary[audioName] = noteSounds[audioName];
|
|
}
|
|
|
|
foreach (string audioName in perfectAudioList.Where(audioName => noteSounds.ContainsKey(audioName)))
|
|
{
|
|
audioContainer.SoundEventDictionary[audioName] = noteSounds[audioName];
|
|
}
|
|
|
|
foreach (string audioName in goodAudioList.Where(audioName => noteSounds.ContainsKey(audioName)))
|
|
{
|
|
audioContainer.SoundEventDictionary[audioName] = noteSounds[audioName];
|
|
}
|
|
|
|
foreach (string audioName in badAudioList.Where(audioName => noteSounds.ContainsKey(audioName)))
|
|
{
|
|
audioContainer.SoundEventDictionary[audioName] = noteSounds[audioName];
|
|
}
|
|
|
|
foreach (string audioName in missAudioList.Where(audioName => noteSounds.ContainsKey(audioName)))
|
|
{
|
|
audioContainer.SoundEventDictionary[audioName] = noteSounds[audioName];
|
|
}
|
|
|
|
foreach (string audioName in holdStartAudioList.Where(audioName => noteSounds.ContainsKey(audioName)))
|
|
{
|
|
audioContainer.SoundEventDictionary[audioName] = noteSounds[audioName];
|
|
}
|
|
}
|
|
}
|
|
|
|
public partial class NoteAudioSubmodule
|
|
{
|
|
public void PlayHoldStartAudio()
|
|
{
|
|
PlayAudio(holdStartAudioList);
|
|
}
|
|
|
|
public void PlayGeneralJudgeAudios()
|
|
{
|
|
PlayAudio(generalJudgeAudioList);
|
|
}
|
|
|
|
public void PlayNoteJudgeAudios(NoteBase.NoteJudgeType judgeType)
|
|
{
|
|
switch (judgeType)
|
|
{
|
|
case NoteBase.NoteJudgeType.Perfect:
|
|
PlayAudio(perfectAudioList);
|
|
break;
|
|
case NoteBase.NoteJudgeType.Good:
|
|
PlayAudio(goodAudioList);
|
|
break;
|
|
case NoteBase.NoteJudgeType.Bad:
|
|
PlayAudio(badAudioList);
|
|
break;
|
|
case NoteBase.NoteJudgeType.Miss:
|
|
PlayAudio(missAudioList);
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void PlayAudio(List<string> audioList)
|
|
{
|
|
foreach (string audio in audioList)
|
|
{
|
|
audioContainer.PlaySoundFX(audio, null, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public partial class NoteAudioSubmodule
|
|
{
|
|
public override void SaveBM()
|
|
{
|
|
matchedBM = new NoteAudioSubmodule_BM(attachedGameElement, this);
|
|
}
|
|
}
|
|
|
|
namespace Beatmap
|
|
{
|
|
public class NoteAudioSubmodule_BM : Submodule_BM
|
|
{
|
|
public List<string> generalJudgeAudioList;
|
|
public List<string> perfectAudioList;
|
|
public List<string> goodAudioList;
|
|
public List<string> badAudioList;
|
|
public List<string> missAudioList;
|
|
public List<string> holdStartAudioList;
|
|
|
|
public NoteAudioSubmodule_BM()
|
|
{
|
|
|
|
}
|
|
|
|
public NoteAudioSubmodule_BM(GameElement attachedElement, NoteAudioSubmodule noteAudioSubmodule) : base(attachedElement)
|
|
{
|
|
generalJudgeAudioList = noteAudioSubmodule.generalJudgeAudioList;
|
|
perfectAudioList = noteAudioSubmodule.perfectAudioList;
|
|
goodAudioList = noteAudioSubmodule.goodAudioList;
|
|
badAudioList = noteAudioSubmodule.badAudioList;
|
|
missAudioList = noteAudioSubmodule.missAudioList;
|
|
holdStartAudioList = noteAudioSubmodule.holdStartAudioList;
|
|
}
|
|
|
|
public override void ExecuteBM()
|
|
{
|
|
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
|
|
(attachedElement as NoteBase).noteAudioSubmodule = new NoteAudioSubmodule(attachedElement as NoteBase,
|
|
generalJudgeAudioList, perfectAudioList, goodAudioList, badAudioList, missAudioList, holdStartAudioList);
|
|
}
|
|
}
|
|
}
|
|
} |