public override void Relocate(Position pos) { base.Relocate(pos); Air?.Relocate(pos); airHoldBegin?.Relocate(pos); return; }
public override void RelocateOnlyAndUpdate(Position position, LaneBook laneBook) { base.RelocateOnlyAndUpdate(position, laneBook); Air?.RelocateOnlyAndUpdate(position, laneBook); airHoldBegin?.Relocate(position); airHoldBegin?.UpdateLocation(laneBook); }
public override void Relocate(PointF location, int laneIndex) { base.Relocate(location, laneIndex); Air?.Relocate(location, laneIndex); airHoldBegin?.Relocate(location, laneIndex); return; }
/// <summary> /// このノーツの位置変更とそれに付随するAir、AirHoldノーツの位置のみを変更します /// </summary> /// <param name="pos"></param> /// <param name="location"></param> /// <param name="laneIndex"></param> public new void RelocateOnly(Position pos, PointF location, int laneIndex) { base.RelocateOnly(pos, location, laneIndex); Air?.RelocateOnly(pos, location, laneIndex); //AirHold全体に変更を反映させるためRelocateを使う airHoldBegin?.Relocate(pos, location, laneIndex); }
public override void ReSize(int size) { base.ReSize(size); Air?.ReSize(size); airHoldBegin?.ReSize(size); return; }
public void AttachAir(Air air) { if (air == null) { Logger.Error("AirableNoteへのAirの紐づけに失敗しました。引数airがnullです。"); return; } Air = air; air.GetAirable += () => this; }
public AirableNote(Note note) : base(note) { if (note is AirableNote airable) { if (airable.Air != null) { Air = new Air(airable.Air); } if (airable.AirHold != null) { AirHold = new AirHold(airable.AirHold); } } }
/// <summary> /// AirableノーツからAirを取り外します。 /// 失敗した場合、出力引数はnullになります。 /// </summary> public bool DetachAirFromAirableNote(AirableNote airable, out Air air) { air = null; if (airable == null) { Logger.Error("引数のAirableNoteがnullのため、操作を行えません。"); return(false); } if (!airable.IsAirAttached) { Logger.Error("Air取り外し対象のAirableNoteにはAirが取り付けられていませんでした。"); return(false); } air = airable.Air; airable.DetachAir(); airNotes.Remove(air); return(true); }
/// <summary> /// 配置済みAirableノーツに対して新規Airノーツを配置し取り付けます。 /// </summary> public bool AttachAirToAirableNote(AirableNote airable, Air air) { if (airable == null || air == null) { Logger.Error("Airを取り付けできません。引数にnullが含まれます。", true); return(false); } if (!Contains(airable)) { Logger.Error("Airノーツ取り付け先のAirableノーツはすでに配置されている必要があります。"); return(false); } if (airable.IsAirAttached) { Logger.Error("Air取り付け先のAirableノーツにはすでにAirが取り付けられています。"); return(false); } airable.AttachAir(air); airNotes.Add(air); return(true); }