1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-21 22:12:53 +08:00

Traceable no longer inherits from OsuModHidden and is no longer multi mod

This commit is contained in:
MaxOhn 2019-07-03 21:40:14 +02:00
parent b63a7593eb
commit 5b4640d3ea
5 changed files with 23 additions and 12 deletions

View File

@ -17,6 +17,7 @@ namespace osu.Game.Rulesets.Osu.Mods
{ {
public override string Description => @"Play with no approach circles and fading circles/sliders."; public override string Description => @"Play with no approach circles and fading circles/sliders.";
public override double ScoreMultiplier => 1.06; public override double ScoreMultiplier => 1.06;
public override Type[] IncompatibleMods => new[] { typeof(OsuModTraceable) };
private const double fade_in_duration_multiplier = 0.4; private const double fade_in_duration_multiplier = 0.4;
private const double fade_out_duration_multiplier = 0.3; private const double fade_out_duration_multiplier = 0.3;

View File

@ -3,8 +3,10 @@
using System; using System;
using System.Linq; using System.Linq;
using osu.Framework.Bindables;
using System.Collections.Generic; using System.Collections.Generic;
using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Sprites;
using osu.Game.Configuration;
using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.Osu.Objects.Drawables; using osu.Game.Rulesets.Osu.Objects.Drawables;
@ -12,19 +14,25 @@ using osuTK.Graphics;
namespace osu.Game.Rulesets.Osu.Mods namespace osu.Game.Rulesets.Osu.Mods
{ {
internal class OsuModTraceable : OsuModHidden internal class OsuModTraceable : Mod, IReadFromConfig, IApplicableToDrawableHitObjects
{ {
public override string Name => "Traceable"; public override string Name => "Traceable";
public override string Acronym => "TC"; public override string Acronym => "TC";
public override IconUsage Icon => FontAwesome.Brands.SnapchatGhost; public override IconUsage Icon => FontAwesome.Brands.SnapchatGhost;
public override ModType Type => ModType.DifficultyIncrease; public override ModType Type => ModType.Fun;
public override string Description => "Put your faith in the approach circles..."; public override string Description => "Put your faith in the approach circles...";
public override double ScoreMultiplier => 1; public override double ScoreMultiplier => 1;
public override Type[] IncompatibleMods => new[] { typeof(OsuModeObjectScaleTween) }; public override Type[] IncompatibleMods => new[] { typeof(OsuModHidden), typeof(OsuModeObjectScaleTween) };
private Bindable<bool> increaseFirstObjectVisibility = new Bindable<bool>();
public override void ApplyToDrawableHitObjects(IEnumerable<DrawableHitObject> drawables) public void ReadFromConfig(OsuConfigManager config)
{ {
foreach (var drawable in drawables.Skip(IncreaseFirstObjectVisibility.Value ? 1 : 0)) increaseFirstObjectVisibility = config.GetBindable<bool>(OsuSetting.IncreaseFirstObjectVisibility);
}
public void ApplyToDrawableHitObjects(IEnumerable<DrawableHitObject> drawables)
{
foreach (var drawable in drawables.Skip(increaseFirstObjectVisibility.Value ? 1 : 0))
drawable.ApplyCustomUpdateState += ApplyTraceableState; drawable.ApplyCustomUpdateState += ApplyTraceableState;
} }
@ -59,8 +67,10 @@ namespace osu.Game.Rulesets.Osu.Mods
break; break;
default: case DrawableSpinner spinner:
ApplyHiddenState(drawable, state); spinner.Disc.Hide();
//spinner.Ticks.Hide(); // do they contribute to the theme? debatable
spinner.Background.Hide();
break; break;
} }

View File

@ -23,7 +23,7 @@ namespace osu.Game.Rulesets.Osu.Mods
public override double ScoreMultiplier => 1; public override double ScoreMultiplier => 1;
public override Type[] IncompatibleMods => new[] { typeof(OsuModeObjectScaleTween) }; public override Type[] IncompatibleMods => new[] { typeof(OsuModTraceable) };
protected virtual float StartScale => 1; protected virtual float StartScale => 1;

View File

@ -111,7 +111,7 @@ namespace osu.Game.Rulesets.Osu
new OsuModHardRock(), new OsuModHardRock(),
new MultiMod(new OsuModSuddenDeath(), new OsuModPerfect()), new MultiMod(new OsuModSuddenDeath(), new OsuModPerfect()),
new MultiMod(new OsuModDoubleTime(), new OsuModNightcore()), new MultiMod(new OsuModDoubleTime(), new OsuModNightcore()),
new MultiMod(new OsuModHidden(), new OsuModTraceable()), new OsuModHidden(),
new MultiMod(new OsuModFlashlight(), new OsuModBlinds()), new MultiMod(new OsuModFlashlight(), new OsuModBlinds()),
}; };
@ -136,6 +136,7 @@ namespace osu.Game.Rulesets.Osu
new OsuModWiggle(), new OsuModWiggle(),
new MultiMod(new OsuModGrow(), new OsuModDeflate()), new MultiMod(new OsuModGrow(), new OsuModDeflate()),
new MultiMod(new ModWindUp<OsuHitObject>(), new ModWindDown<OsuHitObject>()), new MultiMod(new ModWindUp<OsuHitObject>(), new ModWindDown<OsuHitObject>()),
new OsuModTraceable(),
}; };
default: default:

View File

@ -85,7 +85,7 @@ namespace osu.Game.Tests.Visual.UserInterface
var assistMods = instance.GetModsFor(ModType.Automation); var assistMods = instance.GetModsFor(ModType.Automation);
var noFailMod = easierMods.FirstOrDefault(m => m is OsuModNoFail); var noFailMod = easierMods.FirstOrDefault(m => m is OsuModNoFail);
var hiddenMod = harderMods.OfType<MultiMod>().FirstOrDefault(m => m.Mods.Any(a => a is OsuModHidden)); var hiddenMod = harderMods.FirstOrDefault(m => m is OsuModHidden);
var doubleTimeMod = harderMods.OfType<MultiMod>().FirstOrDefault(m => m.Mods.Any(a => a is OsuModDoubleTime)); var doubleTimeMod = harderMods.OfType<MultiMod>().FirstOrDefault(m => m.Mods.Any(a => a is OsuModDoubleTime));
@ -96,11 +96,10 @@ namespace osu.Game.Tests.Visual.UserInterface
testSingleMod(noFailMod); testSingleMod(noFailMod);
testMultiMod(doubleTimeMod); testMultiMod(doubleTimeMod);
testMultiMod(hiddenMod);
testIncompatibleMods(easy, hardRock); testIncompatibleMods(easy, hardRock);
testDeselectAll(easierMods.Where(m => !(m is MultiMod))); testDeselectAll(easierMods.Where(m => !(m is MultiMod)));
testMultiplierTextColour(noFailMod, modSelect.LowMultiplierColour); testMultiplierTextColour(noFailMod, modSelect.LowMultiplierColour);
testMultiplierTextColour(hardRock, modSelect.HighMultiplierColour); testMultiplierTextColour(hiddenMod, modSelect.HighMultiplierColour);
testUnimplementedMod(autoPilotMod); testUnimplementedMod(autoPilotMod);
} }