using Newtonsoft.Json; using RhythmBase.Components; using RhythmBase.Components.Easing; namespace RhythmBase.Events { /// /// Represents a tile event in the rhythm base system. /// [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] public class Tile : BaseDecorationAction, IEaseEvent { /// /// Initializes a new instance of the class. /// public Tile() { Type = EventType.Tile; Tab = Tabs.Decorations; } /// /// Gets the type of the event. /// public override EventType Type { get; } /// /// Gets the tab associated with the event. /// public override Tabs Tab { get; } /// /// Gets or sets the position of the tile. /// [EaseProperty] public RDPoint? Position { get; set; } /// /// Gets or sets the tiling of the tile. /// [EaseProperty] public RDPoint? Tiling { get; set; } /// /// Gets or sets the speed of the tile. /// [EaseProperty] public RDPoint? Speed { get; set; } /// /// Gets or sets the type of tiling. /// public TilingTypes TilingType { get; set; } /// /// Gets or sets the interval for the tiling. /// public float Interval { get; set; } /// /// Gets or sets the Y coordinate. Always returns 0. /// [JsonIgnore] public override int Y => 0; /// /// Gets or sets the easing type for the event. /// public EaseType Ease { get; set; } /// /// Gets or sets the duration of the event. /// public float Duration { get; set; } /// /// Defines the types of tiling available. /// public enum TilingTypes { /// /// Represents a scrolling tiling type. /// Scroll, /// /// Represents a pulsing tiling type. /// Pulse } } }