mirror of
https://github.com/ppy/osu.git
synced 2024-11-06 13:47:38 +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:
parent
0a58fc62db
commit
9fc3726925
@ -1,44 +1,38 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// 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.Framework.Graphics;
|
||||||
using osu.Game.Overlays.Mods;
|
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.GameModes.Testing;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
|
||||||
using osu.Framework.Graphics.Primitives;
|
|
||||||
using osu.Game.Modes.UI;
|
|
||||||
using osu.Game.Modes;
|
using osu.Game.Modes;
|
||||||
using OpenTK;
|
|
||||||
using osu.Game.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
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()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
base.Reset();
|
base.Reset();
|
||||||
|
|
||||||
Add(modSelector = new ModSelector
|
Add(modSelect = new ModSelect
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Origin = Anchor.BottomCentre,
|
Origin = Anchor.BottomCentre,
|
||||||
Anchor = 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -191,7 +191,7 @@
|
|||||||
<Compile Include="Platform\TestStorage.cs" />
|
<Compile Include="Platform\TestStorage.cs" />
|
||||||
<Compile Include="Tests\TestCaseOptions.cs" />
|
<Compile Include="Tests\TestCaseOptions.cs" />
|
||||||
<Compile Include="Tests\TestCasePauseOverlay.cs" />
|
<Compile Include="Tests\TestCasePauseOverlay.cs" />
|
||||||
<Compile Include="Tests\TestCaseModSelector.cs" />
|
<Compile Include="Tests\TestCaseModSelect.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
|
@ -19,6 +19,11 @@ namespace osu.Game.Modes
|
|||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual string Description(PlayMode mode)
|
||||||
|
{
|
||||||
|
return @"";
|
||||||
|
}
|
||||||
|
|
||||||
public virtual double ScoreMultiplier(PlayMode mode)
|
public virtual double ScoreMultiplier(PlayMode mode)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
@ -26,7 +31,7 @@ namespace osu.Game.Modes
|
|||||||
|
|
||||||
public virtual bool Ranked(PlayMode mode)
|
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 Mods Name => Mods.NoFail;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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 double ScoreMultiplier(PlayMode mode) => 0.5;
|
||||||
public override bool Ranked(PlayMode mode) => true;
|
public override bool Ranked(PlayMode mode) => true;
|
||||||
}
|
}
|
||||||
@ -42,6 +48,7 @@ namespace osu.Game.Modes
|
|||||||
{
|
{
|
||||||
public override Mods Name => Mods.Easy;
|
public override Mods Name => Mods.Easy;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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 double ScoreMultiplier(PlayMode mode) => 0.5;
|
||||||
public override bool Ranked(PlayMode mode) => true;
|
public override bool Ranked(PlayMode mode) => true;
|
||||||
}
|
}
|
||||||
@ -50,7 +57,23 @@ namespace osu.Game.Modes
|
|||||||
{
|
{
|
||||||
public override Mods Name => Mods.Hidden;
|
public override Mods Name => Mods.Hidden;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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;
|
public override bool Ranked(PlayMode mode) => true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,14 +81,33 @@ namespace osu.Game.Modes
|
|||||||
{
|
{
|
||||||
public override Mods Name => Mods.HardRock;
|
public override Mods Name => Mods.HardRock;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_hardrock;
|
public override FontAwesome Icon => FontAwesome.fa_osu_mod_hardrock;
|
||||||
public override double ScoreMultiplier(PlayMode mode) => 1.06;
|
public override string Description(PlayMode mode) => @"Everything just got a bit harder...";
|
||||||
public override bool Ranked(PlayMode mode) => true;
|
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 class ModSuddenDeath : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.SuddenDeath;
|
public override Mods Name => Mods.SuddenDeath;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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 double ScoreMultiplier(PlayMode mode) => 1;
|
||||||
public override bool Ranked(PlayMode mode) => true;
|
public override bool Ranked(PlayMode mode) => true;
|
||||||
}
|
}
|
||||||
@ -74,7 +116,25 @@ namespace osu.Game.Modes
|
|||||||
{
|
{
|
||||||
public override Mods Name => Mods.DoubleTime;
|
public override Mods Name => Mods.DoubleTime;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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;
|
public override bool Ranked(PlayMode mode) => true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,6 +142,26 @@ namespace osu.Game.Modes
|
|||||||
{
|
{
|
||||||
public override Mods Name => Mods.Relax;
|
public override Mods Name => Mods.Relax;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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 double ScoreMultiplier(PlayMode mode) => 0;
|
||||||
public override bool Ranked(PlayMode mode) => false;
|
public override bool Ranked(PlayMode mode) => false;
|
||||||
}
|
}
|
||||||
@ -90,23 +170,24 @@ namespace osu.Game.Modes
|
|||||||
{
|
{
|
||||||
public override Mods Name => Mods.HalfTime;
|
public override Mods Name => Mods.HalfTime;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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 override bool Ranked(PlayMode mode) => true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ModNightcore : Mod
|
public class ModNightcore : ModDoubleTime
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Nightcore;
|
public override Mods Name => Mods.Nightcore;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_nightcore;
|
public override FontAwesome Icon => FontAwesome.fa_osu_mod_nightcore;
|
||||||
public override double ScoreMultiplier(PlayMode mode) => 1.12;
|
public override string Description(PlayMode mode) => @"uguuuuuuuu";
|
||||||
public override bool Ranked(PlayMode mode) => true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ModFlashlight : Mod
|
public class ModFlashlight : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Flashlight;
|
public override Mods Name => Mods.Flashlight;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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;
|
public override bool Ranked(PlayMode mode) => true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,6 +195,7 @@ namespace osu.Game.Modes
|
|||||||
{
|
{
|
||||||
public override Mods Name => Mods.Autoplay;
|
public override Mods Name => Mods.Autoplay;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_auto;
|
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 double ScoreMultiplier(PlayMode mode) => 0;
|
||||||
public override bool Ranked(PlayMode mode) => false;
|
public override bool Ranked(PlayMode mode) => false;
|
||||||
}
|
}
|
||||||
@ -122,64 +204,65 @@ namespace osu.Game.Modes
|
|||||||
{
|
{
|
||||||
public override Mods Name => Mods.SpunOut;
|
public override Mods Name => Mods.SpunOut;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_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 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 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 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 Mods Name => Mods.Perfect;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_perfect;
|
public override FontAwesome Icon => FontAwesome.fa_osu_mod_perfect;
|
||||||
public override double ScoreMultiplier(PlayMode mode) => 1;
|
public override string Description(PlayMode mode) => @"SS or quit.";
|
||||||
public override bool Ranked(PlayMode mode) => true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ModKey4 : Mod
|
public class ModKey4 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key4;
|
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 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 class ModKey5 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key5;
|
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 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 class ModKey6 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key6;
|
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 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 class ModKey7 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key7;
|
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 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 class ModKey8 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key8;
|
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 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
|
public class ModFadeIn : Mod
|
||||||
@ -187,13 +270,14 @@ namespace osu.Game.Modes
|
|||||||
public override Mods Name => Mods.FadeIn;
|
public override Mods Name => Mods.FadeIn;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_hidden;
|
public override FontAwesome Icon => FontAwesome.fa_osu_mod_hidden;
|
||||||
public override double ScoreMultiplier(PlayMode mode) => 1;
|
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 class ModRandom : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Random;
|
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 double ScoreMultiplier(PlayMode mode) => 1;
|
||||||
public override bool Ranked(PlayMode mode) => false;
|
public override bool Ranked(PlayMode mode) => false;
|
||||||
}
|
}
|
||||||
@ -211,47 +295,48 @@ namespace osu.Game.Modes
|
|||||||
public override Mods Name => Mods.Target;
|
public override Mods Name => Mods.Target;
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mod_target;
|
public override FontAwesome Icon => FontAwesome.fa_osu_mod_target;
|
||||||
public override double ScoreMultiplier(PlayMode mode) => 1;
|
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 class ModKey9 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key9;
|
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 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 class ModKeyCoop : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.KeyCoop;
|
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 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 class ModKey1 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key1;
|
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 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 class ModKey3 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key3;
|
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 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 class ModKey2 : Mod
|
||||||
{
|
{
|
||||||
public override Mods Name => Mods.Key2;
|
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 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,
|
SpunOut = 1 << 12,
|
||||||
|
|
||||||
[Description(@"Autopilot")]
|
[Description(@"Autopilot")]
|
||||||
Relax2 = 1 << 13,
|
Autopilot = 1 << 13,
|
||||||
|
|
||||||
[Description(@"Perfect")]
|
[Description(@"Perfect")]
|
||||||
Perfect = 1 << 14,
|
Perfect = 1 << 14,
|
||||||
@ -349,7 +434,7 @@ namespace osu.Game.Modes
|
|||||||
LastMod = 1 << 29,
|
LastMod = 1 << 29,
|
||||||
|
|
||||||
KeyMod = Key1 | Key2 | Key3 | Key4 | Key5 | Key6 | Key7 | Key8 | Key9 | KeyCoop,
|
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
|
ScoreIncreaseMods = Hidden | HardRock | DoubleTime | Flashlight | FadeIn
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Modes;
|
using osu.Game.Modes;
|
||||||
@ -9,11 +10,76 @@ namespace osu.Game
|
|||||||
{
|
{
|
||||||
public class AssistedSection : ModSection
|
public class AssistedSection : ModSection
|
||||||
{
|
{
|
||||||
public ModButton RelaxButton => Buttons[0];
|
private ModButton relaxButton;
|
||||||
public ModButton AutopilotButton => Buttons[1];
|
public ModButton RelaxButton
|
||||||
public ModButton TargetPracticeButton => Buttons[2];
|
{
|
||||||
public ModButton SpunOutButton => Buttons[3];
|
get
|
||||||
public ModButton AutoplayCinemaButton => Buttons[4];
|
{
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]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours)
|
||||||
@ -21,40 +87,44 @@ namespace osu.Game
|
|||||||
Colour = colours.Blue;
|
Colour = colours.Blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AssistedSection()
|
public AssistedSection(PlayMode mode)
|
||||||
{
|
{
|
||||||
Header = @"Assisted";
|
Header = @"Assisted";
|
||||||
|
|
||||||
|
switch (mode)
|
||||||
|
{
|
||||||
|
case PlayMode.Osu:
|
||||||
Buttons = new ModButton[]
|
Buttons = new ModButton[]
|
||||||
{
|
{
|
||||||
new ModButton
|
relaxButton = new ModButton
|
||||||
{
|
{
|
||||||
Mods = new Mod[]
|
Mods = new Mod[]
|
||||||
{
|
{
|
||||||
new ModRelax(),
|
new ModRelax(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
new ModButton
|
autopilotButton = new ModButton
|
||||||
{
|
{
|
||||||
Mods = new Mod[]
|
Mods = new Mod[]
|
||||||
{
|
{
|
||||||
new ModRelax2(),
|
new ModAutopilot(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
new ModButton
|
targetPracticeButton = new ModButton
|
||||||
{
|
{
|
||||||
Mods = new Mod[]
|
Mods = new Mod[]
|
||||||
{
|
{
|
||||||
new ModTarget(),
|
new ModTarget(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
new ModButton
|
spunOutButton = new ModButton
|
||||||
{
|
{
|
||||||
Mods = new Mod[]
|
Mods = new Mod[]
|
||||||
{
|
{
|
||||||
new ModSpunOut(),
|
new ModSpunOut(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
new ModButton
|
autoplayCinemaButton = new ModButton
|
||||||
{
|
{
|
||||||
Mods = new Mod[]
|
Mods = new Mod[]
|
||||||
{
|
{
|
||||||
@ -63,6 +133,76 @@ namespace osu.Game
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PlayMode.Taiko:
|
||||||
|
case PlayMode.Catch:
|
||||||
|
Buttons = new ModButton[]
|
||||||
|
{
|
||||||
|
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[]
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ using osu.Framework.Allocation;
|
|||||||
|
|
||||||
namespace osu.Game.Overlays.Mods
|
namespace osu.Game.Overlays.Mods
|
||||||
{
|
{
|
||||||
public class ModSelector : OverlayContainer
|
public class ModSelect : OverlayContainer
|
||||||
{
|
{
|
||||||
private readonly int waves_duration = 1000;
|
private readonly int waves_duration = 1000;
|
||||||
private readonly int move_up_duration = 1500;
|
private readonly int move_up_duration = 1500;
|
||||||
@ -34,6 +34,8 @@ namespace osu.Game.Overlays.Mods
|
|||||||
private OsuSpriteText rankedLabel, multiplierLabel;
|
private OsuSpriteText rankedLabel, multiplierLabel;
|
||||||
private FlowContainer rankedMultiplerContainer;
|
private FlowContainer rankedMultiplerContainer;
|
||||||
|
|
||||||
|
private FlowContainer modSectionsContainer;
|
||||||
|
|
||||||
private DifficultyReductionSection difficultyReductionSection;
|
private DifficultyReductionSection difficultyReductionSection;
|
||||||
private DifficultyIncreaseSection difficultyIncreaseSection;
|
private DifficultyIncreaseSection difficultyIncreaseSection;
|
||||||
private AssistedSection assistedSection;
|
private AssistedSection assistedSection;
|
||||||
@ -43,7 +45,45 @@ namespace osu.Game.Overlays.Mods
|
|||||||
|
|
||||||
public Bindable<Mod[]> SelectedMods = new Bindable<Mod[]>();
|
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()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
FadeIn(move_up_duration, EasingTypes.OutQuint);
|
FadeIn(move_up_duration, EasingTypes.OutQuint);
|
||||||
@ -56,7 +96,7 @@ namespace osu.Game.Overlays.Mods
|
|||||||
rankedMultiplerContainer.MoveToX(0, ranked_multiplier_duration, EasingTypes.OutQuint);
|
rankedMultiplerContainer.MoveToX(0, ranked_multiplier_duration, EasingTypes.OutQuint);
|
||||||
rankedMultiplerContainer.FadeIn(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++)
|
for (int i = 0; i < sections.Length; i++)
|
||||||
{
|
{
|
||||||
sections[i].ButtonsContainer.TransformSpacingTo(new Vector2(50f, 0f), button_duration, EasingTypes.OutQuint);
|
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.MoveToX(rankedMultiplerContainer.DrawSize.X, move_out_duration, EasingTypes.InSine);
|
||||||
rankedMultiplerContainer.FadeOut(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++)
|
for (int i = 0; i < sections.Length; i++)
|
||||||
{
|
{
|
||||||
sections[i].ButtonsContainer.TransformSpacingTo(new Vector2(100f, 0f), move_out_duration, EasingTypes.InSine);
|
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)
|
if (sectionMod.Name == Modes.Mods.HardRock)
|
||||||
{
|
{
|
||||||
difficultyReductionSection.EasyButton.Deselect();
|
difficultyReductionSection.EasyButton?.Deselect();
|
||||||
}
|
}
|
||||||
else if (sectionMod.Name == Modes.Mods.Easy)
|
else if (sectionMod.Name == Modes.Mods.Easy)
|
||||||
{
|
{
|
||||||
difficultyIncreaseSection.HardRockButton.Deselect();
|
difficultyIncreaseSection.HardRockButton?.Deselect();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sectionMod.Name == Modes.Mods.SuddenDeath || sectionMod.Name == Modes.Mods.Perfect)
|
if (sectionMod.Name == Modes.Mods.SuddenDeath || sectionMod.Name == Modes.Mods.Perfect)
|
||||||
{
|
{
|
||||||
difficultyReductionSection.NoFailButton.Deselect();
|
difficultyReductionSection.NoFailButton?.Deselect();
|
||||||
assistedSection.RelaxButton.Deselect();
|
assistedSection.RelaxButton?.Deselect();
|
||||||
assistedSection.AutopilotButton.Deselect();
|
assistedSection.AutopilotButton?.Deselect();
|
||||||
assistedSection.AutoplayCinemaButton.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)
|
if (sectionMod.Name == Modes.Mods.DoubleTime || sectionMod.Name == Modes.Mods.Nightcore)
|
||||||
{
|
{
|
||||||
difficultyReductionSection.HalfTimeButton.Deselect();
|
difficultyReductionSection.HalfTimeButton?.Deselect();
|
||||||
}
|
}
|
||||||
else if (sectionMod.Name == Modes.Mods.HalfTime)
|
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)
|
foreach (Mod mod in SelectedMods.Value)
|
||||||
{
|
{
|
||||||
// TODO: Make this take the actual current mode
|
multiplier *= mod.ScoreMultiplier(ModMode);
|
||||||
multiplier *= mod.ScoreMultiplier(PlayMode.Osu);
|
|
||||||
|
|
||||||
if (ranked)
|
if (ranked)
|
||||||
{
|
{
|
||||||
ranked = mod.Ranked(PlayMode.Osu);
|
ranked = mod.Ranked(ModMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,7 +232,7 @@ namespace osu.Game.Overlays.Mods
|
|||||||
SelectedMods.Value = selectedMods.ToArray();
|
SelectedMods.Value = selectedMods.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModSelector()
|
public ModSelect()
|
||||||
{
|
{
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
@ -353,7 +392,7 @@ namespace osu.Game.Overlays.Mods
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
new FlowContainer
|
modSectionsContainer = new FlowContainer
|
||||||
{
|
{
|
||||||
Origin = Anchor.TopCentre,
|
Origin = Anchor.TopCentre,
|
||||||
Anchor = Anchor.TopCentre,
|
Anchor = Anchor.TopCentre,
|
||||||
@ -381,7 +420,7 @@ namespace osu.Game.Overlays.Mods
|
|||||||
Anchor = Anchor.TopCentre,
|
Anchor = Anchor.TopCentre,
|
||||||
Action = modButtonPressed,
|
Action = modButtonPressed,
|
||||||
},
|
},
|
||||||
assistedSection = new AssistedSection
|
assistedSection = new AssistedSection(PlayMode.Osu)
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.X,
|
RelativeSizeAxes = Axes.X,
|
||||||
Origin = Anchor.TopCentre,
|
Origin = Anchor.TopCentre,
|
@ -29,7 +29,6 @@ using OpenTK.Input;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Threading;
|
using osu.Framework.Threading;
|
||||||
using osu.Game.Overlays.Mods;
|
|
||||||
|
|
||||||
namespace osu.Game.Screens.Select
|
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 static readonly Vector2 wedged_container_size = new Vector2(0.5f, 225);
|
||||||
private BeatmapInfoWedge beatmapInfoWedge;
|
private BeatmapInfoWedge beatmapInfoWedge;
|
||||||
|
|
||||||
private ModSelector modSelect;
|
private Overlays.Mods.ModSelect modSelect;
|
||||||
|
|
||||||
private static readonly Vector2 background_blur = new Vector2(20);
|
private static readonly Vector2 background_blur = new Vector2(20);
|
||||||
private CancellationTokenSource initialAddSetsTask;
|
private CancellationTokenSource initialAddSetsTask;
|
||||||
@ -135,7 +134,7 @@ namespace osu.Game.Screens.Select
|
|||||||
Right = 20,
|
Right = 20,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
modSelect = new ModSelector
|
modSelect = new Overlays.Mods.ModSelect
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Origin = Anchor.BottomCentre,
|
Origin = Anchor.BottomCentre,
|
||||||
@ -156,6 +155,11 @@ namespace osu.Game.Screens.Select
|
|||||||
{
|
{
|
||||||
playMode = osuGame.PlayMode;
|
playMode = osuGame.PlayMode;
|
||||||
playMode.ValueChanged += playMode_ValueChanged;
|
playMode.ValueChanged += playMode_ValueChanged;
|
||||||
|
modSelect.ModMode = playMode;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
modSelect.ModMode = PlayMode.Osu;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (database == null)
|
if (database == null)
|
||||||
|
@ -272,7 +272,7 @@
|
|||||||
<Compile Include="Overlays\Pause\ResumeButton.cs" />
|
<Compile Include="Overlays\Pause\ResumeButton.cs" />
|
||||||
<Compile Include="Overlays\Pause\RetryButton.cs" />
|
<Compile Include="Overlays\Pause\RetryButton.cs" />
|
||||||
<Compile Include="Overlays\Pause\QuitButton.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="Modes\Mod.cs" />
|
||||||
<Compile Include="Overlays\Mods\ModButton.cs" />
|
<Compile Include="Overlays\Mods\ModButton.cs" />
|
||||||
<Compile Include="Modes\UI\ModIcon.cs" />
|
<Compile Include="Modes\UI\ModIcon.cs" />
|
||||||
|
Loading…
Reference in New Issue
Block a user