示例#1
0
 private void recalculateStackCoordinates()
 {
     HitObjects.ForEach(o => o.StackHeight = 0);
     if (Format >= 6)
     {
         applyStacking();
     }
     else
     {
         applyStackingOld();
     }
 }
示例#2
0
        /// <inheritdoc />
        /// <summary>
        /// </summary>
        public override void Destroy()
        {
            // ReSharper disable twice DelegateSubtraction
            ConfigManager.EditorScrollSpeedKeys.ValueChanged            -= OnScrollSpeedChanged;
            ConfigManager.EditorShowLaneDividerLines.ValueChanged       -= OnShowDividerLinesChanged;
            ConfigManager.EditorHitObjectsMidpointAnchored.ValueChanged -= OnHitObjectMidpointAnchoredChanged;
            ConfigManager.EditorViewLayers.ValueChanged -= OnEditorUseLayerHitObjects;

            var view = (EditorScreenView)Ruleset.Screen.View;

            view.LayerCompositor.LayerUpdated -= OnEditorLayerUpdated;

            HitObjects.ForEach(x => x.Destroy());
            Timeline.Destroy();
            base.Destroy();
        }
示例#3
0
 /// <inheritdoc />
 /// <summary>
 /// </summary>
 public void Undo()
 {
     HitObjects.ForEach(x => x.Info.HitSound |= Hitsound);
     Ruleset.SetSelectedHitsounds();
 }
示例#4
0
 /// <inheritdoc />
 /// <summary>
 /// </summary>
 public void Perform()
 {
     HitObjects.ForEach(x => x.Info.HitSound -= Hitsound);
     Ruleset.SetSelectedHitsounds();
 }
示例#5
0
        /// <summary>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnEditorUseLayerHitObjects(object sender, BindableValueChangedEventArgs <bool> e)
        {
            lock (HitObjects)
            {
                var skin = SkinManager.Skin.Keys[Ruleset.Screen.WorkingMap.Mode];

                HitObjects.ForEach(h =>
                {
                    var index = skin.ColorObjectsBySnapDistance ?
                                HitObjectManager.GetBeatSnap(h.Info, h.Info.GetTimingPoint(Ruleset.Screen.WorkingMap.TimingPoints)) : 0;

                    if (h.Info.IsLongNote)
                    {
                        var ln = (DrawableEditorHitObjectLong)h;

                        if (ConfigManager.EditorViewLayers.Value)
                        {
                            h.Image = skin.EditorLayerNoteHitObjects[h.Info.Lane - 1];
                            ln.ChangeTextures(skin.EditorLayerNoteHoldBodies[h.Info.Lane - 1], skin.EditorLayerNoteHoldEnds[h.Info.Lane - 1]);
                        }
                        else
                        {
                            h.Image = skin.NoteHoldHitObjects[h.Info.Lane - 1][index];
                            ln.ChangeTextures(skin.NoteHoldBodies[h.Info.Lane - 1].First(), skin.NoteHoldEnds[h.Info.Lane - 1]);
                        }
                    }
                    else
                    {
                        if (ConfigManager.EditorViewLayers.Value)
                        {
                            h.Image = skin.EditorLayerNoteHitObjects[h.Info.Lane - 1];
                        }
                        else
                        {
                            h.Image = skin.NoteHitObjects[h.Info.Lane - 1][index];
                        }
                    }

                    // Resize and reposition the object to support skins that are of different sizes.
                    h.SetHeight();
                    h.SetPositionY();
                    h.Resize();

                    // Reset back to an active state temporarily because any objects that don't
                    // fit the following cases are considered active still.
                    h.AppearAsActive();

                    // Get the layer the object is in
                    var view  = (EditorScreenView)Ruleset.Screen.View;
                    var layer = view.LayerCompositor.ScrollContainer.AvailableItems[h.Info.EditorLayer];

                    if (Ruleset.SelectedHitObjects.Contains(h))
                    {
                        h.AppearAsSelected();
                    }
                    else if (Ruleset.PendingLongNoteReleases.Contains(h.Info))
                    {
                        var ln = h as DrawableEditorHitObjectLong;
                        ln?.AppearAsInactive();
                    }
                    else if (layer.Hidden)
                    {
                        h.AppearAsHiddenInLayer();
                    }
                });
            }
        }