/// <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); }
/// <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); }