mirror of
https://github.com/ppy/osu.git
synced 2025-01-27 17:03:21 +08:00
Merge pull request #26167 from bdach/update-icons
Update toolbar, main menu, & editor icons
This commit is contained in:
commit
28f5e90aba
@ -17,6 +17,7 @@ using osu.Framework.Graphics.Sprites;
|
|||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Rulesets.Edit;
|
using osu.Game.Rulesets.Edit;
|
||||||
using osu.Game.Rulesets.Edit.Tools;
|
using osu.Game.Rulesets.Edit.Tools;
|
||||||
@ -54,7 +55,7 @@ namespace osu.Game.Rulesets.Osu.Edit
|
|||||||
.Concat(DistanceSnapProvider.CreateTernaryButtons())
|
.Concat(DistanceSnapProvider.CreateTernaryButtons())
|
||||||
.Concat(new[]
|
.Concat(new[]
|
||||||
{
|
{
|
||||||
new TernaryButton(rectangularGridSnapToggle, "Grid Snap", () => new SpriteIcon { Icon = FontAwesome.Solid.Th })
|
new TernaryButton(rectangularGridSnapToggle, "Grid Snap", () => new SpriteIcon { Icon = OsuIcon.EditorGridSnap })
|
||||||
});
|
});
|
||||||
|
|
||||||
private BindableList<HitObject> selectedHitObjects;
|
private BindableList<HitObject> selectedHitObjects;
|
||||||
|
@ -154,7 +154,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
public TestTitle()
|
public TestTitle()
|
||||||
{
|
{
|
||||||
Title = "title";
|
Title = "title";
|
||||||
Icon = HexaconsIcons.Devtools;
|
Icon = OsuIcon.ChangelogB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,131 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using osu.Framework.Graphics.Sprites;
|
|
||||||
using osu.Framework.Graphics.Textures;
|
|
||||||
using osu.Framework.Text;
|
|
||||||
|
|
||||||
namespace osu.Game.Graphics
|
|
||||||
{
|
|
||||||
public static class HexaconsIcons
|
|
||||||
{
|
|
||||||
public const string FONT_NAME = "Icons/Hexacons";
|
|
||||||
|
|
||||||
public static IconUsage BeatmapPacks => get(HexaconsMapping.beatmap_packs);
|
|
||||||
public static IconUsage Beatmap => get(HexaconsMapping.beatmap);
|
|
||||||
public static IconUsage Calendar => get(HexaconsMapping.calendar);
|
|
||||||
public static IconUsage Chart => get(HexaconsMapping.chart);
|
|
||||||
public static IconUsage Community => get(HexaconsMapping.community);
|
|
||||||
public static IconUsage Contests => get(HexaconsMapping.contests);
|
|
||||||
public static IconUsage Devtools => get(HexaconsMapping.devtools);
|
|
||||||
public static IconUsage Download => get(HexaconsMapping.download);
|
|
||||||
public static IconUsage Editor => get(HexaconsMapping.editor);
|
|
||||||
public static IconUsage FeaturedArtist => get(HexaconsMapping.featured_artist);
|
|
||||||
public static IconUsage Home => get(HexaconsMapping.home);
|
|
||||||
public static IconUsage Messaging => get(HexaconsMapping.messaging);
|
|
||||||
public static IconUsage Music => get(HexaconsMapping.music);
|
|
||||||
public static IconUsage News => get(HexaconsMapping.news);
|
|
||||||
public static IconUsage Notification => get(HexaconsMapping.notification);
|
|
||||||
public static IconUsage Profile => get(HexaconsMapping.profile);
|
|
||||||
public static IconUsage Rankings => get(HexaconsMapping.rankings);
|
|
||||||
public static IconUsage Search => get(HexaconsMapping.search);
|
|
||||||
public static IconUsage Settings => get(HexaconsMapping.settings);
|
|
||||||
public static IconUsage Social => get(HexaconsMapping.social);
|
|
||||||
public static IconUsage Store => get(HexaconsMapping.store);
|
|
||||||
public static IconUsage Tournament => get(HexaconsMapping.tournament);
|
|
||||||
public static IconUsage Wiki => get(HexaconsMapping.wiki);
|
|
||||||
|
|
||||||
private static IconUsage get(HexaconsMapping icon) => new IconUsage((char)icon, FONT_NAME);
|
|
||||||
|
|
||||||
// Basically just converting to something we can use in a `char` lookup for FontStore/GlyphStore compatibility.
|
|
||||||
// Names should match filenames in resources.
|
|
||||||
private enum HexaconsMapping
|
|
||||||
{
|
|
||||||
beatmap_packs,
|
|
||||||
beatmap,
|
|
||||||
calendar,
|
|
||||||
chart,
|
|
||||||
community,
|
|
||||||
contests,
|
|
||||||
devtools,
|
|
||||||
download,
|
|
||||||
editor,
|
|
||||||
featured_artist,
|
|
||||||
home,
|
|
||||||
messaging,
|
|
||||||
music,
|
|
||||||
news,
|
|
||||||
notification,
|
|
||||||
profile,
|
|
||||||
rankings,
|
|
||||||
search,
|
|
||||||
settings,
|
|
||||||
social,
|
|
||||||
store,
|
|
||||||
tournament,
|
|
||||||
wiki,
|
|
||||||
}
|
|
||||||
|
|
||||||
public class HexaconsStore : ITextureStore, ITexturedGlyphLookupStore
|
|
||||||
{
|
|
||||||
private readonly TextureStore textures;
|
|
||||||
|
|
||||||
public HexaconsStore(TextureStore textures)
|
|
||||||
{
|
|
||||||
this.textures = textures;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
textures.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ITexturedCharacterGlyph? Get(string? fontName, char character)
|
|
||||||
{
|
|
||||||
if (fontName == FONT_NAME)
|
|
||||||
return new Glyph(textures.Get($"{fontName}/{((HexaconsMapping)character).ToString().Replace("_", "-")}"));
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task<ITexturedCharacterGlyph?> GetAsync(string fontName, char character) => Task.Run(() => Get(fontName, character));
|
|
||||||
|
|
||||||
public Texture? Get(string name, WrapMode wrapModeS, WrapMode wrapModeT) => null;
|
|
||||||
|
|
||||||
public Texture Get(string name) => throw new NotImplementedException();
|
|
||||||
|
|
||||||
public Task<Texture> GetAsync(string name, CancellationToken cancellationToken = default) => throw new NotImplementedException();
|
|
||||||
|
|
||||||
public Stream GetStream(string name) => throw new NotImplementedException();
|
|
||||||
|
|
||||||
public IEnumerable<string> GetAvailableResources() => throw new NotImplementedException();
|
|
||||||
|
|
||||||
public Task<Texture?> GetAsync(string name, WrapMode wrapModeS, WrapMode wrapModeT, CancellationToken cancellationToken = default) => throw new NotImplementedException();
|
|
||||||
|
|
||||||
public class Glyph : ITexturedCharacterGlyph
|
|
||||||
{
|
|
||||||
public float XOffset => default;
|
|
||||||
public float YOffset => default;
|
|
||||||
public float XAdvance => default;
|
|
||||||
public float Baseline => default;
|
|
||||||
public char Character => default;
|
|
||||||
|
|
||||||
public float GetKerning<T>(T lastGlyph) where T : ICharacterGlyph => throw new NotImplementedException();
|
|
||||||
|
|
||||||
public Texture Texture { get; }
|
|
||||||
public float Width => Texture.Width;
|
|
||||||
public float Height => Texture.Height;
|
|
||||||
|
|
||||||
public Glyph(Texture texture)
|
|
||||||
{
|
|
||||||
Texture = texture;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,96 +1,444 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using osu.Framework.Extensions;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
|
using osu.Framework.Graphics.Textures;
|
||||||
|
using osu.Framework.Text;
|
||||||
|
|
||||||
namespace osu.Game.Graphics
|
namespace osu.Game.Graphics
|
||||||
{
|
{
|
||||||
public static class OsuIcon
|
public static class OsuIcon
|
||||||
{
|
{
|
||||||
public static IconUsage Get(int icon) => new IconUsage((char)icon, "osuFont");
|
#region Legacy spritesheet-based icons
|
||||||
|
|
||||||
|
private static IconUsage get(int icon) => new IconUsage((char)icon, @"osuFont");
|
||||||
|
|
||||||
// ruleset icons in circles
|
// ruleset icons in circles
|
||||||
public static IconUsage RulesetOsu => Get(0xe000);
|
public static IconUsage RulesetOsu => get(0xe000);
|
||||||
public static IconUsage RulesetMania => Get(0xe001);
|
public static IconUsage RulesetMania => get(0xe001);
|
||||||
public static IconUsage RulesetCatch => Get(0xe002);
|
public static IconUsage RulesetCatch => get(0xe002);
|
||||||
public static IconUsage RulesetTaiko => Get(0xe003);
|
public static IconUsage RulesetTaiko => get(0xe003);
|
||||||
|
|
||||||
// ruleset icons without circles
|
// ruleset icons without circles
|
||||||
public static IconUsage FilledCircle => Get(0xe004);
|
public static IconUsage FilledCircle => get(0xe004);
|
||||||
public static IconUsage CrossCircle => Get(0xe005);
|
public static IconUsage Logo => get(0xe006);
|
||||||
public static IconUsage Logo => Get(0xe006);
|
public static IconUsage ChevronDownCircle => get(0xe007);
|
||||||
public static IconUsage ChevronDownCircle => Get(0xe007);
|
public static IconUsage EditCircle => get(0xe033);
|
||||||
public static IconUsage EditCircle => Get(0xe033);
|
public static IconUsage LeftCircle => get(0xe034);
|
||||||
public static IconUsage LeftCircle => Get(0xe034);
|
public static IconUsage RightCircle => get(0xe035);
|
||||||
public static IconUsage RightCircle => Get(0xe035);
|
public static IconUsage Charts => get(0xe036);
|
||||||
public static IconUsage Charts => Get(0xe036);
|
public static IconUsage Solo => get(0xe037);
|
||||||
public static IconUsage Solo => Get(0xe037);
|
public static IconUsage Multi => get(0xe038);
|
||||||
public static IconUsage Multi => Get(0xe038);
|
public static IconUsage Gear => get(0xe039);
|
||||||
public static IconUsage Gear => Get(0xe039);
|
|
||||||
|
|
||||||
// misc icons
|
// misc icons
|
||||||
public static IconUsage Bat => Get(0xe008);
|
public static IconUsage Bat => get(0xe008);
|
||||||
public static IconUsage Bubble => Get(0xe009);
|
public static IconUsage Bubble => get(0xe009);
|
||||||
public static IconUsage BubblePop => Get(0xe02e);
|
public static IconUsage BubblePop => get(0xe02e);
|
||||||
public static IconUsage Dice => Get(0xe011);
|
public static IconUsage Dice => get(0xe011);
|
||||||
public static IconUsage Heart => Get(0xe02f);
|
public static IconUsage HeartBreak => get(0xe030);
|
||||||
public static IconUsage HeartBreak => Get(0xe030);
|
public static IconUsage Hot => get(0xe031);
|
||||||
public static IconUsage Hot => Get(0xe031);
|
public static IconUsage ListSearch => get(0xe032);
|
||||||
public static IconUsage ListSearch => Get(0xe032);
|
|
||||||
|
|
||||||
//osu! playstyles
|
//osu! playstyles
|
||||||
public static IconUsage PlayStyleTablet => Get(0xe02a);
|
public static IconUsage PlayStyleTablet => get(0xe02a);
|
||||||
public static IconUsage PlayStyleMouse => Get(0xe029);
|
public static IconUsage PlayStyleMouse => get(0xe029);
|
||||||
public static IconUsage PlayStyleKeyboard => Get(0xe02b);
|
public static IconUsage PlayStyleKeyboard => get(0xe02b);
|
||||||
public static IconUsage PlayStyleTouch => Get(0xe02c);
|
public static IconUsage PlayStyleTouch => get(0xe02c);
|
||||||
|
|
||||||
// osu! difficulties
|
// osu! difficulties
|
||||||
public static IconUsage EasyOsu => Get(0xe015);
|
public static IconUsage EasyOsu => get(0xe015);
|
||||||
public static IconUsage NormalOsu => Get(0xe016);
|
public static IconUsage NormalOsu => get(0xe016);
|
||||||
public static IconUsage HardOsu => Get(0xe017);
|
public static IconUsage HardOsu => get(0xe017);
|
||||||
public static IconUsage InsaneOsu => Get(0xe018);
|
public static IconUsage InsaneOsu => get(0xe018);
|
||||||
public static IconUsage ExpertOsu => Get(0xe019);
|
public static IconUsage ExpertOsu => get(0xe019);
|
||||||
|
|
||||||
// taiko difficulties
|
// taiko difficulties
|
||||||
public static IconUsage EasyTaiko => Get(0xe01a);
|
public static IconUsage EasyTaiko => get(0xe01a);
|
||||||
public static IconUsage NormalTaiko => Get(0xe01b);
|
public static IconUsage NormalTaiko => get(0xe01b);
|
||||||
public static IconUsage HardTaiko => Get(0xe01c);
|
public static IconUsage HardTaiko => get(0xe01c);
|
||||||
public static IconUsage InsaneTaiko => Get(0xe01d);
|
public static IconUsage InsaneTaiko => get(0xe01d);
|
||||||
public static IconUsage ExpertTaiko => Get(0xe01e);
|
public static IconUsage ExpertTaiko => get(0xe01e);
|
||||||
|
|
||||||
// fruits difficulties
|
// fruits difficulties
|
||||||
public static IconUsage EasyFruits => Get(0xe01f);
|
public static IconUsage EasyFruits => get(0xe01f);
|
||||||
public static IconUsage NormalFruits => Get(0xe020);
|
public static IconUsage NormalFruits => get(0xe020);
|
||||||
public static IconUsage HardFruits => Get(0xe021);
|
public static IconUsage HardFruits => get(0xe021);
|
||||||
public static IconUsage InsaneFruits => Get(0xe022);
|
public static IconUsage InsaneFruits => get(0xe022);
|
||||||
public static IconUsage ExpertFruits => Get(0xe023);
|
public static IconUsage ExpertFruits => get(0xe023);
|
||||||
|
|
||||||
// mania difficulties
|
// mania difficulties
|
||||||
public static IconUsage EasyMania => Get(0xe024);
|
public static IconUsage EasyMania => get(0xe024);
|
||||||
public static IconUsage NormalMania => Get(0xe025);
|
public static IconUsage NormalMania => get(0xe025);
|
||||||
public static IconUsage HardMania => Get(0xe026);
|
public static IconUsage HardMania => get(0xe026);
|
||||||
public static IconUsage InsaneMania => Get(0xe027);
|
public static IconUsage InsaneMania => get(0xe027);
|
||||||
public static IconUsage ExpertMania => Get(0xe028);
|
public static IconUsage ExpertMania => get(0xe028);
|
||||||
|
|
||||||
// mod icons
|
// mod icons
|
||||||
public static IconUsage ModPerfect => Get(0xe049);
|
public static IconUsage ModPerfect => get(0xe049);
|
||||||
public static IconUsage ModAutopilot => Get(0xe03a);
|
public static IconUsage ModAutopilot => get(0xe03a);
|
||||||
public static IconUsage ModAuto => Get(0xe03b);
|
public static IconUsage ModAuto => get(0xe03b);
|
||||||
public static IconUsage ModCinema => Get(0xe03c);
|
public static IconUsage ModCinema => get(0xe03c);
|
||||||
public static IconUsage ModDoubleTime => Get(0xe03d);
|
public static IconUsage ModDoubleTime => get(0xe03d);
|
||||||
public static IconUsage ModEasy => Get(0xe03e);
|
public static IconUsage ModEasy => get(0xe03e);
|
||||||
public static IconUsage ModFlashlight => Get(0xe03f);
|
public static IconUsage ModFlashlight => get(0xe03f);
|
||||||
public static IconUsage ModHalftime => Get(0xe040);
|
public static IconUsage ModHalftime => get(0xe040);
|
||||||
public static IconUsage ModHardRock => Get(0xe041);
|
public static IconUsage ModHardRock => get(0xe041);
|
||||||
public static IconUsage ModHidden => Get(0xe042);
|
public static IconUsage ModHidden => get(0xe042);
|
||||||
public static IconUsage ModNightcore => Get(0xe043);
|
public static IconUsage ModNightcore => get(0xe043);
|
||||||
public static IconUsage ModNoFail => Get(0xe044);
|
public static IconUsage ModNoFail => get(0xe044);
|
||||||
public static IconUsage ModRelax => Get(0xe045);
|
public static IconUsage ModRelax => get(0xe045);
|
||||||
public static IconUsage ModSpunOut => Get(0xe046);
|
public static IconUsage ModSpunOut => get(0xe046);
|
||||||
public static IconUsage ModSuddenDeath => Get(0xe047);
|
public static IconUsage ModSuddenDeath => get(0xe047);
|
||||||
public static IconUsage ModTarget => Get(0xe048);
|
public static IconUsage ModTarget => get(0xe048);
|
||||||
|
|
||||||
// Use "Icons/BeatmapDetails/mod-icon" instead
|
// Use "Icons/BeatmapDetails/mod-icon" instead
|
||||||
// public static IconUsage ModBg => Get(0xe04a);
|
// public static IconUsage ModBg => Get(0xe04a);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region New single-file-based icons
|
||||||
|
|
||||||
|
public const string FONT_NAME = @"Icons";
|
||||||
|
|
||||||
|
public static IconUsage Audio => get(OsuIconMapping.Audio);
|
||||||
|
public static IconUsage Beatmap => get(OsuIconMapping.Beatmap);
|
||||||
|
public static IconUsage Calendar => get(OsuIconMapping.Calendar);
|
||||||
|
public static IconUsage ChangelogA => get(OsuIconMapping.ChangelogA);
|
||||||
|
public static IconUsage ChangelogB => get(OsuIconMapping.ChangelogB);
|
||||||
|
public static IconUsage Chat => get(OsuIconMapping.Chat);
|
||||||
|
public static IconUsage CheckCircle => get(OsuIconMapping.CheckCircle);
|
||||||
|
public static IconUsage CollapseA => get(OsuIconMapping.CollapseA);
|
||||||
|
public static IconUsage Collections => get(OsuIconMapping.Collections);
|
||||||
|
public static IconUsage Cross => get(OsuIconMapping.Cross);
|
||||||
|
public static IconUsage CrossCircle => get(OsuIconMapping.CrossCircle);
|
||||||
|
public static IconUsage Crown => get(OsuIconMapping.Crown);
|
||||||
|
public static IconUsage Debug => get(OsuIconMapping.Debug);
|
||||||
|
public static IconUsage Delete => get(OsuIconMapping.Delete);
|
||||||
|
public static IconUsage Details => get(OsuIconMapping.Details);
|
||||||
|
public static IconUsage Discord => get(OsuIconMapping.Discord);
|
||||||
|
public static IconUsage EllipsisHorizontal => get(OsuIconMapping.EllipsisHorizontal);
|
||||||
|
public static IconUsage EllipsisVertical => get(OsuIconMapping.EllipsisVertical);
|
||||||
|
public static IconUsage ExpandA => get(OsuIconMapping.ExpandA);
|
||||||
|
public static IconUsage ExpandB => get(OsuIconMapping.ExpandB);
|
||||||
|
public static IconUsage FeaturedArtist => get(OsuIconMapping.FeaturedArtist);
|
||||||
|
public static IconUsage FeaturedArtistCircle => get(OsuIconMapping.FeaturedArtistCircle);
|
||||||
|
public static IconUsage GameplayA => get(OsuIconMapping.GameplayA);
|
||||||
|
public static IconUsage GameplayB => get(OsuIconMapping.GameplayB);
|
||||||
|
public static IconUsage GameplayC => get(OsuIconMapping.GameplayC);
|
||||||
|
public static IconUsage Global => get(OsuIconMapping.Global);
|
||||||
|
public static IconUsage Graphics => get(OsuIconMapping.Graphics);
|
||||||
|
public static IconUsage Heart => get(OsuIconMapping.Heart);
|
||||||
|
public static IconUsage Home => get(OsuIconMapping.Home);
|
||||||
|
public static IconUsage Input => get(OsuIconMapping.Input);
|
||||||
|
public static IconUsage Maintenance => get(OsuIconMapping.Maintenance);
|
||||||
|
public static IconUsage Megaphone => get(OsuIconMapping.Megaphone);
|
||||||
|
public static IconUsage Music => get(OsuIconMapping.Music);
|
||||||
|
public static IconUsage News => get(OsuIconMapping.News);
|
||||||
|
public static IconUsage Next => get(OsuIconMapping.Next);
|
||||||
|
public static IconUsage NextCircle => get(OsuIconMapping.NextCircle);
|
||||||
|
public static IconUsage Notification => get(OsuIconMapping.Notification);
|
||||||
|
public static IconUsage Online => get(OsuIconMapping.Online);
|
||||||
|
public static IconUsage Play => get(OsuIconMapping.Play);
|
||||||
|
public static IconUsage Player => get(OsuIconMapping.Player);
|
||||||
|
public static IconUsage PlayerFollow => get(OsuIconMapping.PlayerFollow);
|
||||||
|
public static IconUsage Prev => get(OsuIconMapping.Prev);
|
||||||
|
public static IconUsage PrevCircle => get(OsuIconMapping.PrevCircle);
|
||||||
|
public static IconUsage Ranking => get(OsuIconMapping.Ranking);
|
||||||
|
public static IconUsage Rulesets => get(OsuIconMapping.Rulesets);
|
||||||
|
public static IconUsage Search => get(OsuIconMapping.Search);
|
||||||
|
public static IconUsage Settings => get(OsuIconMapping.Settings);
|
||||||
|
public static IconUsage SkinA => get(OsuIconMapping.SkinA);
|
||||||
|
public static IconUsage SkinB => get(OsuIconMapping.SkinB);
|
||||||
|
public static IconUsage Star => get(OsuIconMapping.Star);
|
||||||
|
public static IconUsage Storyboard => get(OsuIconMapping.Storyboard);
|
||||||
|
public static IconUsage Team => get(OsuIconMapping.Team);
|
||||||
|
public static IconUsage ThumbsUp => get(OsuIconMapping.ThumbsUp);
|
||||||
|
public static IconUsage Tournament => get(OsuIconMapping.Tournament);
|
||||||
|
public static IconUsage Twitter => get(OsuIconMapping.Twitter);
|
||||||
|
public static IconUsage UserInterface => get(OsuIconMapping.UserInterface);
|
||||||
|
public static IconUsage Wiki => get(OsuIconMapping.Wiki);
|
||||||
|
public static IconUsage EditorAddControlPoint => get(OsuIconMapping.EditorAddControlPoint);
|
||||||
|
public static IconUsage EditorConvertToStream => get(OsuIconMapping.EditorConvertToStream);
|
||||||
|
public static IconUsage EditorDistanceSnap => get(OsuIconMapping.EditorDistanceSnap);
|
||||||
|
public static IconUsage EditorFinish => get(OsuIconMapping.EditorFinish);
|
||||||
|
public static IconUsage EditorGridSnap => get(OsuIconMapping.EditorGridSnap);
|
||||||
|
public static IconUsage EditorNewComboA => get(OsuIconMapping.EditorNewComboA);
|
||||||
|
public static IconUsage EditorNewComboB => get(OsuIconMapping.EditorNewComboB);
|
||||||
|
public static IconUsage EditorSelect => get(OsuIconMapping.EditorSelect);
|
||||||
|
public static IconUsage EditorSound => get(OsuIconMapping.EditorSound);
|
||||||
|
public static IconUsage EditorWhistle => get(OsuIconMapping.EditorWhistle);
|
||||||
|
|
||||||
|
private static IconUsage get(OsuIconMapping glyph) => new IconUsage((char)glyph, FONT_NAME);
|
||||||
|
|
||||||
|
private enum OsuIconMapping
|
||||||
|
{
|
||||||
|
[Description(@"audio")]
|
||||||
|
Audio,
|
||||||
|
|
||||||
|
[Description(@"beatmap")]
|
||||||
|
Beatmap,
|
||||||
|
|
||||||
|
[Description(@"calendar")]
|
||||||
|
Calendar,
|
||||||
|
|
||||||
|
[Description(@"changelog-a")]
|
||||||
|
ChangelogA,
|
||||||
|
|
||||||
|
[Description(@"changelog-b")]
|
||||||
|
ChangelogB,
|
||||||
|
|
||||||
|
[Description(@"chat")]
|
||||||
|
Chat,
|
||||||
|
|
||||||
|
[Description(@"check-circle")]
|
||||||
|
CheckCircle,
|
||||||
|
|
||||||
|
[Description(@"collapse-a")]
|
||||||
|
CollapseA,
|
||||||
|
|
||||||
|
[Description(@"collections")]
|
||||||
|
Collections,
|
||||||
|
|
||||||
|
[Description(@"cross")]
|
||||||
|
Cross,
|
||||||
|
|
||||||
|
[Description(@"cross-circle")]
|
||||||
|
CrossCircle,
|
||||||
|
|
||||||
|
[Description(@"crown")]
|
||||||
|
Crown,
|
||||||
|
|
||||||
|
[Description(@"debug")]
|
||||||
|
Debug,
|
||||||
|
|
||||||
|
[Description(@"delete")]
|
||||||
|
Delete,
|
||||||
|
|
||||||
|
[Description(@"details")]
|
||||||
|
Details,
|
||||||
|
|
||||||
|
[Description(@"discord")]
|
||||||
|
Discord,
|
||||||
|
|
||||||
|
[Description(@"ellipsis-horizontal")]
|
||||||
|
EllipsisHorizontal,
|
||||||
|
|
||||||
|
[Description(@"ellipsis-vertical")]
|
||||||
|
EllipsisVertical,
|
||||||
|
|
||||||
|
[Description(@"expand-a")]
|
||||||
|
ExpandA,
|
||||||
|
|
||||||
|
[Description(@"expand-b")]
|
||||||
|
ExpandB,
|
||||||
|
|
||||||
|
[Description(@"featured-artist")]
|
||||||
|
FeaturedArtist,
|
||||||
|
|
||||||
|
[Description(@"featured-artist-circle")]
|
||||||
|
FeaturedArtistCircle,
|
||||||
|
|
||||||
|
[Description(@"gameplay-a")]
|
||||||
|
GameplayA,
|
||||||
|
|
||||||
|
[Description(@"gameplay-b")]
|
||||||
|
GameplayB,
|
||||||
|
|
||||||
|
[Description(@"gameplay-c")]
|
||||||
|
GameplayC,
|
||||||
|
|
||||||
|
[Description(@"global")]
|
||||||
|
Global,
|
||||||
|
|
||||||
|
[Description(@"graphics")]
|
||||||
|
Graphics,
|
||||||
|
|
||||||
|
[Description(@"heart")]
|
||||||
|
Heart,
|
||||||
|
|
||||||
|
[Description(@"home")]
|
||||||
|
Home,
|
||||||
|
|
||||||
|
[Description(@"input")]
|
||||||
|
Input,
|
||||||
|
|
||||||
|
[Description(@"maintenance")]
|
||||||
|
Maintenance,
|
||||||
|
|
||||||
|
[Description(@"megaphone")]
|
||||||
|
Megaphone,
|
||||||
|
|
||||||
|
[Description(@"music")]
|
||||||
|
Music,
|
||||||
|
|
||||||
|
[Description(@"news")]
|
||||||
|
News,
|
||||||
|
|
||||||
|
[Description(@"next")]
|
||||||
|
Next,
|
||||||
|
|
||||||
|
[Description(@"next-circle")]
|
||||||
|
NextCircle,
|
||||||
|
|
||||||
|
[Description(@"notification")]
|
||||||
|
Notification,
|
||||||
|
|
||||||
|
[Description(@"online")]
|
||||||
|
Online,
|
||||||
|
|
||||||
|
[Description(@"play")]
|
||||||
|
Play,
|
||||||
|
|
||||||
|
[Description(@"player")]
|
||||||
|
Player,
|
||||||
|
|
||||||
|
[Description(@"player-follow")]
|
||||||
|
PlayerFollow,
|
||||||
|
|
||||||
|
[Description(@"prev")]
|
||||||
|
Prev,
|
||||||
|
|
||||||
|
[Description(@"prev-circle")]
|
||||||
|
PrevCircle,
|
||||||
|
|
||||||
|
[Description(@"ranking")]
|
||||||
|
Ranking,
|
||||||
|
|
||||||
|
[Description(@"rulesets")]
|
||||||
|
Rulesets,
|
||||||
|
|
||||||
|
[Description(@"search")]
|
||||||
|
Search,
|
||||||
|
|
||||||
|
[Description(@"settings")]
|
||||||
|
Settings,
|
||||||
|
|
||||||
|
[Description(@"skin-a")]
|
||||||
|
SkinA,
|
||||||
|
|
||||||
|
[Description(@"skin-b")]
|
||||||
|
SkinB,
|
||||||
|
|
||||||
|
[Description(@"star")]
|
||||||
|
Star,
|
||||||
|
|
||||||
|
[Description(@"storyboard")]
|
||||||
|
Storyboard,
|
||||||
|
|
||||||
|
[Description(@"team")]
|
||||||
|
Team,
|
||||||
|
|
||||||
|
[Description(@"thumbs-up")]
|
||||||
|
ThumbsUp,
|
||||||
|
|
||||||
|
[Description(@"tournament")]
|
||||||
|
Tournament,
|
||||||
|
|
||||||
|
[Description(@"twitter")]
|
||||||
|
Twitter,
|
||||||
|
|
||||||
|
[Description(@"user-interface")]
|
||||||
|
UserInterface,
|
||||||
|
|
||||||
|
[Description(@"wiki")]
|
||||||
|
Wiki,
|
||||||
|
|
||||||
|
[Description(@"Editor/add-control-point")]
|
||||||
|
EditorAddControlPoint = 1000,
|
||||||
|
|
||||||
|
[Description(@"Editor/convert-to-stream")]
|
||||||
|
EditorConvertToStream,
|
||||||
|
|
||||||
|
[Description(@"Editor/distance-snap")]
|
||||||
|
EditorDistanceSnap,
|
||||||
|
|
||||||
|
[Description(@"Editor/finish")]
|
||||||
|
EditorFinish,
|
||||||
|
|
||||||
|
[Description(@"Editor/grid-snap")]
|
||||||
|
EditorGridSnap,
|
||||||
|
|
||||||
|
[Description(@"Editor/new-combo-a")]
|
||||||
|
EditorNewComboA,
|
||||||
|
|
||||||
|
[Description(@"Editor/new-combo-b")]
|
||||||
|
EditorNewComboB,
|
||||||
|
|
||||||
|
[Description(@"Editor/select")]
|
||||||
|
EditorSelect,
|
||||||
|
|
||||||
|
[Description(@"Editor/sound")]
|
||||||
|
EditorSound,
|
||||||
|
|
||||||
|
[Description(@"Editor/whistle")]
|
||||||
|
EditorWhistle,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OsuIconStore : ITextureStore, ITexturedGlyphLookupStore
|
||||||
|
{
|
||||||
|
private readonly TextureStore textures;
|
||||||
|
|
||||||
|
public OsuIconStore(TextureStore textures)
|
||||||
|
{
|
||||||
|
this.textures = textures;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ITexturedCharacterGlyph? Get(string? fontName, char character)
|
||||||
|
{
|
||||||
|
if (fontName == FONT_NAME)
|
||||||
|
return new Glyph(textures.Get($@"{fontName}/{((OsuIconMapping)character).GetDescription()}"));
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<ITexturedCharacterGlyph?> GetAsync(string fontName, char character) => Task.Run(() => Get(fontName, character));
|
||||||
|
|
||||||
|
public Texture? Get(string name, WrapMode wrapModeS, WrapMode wrapModeT) => null;
|
||||||
|
|
||||||
|
public Texture Get(string name) => throw new NotImplementedException();
|
||||||
|
|
||||||
|
public Task<Texture> GetAsync(string name, CancellationToken cancellationToken = default) => throw new NotImplementedException();
|
||||||
|
|
||||||
|
public Stream GetStream(string name) => throw new NotImplementedException();
|
||||||
|
|
||||||
|
public IEnumerable<string> GetAvailableResources() => throw new NotImplementedException();
|
||||||
|
|
||||||
|
public Task<Texture?> GetAsync(string name, WrapMode wrapModeS, WrapMode wrapModeT, CancellationToken cancellationToken = default) => throw new NotImplementedException();
|
||||||
|
|
||||||
|
public class Glyph : ITexturedCharacterGlyph
|
||||||
|
{
|
||||||
|
public float XOffset => default;
|
||||||
|
public float YOffset => default;
|
||||||
|
public float XAdvance => default;
|
||||||
|
public float Baseline => default;
|
||||||
|
public char Character => default;
|
||||||
|
|
||||||
|
public float GetKerning<T>(T lastGlyph) where T : ICharacterGlyph => throw new NotImplementedException();
|
||||||
|
|
||||||
|
public Texture Texture { get; }
|
||||||
|
public float Width => Texture.Width;
|
||||||
|
public float Height => Texture.Height;
|
||||||
|
|
||||||
|
public Glyph(Texture texture)
|
||||||
|
{
|
||||||
|
Texture = texture;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
textures.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,12 @@ namespace osu.Game.Localisation
|
|||||||
public static LocalisableString ChangelogDescription => new TranslatableString(getKey(@"changelog_description"), @"track recent dev updates in the osu! ecosystem");
|
public static LocalisableString ChangelogDescription => new TranslatableString(getKey(@"changelog_description"), @"track recent dev updates in the osu! ecosystem");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// "view your friends and other information"
|
/// "view your friends and spectate other players"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static LocalisableString DashboardDescription => new TranslatableString(getKey(@"dashboard_description"), @"view your friends and other information");
|
public static LocalisableString DashboardDescription => new TranslatableString(getKey(@"dashboard_description"), @"view your friends and spectate other players");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// "find out who's the best right now"
|
/// "find out who's the best right now"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static LocalisableString RankingsDescription => new TranslatableString(getKey(@"rankings_description"), @"find out who's the best right now");
|
public static LocalisableString RankingsDescription => new TranslatableString(getKey(@"rankings_description"), @"find out who's the best right now");
|
||||||
|
|
||||||
@ -39,6 +39,6 @@ namespace osu.Game.Localisation
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static LocalisableString WikiDescription => new TranslatableString(getKey(@"wiki_description"), @"knowledge base");
|
public static LocalisableString WikiDescription => new TranslatableString(getKey(@"wiki_description"), @"knowledge base");
|
||||||
|
|
||||||
private static string getKey(string key) => $"{prefix}:{key}";
|
private static string getKey(string key) => $@"{prefix}:{key}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -478,7 +478,7 @@ namespace osu.Game
|
|||||||
AddFont(Resources, @"Fonts/Venera/Venera-Bold");
|
AddFont(Resources, @"Fonts/Venera/Venera-Bold");
|
||||||
AddFont(Resources, @"Fonts/Venera/Venera-Black");
|
AddFont(Resources, @"Fonts/Venera/Venera-Black");
|
||||||
|
|
||||||
Fonts.AddStore(new HexaconsIcons.HexaconsStore(Textures));
|
Fonts.AddStore(new OsuIcon.OsuIconStore(Textures));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) =>
|
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent) =>
|
||||||
|
@ -24,7 +24,7 @@ namespace osu.Game.Overlays.BeatmapListing
|
|||||||
{
|
{
|
||||||
Title = PageTitleStrings.MainBeatmapsetsControllerIndex;
|
Title = PageTitleStrings.MainBeatmapsetsControllerIndex;
|
||||||
Description = NamedOverlayComponentStrings.BeatmapListingDescription;
|
Description = NamedOverlayComponentStrings.BeatmapListingDescription;
|
||||||
Icon = HexaconsIcons.Beatmap;
|
Icon = OsuIcon.Beatmap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
public BeatmapHeaderTitle()
|
public BeatmapHeaderTitle()
|
||||||
{
|
{
|
||||||
Title = PageTitleStrings.MainBeatmapsetsControllerShow;
|
Title = PageTitleStrings.MainBeatmapsetsControllerShow;
|
||||||
Icon = HexaconsIcons.Beatmap;
|
Icon = OsuIcon.Beatmap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ namespace osu.Game.Overlays.Changelog
|
|||||||
{
|
{
|
||||||
Title = PageTitleStrings.MainChangelogControllerDefault;
|
Title = PageTitleStrings.MainChangelogControllerDefault;
|
||||||
Description = NamedOverlayComponentStrings.ChangelogDescription;
|
Description = NamedOverlayComponentStrings.ChangelogDescription;
|
||||||
Icon = HexaconsIcons.Devtools;
|
Icon = OsuIcon.ChangelogB;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ namespace osu.Game.Overlays.Chat
|
|||||||
{
|
{
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Icon = HexaconsIcons.Messaging,
|
Icon = OsuIcon.Chat,
|
||||||
Size = new Vector2(24),
|
Size = new Vector2(24),
|
||||||
},
|
},
|
||||||
// Placeholder text
|
// Placeholder text
|
||||||
|
@ -31,7 +31,7 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
public partial class ChatOverlay : OsuFocusedOverlayContainer, INamedOverlayComponent, IKeyBindingHandler<PlatformAction>
|
public partial class ChatOverlay : OsuFocusedOverlayContainer, INamedOverlayComponent, IKeyBindingHandler<PlatformAction>
|
||||||
{
|
{
|
||||||
public IconUsage Icon => HexaconsIcons.Messaging;
|
public IconUsage Icon => OsuIcon.Chat;
|
||||||
public LocalisableString Title => ChatStrings.HeaderTitle;
|
public LocalisableString Title => ChatStrings.HeaderTitle;
|
||||||
public LocalisableString Description => ChatStrings.HeaderDescription;
|
public LocalisableString Description => ChatStrings.HeaderDescription;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ namespace osu.Game.Overlays.Dashboard
|
|||||||
{
|
{
|
||||||
Title = PageTitleStrings.MainHomeControllerIndex;
|
Title = PageTitleStrings.MainHomeControllerIndex;
|
||||||
Description = NamedOverlayComponentStrings.DashboardDescription;
|
Description = NamedOverlayComponentStrings.DashboardDescription;
|
||||||
Icon = HexaconsIcons.Social;
|
Icon = OsuIcon.Global;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ namespace osu.Game.Overlays.News
|
|||||||
{
|
{
|
||||||
Title = PageTitleStrings.MainNewsControllerDefault;
|
Title = PageTitleStrings.MainNewsControllerDefault;
|
||||||
Description = NamedOverlayComponentStrings.NewsDescription;
|
Description = NamedOverlayComponentStrings.NewsDescription;
|
||||||
Icon = HexaconsIcons.News;
|
Icon = OsuIcon.News;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
public partial class NotificationOverlay : OsuFocusedOverlayContainer, INamedOverlayComponent, INotificationOverlay
|
public partial class NotificationOverlay : OsuFocusedOverlayContainer, INamedOverlayComponent, INotificationOverlay
|
||||||
{
|
{
|
||||||
public IconUsage Icon => HexaconsIcons.Notification;
|
public IconUsage Icon => OsuIcon.Notification;
|
||||||
public LocalisableString Title => NotificationsStrings.HeaderTitle;
|
public LocalisableString Title => NotificationsStrings.HeaderTitle;
|
||||||
public LocalisableString Description => NotificationsStrings.HeaderDescription;
|
public LocalisableString Description => NotificationsStrings.HeaderDescription;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
public partial class NowPlayingOverlay : OsuFocusedOverlayContainer, INamedOverlayComponent
|
public partial class NowPlayingOverlay : OsuFocusedOverlayContainer, INamedOverlayComponent
|
||||||
{
|
{
|
||||||
public IconUsage Icon => HexaconsIcons.Music;
|
public IconUsage Icon => OsuIcon.Music;
|
||||||
public LocalisableString Title => NowPlayingStrings.HeaderTitle;
|
public LocalisableString Title => NowPlayingStrings.HeaderTitle;
|
||||||
public LocalisableString Description => NowPlayingStrings.HeaderDescription;
|
public LocalisableString Description => NowPlayingStrings.HeaderDescription;
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ namespace osu.Game.Overlays.Profile
|
|||||||
public ProfileHeaderTitle()
|
public ProfileHeaderTitle()
|
||||||
{
|
{
|
||||||
Title = PageTitleStrings.MainUsersControllerDefault;
|
Title = PageTitleStrings.MainUsersControllerDefault;
|
||||||
Icon = HexaconsIcons.Profile;
|
Icon = OsuIcon.Player;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ namespace osu.Game.Overlays.Rankings
|
|||||||
{
|
{
|
||||||
Title = PageTitleStrings.MainRankingControllerDefault;
|
Title = PageTitleStrings.MainRankingControllerDefault;
|
||||||
Description = NamedOverlayComponentStrings.RankingsDescription;
|
Description = NamedOverlayComponentStrings.RankingsDescription;
|
||||||
Icon = HexaconsIcons.Rankings;
|
Icon = OsuIcon.Ranking;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ using System.Linq;
|
|||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.Settings.Sections.Audio;
|
using osu.Game.Overlays.Settings.Sections.Audio;
|
||||||
|
|
||||||
@ -17,7 +18,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.VolumeUp
|
Icon = OsuIcon.Audio
|
||||||
};
|
};
|
||||||
|
|
||||||
public override IEnumerable<LocalisableString> FilterTerms => base.FilterTerms.Concat(new LocalisableString[] { "sound" });
|
public override IEnumerable<LocalisableString> FilterTerms => base.FilterTerms.Concat(new LocalisableString[] { "sound" });
|
||||||
|
@ -5,6 +5,7 @@ using osu.Framework.Development;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.Settings.Sections.DebugSettings;
|
using osu.Game.Overlays.Settings.Sections.DebugSettings;
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.Bug
|
Icon = OsuIcon.Debug
|
||||||
};
|
};
|
||||||
|
|
||||||
public DebugSection()
|
public DebugSection()
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.Settings.Sections.Gameplay;
|
using osu.Game.Overlays.Settings.Sections.Gameplay;
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Regular.DotCircle
|
Icon = OsuIcon.GameplayC
|
||||||
};
|
};
|
||||||
|
|
||||||
public GameplaySection()
|
public GameplaySection()
|
||||||
|
@ -23,7 +23,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.Cog
|
Icon = OsuIcon.Settings
|
||||||
};
|
};
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.Settings.Sections.Graphics;
|
using osu.Game.Overlays.Settings.Sections.Graphics;
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.Laptop
|
Icon = OsuIcon.Graphics
|
||||||
};
|
};
|
||||||
|
|
||||||
public GraphicsSection()
|
public GraphicsSection()
|
||||||
|
@ -7,6 +7,7 @@ using osu.Framework.Graphics.Sprites;
|
|||||||
using osu.Framework.Input.Handlers;
|
using osu.Framework.Input.Handlers;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.Settings.Sections.Input;
|
using osu.Game.Overlays.Settings.Sections.Input;
|
||||||
|
|
||||||
@ -20,7 +21,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.Keyboard
|
Icon = OsuIcon.Input
|
||||||
};
|
};
|
||||||
|
|
||||||
public InputSection(KeyBindingPanel keyConfig)
|
public InputSection(KeyBindingPanel keyConfig)
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.Settings.Sections.Maintenance;
|
using osu.Game.Overlays.Settings.Sections.Maintenance;
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.Wrench
|
Icon = OsuIcon.Maintenance
|
||||||
};
|
};
|
||||||
|
|
||||||
public MaintenanceSection()
|
public MaintenanceSection()
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.Settings.Sections.Online;
|
using osu.Game.Overlays.Settings.Sections.Online;
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.GlobeAsia
|
Icon = OsuIcon.Online
|
||||||
};
|
};
|
||||||
|
|
||||||
public OnlineSection()
|
public OnlineSection()
|
||||||
|
@ -7,6 +7,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
using osu.Framework.Logging;
|
using osu.Framework.Logging;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.Chess
|
Icon = OsuIcon.Rulesets
|
||||||
};
|
};
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
|
@ -14,6 +14,7 @@ using osu.Framework.Graphics.Sprites;
|
|||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
using osu.Framework.Logging;
|
using osu.Framework.Logging;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.SkinEditor;
|
using osu.Game.Overlays.SkinEditor;
|
||||||
@ -31,7 +32,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.PaintBrush
|
Icon = OsuIcon.SkinB
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly Live<SkinInfo> random_skin_info = new SkinInfo
|
private static readonly Live<SkinInfo> random_skin_info = new SkinInfo
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Localisation;
|
using osu.Game.Localisation;
|
||||||
using osu.Game.Overlays.Settings.Sections.UserInterface;
|
using osu.Game.Overlays.Settings.Sections.UserInterface;
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections
|
|||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon
|
public override Drawable CreateIcon() => new SpriteIcon
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.Solid.LayerGroup
|
Icon = OsuIcon.UserInterface
|
||||||
};
|
};
|
||||||
|
|
||||||
public UserInterfaceSection()
|
public UserInterfaceSection()
|
||||||
|
@ -21,7 +21,7 @@ namespace osu.Game.Overlays
|
|||||||
{
|
{
|
||||||
public partial class SettingsOverlay : SettingsPanel, INamedOverlayComponent
|
public partial class SettingsOverlay : SettingsPanel, INamedOverlayComponent
|
||||||
{
|
{
|
||||||
public IconUsage Icon => HexaconsIcons.Settings;
|
public IconUsage Icon => OsuIcon.Settings;
|
||||||
public LocalisableString Title => SettingsStrings.HeaderTitle;
|
public LocalisableString Title => SettingsStrings.HeaderTitle;
|
||||||
public LocalisableString Description => SettingsStrings.HeaderDescription;
|
public LocalisableString Description => SettingsStrings.HeaderDescription;
|
||||||
|
|
||||||
|
@ -164,11 +164,11 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
{
|
{
|
||||||
new ToolbarNewsButton(),
|
new ToolbarNewsButton(),
|
||||||
new ToolbarChangelogButton(),
|
new ToolbarChangelogButton(),
|
||||||
|
new ToolbarWikiButton(),
|
||||||
new ToolbarRankingsButton(),
|
new ToolbarRankingsButton(),
|
||||||
new ToolbarBeatmapListingButton(),
|
new ToolbarBeatmapListingButton(),
|
||||||
new ToolbarChatButton(),
|
new ToolbarChatButton(),
|
||||||
new ToolbarSocialButton(),
|
new ToolbarSocialButton(),
|
||||||
new ToolbarWikiButton(),
|
|
||||||
new ToolbarMusicButton(),
|
new ToolbarMusicButton(),
|
||||||
//new ToolbarButton
|
//new ToolbarButton
|
||||||
//{
|
//{
|
||||||
|
@ -113,7 +113,7 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
{
|
{
|
||||||
Anchor = Anchor.CentreLeft,
|
Anchor = Anchor.CentreLeft,
|
||||||
Origin = Anchor.CentreLeft,
|
Origin = Anchor.CentreLeft,
|
||||||
Size = new Vector2(26),
|
Size = new Vector2(20),
|
||||||
Alpha = 0,
|
Alpha = 0,
|
||||||
},
|
},
|
||||||
DrawableText = new OsuSpriteText
|
DrawableText = new OsuSpriteText
|
||||||
|
@ -21,7 +21,7 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
{
|
{
|
||||||
TooltipMain = ToolbarStrings.HomeHeaderTitle;
|
TooltipMain = ToolbarStrings.HomeHeaderTitle;
|
||||||
TooltipSub = ToolbarStrings.HomeHeaderDescription;
|
TooltipSub = ToolbarStrings.HomeHeaderDescription;
|
||||||
SetIcon(HexaconsIcons.Home);
|
SetIcon(OsuIcon.Home);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ namespace osu.Game.Overlays.Wiki
|
|||||||
{
|
{
|
||||||
Title = PageTitleStrings.MainWikiControllerDefault;
|
Title = PageTitleStrings.MainWikiControllerDefault;
|
||||||
Description = NamedOverlayComponentStrings.WikiDescription;
|
Description = NamedOverlayComponentStrings.WikiDescription;
|
||||||
Icon = HexaconsIcons.Wiki;
|
Icon = OsuIcon.Wiki;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ using osu.Framework.Input.Events;
|
|||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Input.Bindings;
|
using osu.Game.Input.Bindings;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
@ -169,7 +170,7 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
|
|
||||||
public IEnumerable<TernaryButton> CreateTernaryButtons() => new[]
|
public IEnumerable<TernaryButton> CreateTernaryButtons() => new[]
|
||||||
{
|
{
|
||||||
new TernaryButton(DistanceSnapToggle, "Distance Snap", () => new SpriteIcon { Icon = FontAwesome.Solid.Ruler })
|
new TernaryButton(DistanceSnapToggle, "Distance Snap", () => new SpriteIcon { Icon = OsuIcon.EditorDistanceSnap })
|
||||||
};
|
};
|
||||||
|
|
||||||
protected override bool OnKeyDown(KeyDownEvent e)
|
protected override bool OnKeyDown(KeyDownEvent e)
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
|
using osu.Game.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Edit.Tools
|
namespace osu.Game.Rulesets.Edit.Tools
|
||||||
{
|
{
|
||||||
@ -15,7 +16,7 @@ namespace osu.Game.Rulesets.Edit.Tools
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Drawable CreateIcon() => new SpriteIcon { Icon = FontAwesome.Solid.MousePointer };
|
public override Drawable CreateIcon() => new SpriteIcon { Icon = OsuIcon.EditorSelect };
|
||||||
|
|
||||||
public override PlacementBlueprint CreatePlacementBlueprint() => null;
|
public override PlacementBlueprint CreatePlacementBlueprint() => null;
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ namespace osu.Game.Screens.Edit.Components.Menus
|
|||||||
Size = new Vector2(26),
|
Size = new Vector2(26),
|
||||||
Anchor = Anchor.CentreLeft,
|
Anchor = Anchor.CentreLeft,
|
||||||
Origin = Anchor.CentreLeft,
|
Origin = Anchor.CentreLeft,
|
||||||
Icon = HexaconsIcons.Editor,
|
Icon = OsuIcon.EditCircle,
|
||||||
},
|
},
|
||||||
text = new TextFlowContainer
|
text = new TextFlowContainer
|
||||||
{
|
{
|
||||||
|
@ -225,7 +225,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
protected virtual IEnumerable<TernaryButton> CreateTernaryButtons()
|
protected virtual IEnumerable<TernaryButton> CreateTernaryButtons()
|
||||||
{
|
{
|
||||||
//TODO: this should only be enabled (visible?) for rulesets that provide combo-supporting HitObjects.
|
//TODO: this should only be enabled (visible?) for rulesets that provide combo-supporting HitObjects.
|
||||||
yield return new TernaryButton(NewCombo, "New combo", () => new SpriteIcon { Icon = FontAwesome.Regular.DotCircle });
|
yield return new TernaryButton(NewCombo, "New combo", () => new SpriteIcon { Icon = OsuIcon.EditorNewComboA });
|
||||||
|
|
||||||
foreach (var kvp in SelectionHandler.SelectionSampleStates)
|
foreach (var kvp in SelectionHandler.SelectionSampleStates)
|
||||||
yield return new TernaryButton(kvp.Value, kvp.Key.Replace("hit", string.Empty).Titleize(), () => getIconForSample(kvp.Key));
|
yield return new TernaryButton(kvp.Value, kvp.Key.Replace("hit", string.Empty).Titleize(), () => getIconForSample(kvp.Key));
|
||||||
@ -272,10 +272,10 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
return new SpriteIcon { Icon = FontAwesome.Solid.Hands };
|
return new SpriteIcon { Icon = FontAwesome.Solid.Hands };
|
||||||
|
|
||||||
case HitSampleInfo.HIT_WHISTLE:
|
case HitSampleInfo.HIT_WHISTLE:
|
||||||
return new SpriteIcon { Icon = FontAwesome.Solid.Bullhorn };
|
return new SpriteIcon { Icon = OsuIcon.EditorWhistle };
|
||||||
|
|
||||||
case HitSampleInfo.HIT_FINISH:
|
case HitSampleInfo.HIT_FINISH:
|
||||||
return new SpriteIcon { Icon = FontAwesome.Solid.DrumSteelpan };
|
return new SpriteIcon { Icon = OsuIcon.EditorFinish };
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
@ -80,7 +80,7 @@ namespace osu.Game.Screens.Edit.Setup
|
|||||||
{
|
{
|
||||||
Title = EditorSetupStrings.BeatmapSetup.ToLower();
|
Title = EditorSetupStrings.BeatmapSetup.ToLower();
|
||||||
Description = EditorSetupStrings.BeatmapSetupDescription;
|
Description = EditorSetupStrings.BeatmapSetupDescription;
|
||||||
Icon = HexaconsIcons.Social;
|
Icon = OsuIcon.Beatmap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@ using osu.Framework.Extensions.IEnumerableExtensions;
|
|||||||
using osu.Framework.Extensions.LocalisationExtensions;
|
using osu.Framework.Extensions.LocalisationExtensions;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
|
||||||
using osu.Framework.Input.Bindings;
|
using osu.Framework.Input.Bindings;
|
||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Framework.Logging;
|
using osu.Framework.Logging;
|
||||||
@ -103,8 +102,8 @@ namespace osu.Game.Screens.Menu
|
|||||||
|
|
||||||
buttonArea.AddRange(new Drawable[]
|
buttonArea.AddRange(new Drawable[]
|
||||||
{
|
{
|
||||||
new MainMenuButton(ButtonSystemStrings.Settings, string.Empty, FontAwesome.Solid.Cog, new Color4(85, 85, 85, 255), () => OnSettings?.Invoke(), -WEDGE_WIDTH, Key.O),
|
new MainMenuButton(ButtonSystemStrings.Settings, string.Empty, OsuIcon.Settings, new Color4(85, 85, 85, 255), () => OnSettings?.Invoke(), -WEDGE_WIDTH, Key.O),
|
||||||
backButton = new MainMenuButton(ButtonSystemStrings.Back, @"back-to-top", OsuIcon.LeftCircle, new Color4(51, 58, 94, 255), () => State = ButtonSystemState.TopLevel,
|
backButton = new MainMenuButton(ButtonSystemStrings.Back, @"back-to-top", OsuIcon.PrevCircle, new Color4(51, 58, 94, 255), () => State = ButtonSystemState.TopLevel,
|
||||||
-WEDGE_WIDTH)
|
-WEDGE_WIDTH)
|
||||||
{
|
{
|
||||||
VisibleStateMin = ButtonSystemState.Play,
|
VisibleStateMin = ButtonSystemState.Play,
|
||||||
@ -128,18 +127,18 @@ namespace osu.Game.Screens.Menu
|
|||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(AudioManager audio, IdleTracker? idleTracker, GameHost host)
|
private void load(AudioManager audio, IdleTracker? idleTracker, GameHost host)
|
||||||
{
|
{
|
||||||
buttonsPlay.Add(new MainMenuButton(ButtonSystemStrings.Solo, @"button-default-select", FontAwesome.Solid.User, new Color4(102, 68, 204, 255), () => OnSolo?.Invoke(), WEDGE_WIDTH, Key.P));
|
buttonsPlay.Add(new MainMenuButton(ButtonSystemStrings.Solo, @"button-default-select", OsuIcon.Player, new Color4(102, 68, 204, 255), () => OnSolo?.Invoke(), WEDGE_WIDTH, Key.P));
|
||||||
buttonsPlay.Add(new MainMenuButton(ButtonSystemStrings.Multi, @"button-default-select", FontAwesome.Solid.Users, new Color4(94, 63, 186, 255), onMultiplayer, 0, Key.M));
|
buttonsPlay.Add(new MainMenuButton(ButtonSystemStrings.Multi, @"button-default-select", OsuIcon.Online, new Color4(94, 63, 186, 255), onMultiplayer, 0, Key.M));
|
||||||
buttonsPlay.Add(new MainMenuButton(ButtonSystemStrings.Playlists, @"button-default-select", OsuIcon.Charts, new Color4(94, 63, 186, 255), onPlaylists, 0, Key.L));
|
buttonsPlay.Add(new MainMenuButton(ButtonSystemStrings.Playlists, @"button-default-select", OsuIcon.Tournament, new Color4(94, 63, 186, 255), onPlaylists, 0, Key.L));
|
||||||
buttonsPlay.ForEach(b => b.VisibleState = ButtonSystemState.Play);
|
buttonsPlay.ForEach(b => b.VisibleState = ButtonSystemState.Play);
|
||||||
|
|
||||||
buttonsEdit.Add(new MainMenuButton(EditorStrings.BeatmapEditor.ToLower(), @"button-default-select", HexaconsIcons.Beatmap, new Color4(238, 170, 0, 255), () => OnEditBeatmap?.Invoke(), WEDGE_WIDTH, Key.B));
|
buttonsEdit.Add(new MainMenuButton(EditorStrings.BeatmapEditor.ToLower(), @"button-default-select", OsuIcon.Beatmap, new Color4(238, 170, 0, 255), () => OnEditBeatmap?.Invoke(), WEDGE_WIDTH, Key.B));
|
||||||
buttonsEdit.Add(new MainMenuButton(SkinEditorStrings.SkinEditor.ToLower(), @"button-default-select", HexaconsIcons.Editor, new Color4(220, 160, 0, 255), () => OnEditSkin?.Invoke(), 0, Key.S));
|
buttonsEdit.Add(new MainMenuButton(SkinEditorStrings.SkinEditor.ToLower(), @"button-default-select", OsuIcon.SkinB, new Color4(220, 160, 0, 255), () => OnEditSkin?.Invoke(), 0, Key.S));
|
||||||
buttonsEdit.ForEach(b => b.VisibleState = ButtonSystemState.Edit);
|
buttonsEdit.ForEach(b => b.VisibleState = ButtonSystemState.Edit);
|
||||||
|
|
||||||
buttonsTopLevel.Add(new MainMenuButton(ButtonSystemStrings.Play, @"button-play-select", OsuIcon.Logo, new Color4(102, 68, 204, 255), () => State = ButtonSystemState.Play, WEDGE_WIDTH, Key.P));
|
buttonsTopLevel.Add(new MainMenuButton(ButtonSystemStrings.Play, @"button-play-select", OsuIcon.Logo, new Color4(102, 68, 204, 255), () => State = ButtonSystemState.Play, WEDGE_WIDTH, Key.P));
|
||||||
buttonsTopLevel.Add(new MainMenuButton(ButtonSystemStrings.Edit, @"button-play-select", OsuIcon.EditCircle, new Color4(238, 170, 0, 255), () => State = ButtonSystemState.Edit, 0, Key.E));
|
buttonsTopLevel.Add(new MainMenuButton(ButtonSystemStrings.Edit, @"button-play-select", OsuIcon.EditCircle, new Color4(238, 170, 0, 255), () => State = ButtonSystemState.Edit, 0, Key.E));
|
||||||
buttonsTopLevel.Add(new MainMenuButton(ButtonSystemStrings.Browse, @"button-default-select", OsuIcon.ChevronDownCircle, new Color4(165, 204, 0, 255), () => OnBeatmapListing?.Invoke(), 0, Key.B, Key.D));
|
buttonsTopLevel.Add(new MainMenuButton(ButtonSystemStrings.Browse, @"button-default-select", OsuIcon.Beatmap, new Color4(165, 204, 0, 255), () => OnBeatmapListing?.Invoke(), 0, Key.B, Key.D));
|
||||||
|
|
||||||
if (host.CanExit)
|
if (host.CanExit)
|
||||||
buttonsTopLevel.Add(new MainMenuButton(ButtonSystemStrings.Exit, string.Empty, OsuIcon.CrossCircle, new Color4(238, 51, 153, 255), () => OnExit?.Invoke(), 0, Key.Q));
|
buttonsTopLevel.Add(new MainMenuButton(ButtonSystemStrings.Exit, string.Empty, OsuIcon.CrossCircle, new Color4(238, 51, 153, 255), () => OnExit?.Invoke(), 0, Key.Q));
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Realm" Version="11.5.0" />
|
<PackageReference Include="Realm" Version="11.5.0" />
|
||||||
<PackageReference Include="ppy.osu.Framework" Version="2023.1227.1" />
|
<PackageReference Include="ppy.osu.Framework" Version="2023.1227.1" />
|
||||||
<PackageReference Include="ppy.osu.Game.Resources" Version="2023.1225.0" />
|
<PackageReference Include="ppy.osu.Game.Resources" Version="2023.1228.0" />
|
||||||
<PackageReference Include="Sentry" Version="3.40.0" />
|
<PackageReference Include="Sentry" Version="3.40.0" />
|
||||||
<!-- Held back due to 0.34.0 failing AOT compilation on ZstdSharp.dll dependency. -->
|
<!-- Held back due to 0.34.0 failing AOT compilation on ZstdSharp.dll dependency. -->
|
||||||
<PackageReference Include="SharpCompress" Version="0.33.0" />
|
<PackageReference Include="SharpCompress" Version="0.33.0" />
|
||||||
|
Loading…
Reference in New Issue
Block a user