Exemple #1
0
        /// <inheritdoc />
        /// <summary>
        /// </summary>
        /// <param name="gameTime"></param>
        public override void Update(GameTime gameTime)
        {
            // Select all input
            if (KeyboardManager.CurrentState.IsKeyDown(Keys.LeftControl) ||
                KeyboardManager.CurrentState.IsKeyDown(Keys.RightControl))
            {
                if (KeyboardManager.IsUniqueKeyPress(Keys.A))
                {
                    SelectedVelocities.Clear();
                    SelectedVelocities.AddRange(WorkingMap.SliderVelocities);

                    if (SelectedVelocities.Count >= 1 || SelectedVelocities.Count == 0)
                    {
                        TextTime       = "";
                        TextMultiplier = $"";
                    }
                    else
                    {
                        SetInputTextToFirstSelected();
                    }
                }
            }

            base.Update(gameTime);
        }
Exemple #2
0
        /// <summary>
        /// </summary>
        /// <param name="sv"></param>
        /// <param name="isSelected"></param>
        private void OnSvButtonClicked(SliderVelocityInfo sv, bool isSelected)
        {
            var t = TimeSpan.FromMilliseconds(sv.StartTime);

            if (!ImGui.Button($"{t.Minutes:00}:{t.Seconds:00}:{t.Milliseconds:000}", new Vector2()))
            {
                return;
            }

            // User is holding control down, so add this SV to the selected ones
            if (KeyboardManager.CurrentState.IsKeyDown(Keys.LeftControl) ||
                KeyboardManager.CurrentState.IsKeyDown(Keys.LeftControl))
            {
                if (isSelected)
                {
                    if (SelectedVelocities.Count != 1)
                    {
                        SelectedVelocities.Remove(sv);
                    }

                    if (SelectedVelocities.Count == 1)
                    {
                        SetInputTextToFirstSelected();
                    }
                }
                else
                {
                    SelectedVelocities.Add(sv);

                    if (SelectedVelocities.Count == 1)
                    {
                        SetInputTextToFirstSelected();
                    }
                    else
                    {
                        TextTime       = "";
                        TextMultiplier = "";
                    }
                }
            }
            // Clicking the currently selected button seeks the user to that point in time
            else
            {
                if (isSelected && !AudioEngine.Track.IsDisposed)
                {
                    AudioEngine.Track.Seek(sv.StartTime);

                    var game   = GameBase.Game as QuaverGame;
                    var screen = game?.CurrentScreen as EditorScreen;
                    screen?.SetHitSoundObjectIndex();
                }

                SelectedVelocities.Clear();
                SelectedVelocities.Add(sv);

                TextTime       = sv.StartTime.ToString(CultureInfo.InvariantCulture);
                TextMultiplier = $"{sv.Multiplier:0.00}";
            }
        }
Exemple #3
0
        /// <summary>
        /// </summary>
        private void AddSvTable()
        {
            ImGui.BeginChild("SV Area");

            ImGui.Columns(2);
            ImGui.SetColumnWidth(0, 105);

            if (NeedsToScroll && SelectedVelocities.Count != 0 && WorkingMap.SliderVelocities.Count == 0)
            {
                ImGui.SetScrollHereY(-0.05f);
                NeedsToScroll = false;
            }

            foreach (var sv in WorkingMap.SliderVelocities)
            {
                var isSelected = SelectedVelocities.Contains(sv);

                if (!isSelected)
                {
                    ImGui.PushStyleColor(ImGuiCol.Button, new Vector4(100, 100, 100, 0));
                }

                if (NeedsToScroll && SelectedVelocities.Count != 0 && SelectedVelocities.First() == sv)
                {
                    ImGui.SetScrollHereY(-0.05f);
                    NeedsToScroll = false;
                }

                OnSvButtonClicked(sv, isSelected);

                if (!isSelected)
                {
                    ImGui.PopStyleColor();
                }

                ImGui.NextColumn();
                ImGui.Text($"{sv.Multiplier:0.00}x");
                ImGui.NextColumn();
            }

            ImGui.EndChild();
        }
Exemple #4
0
        /// <summary>
        /// </summary>
        private void SelectClosestVelocity()
        {
            if (WorkingMap.SliderVelocities.Count == 0)
            {
                return;
            }

            // Find the closest SV point so it can be selected upon opening.
            SliderVelocityInfo closestVelocity = null;
            var minDiff = double.MaxValue;

            WorkingMap.SliderVelocities.ForEach(x =>
            {
                var diff = Math.Abs(AudioEngine.Track.Time - x.StartTime);

                if (!(diff < minDiff))
                {
                    return;
                }

                minDiff         = diff;
                closestVelocity = x;
            });

            if (closestVelocity == null)
            {
                return;
            }

            SelectedVelocities.Clear();
            SelectedVelocities.Add(closestVelocity);
            NeedsToScroll = true;

            TextTime       = closestVelocity.StartTime.ToString(CultureInfo.InvariantCulture);
            TextMultiplier = $"{closestVelocity.Multiplier:0.00}";
        }
Exemple #5
0
 /// <summary>
 /// </summary>
 private void SetInputTextToFirstSelected()
 {
     TextTime       = SelectedVelocities.First().StartTime.ToString(CultureInfo.InvariantCulture);
     TextMultiplier = $"{SelectedVelocities.First().Multiplier:0.00}";
 }
Exemple #6
0
        /// <summary>
        /// </summary>
        private void HandleAddRemoveButtons()
        {
            if (ImGui.Button("Add"))
            {
                var sv = new SliderVelocityInfo()
                {
                    StartTime  = (int)AudioEngine.Track.Time,
                    Multiplier = 1.0f
                };

                var game   = GameBase.Game as QuaverGame;
                var screen = game?.CurrentScreen as EditorScreen;
                screen?.Ruleset.ActionManager.Perform(new EditorActionAddSliderVelocity(WorkingMap, sv));

                SelectedVelocities.Clear();
                SelectedVelocities.Add(sv);
                NeedsToScroll = true;

                TextTime       = sv.StartTime.ToString(CultureInfo.InvariantCulture);
                TextMultiplier = $"{sv.Multiplier:0.00}";
            }

            ImGui.SameLine();

            if (ImGui.Button("Remove"))
            {
                if (SelectedVelocities.Count == 0)
                {
                    return;
                }

                var game   = GameBase.Game as QuaverGame;
                var screen = game?.CurrentScreen as EditorScreen;

                var lastSv = SelectedVelocities.Last();

                screen?.Ruleset.ActionManager.Perform(new EditorActionRemoveSliderVelocities(WorkingMap, new List <SliderVelocityInfo>(SelectedVelocities)));

                SelectedVelocities.Clear();

                if (WorkingMap.SliderVelocities.Count != 0)
                {
                    var sv = WorkingMap.SliderVelocities.FindLast(x => x.StartTime <= lastSv.StartTime);

                    if (sv != null)
                    {
                        TextTime       = sv.StartTime.ToString(CultureInfo.InvariantCulture);
                        TextMultiplier = $"{sv.Multiplier:0.00}";
                        SelectedVelocities.Add(sv);
                    }
                    else
                    {
                        TextTime       = "";
                        TextMultiplier = $"";
                    }
                }
                else
                {
                    TextTime       = "";
                    TextMultiplier = $"";
                }

                NeedsToScroll = true;
            }
        }