// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System.Collections.Generic; using osu.Game.Beatmaps; using osu.Game.Replays.Legacy; using osu.Game.Rulesets.Replays; using osu.Game.Rulesets.Replays.Types; namespace osu.Game.Rulesets.Taiko.Replays { public class TaikoReplayFrame : ReplayFrame, IConvertibleReplayFrame { public List Actions = new List(); public TaikoReplayFrame() { } public TaikoReplayFrame(double time, params TaikoAction[] actions) : base(time) { Actions.AddRange(actions); } public void FromLegacy(LegacyReplayFrame currentFrame, IBeatmap beatmap, ReplayFrame? lastFrame = null) { if (currentFrame.MouseRight1) Actions.Add(TaikoAction.LeftRim); if (currentFrame.MouseRight2) Actions.Add(TaikoAction.RightRim); if (currentFrame.MouseLeft1) Actions.Add(TaikoAction.LeftCentre); if (currentFrame.MouseLeft2) Actions.Add(TaikoAction.RightCentre); } public LegacyReplayFrame ToLegacy(IBeatmap beatmap) { ReplayButtonState state = ReplayButtonState.None; if (Actions.Contains(TaikoAction.LeftRim)) state |= ReplayButtonState.Right1; if (Actions.Contains(TaikoAction.RightRim)) state |= ReplayButtonState.Right2; if (Actions.Contains(TaikoAction.LeftCentre)) state |= ReplayButtonState.Left1; if (Actions.Contains(TaikoAction.RightCentre)) state |= ReplayButtonState.Left2; return new LegacyReplayFrame(Time, null, null, state); } } }