Merge branch 'master' into fix-user-profile-overlay

This commit is contained in:
Salman Ahmed
2022-07-18 09:45:25 +03:00
committed by GitHub
9 changed files with 27 additions and 16 deletions

View File

@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Osu.Mods
{ {
public class OsuModCinema : ModCinema<OsuHitObject> public class OsuModCinema : ModCinema<OsuHitObject>
{ {
public override Type[] IncompatibleMods => base.IncompatibleMods.Concat(new[] { typeof(OsuModMagnetised), typeof(OsuModAutopilot), typeof(OsuModSpunOut), typeof(OsuModAlternate), typeof(OsuModSingleTap) }).ToArray(); public override Type[] IncompatibleMods => base.IncompatibleMods.Concat(new[] { typeof(OsuModMagnetised), typeof(OsuModAutopilot), typeof(OsuModSpunOut), typeof(OsuModAlternate), typeof(OsuModSingleTap), typeof(OsuModRepel) }).ToArray();
public override ModReplayData CreateReplayData(IBeatmap beatmap, IReadOnlyList<Mod> mods) public override ModReplayData CreateReplayData(IBeatmap beatmap, IReadOnlyList<Mod> mods)
=> new ModReplayData(new OsuAutoGenerator(beatmap, mods).Generate(), new ModCreatedUser { Username = "Autoplay" }); => new ModReplayData(new OsuAutoGenerator(beatmap, mods).Generate(), new ModCreatedUser { Username = "Autoplay" });

View File

@ -3,11 +3,14 @@
#nullable disable #nullable disable
using System;
using System.Linq;
using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Mods;
namespace osu.Game.Rulesets.Osu.Mods namespace osu.Game.Rulesets.Osu.Mods
{ {
public class OsuModPerfect : ModPerfect public class OsuModPerfect : ModPerfect
{ {
public override Type[] IncompatibleMods => base.IncompatibleMods.Concat(new[] { typeof(OsuModAutopilot) }).ToArray();
} }
} }

View File

@ -168,7 +168,7 @@ namespace osu.Game.Beatmaps
if (texture == null) if (texture == null)
{ {
Logger.Log($"Beatmap background failed to load (file {Metadata.BackgroundFile} not found on disk at expected location {fileStorePath}).", level: LogLevel.Error); Logger.Log($"Beatmap background failed to load (file {Metadata.BackgroundFile} not found on disk at expected location {fileStorePath}).");
return null; return null;
} }

View File

@ -65,8 +65,15 @@ namespace osu.Game.Online.API
if (!Settings.TryGetValue(property.Name.Underscore(), out object settingValue)) if (!Settings.TryGetValue(property.Name.Underscore(), out object settingValue))
continue; continue;
try
{
resultMod.CopyAdjustedSetting((IBindable)property.GetValue(resultMod), settingValue); resultMod.CopyAdjustedSetting((IBindable)property.GetValue(resultMod), settingValue);
} }
catch (Exception ex)
{
Logger.Log($"Failed to copy mod setting value '{settingValue ?? "null"}' to \"{property.Name}\": {ex.Message}");
}
}
} }
return resultMod; return resultMod;

View File

@ -54,7 +54,7 @@ namespace osu.Game.Online.API.Requests.Responses
public DateTimeOffset? StartedAt { get; set; } public DateTimeOffset? StartedAt { get; set; }
[JsonProperty("ended_at")] [JsonProperty("ended_at")]
public DateTimeOffset? EndedAt { get; set; } public DateTimeOffset EndedAt { get; set; }
[JsonProperty("mods")] [JsonProperty("mods")]
public APIMod[] Mods { get; set; } = Array.Empty<APIMod>(); public APIMod[] Mods { get; set; } = Array.Empty<APIMod>();
@ -118,7 +118,7 @@ namespace osu.Game.Online.API.Requests.Responses
var rulesetInstance = ruleset.CreateInstance(); var rulesetInstance = ruleset.CreateInstance();
var mods = Mods.Select(apiMod => rulesetInstance.CreateModFromAcronym(apiMod.Acronym)).Where(m => m != null).ToArray(); var mods = Mods.Select(apiMod => apiMod.ToMod(rulesetInstance)).ToArray();
var scoreInfo = ToScoreInfo(mods); var scoreInfo = ToScoreInfo(mods);
@ -145,7 +145,7 @@ namespace osu.Game.Online.API.Requests.Responses
MaxCombo = MaxCombo, MaxCombo = MaxCombo,
Rank = Rank, Rank = Rank,
Statistics = Statistics, Statistics = Statistics,
Date = EndedAt ?? DateTimeOffset.Now, Date = EndedAt,
Hash = HasReplay ? "online" : string.Empty, // TODO: temporary? Hash = HasReplay ? "online" : string.Empty, // TODO: temporary?
Mods = mods, Mods = mods,
PP = PP, PP = PP,

View File

@ -257,10 +257,14 @@ namespace osu.Game.Overlays.Chat
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(UserProfileOverlay? profile, ChannelManager? chatManager) private void load(UserProfileOverlay? profile, ChannelManager? chatManager, ChatOverlay? chatOverlay)
{ {
Action = () => profile?.ShowUser(sender); Action = () => profile?.ShowUser(sender);
startChatAction = () => chatManager?.OpenPrivateChannel(sender); startChatAction = () =>
{
chatManager?.OpenPrivateChannel(sender);
chatOverlay?.Show();
};
} }
public MenuItem[] ContextMenuItems public MenuItem[] ContextMenuItems

View File

@ -1,17 +1,14 @@
// 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.
#nullable disable
using System;
using System.Linq; using System.Linq;
using osu.Framework.Allocation; using osu.Framework.Allocation;
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.Framework.Logging; using osu.Framework.Logging;
using osu.Game.Rulesets;
using osu.Game.Localisation; using osu.Game.Localisation;
using osu.Game.Rulesets;
namespace osu.Game.Overlays.Settings.Sections namespace osu.Game.Overlays.Settings.Sections
{ {
@ -36,9 +33,9 @@ namespace osu.Game.Overlays.Settings.Sections
if (section != null) if (section != null)
Add(section); Add(section);
} }
catch (Exception e) catch
{ {
Logger.Error(e, "Failed to load ruleset settings"); Logger.Log($"Failed to load ruleset settings for {ruleset.RulesetInfo.Name}. Please check for an update from the developer.", level: LogLevel.Error);
} }
} }
} }

View File

@ -34,7 +34,7 @@ namespace osu.Game.Rulesets.Mods
public override bool ValidForMultiplayer => false; public override bool ValidForMultiplayer => false;
public override bool ValidForMultiplayerAsFreeMod => false; public override bool ValidForMultiplayerAsFreeMod => false;
public override Type[] IncompatibleMods => new[] { typeof(ModRateAdjust), typeof(ModTimeRamp) }; public override Type[] IncompatibleMods => new[] { typeof(ModRateAdjust), typeof(ModTimeRamp), typeof(ModAutoplay) };
[SettingSource("Initial rate", "The starting speed of the track")] [SettingSource("Initial rate", "The starting speed of the track")]
public BindableNumber<double> InitialRate { get; } = new BindableDouble public BindableNumber<double> InitialRate { get; } = new BindableDouble

View File

@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Mods
public override bool ValidForMultiplayer => false; public override bool ValidForMultiplayer => false;
public override bool ValidForMultiplayerAsFreeMod => false; public override bool ValidForMultiplayerAsFreeMod => false;
public override Type[] IncompatibleMods => new[] { typeof(ModCinema), typeof(ModRelax), typeof(ModFailCondition), typeof(ModNoFail) }; public override Type[] IncompatibleMods => new[] { typeof(ModCinema), typeof(ModRelax), typeof(ModFailCondition), typeof(ModNoFail), typeof(ModAdaptiveSpeed) };
public override bool HasImplementation => GetType().GenericTypeArguments.Length == 0; public override bool HasImplementation => GetType().GenericTypeArguments.Length == 0;