同步更新

This commit is contained in:
LA
2025-09-14 17:37:01 +08:00
parent 2d3ece6d8d
commit b9b9e4da96
295 changed files with 9539 additions and 1044 deletions

View File

@@ -19,6 +19,9 @@ indent_style = space
indent_size = 4
trim_trailing_whitespace = true
# temporary workaround for https://youtrack.jetbrains.com/issue/RIDER-130051/Cannot-resolve-symbol-inspections-incorrectly-firing-for-xmldoc-protected-member-references
resharper_c_sharp_warnings_cs1574_cs1584_cs1581_cs1580_highlighting = hint
#license header
file_header_template = Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.\nSee the LICENCE file in the repository root for full licence text.

View File

@@ -10,7 +10,7 @@
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ppy.osu.Framework.Android" Version="2025.829.0" />
<PackageReference Include="ppy.osu.Framework.Android" Version="2025.908.0" />
</ItemGroup>
<PropertyGroup>
<!-- Fody does not handle Android build well, and warns when unchanged.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -1,2 +0,0 @@
[General]
// no version specified means v1

View File

@@ -29,6 +29,7 @@ namespace osu.Game.Rulesets.Mania
bool keyCountMatch = includedKeyCounts.Contains(keyCount);
bool longNotePercentageMatch = !longNotePercentage.HasFilter || (!isConvertedBeatmap(beatmapInfo) && longNotePercentage.IsInRange(calculateLongNotePercentage(beatmapInfo)));
//多选过滤实现
if (criteria.DiscreteCircleSizeValues?.Any() == true)
{
keyCountMatch = criteria.DiscreteCircleSizeValues.Contains(keyCount);

View File

@@ -109,6 +109,7 @@ namespace osu.Game.Rulesets.Mania
return new ManiaSbISkinTransformer(skin, beatmap);
case DefaultLegacySkin:
case RetroSkin:
return new ManiaClassicSkinTransformer(skin, beatmap);
case LegacySkin:

View File

@@ -3,8 +3,10 @@
using System;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Game.Beatmaps;
using osu.Game.Screens;
using osu.Game.Screens.Play;
namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
@@ -17,6 +19,9 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
protected override string ColorPrefix => "white";
private Bindable<double> hitTargetFloatFixed = new Bindable<double>();
private Bindable<double> hitTargetAlpha = new Bindable<double>(0.3);
[Resolved]
private IBeatmap beatmap { get; set; } = null!;
@@ -27,7 +32,6 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
{
RelativeSizeAxes = Axes.X;
FillMode = FillMode.Fill;
Alpha = 0.3f;
}
[BackgroundDependencyLoader]
@@ -35,25 +39,50 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
{
Anchor = Anchor.BottomCentre;
Origin = Anchor.BottomCentre;
Alpha = (float)hitTargetAlpha.Value;
hitTargetAlpha = EZSkinConfig.GetBindable<double>(EzSkinSetting.HitTargetAlpha);
hitTargetAlpha.BindValueChanged(v => Alpha = (float)v.NewValue, true);
hitTargetFloatFixed = EZSkinConfig.GetBindable<double>(EzSkinSetting.HitTargetFloatFixed);
hitTargetFloatFixed.BindValueChanged(_ => updatePosition());
}
private double beatInterval;
private bool requiresUpdate = true;
protected override void LoadComplete()
{
base.LoadComplete();
double bpm = beatmap.BeatmapInfo.BPM * gameplayClock.GetTrueGameplayRate();
beatInterval = 60000 / bpm;
calculateBeatInterval();
requiresUpdate = true;
}
protected override void Update()
{
base.Update();
double progress = (gameplayClock.CurrentTime % beatInterval) / beatInterval;
if (requiresUpdate)
{
updatePosition();
}
}
private void calculateBeatInterval()
{
double bpm = beatmap.BeatmapInfo.BPM * gameplayClock.GetTrueGameplayRate();
beatInterval = 60000 / bpm;
}
private void updatePosition()
{
// 平滑正弦波效果
double smoothValue = 0.3 * Math.Sin(progress * 2 * Math.PI);
Y = (float)(smoothValue * 6);
if (beatInterval > 0)
{
double progress = (gameplayClock.CurrentTime % beatInterval) / beatInterval;
double smoothValue = 0.3 * Math.Sin(progress * 2 * Math.PI);
Y = (float)(smoothValue * hitTargetFloatFixed.Value);
}
}
}
}

View File

@@ -35,7 +35,7 @@ namespace osu.Game.Rulesets.Mania.Skinning.EzStylePro
MainContainer.Child = animation;
}
Schedule(UpdateSize);
UpdateSize();
}
protected override void UpdateSize()

View File

@@ -24,7 +24,7 @@ namespace osu.Game.Rulesets.Mania.UI.Components
private EzSkinSettingsManager ezSkinConfig { get; set; } = null!;
private Bindable<double> hitPositonBindable = new Bindable<double>();
private readonly Bindable<bool> globalHitPosition = new Bindable<bool>();
private Bindable<bool> globalHitPosition = new Bindable<bool>();
[BackgroundDependencyLoader]
private void load(IScrollingInfo scrollingInfo)
@@ -32,7 +32,7 @@ namespace osu.Game.Rulesets.Mania.UI.Components
Direction.BindTo(scrollingInfo.Direction);
Direction.BindValueChanged(_ => UpdateHitPosition(), true);
globalHitPosition.BindTo(ezSkinConfig.GetBindable<bool>(EzSkinSetting.GlobalHitPosition));
globalHitPosition = ezSkinConfig.GetBindable<bool>(EzSkinSetting.GlobalHitPosition);
hitPositonBindable = ezSkinConfig.GetBindable<double>(EzSkinSetting.HitPosition);
skin.SourceChanged += onSkinChanged;
}

View File

@@ -42,13 +42,22 @@ namespace osu.Game.Rulesets.Mania
var bindings = new List<KeyBinding>();
for (int i = LeftKeys.Length - columns / 2; i < LeftKeys.Length; i++)
bindings.Add(new KeyBinding(LeftKeys[i], currentAction++));
{
bindings.Add(new KeyBinding(LeftKeys[i], currentAction));
bindings.Add(new KeyBinding(InputKey.None, currentAction++));
}
if (columns % 2 == 1)
bindings.Add(new KeyBinding(SpecialKey, currentAction++));
{
bindings.Add(new KeyBinding(SpecialKey, currentAction));
bindings.Add(new KeyBinding(InputKey.None, currentAction++));
}
for (int i = 0; i < columns / 2; i++)
bindings.Add(new KeyBinding(RightKeys[i], currentAction++));
{
bindings.Add(new KeyBinding(RightKeys[i], currentAction));
bindings.Add(new KeyBinding(InputKey.None, currentAction++));
}
return bindings;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,6 +0,0 @@
[General]
// no version specified means v1
[Fonts]
HitCircleOverlap: 3
ScoreOverlap: 3

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -176,6 +176,11 @@ namespace osu.Game.Rulesets.Osu.Edit
private void applyPosition()
{
// can happen if popover is dismissed by a keyboard key press while dragging UI controls
// it doesn't cause a crash, but it looks wrong
if (!editorBeatmap.TransactionActive)
return;
editorBeatmap.PerformOnSelection(ho =>
{
if (!initialPositions.TryGetValue(ho, out var initialPosition))

View File

@@ -157,6 +157,10 @@ namespace osu.Game.Rulesets.Osu.Edit
rotationInfo.BindValueChanged(rotation =>
{
// can happen if the popover is dismissed by a keyboard key press while dragging UI controls
if (!rotationHandler.OperationInProgress.Value)
return;
rotationHandler.Update(rotation.NewValue.Degrees, getOriginPosition(rotation.NewValue));
});
}

View File

@@ -220,6 +220,10 @@ namespace osu.Game.Rulesets.Osu.Edit
scaleInfo.BindValueChanged(scale =>
{
// can happen if the popover is dismissed by a keyboard key press while dragging UI controls
if (!scaleHandler.OperationInProgress.Value)
return;
var newScale = new Vector2(scale.NewValue.Scale, scale.NewValue.Scale);
scaleHandler.Update(newScale, getOriginPosition(scale.NewValue), getAdjustAxis(scale.NewValue), getRotation(scale.NewValue));
});

View File

@@ -5,10 +5,13 @@ using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
using osu.Framework.Testing;
using osu.Game.Beatmaps;
using osu.Game.Beatmaps.ControlPoints;
using osu.Game.Configuration;
using osu.Game.Rulesets.Taiko.Mods;
using osu.Game.Rulesets.Taiko.Objects;
using osu.Game.Rulesets.Taiko.Objects.Drawables;
namespace osu.Game.Rulesets.Taiko.Tests.Mods
{
@@ -69,5 +72,106 @@ namespace osu.Game.Rulesets.Taiko.Tests.Mods
},
});
}
[Test]
public void TestIncreasedVisibilityOnFirstObject()
{
bool firstHitNeverFadedOut = true;
AddStep("enable increased visibility", () => LocalConfig.SetValue(OsuSetting.IncreaseFirstObjectVisibility, true));
CreateModTest(new ModTestData
{
Mod = new TaikoModHidden(),
Autoplay = true,
PassCondition = () =>
{
var firstHit = this.ChildrenOfType<DrawableHit>().FirstOrDefault(h => h.HitObject.StartTime == 100);
if (firstHit?.Alpha < 1 && !firstHit.IsHit)
firstHitNeverFadedOut = false;
return firstHitNeverFadedOut && checkAllMaxResultJudgements(2).Invoke();
},
CreateBeatmap = () =>
{
var beatmap = new Beatmap<TaikoHitObject>
{
HitObjects = new List<TaikoHitObject>
{
new Hit
{
Type = HitType.Rim,
StartTime = 100,
},
new Hit
{
Type = HitType.Centre,
StartTime = 200,
},
},
BeatmapInfo =
{
Difficulty = new BeatmapDifficulty
{
SliderTickRate = 4,
OverallDifficulty = 0,
},
Ruleset = new TaikoRuleset().RulesetInfo
},
};
beatmap.ControlPointInfo.Add(0, new EffectControlPoint { ScrollSpeed = 0.1f });
return beatmap;
},
});
}
[Test]
public void TestNoIncreasedVisibilityOnFirstObject()
{
bool firstHitFadedOut = true;
AddStep("enable increased visibility", () => LocalConfig.SetValue(OsuSetting.IncreaseFirstObjectVisibility, false));
CreateModTest(new ModTestData
{
Mod = new TaikoModHidden(),
Autoplay = true,
PassCondition = () =>
{
var firstHit = this.ChildrenOfType<DrawableHit>().FirstOrDefault(h => h.HitObject.StartTime == 100);
firstHitFadedOut |= firstHit?.IsHit == false && firstHit.Alpha < 1;
return firstHitFadedOut && checkAllMaxResultJudgements(2).Invoke();
},
CreateBeatmap = () =>
{
var beatmap = new Beatmap<TaikoHitObject>
{
HitObjects = new List<TaikoHitObject>
{
new Hit
{
Type = HitType.Rim,
StartTime = 100,
},
new Hit
{
Type = HitType.Centre,
StartTime = 200,
},
},
BeatmapInfo =
{
Difficulty = new BeatmapDifficulty
{
SliderTickRate = 4,
OverallDifficulty = 0,
},
Ruleset = new TaikoRuleset().RulesetInfo
},
};
beatmap.ControlPointInfo.Add(0, new EffectControlPoint { ScrollSpeed = 0.1f });
return beatmap;
},
});
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,5 +0,0 @@
[General]
Name: an old skin
Author: an old guy
// no version specified means v1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Some files were not shown because too many files have changed in this diff Show More