public void AttachAirHold(AirHold airHold) { if (airHold == null) { Logger.Error("AirableNoteへのAirHoldの紐づけに失敗しました。引数airHoldがnullです。"); return; } AirHold = airHold; airHold.GetAirable += () => this; airHoldBegin = airHold.AirHoldBegin; Debug.Assert(airHoldBegin != null); return; }
public AirHold(int size, Position pos, PointF location, int laneIndex) { AirHoldBegin airholdBegin = new AirHoldBegin(size, pos, location, laneIndex); airholdBegin.CheckNotePosition += CheckNotePosition; airholdBegin.CheckNoteSize += CheckNoteSize; Add(airholdBegin); location.Y -= ScoreInfo.UnitBeatHeight * ScoreInfo.MaxBeatDiv / Status.Beat; AirHoldEnd airHoldEnd = new AirHoldEnd(size, pos.Next(), location, laneIndex); airHoldEnd.CheckNotePosition += CheckNotePosition; airHoldEnd.IsPositionAvailable += IsPositionTickAvailable; Add(airHoldEnd); Status.SelectedNote = airHoldEnd; }
public AirHold(AirHold ah) { ah.ForEach(x => { switch (x) { case AirHoldBegin airHoldBegin: { var note = new AirHoldBegin(airHoldBegin); Add(note); note.CheckNotePosition += CheckNotePosition; note.CheckNoteSize += CheckNoteSize; } break; case AirHoldEnd airHoldEnd: { var note = new AirHoldEnd(airHoldEnd); Add(note); note.CheckNotePosition += CheckNotePosition; note.IsPositionAvailable += IsPositionTickAvailable; } break; case AirAction airAction: { var note = new AirAction(airAction); base.Add(note); note.CheckNotePosition += CheckNotePosition; note.IsPositionAvailable += IsPositionTickAvailable; } break; default: Logger.Warn("AirHoldの要素ではないノーツです"); break; } }); }
public void DetachAirHold() { AirHold = null; airHoldBegin = null; return; }