Files
ichni_Official/Assets/Scripts/Game/GameElements/Notes/AudioSubmodule/NoteAudioSubmodule.cs
SoulliesOfficial d4e860fa16 initial
2025-06-03 02:42:28 -04:00

143 lines
5.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
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;
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;
}
}
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;
}
}
}
public partial class NoteAudioSubmodule
{
public void PlayHoldStartAudio()
{
PlayAudio(holdStartAudioList);
}
public void PlayNoteJudgeAudios(NoteBase.NoteJudgeType judgeType)
{
PlayAudio(generalJudgeAudioList);
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 (var audio in audioList)
{
/*if (EditorManager.instance.noteAudioCollection.audioClips.TryGetValue(audio, out AudioClip clip))
{
AudioExtension.PlayClipAtPoint2D(clip);
}*/
}
}
}
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);
}
public override void DuplicateBM(GameElement attached)
{
(attached as NoteBase).noteAudioSubmodule = new NoteAudioSubmodule(attached as NoteBase,
generalJudgeAudioList, perfectAudioList, goodAudioList, badAudioList, missAudioList, holdStartAudioList);
}
}
}
}