Beispiel #1
0
        /// <summary>
        /// Adds a gameplayModifier to our list, getting rid of any incompatible mods that are currently in there.
        /// </summary>
        public static void AddMod(ModIdentifier modIdentifier)
        {
            IGameplayModifier gameplayModifier;

            // Set the newMod based on the ModType that is coming in
            switch (modIdentifier)
            {
            case ModIdentifier.Autoplay:
                gameplayModifier = new ModAutoplay();
                break;

            default:
                return;
            }

            // Remove incompatible mods.
            var incompatibleMods = CurrentModifiersList.FindAll(x => x.IncompatibleMods.Contains(gameplayModifier.ModIdentifier));

            incompatibleMods.ForEach(x => RemoveMod(x.ModIdentifier));

            // Remove the mod if it's already on.
            var alreadyOnMod = CurrentModifiersList.Find(x => x.ModIdentifier == gameplayModifier.ModIdentifier);

            if (alreadyOnMod != null)
            {
                CurrentModifiersList.Remove(alreadyOnMod);
            }

            // Add The Mod
            CurrentModifiersList.Add(gameplayModifier);
            gameplayModifier.InitializeMod();

            ModsChanged?.Invoke(typeof(ModManager), new ModsChangedEventArgs(Mods));
            Logger.Log($"Added mod: {gameplayModifier.ModIdentifier}.", LogLevel.Info);
        }
Beispiel #2
0
        /// <summary>
        ///     Adds a gameplayModifier to our list, getting rid of any incompatible mods that are currently in there.
        ///     Also, specifying a speed, if need-be. That is only "required" if passing in ModIdentifier.ManiaModSpeed
        /// </summary>
        public static void AddMod(ModIdentifier modIdentifier)
        {
            IGameplayModifier gameplayModifier;

            // Set the newMod based on the ModType that is coming in
            switch (modIdentifier)
            {
            case ModIdentifier.Speed05X:
            case ModIdentifier.Speed06X:
            case ModIdentifier.Speed07X:
            case ModIdentifier.Speed08X:
            case ModIdentifier.Speed09X:
            case ModIdentifier.Speed11X:
            case ModIdentifier.Speed12X:
            case ModIdentifier.Speed13X:
            case ModIdentifier.Speed14X:
            case ModIdentifier.Speed15X:
            case ModIdentifier.Speed16X:
            case ModIdentifier.Speed17X:
            case ModIdentifier.Speed18X:
            case ModIdentifier.Speed19X:
            case ModIdentifier.Speed20X:
                gameplayModifier = new ModSpeed(modIdentifier);
                break;

            case ModIdentifier.NoSliderVelocity:
                gameplayModifier = new ModNoSliderVelocities();
                break;

            case ModIdentifier.Strict:
                gameplayModifier = new ModStrict();
                break;

            case ModIdentifier.Chill:
                gameplayModifier = new ModChill();
                break;

            case ModIdentifier.Autoplay:
                gameplayModifier = new ModAutoplay();
                break;

            case ModIdentifier.Paused:
                gameplayModifier = new ModPaused();
                break;

            case ModIdentifier.NoFail:
                gameplayModifier = new ModNoFail();
                break;

            case ModIdentifier.NoLongNotes:
                gameplayModifier = new ModNoLongNotes();
                break;

            default:
                return;
            }

            // Remove incompatible mods.
            var incompatibleMods = CurrentModifiersList.FindAll(x => x.IncompatibleMods.Contains(gameplayModifier.ModIdentifier));

            incompatibleMods.ForEach(x => RemoveMod(x.ModIdentifier));

            // Remove the mod if it's already on.
            var alreadyOnMod = CurrentModifiersList.Find(x => x.ModIdentifier == gameplayModifier.ModIdentifier);

            if (alreadyOnMod != null)
            {
                CurrentModifiersList.Remove(alreadyOnMod);
            }

            // Add The Mod
            CurrentModifiersList.Add(gameplayModifier);
            gameplayModifier.InitializeMod();

            ModsChanged?.Invoke(typeof(ModManager), new ModsChangedEventArgs(Mods));
            Logger.Debug($"Added mod: {gameplayModifier.ModIdentifier}.", LogType.Runtime, false);
        }