mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 10:22:56 +08:00
Merge branch 'master' into footer-v2-back-button
This commit is contained in:
commit
37fdfbfaa0
@ -21,7 +21,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ppy.localisationanalyser.tools": {
|
"ppy.localisationanalyser.tools": {
|
||||||
"version": "2023.1117.0",
|
"version": "2024.517.0",
|
||||||
"commands": [
|
"commands": [
|
||||||
"localisation"
|
"localisation"
|
||||||
]
|
]
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup Label="C#">
|
<PropertyGroup Label="C#">
|
||||||
<LangVersion>12.0</LangVersion>
|
<LangVersion>12.0</LangVersion>
|
||||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
@ -164,8 +164,8 @@ namespace osu.Desktop
|
|||||||
// user activity
|
// user activity
|
||||||
if (activity.Value != null)
|
if (activity.Value != null)
|
||||||
{
|
{
|
||||||
presence.State = truncate(activity.Value.GetStatus(hideIdentifiableInformation));
|
presence.State = clampLength(activity.Value.GetStatus(hideIdentifiableInformation));
|
||||||
presence.Details = truncate(activity.Value.GetDetails(hideIdentifiableInformation) ?? string.Empty);
|
presence.Details = clampLength(activity.Value.GetDetails(hideIdentifiableInformation) ?? string.Empty);
|
||||||
|
|
||||||
if (getBeatmapID(activity.Value) is int beatmapId && beatmapId > 0)
|
if (getBeatmapID(activity.Value) is int beatmapId && beatmapId > 0)
|
||||||
{
|
{
|
||||||
@ -271,8 +271,15 @@ namespace osu.Desktop
|
|||||||
|
|
||||||
private static readonly int ellipsis_length = Encoding.UTF8.GetByteCount(new[] { '…' });
|
private static readonly int ellipsis_length = Encoding.UTF8.GetByteCount(new[] { '…' });
|
||||||
|
|
||||||
private static string truncate(string str)
|
private static string clampLength(string str)
|
||||||
{
|
{
|
||||||
|
// For whatever reason, discord decides that strings shorter than 2 characters cannot possibly be valid input, because... reasons?
|
||||||
|
// And yes, that is two *characters*, or *codepoints*, not *bytes* as further down below (as determined by empirical testing).
|
||||||
|
// That seems very questionable, and isn't even documented anywhere. So to *make it* accept such valid input,
|
||||||
|
// just tack on enough of U+200B ZERO WIDTH SPACEs at the end.
|
||||||
|
if (str.Length < 2)
|
||||||
|
return str.PadRight(2, '\u200B');
|
||||||
|
|
||||||
if (Encoding.UTF8.GetByteCount(str) <= 128)
|
if (Encoding.UTF8.GetByteCount(str) <= 128)
|
||||||
return str;
|
return str;
|
||||||
|
|
||||||
|
@ -3,15 +3,12 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using System;
|
|
||||||
using osu.Framework;
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Game.Rulesets.Mania.Beatmaps;
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
using osu.Game.Rulesets.Mania.Skinning;
|
using osu.Game.Rulesets.Mania.Skinning;
|
||||||
using osu.Game.Skinning;
|
using osu.Game.Skinning;
|
||||||
using osuTK;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Mania.UI
|
namespace osu.Game.Rulesets.Mania.UI
|
||||||
{
|
{
|
||||||
@ -62,12 +59,6 @@ namespace osu.Game.Rulesets.Mania.UI
|
|||||||
onSkinChanged();
|
onSkinChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
|
||||||
base.LoadComplete();
|
|
||||||
updateMobileSizing();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onSkinChanged()
|
private void onSkinChanged()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < stageDefinition.Columns; i++)
|
for (int i = 0; i < stageDefinition.Columns; i++)
|
||||||
@ -92,8 +83,6 @@ namespace osu.Game.Rulesets.Mania.UI
|
|||||||
|
|
||||||
columns[i].Width = width.Value;
|
columns[i].Width = width.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMobileSizing();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -106,31 +95,6 @@ namespace osu.Game.Rulesets.Mania.UI
|
|||||||
Content[column] = columns[column].Child = content;
|
Content[column] = columns[column].Child = content;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateMobileSizing()
|
|
||||||
{
|
|
||||||
if (!IsLoaded || !RuntimeInfo.IsMobile)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// GridContainer+CellContainer containing this stage (gets split up for dual stages).
|
|
||||||
Vector2? containingCell = this.FindClosestParent<Stage>()?.Parent?.DrawSize;
|
|
||||||
|
|
||||||
// Will be null in tests.
|
|
||||||
if (containingCell == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
float aspectRatio = containingCell.Value.X / containingCell.Value.Y;
|
|
||||||
|
|
||||||
// 2.83 is a mostly arbitrary scale-up (170 / 60, based on original implementation for argon)
|
|
||||||
float mobileAdjust = 2.83f * Math.Min(1, 7f / stageDefinition.Columns);
|
|
||||||
// 1.92 is a "reference" mobile screen aspect ratio for phones.
|
|
||||||
// We should scale it back for cases like tablets which aren't so extreme.
|
|
||||||
mobileAdjust *= aspectRatio / 1.92f;
|
|
||||||
|
|
||||||
// Best effort until we have better mobile support.
|
|
||||||
for (int i = 0; i < stageDefinition.Columns; i++)
|
|
||||||
columns[i].Width *= mobileAdjust;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void Dispose(bool isDisposing)
|
protected override void Dispose(bool isDisposing)
|
||||||
{
|
{
|
||||||
base.Dispose(isDisposing);
|
base.Dispose(isDisposing);
|
||||||
|
@ -32,7 +32,7 @@ namespace osu.Game.Localisation
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// "Are you sure you want to delete all scores? This cannot be undone!"
|
/// "Are you sure you want to delete all scores? This cannot be undone!"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static LocalisableString Scores => new TranslatableString(getKey(@"collections"), @"Are you sure you want to delete all scores? This cannot be undone!");
|
public static LocalisableString Scores => new TranslatableString(getKey(@"scores"), @"Are you sure you want to delete all scores? This cannot be undone!");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// "Are you sure you want to delete all mod presets?"
|
/// "Are you sure you want to delete all mod presets?"
|
||||||
|
@ -47,7 +47,7 @@ namespace osu.Game.Localisation
|
|||||||
public static LocalisableString Calculating => new TranslatableString(getKey(@"calculating"), @"calculating...");
|
public static LocalisableString Calculating => new TranslatableString(getKey(@"calculating"), @"calculating...");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// "{0} items"
|
/// "{0} item(s)"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static LocalisableString Items(int arg0) => new TranslatableString(getKey(@"items"), @"{0} item(s)", arg0);
|
public static LocalisableString Items(int arg0) => new TranslatableString(getKey(@"items"), @"{0} item(s)", arg0);
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ Please try changing your audio device to a working setting.");
|
|||||||
public static LocalisableString MismatchingBeatmapForReplay => new TranslatableString(getKey(@"mismatching_beatmap_for_replay"), @"Your local copy of the beatmap for this replay appears to be different than expected. You may need to update or re-download it.");
|
public static LocalisableString MismatchingBeatmapForReplay => new TranslatableString(getKey(@"mismatching_beatmap_for_replay"), @"Your local copy of the beatmap for this replay appears to be different than expected. You may need to update or re-download it.");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// "You are now running osu! {version}.
|
/// "You are now running osu! {0}.
|
||||||
/// Click to see what's new!"
|
/// Click to see what's new!"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static LocalisableString GameVersionAfterUpdate(string version) => new TranslatableString(getKey(@"game_version_after_update"), @"You are now running osu! {0}.
|
public static LocalisableString GameVersionAfterUpdate(string version) => new TranslatableString(getKey(@"game_version_after_update"), @"You are now running osu! {0}.
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" />
|
||||||
<PackageReference Include="Microsoft.Toolkit.HighPerformance" Version="7.1.2" />
|
<PackageReference Include="Microsoft.Toolkit.HighPerformance" Version="7.1.2" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="ppy.LocalisationAnalyser" Version="2023.1117.0">
|
<PackageReference Include="ppy.LocalisationAnalyser" Version="2024.517.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
Loading…
Reference in New Issue
Block a user