public void Add(SentakkiLanedHitObject hitObject) { hitObject.LaneBindable.ValueChanged += onLaneChanged; hitObject.BreakBindable.ValueChanged += onBreakChanged; HitObjects.AddInPlace(hitObject, Comparer <SentakkiLanedHitObject> .Create((lhs, rhs) => lhs.Lane.CompareTo(rhs.Lane))); UpdateLine(); }
public void Remove(SentakkiLanedHitObject hitObject) { hitObject.LaneBindable.ValueChanged -= onLaneChanged; hitObject.BreakBindable.ValueChanged -= onBreakChanged; HitObjects.Remove(hitObject); UpdateLine(); }
public DrawableSentakkiLanedHitObject(SentakkiLanedHitObject hitObject) : base(hitObject) { AddRangeInternal(new Drawable[] { scorePaddingObjects = new Container <DrawableScorePaddingObject>() }); }
public void AddHitObject(SentakkiLanedHitObject hitObject) { var startTimeBindable = hitObject.StartTimeBindable.GetBoundCopy(); startTimeBindable.ValueChanged += v => onStartTimeChanged(v, hitObject); startTimeMap[hitObject] = startTimeBindable; addHitObjectToEntry(hitObject.StartTime, hitObject); }
private int getDelta(SentakkiLanedHitObject a, SentakkiLanedHitObject b) { var delta = b.Lane - a.Lane; if (delta > 4) { delta -= 8; } return(delta); }
private void addHitObjectToEntry(double entryTime, SentakkiLanedHitObject hitObject) { // Create new line entry for this entryTime if none exists if (!lineEntries.ContainsKey(entryTime)) { var newEntry = new LineLifetimeEntry(animationDuration, drawableRuleset, entryTime); lineEntries[entryTime] = newEntry; lifetimeManager.AddEntry(newEntry); // We want to listen in on line changes in case we need to swap out colours/drawables newEntry.OnLineUpdated += onEntryUpdated; } lineEntries[entryTime].Add(hitObject); }
private void removeHitObjectFromEntry(double entryTime, SentakkiLanedHitObject hitObject) { // Safety check to ensure the a line entry actually exists if (lineEntries.TryGetValue(entryTime, out var line)) { line.Remove(hitObject); // Remove this entry completely if there aren't any hitObjects using it if (!line.HitObjects.Any()) { lifetimeManager.RemoveEntry(lineEntries[entryTime]); lineEntries.Remove(entryTime); } } }
public void Apply(SentakkiLanedHitObject lanedHitObject) { Position = SentakkiExtensions.GetPositionAlongLane(SentakkiPlayfield.INTERSECTDISTANCE, lanedHitObject.Lane); Colour = lanedHitObject.NoteColour; }
private void onStartTimeChanged(ValueChangedEvent <double> valueChangedEvent, SentakkiLanedHitObject hitObject) { removeHitObjectFromEntry(valueChangedEvent.OldValue, hitObject); addHitObjectToEntry(valueChangedEvent.NewValue, hitObject); }
public void RemoveHitObject(SentakkiLanedHitObject hitObject) { startTimeMap.Remove(hitObject); removeHitObjectFromEntry(hitObject.StartTime, hitObject); }