///<inheritdoc/> public override IHitObject CreateHitObject(string data) { IHitObject hitobject = null; var d = data.Split(','); var types = new HitObjectTypesConverter().Convert(int.Parse(d[3]), out var maybeType); if (maybeType == HitObjectTypes.HitCircle || types.Contains(HitObjectTypes.HitCircle)) { hitobject = new Fruit(); } if (maybeType == HitObjectTypes.Slider || types.Contains(HitObjectTypes.Slider)) { hitobject = new JuiceStream(); } if (maybeType == HitObjectTypes.Spinner || types.Contains(HitObjectTypes.Spinner)) { hitobject = new BananaShower(); } if (hitobject == null) { throw new IncorrectHitObjectException(this, types[0]); } hitobject.Parse(data); return(hitobject); }
/// <summary> /// Mirrors X positions of all bananas in the <paramref name="bananaShower"/>. /// </summary> private static void mirrorBananaShower(BananaShower bananaShower) { foreach (var banana in bananaShower.NestedHitObjects.OfType <Banana>()) { banana.XOffset = CatchPlayfield.WIDTH - banana.XOffset; } }
public DrawableBananaShower([CanBeNull] BananaShower s) : base(s) { RelativeSizeAxes = Axes.X; Origin = Anchor.BottomLeft; AddInternal(bananaContainer = new Container { RelativeSizeAxes = Axes.Both }); }
public DrawableBananaShower(BananaShower s, Func <CatchHitObject, DrawableHitObject <CatchHitObject> > createDrawableRepresentation = null) : base(s) { this.createDrawableRepresentation = createDrawableRepresentation; RelativeSizeAxes = Axes.X; Origin = Anchor.BottomLeft; X = 0; AddInternal(bananaContainer = new Container { RelativeSizeAxes = Axes.Both }); }
public void UpdateFrom(ScrollingHitObjectContainer hitObjectContainer, BananaShower hitObject) { float startY = hitObjectContainer.PositionAtTime(hitObject.StartTime); float endY = hitObjectContainer.PositionAtTime(hitObject.EndTime); Y = Math.Max(startY, endY); float height = Math.Abs(startY - endY); bool wasEmpty = isEmpty; isEmpty = height == 0; if (wasEmpty != isEmpty) { this.FadeTo(isEmpty ? opacity_when_empty : 1f, 150); } Height = Math.Max(height, border_width); }