1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-06 06:17:23 +08:00

ModSelector -> ModSelect, added mod descriptions, added per-mode mod selection, changed animations and made the wave mask properly

This commit is contained in:
DrabWeb 2017-02-16 18:32:27 -04:00
parent 0a58fc62db
commit 9fc3726925
7 changed files with 387 additions and 125 deletions

View File

@ -1,44 +1,38 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System;
using OpenTK.Graphics;
using osu.Framework.Logging;
using osu.Framework.Graphics;
using osu.Game.Overlays.Mods;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Colour;
using osu.Framework.GameModes.Testing;
using osu.Framework.Graphics.UserInterface;
using osu.Framework.Graphics.Primitives;
using osu.Game.Modes.UI;
using osu.Game.Modes;
using OpenTK;
using osu.Game.Graphics;
namespace osu.Desktop.VisualTests.Tests
{
class TestCaseModSelector : TestCase
class TestCaseModSelect : TestCase
{
public override string Name => @"Mod Selector";
public override string Name => @"Mod Select";
public override string Description => @"Tests the mod selector overlay";
public override string Description => @"Tests the mod select overlay";
private ModSelector modSelector;
private ModSelect modSelect;
public override void Reset()
{
base.Reset();
Add(modSelector = new ModSelector
Add(modSelect = new ModSelect
{
RelativeSizeAxes = Axes.Both,
Origin = Anchor.BottomCentre,
Anchor = Anchor.BottomCentre,
ModMode = PlayMode.Osu,
});
AddButton("Toggle", modSelector.ToggleVisibility);
AddButton("Toggle", modSelect.ToggleVisibility);
AddButton("osu!", () => modSelect.ModMode = PlayMode.Osu);
AddButton("osu!taiko", () => modSelect.ModMode = PlayMode.Taiko);
AddButton("osu!catch", () => modSelect.ModMode = PlayMode.Catch);
AddButton("osu!mania", () => modSelect.ModMode = PlayMode.Mania);
}
}
}

View File

@ -191,7 +191,7 @@
<Compile Include="Platform\TestStorage.cs" />
<Compile Include="Tests\TestCaseOptions.cs" />
<Compile Include="Tests\TestCasePauseOverlay.cs" />
<Compile Include="Tests\TestCaseModSelector.cs" />
<Compile Include="Tests\TestCaseModSelect.cs" />
</ItemGroup>
<ItemGroup />
<ItemGroup />

View File

@ -19,6 +19,11 @@ namespace osu.Game.Modes
get;
}
public virtual string Description(PlayMode mode)
{
return @"";
}
public virtual double ScoreMultiplier(PlayMode mode)
{
return 1;
@ -26,7 +31,7 @@ namespace osu.Game.Modes
public virtual bool Ranked(PlayMode mode)
{
return false;
return true;
}
}
@ -34,6 +39,7 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.NoFail;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_nofail;
public override string Description(PlayMode mode) => @"You can't fail, no matter what.";
public override double ScoreMultiplier(PlayMode mode) => 0.5;
public override bool Ranked(PlayMode mode) => true;
}
@ -42,6 +48,7 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.Easy;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_easy;
public override string Description(PlayMode mode) => @"Reduces overall difficulty - larger circles, more forgiving HP drain, less accuracy required.";
public override double ScoreMultiplier(PlayMode mode) => 0.5;
public override bool Ranked(PlayMode mode) => true;
}
@ -50,7 +57,23 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.Hidden;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_hidden;
public override double ScoreMultiplier(PlayMode mode) => 1.06;
public override string Description(PlayMode mode)
{
switch (mode)
{
case PlayMode.Osu:
case PlayMode.Catch:
return @"Play with no approach circles and fading notes for a slight score advantage.";
case PlayMode.Taiko:
case PlayMode.Mania:
return @"The notes fade out before you hit them!";
default:
throw new NotSupportedException();
}
}
public override double ScoreMultiplier(PlayMode mode) => mode == PlayMode.Mania ? 1.0 : 1.06;
public override bool Ranked(PlayMode mode) => true;
}
@ -58,14 +81,33 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.HardRock;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_hardrock;
public override double ScoreMultiplier(PlayMode mode) => 1.06;
public override bool Ranked(PlayMode mode) => true;
public override string Description(PlayMode mode) => @"Everything just got a bit harder...";
public override double ScoreMultiplier(PlayMode mode)
{
switch (mode)
{
case PlayMode.Osu:
case PlayMode.Taiko:
return 1.06;
case PlayMode.Catch:
return 1.12;
case PlayMode.Mania:
return 1.0;
default:
throw new NotSupportedException();
}
}
public override bool Ranked(PlayMode mode) => mode != PlayMode.Mania;
}
public class ModSuddenDeath : Mod
{
public override Mods Name => Mods.SuddenDeath;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_suddendeath;
public override string Description(PlayMode mode) => @"Miss a note and fail.";
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
}
@ -74,7 +116,25 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.DoubleTime;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_doubletime;
public override double ScoreMultiplier(PlayMode mode) => 1.12;
public override string Description(PlayMode mode) => @"Zoooooooooom";
public override double ScoreMultiplier(PlayMode mode)
{
switch (mode)
{
case PlayMode.Osu:
case PlayMode.Taiko:
return 1.12;
case PlayMode.Catch:
return 1.06;
case PlayMode.Mania:
return 1.0;
default:
throw new NotSupportedException();
}
}
public override bool Ranked(PlayMode mode) => true;
}
@ -82,6 +142,26 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.Relax;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_relax;
public override string Description(PlayMode mode)
{
switch (mode)
{
case PlayMode.Osu:
return "You don't need to click. \nGive your clicking/tapping finger a break from the heat of things.";
case PlayMode.Taiko:
return @"Relax! You will no longer get dizzyfied by ninja-like spinners, demanding drumrolls or unexpected katu's.";
case PlayMode.Catch:
return @"Use the mouse to control the catcher.";
case PlayMode.Mania:
return @"Unsupported";
default:
throw new NotSupportedException();
}
}
public override double ScoreMultiplier(PlayMode mode) => 0;
public override bool Ranked(PlayMode mode) => false;
}
@ -90,23 +170,24 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.HalfTime;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_halftime;
public override double ScoreMultiplier(PlayMode mode) => 0.3;
public override string Description(PlayMode mode) => @"Less zoom";
public override double ScoreMultiplier(PlayMode mode) => mode == PlayMode.Mania ? 0.5 : 0.3;
public override bool Ranked(PlayMode mode) => true;
}
public class ModNightcore : Mod
public class ModNightcore : ModDoubleTime
{
public override Mods Name => Mods.Nightcore;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_nightcore;
public override double ScoreMultiplier(PlayMode mode) => 1.12;
public override bool Ranked(PlayMode mode) => true;
public override string Description(PlayMode mode) => @"uguuuuuuuu";
}
public class ModFlashlight : Mod
{
public override Mods Name => Mods.Flashlight;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_flashlight;
public override double ScoreMultiplier(PlayMode mode) => 1.12;
public override string Description(PlayMode mode) => @"Restricted view area.";
public override double ScoreMultiplier(PlayMode mode) => mode == PlayMode.Mania ? 1.0 : 1.12;
public override bool Ranked(PlayMode mode) => true;
}
@ -114,6 +195,7 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.Autoplay;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_auto;
public override string Description(PlayMode mode) => @"Watch a perfect automated play through the song";
public override double ScoreMultiplier(PlayMode mode) => 0;
public override bool Ranked(PlayMode mode) => false;
}
@ -122,64 +204,65 @@ namespace osu.Game.Modes
{
public override Mods Name => Mods.SpunOut;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_spunout;
public override string Description(PlayMode mode) => @"Spinners will be automatically completed";
public override double ScoreMultiplier(PlayMode mode) => 0.9;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Osu;
}
public class ModRelax2 : Mod
public class ModAutopilot : Mod
{
public override Mods Name => Mods.Relax2;
public override Mods Name => Mods.Autopilot;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_autopilot;
public override string Description(PlayMode mode) => @"Automatic cursor movement - just follow the rhythm.";
public override double ScoreMultiplier(PlayMode mode) => 0;
public override bool Ranked(PlayMode mode) => false;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Osu;
}
public class ModPerfect : Mod
public class ModPerfect : ModSuddenDeath
{
public override Mods Name => Mods.Perfect;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_perfect;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override string Description(PlayMode mode) => @"SS or quit.";
}
public class ModKey4 : Mod
{
public override Mods Name => Mods.Key4;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModKey5 : Mod
{
public override Mods Name => Mods.Key5;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModKey6 : Mod
{
public override Mods Name => Mods.Key6;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModKey7 : Mod
{
public override Mods Name => Mods.Key7;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModKey8 : Mod
{
public override Mods Name => Mods.Key8;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModFadeIn : Mod
@ -187,13 +270,14 @@ namespace osu.Game.Modes
public override Mods Name => Mods.FadeIn;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_hidden;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModRandom : Mod
{
public override Mods Name => Mods.Random;
public override FontAwesome Icon => FontAwesome.fa_random;
public override FontAwesome Icon => FontAwesome.fa_close;
public override string Description(PlayMode mode) => @"Shuffle around the notes!";
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => false;
}
@ -211,47 +295,48 @@ namespace osu.Game.Modes
public override Mods Name => Mods.Target;
public override FontAwesome Icon => FontAwesome.fa_osu_mod_target;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Osu;
}
public class ModKey9 : Mod
{
public override Mods Name => Mods.Key9;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModKeyCoop : Mod
{
public override Mods Name => Mods.KeyCoop;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override string Description(PlayMode mode) => @"Double the key amount, double the fun!";
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModKey1 : Mod
{
public override Mods Name => Mods.Key1;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModKey3 : Mod
{
public override Mods Name => Mods.Key3;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
public class ModKey2 : Mod
{
public override Mods Name => Mods.Key2;
public override FontAwesome Icon => FontAwesome.fa_key;
public override FontAwesome Icon => FontAwesome.fa_close;
public override double ScoreMultiplier(PlayMode mode) => 1;
public override bool Ranked(PlayMode mode) => true;
public override bool Ranked(PlayMode mode) => mode == PlayMode.Mania;
}
@ -299,7 +384,7 @@ namespace osu.Game.Modes
SpunOut = 1 << 12,
[Description(@"Autopilot")]
Relax2 = 1 << 13,
Autopilot = 1 << 13,
[Description(@"Perfect")]
Perfect = 1 << 14,
@ -349,7 +434,7 @@ namespace osu.Game.Modes
LastMod = 1 << 29,
KeyMod = Key1 | Key2 | Key3 | Key4 | Key5 | Key6 | Key7 | Key8 | Key9 | KeyCoop,
FreeModAllowed = NoFail | Easy | Hidden | HardRock | SuddenDeath | Flashlight | FadeIn | Relax | Relax2 | SpunOut | KeyMod,
FreeModAllowed = NoFail | Easy | Hidden | HardRock | SuddenDeath | Flashlight | FadeIn | Relax | Autopilot | SpunOut | KeyMod,
ScoreIncreaseMods = Hidden | HardRock | DoubleTime | Flashlight | FadeIn
}
}

View File

@ -1,6 +1,7 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System;
using osu.Framework.Allocation;
using osu.Game.Graphics;
using osu.Game.Modes;
@ -9,11 +10,76 @@ namespace osu.Game
{
public class AssistedSection : ModSection
{
public ModButton RelaxButton => Buttons[0];
public ModButton AutopilotButton => Buttons[1];
public ModButton TargetPracticeButton => Buttons[2];
public ModButton SpunOutButton => Buttons[3];
public ModButton AutoplayCinemaButton => Buttons[4];
private ModButton relaxButton;
public ModButton RelaxButton
{
get
{ return relaxButton;
}
}
private ModButton autopilotButton;
public ModButton AutopilotButton
{
get
{
return autopilotButton;
}
}
private ModButton targetPracticeButton;
public ModButton TargetPracticeButton
{
get
{
return targetPracticeButton;
}
}
private ModButton spunOutButton;
public ModButton SpunOutButton
{
get
{
return spunOutButton;
}
}
private ModButton autoplayCinemaButton;
public ModButton AutoplayCinemaButton
{
get
{
return autoplayCinemaButton;
}
}
private ModButton keyButton;
public ModButton KeyButton
{
get
{
return keyButton;
}
}
private ModButton coopButton;
public ModButton CoopButton
{
get
{
return coopButton;
}
}
private ModButton randomButton;
public ModButton RandomButton
{
get
{
return randomButton;
}
}
[BackgroundDependencyLoader]
private void load(OsuColour colours)
@ -21,48 +87,122 @@ namespace osu.Game
Colour = colours.Blue;
}
public AssistedSection()
public AssistedSection(PlayMode mode)
{
Header = @"Assisted";
Buttons = new ModButton[]
switch (mode)
{
new ModButton
{
Mods = new Mod[]
case PlayMode.Osu:
Buttons = new ModButton[]
{
new ModRelax(),
},
},
new ModButton
{
Mods = new Mod[]
relaxButton = new ModButton
{
Mods = new Mod[]
{
new ModRelax(),
},
},
autopilotButton = new ModButton
{
Mods = new Mod[]
{
new ModAutopilot(),
},
},
targetPracticeButton = new ModButton
{
Mods = new Mod[]
{
new ModTarget(),
},
},
spunOutButton = new ModButton
{
Mods = new Mod[]
{
new ModSpunOut(),
},
},
autoplayCinemaButton = new ModButton
{
Mods = new Mod[]
{
new ModAutoplay(),
new ModCinema(),
},
},
};
break;
case PlayMode.Taiko:
case PlayMode.Catch:
Buttons = new ModButton[]
{
new ModRelax2(),
},
},
new ModButton
{
Mods = new Mod[]
relaxButton = new ModButton
{
Mods = new Mod[]
{
new ModRelax(),
},
},
autoplayCinemaButton = new ModButton
{
Mods = new Mod[]
{
new ModAutoplay(),
new ModCinema(),
},
},
};
break;
case PlayMode.Mania:
Buttons = new ModButton[]
{
new ModTarget(),
},
},
new ModButton
{
Mods = new Mod[]
{
new ModSpunOut(),
},
},
new ModButton
{
Mods = new Mod[]
{
new ModAutoplay(),
new ModCinema(),
},
},
};
keyButton = new ModButton
{
Mods = new Mod[]
{
new ModKey4(),
new ModKey5(),
new ModKey6(),
new ModKey7(),
new ModKey8(),
new ModKey9(),
new ModKey1(),
new ModKey2(),
new ModKey3(),
},
},
coopButton = new ModButton
{
Mods = new Mod[]
{
new ModKeyCoop(),
},
},
randomButton = new ModButton
{
Mods = new Mod[]
{
new ModRandom(),
},
},
autoplayCinemaButton = new ModButton
{
Mods = new Mod[]
{
new ModAutoplay(),
new ModCinema(),
},
},
};
break;
default:
throw new NotSupportedException();
}
}
}
}

View File

@ -20,7 +20,7 @@ using osu.Framework.Allocation;
namespace osu.Game.Overlays.Mods
{
public class ModSelector : OverlayContainer
public class ModSelect : OverlayContainer
{
private readonly int waves_duration = 1000;
private readonly int move_up_duration = 1500;
@ -34,6 +34,8 @@ namespace osu.Game.Overlays.Mods
private OsuSpriteText rankedLabel, multiplierLabel;
private FlowContainer rankedMultiplerContainer;
private FlowContainer modSectionsContainer;
private DifficultyReductionSection difficultyReductionSection;
private DifficultyIncreaseSection difficultyIncreaseSection;
private AssistedSection assistedSection;
@ -43,7 +45,45 @@ namespace osu.Game.Overlays.Mods
public Bindable<Mod[]> SelectedMods = new Bindable<Mod[]>();
// TODO: Add the fancy wave transition (https://streamable.com/qk4u)
private PlayMode modMode;
public PlayMode ModMode
{
get
{
return modMode;
}
set
{
if (value == modMode) return;
modMode = value;
modSectionsContainer.Children = new Drawable[]
{
difficultyReductionSection = new DifficultyReductionSection
{
RelativeSizeAxes = Axes.X,
Origin = Anchor.TopCentre,
Anchor = Anchor.TopCentre,
Action = modButtonPressed,
},
difficultyIncreaseSection = new DifficultyIncreaseSection
{
RelativeSizeAxes = Axes.X,
Origin = Anchor.TopCentre,
Anchor = Anchor.TopCentre,
Action = modButtonPressed,
},
assistedSection = new AssistedSection(value)
{
RelativeSizeAxes = Axes.X,
Origin = Anchor.TopCentre,
Anchor = Anchor.TopCentre,
Action = modButtonPressed,
},
};
}
}
protected override void PopIn()
{
FadeIn(move_up_duration, EasingTypes.OutQuint);
@ -56,7 +96,7 @@ namespace osu.Game.Overlays.Mods
rankedMultiplerContainer.MoveToX(0, ranked_multiplier_duration, EasingTypes.OutQuint);
rankedMultiplerContainer.FadeIn(ranked_multiplier_duration, EasingTypes.OutQuint);
ModSection[] sections = new ModSection[] { difficultyReductionSection, difficultyIncreaseSection, assistedSection };
ModSection[] sections = { difficultyReductionSection, difficultyIncreaseSection, assistedSection };
for (int i = 0; i < sections.Length; i++)
{
sections[i].ButtonsContainer.TransformSpacingTo(new Vector2(50f, 0f), button_duration, EasingTypes.OutQuint);
@ -80,7 +120,7 @@ namespace osu.Game.Overlays.Mods
rankedMultiplerContainer.MoveToX(rankedMultiplerContainer.DrawSize.X, move_out_duration, EasingTypes.InSine);
rankedMultiplerContainer.FadeOut(move_out_duration, EasingTypes.InSine);
ModSection[] sections = new ModSection[] { difficultyReductionSection, difficultyIncreaseSection, assistedSection };
ModSection[] sections = { difficultyReductionSection, difficultyIncreaseSection, assistedSection };
for (int i = 0; i < sections.Length; i++)
{
sections[i].ButtonsContainer.TransformSpacingTo(new Vector2(100f, 0f), move_out_duration, EasingTypes.InSine);
@ -119,32 +159,32 @@ namespace osu.Game.Overlays.Mods
{
if (sectionMod.Name == Modes.Mods.HardRock)
{
difficultyReductionSection.EasyButton.Deselect();
difficultyReductionSection.EasyButton?.Deselect();
}
else if (sectionMod.Name == Modes.Mods.Easy)
{
difficultyIncreaseSection.HardRockButton.Deselect();
difficultyIncreaseSection.HardRockButton?.Deselect();
}
if (sectionMod.Name == Modes.Mods.SuddenDeath || sectionMod.Name == Modes.Mods.Perfect)
{
difficultyReductionSection.NoFailButton.Deselect();
assistedSection.RelaxButton.Deselect();
assistedSection.AutopilotButton.Deselect();
assistedSection.AutoplayCinemaButton.Deselect();
difficultyReductionSection.NoFailButton?.Deselect();
assistedSection.RelaxButton?.Deselect();
assistedSection.AutopilotButton?.Deselect();
assistedSection.AutoplayCinemaButton?.Deselect();
}
else if (sectionMod.Name == Modes.Mods.NoFail || sectionMod.Name == Modes.Mods.Relax || sectionMod.Name == Modes.Mods.Relax2 || sectionMod.Name == Modes.Mods.Autoplay || sectionMod.Name == Modes.Mods.Cinema)
else if (sectionMod.Name == Modes.Mods.NoFail || sectionMod.Name == Modes.Mods.Relax || sectionMod.Name == Modes.Mods.Autopilot || sectionMod.Name == Modes.Mods.Autoplay || sectionMod.Name == Modes.Mods.Cinema)
{
difficultyIncreaseSection.SuddenDeathButton.Deselect();
difficultyIncreaseSection.SuddenDeathButton?.Deselect();
}
if (sectionMod.Name == Modes.Mods.DoubleTime || sectionMod.Name == Modes.Mods.Nightcore)
{
difficultyReductionSection.HalfTimeButton.Deselect();
difficultyReductionSection.HalfTimeButton?.Deselect();
}
else if (sectionMod.Name == Modes.Mods.HalfTime)
{
difficultyIncreaseSection.DoubleTimeNightcoreButton.Deselect();
difficultyIncreaseSection.DoubleTimeNightcoreButton?.Deselect();
}
}
@ -155,12 +195,11 @@ namespace osu.Game.Overlays.Mods
foreach (Mod mod in SelectedMods.Value)
{
// TODO: Make this take the actual current mode
multiplier *= mod.ScoreMultiplier(PlayMode.Osu);
multiplier *= mod.ScoreMultiplier(ModMode);
if (ranked)
{
ranked = mod.Ranked(PlayMode.Osu);
ranked = mod.Ranked(ModMode);
}
}
@ -193,7 +232,7 @@ namespace osu.Game.Overlays.Mods
SelectedMods.Value = selectedMods.ToArray();
}
public ModSelector()
public ModSelect()
{
Children = new Drawable[]
{
@ -353,7 +392,7 @@ namespace osu.Game.Overlays.Mods
},
},
},
new FlowContainer
modSectionsContainer = new FlowContainer
{
Origin = Anchor.TopCentre,
Anchor = Anchor.TopCentre,
@ -381,7 +420,7 @@ namespace osu.Game.Overlays.Mods
Anchor = Anchor.TopCentre,
Action = modButtonPressed,
},
assistedSection = new AssistedSection
assistedSection = new AssistedSection(PlayMode.Osu)
{
RelativeSizeAxes = Axes.X,
Origin = Anchor.TopCentre,

View File

@ -29,7 +29,6 @@ using OpenTK.Input;
using System.Collections.Generic;
using osu.Framework.Graphics.Containers;
using osu.Framework.Threading;
using osu.Game.Overlays.Mods;
namespace osu.Game.Screens.Select
{
@ -45,7 +44,7 @@ namespace osu.Game.Screens.Select
private static readonly Vector2 wedged_container_size = new Vector2(0.5f, 225);
private BeatmapInfoWedge beatmapInfoWedge;
private ModSelector modSelect;
private Overlays.Mods.ModSelect modSelect;
private static readonly Vector2 background_blur = new Vector2(20);
private CancellationTokenSource initialAddSetsTask;
@ -135,7 +134,7 @@ namespace osu.Game.Screens.Select
Right = 20,
},
},
modSelect = new ModSelector
modSelect = new Overlays.Mods.ModSelect
{
RelativeSizeAxes = Axes.Both,
Origin = Anchor.BottomCentre,
@ -156,6 +155,11 @@ namespace osu.Game.Screens.Select
{
playMode = osuGame.PlayMode;
playMode.ValueChanged += playMode_ValueChanged;
modSelect.ModMode = playMode;
}
else
{
modSelect.ModMode = PlayMode.Osu;
}
if (database == null)

View File

@ -272,7 +272,7 @@
<Compile Include="Overlays\Pause\ResumeButton.cs" />
<Compile Include="Overlays\Pause\RetryButton.cs" />
<Compile Include="Overlays\Pause\QuitButton.cs" />
<Compile Include="Overlays\Mods\ModSelector.cs" />
<Compile Include="Overlays\Mods\ModSelect.cs" />
<Compile Include="Modes\Mod.cs" />
<Compile Include="Overlays\Mods\ModButton.cs" />
<Compile Include="Modes\UI\ModIcon.cs" />