using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame.Beatmap; namespace Ichni.RhythmGame { public partial class NoteJudgeSubmodule : SubmoduleBase { public List judgeUnitList; private NoteBase note => attachedGameElement as NoteBase; public NoteJudgeSubmodule(NoteBase attachedGameElement) : base(attachedGameElement) { judgeUnitList = new List(); if (!HaveSameSubmodule) { this.note.noteJudgeSubmodule = this; } } public NoteJudgeSubmodule(NoteBase attachedGameElement, List judgeUnitList_BM) : base(attachedGameElement) { judgeUnitList = new List(); foreach (NoteJudgeUnit_BM judgeUnitBM in judgeUnitList_BM) { judgeUnitList.Add(judgeUnitBM.ConvertToGameType(attachedGameElement)); } if (!HaveSameSubmodule) { this.note.noteJudgeSubmodule = this; } } } public partial class NoteJudgeSubmodule { public override void SaveBM() { matchedBM = new NoteJudgeSubmodule_BM(attachedGameElement, this); } } public partial class NoteJudgeSubmodule { private static Dictionary JudgeUnitCollection(NoteBase note) => new Dictionary() { { "TouchArea", new TouchAreaJudgeUnit(note, 1000) }, { "FullScreenNearTime", new FullScreenNearTimeJudgeUnit(note) }, { "TriggerConnect", new TriggerConnectJudgeUnit(note, null) } }; } namespace Beatmap { public class NoteJudgeSubmodule_BM : Submodule_BM { public List judgeUnitList; public NoteJudgeSubmodule_BM() { } public NoteJudgeSubmodule_BM(GameElement attachedElement, NoteJudgeSubmodule noteJudgeSubmodule) : base(attachedElement) { judgeUnitList = new List(); foreach (var judgeUnit in noteJudgeSubmodule.judgeUnitList) { judgeUnitList.Add(judgeUnit.ConvertToBM()); } } public override void ExecuteBM() { attachedElement = GameElement_BM.GetElement(attachedElementGuid); (attachedElement as NoteBase).noteJudgeSubmodule = new NoteJudgeSubmodule(attachedElement as NoteBase, judgeUnitList); } public override void DuplicateBM(GameElement attached) { (attached as NoteBase).noteJudgeSubmodule = new NoteJudgeSubmodule(attached as NoteBase, judgeUnitList); } } } }