mirror of
https://github.com/osukey/osukey.git
synced 2025-05-09 15:47:38 +09:00
Merge branch 'master' into performance-calculator
This commit is contained in:
commit
93d7cd5a6d
@ -9,17 +9,17 @@ cache:
|
|||||||
- inspectcode -> appveyor.yml
|
- inspectcode -> appveyor.yml
|
||||||
- packages -> **\packages.config
|
- packages -> **\packages.config
|
||||||
install:
|
install:
|
||||||
- cmd: git submodule update --init --recursive
|
- cmd: git submodule update --init --recursive --depth=5
|
||||||
- cmd: choco install resharper-clt -y
|
- cmd: choco install resharper-clt -y
|
||||||
- cmd: choco install nvika -y
|
- cmd: choco install nvika -y
|
||||||
- cmd: appveyor DownloadFile https://github.com/peppy/CodeFileSanity/releases/download/v0.2.3/CodeFileSanity.exe
|
- cmd: appveyor DownloadFile https://github.com/peppy/CodeFileSanity/releases/download/v0.2.3/CodeFileSanity.exe
|
||||||
before_build:
|
before_build:
|
||||||
- cmd: CodeFileSanity.exe
|
- cmd: CodeFileSanity.exe
|
||||||
- cmd: nuget restore
|
- cmd: nuget restore -verbosity quiet
|
||||||
build:
|
build:
|
||||||
project: osu.sln
|
project: osu.sln
|
||||||
parallel: true
|
parallel: true
|
||||||
verbosity: minimal
|
verbosity: minimal
|
||||||
after_build:
|
after_build:
|
||||||
- cmd: inspectcode /o="inspectcodereport.xml" /caches-home="inspectcode" osu.sln
|
- cmd: inspectcode --o="inspectcodereport.xml" --projects:osu.Game* --caches-home="inspectcode" osu.sln > NUL
|
||||||
- cmd: NVika parsereport "inspectcodereport.xml" --treatwarningsaserrors
|
- cmd: NVika parsereport "inspectcodereport.xml" --treatwarningsaserrors
|
@ -1 +1 @@
|
|||||||
Subproject commit d92cec764538da2e7ed95bfb566f6bc81a9667c8
|
Subproject commit 4fc866eee3803f88b155150e32e021b9c21e647f
|
@ -30,7 +30,7 @@ namespace osu.Game.Rulesets.Mania.Replays
|
|||||||
public override Replay Generate()
|
public override Replay Generate()
|
||||||
{
|
{
|
||||||
// Todo: Realistically this shouldn't be needed, but the first frame is skipped with the way replays are currently handled
|
// Todo: Realistically this shouldn't be needed, but the first frame is skipped with the way replays are currently handled
|
||||||
Replay.Frames.Add(new ReplayFrame(-100000, null, null, ReplayButtonState.None));
|
Replay.Frames.Add(new ManiaReplayFrame(-100000, 0));
|
||||||
|
|
||||||
double[] holdEndTimes = new double[availableColumns];
|
double[] holdEndTimes = new double[availableColumns];
|
||||||
for (int i = 0; i < availableColumns; i++)
|
for (int i = 0; i < availableColumns; i++)
|
||||||
@ -60,7 +60,7 @@ namespace osu.Game.Rulesets.Mania.Replays
|
|||||||
activeColumns |= 1 << obj.Column;
|
activeColumns |= 1 << obj.Column;
|
||||||
}
|
}
|
||||||
|
|
||||||
Replay.Frames.Add(new ReplayFrame(groupTime, activeColumns, null, ReplayButtonState.None));
|
Replay.Frames.Add(new ManiaReplayFrame(groupTime, activeColumns));
|
||||||
|
|
||||||
// Add the release frames. We can't do this with the loop above because we need activeColumns to be fully populated
|
// Add the release frames. We can't do this with the loop above because we need activeColumns to be fully populated
|
||||||
foreach (var obj in objGroup.GroupBy(h => (h as IHasEndTime)?.EndTime ?? h.StartTime + release_delay).OrderBy(h => h.Key))
|
foreach (var obj in objGroup.GroupBy(h => (h as IHasEndTime)?.EndTime ?? h.StartTime + release_delay).OrderBy(h => h.Key))
|
||||||
@ -74,14 +74,15 @@ namespace osu.Game.Rulesets.Mania.Replays
|
|||||||
activeColumnsAtEnd |= 1 << i;
|
activeColumnsAtEnd |= 1 << i;
|
||||||
}
|
}
|
||||||
|
|
||||||
Replay.Frames.Add(new ReplayFrame(groupEndTime, activeColumnsAtEnd, 0, ReplayButtonState.None));
|
Replay.Frames.Add(new ManiaReplayFrame(groupEndTime, activeColumnsAtEnd));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Replay.Frames = Replay.Frames
|
Replay.Frames = Replay.Frames
|
||||||
// Pick the maximum activeColumns for all frames at the same time
|
// Pick the maximum activeColumns for all frames at the same time
|
||||||
.GroupBy(f => f.Time)
|
.GroupBy(f => f.Time)
|
||||||
.Select(g => new ReplayFrame(g.First().Time, maxMouseX(g), 0, ReplayButtonState.None))
|
.Select(g => new ManiaReplayFrame(g.First().Time, maxMouseX(g)))
|
||||||
|
.Cast<ReplayFrame>()
|
||||||
// The addition of release frames above maybe result in unordered frames, but we need them ordered
|
// The addition of release frames above maybe result in unordered frames, but we need them ordered
|
||||||
.OrderBy(f => f.Time)
|
.OrderBy(f => f.Time)
|
||||||
.ToList();
|
.ToList();
|
||||||
@ -94,7 +95,7 @@ namespace osu.Game.Rulesets.Mania.Replays
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="group">The <see cref="ReplayFrame"/> grouping to search.</param>
|
/// <param name="group">The <see cref="ReplayFrame"/> grouping to search.</param>
|
||||||
/// <returns>The maximum <see cref="ReplayFrame.MouseX"/> by count of bits.</returns>
|
/// <returns>The maximum <see cref="ReplayFrame.MouseX"/> by count of bits.</returns>
|
||||||
private float maxMouseX(IGrouping<double, ReplayFrame> group)
|
private int maxMouseX(IGrouping<double, ReplayFrame> group)
|
||||||
{
|
{
|
||||||
int currentCount = -1;
|
int currentCount = -1;
|
||||||
int currentMax = 0;
|
int currentMax = 0;
|
||||||
|
17
osu.Game.Rulesets.Mania/Replays/ManiaReplayFrame.cs
Normal file
17
osu.Game.Rulesets.Mania/Replays/ManiaReplayFrame.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Rulesets.Replays;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Mania.Replays
|
||||||
|
{
|
||||||
|
public class ManiaReplayFrame : ReplayFrame
|
||||||
|
{
|
||||||
|
public override bool IsImportant => MouseX > 0;
|
||||||
|
|
||||||
|
public ManiaReplayFrame(double time, int activeColumns)
|
||||||
|
: base(time, activeColumns, null, ReplayButtonState.None)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -72,6 +72,7 @@
|
|||||||
<Compile Include="Objects\Types\IHasColumn.cs" />
|
<Compile Include="Objects\Types\IHasColumn.cs" />
|
||||||
<Compile Include="Replays\ManiaAutoGenerator.cs" />
|
<Compile Include="Replays\ManiaAutoGenerator.cs" />
|
||||||
<Compile Include="Replays\ManiaFramedReplayInputHandler.cs" />
|
<Compile Include="Replays\ManiaFramedReplayInputHandler.cs" />
|
||||||
|
<Compile Include="Replays\ManiaReplayFrame.cs" />
|
||||||
<Compile Include="Scoring\ManiaScoreProcessor.cs" />
|
<Compile Include="Scoring\ManiaScoreProcessor.cs" />
|
||||||
<Compile Include="Objects\BarLine.cs" />
|
<Compile Include="Objects\BarLine.cs" />
|
||||||
<Compile Include="Objects\HoldNote.cs" />
|
<Compile Include="Objects\HoldNote.cs" />
|
||||||
|
@ -9,7 +9,7 @@ namespace osu.Game.Rulesets.Replays
|
|||||||
{
|
{
|
||||||
public Vector2 Position => new Vector2(MouseX ?? 0, MouseY ?? 0);
|
public Vector2 Position => new Vector2(MouseX ?? 0, MouseY ?? 0);
|
||||||
|
|
||||||
public bool IsImportant => MouseX.HasValue && MouseY.HasValue && (MouseLeft || MouseRight);
|
public virtual bool IsImportant => MouseX.HasValue && MouseY.HasValue && (MouseLeft || MouseRight);
|
||||||
|
|
||||||
public float? MouseX;
|
public float? MouseX;
|
||||||
public float? MouseY;
|
public float? MouseY;
|
||||||
@ -68,4 +68,4 @@ namespace osu.Game.Rulesets.Replays
|
|||||||
return $"{Time}\t({MouseX},{MouseY})\t{MouseLeft}\t{MouseRight}\t{MouseLeft1}\t{MouseRight1}\t{MouseLeft2}\t{MouseRight2}\t{ButtonState}";
|
return $"{Time}\t({MouseX},{MouseY})\t{MouseLeft}\t{MouseRight}\t{MouseLeft1}\t{MouseRight1}\t{MouseLeft2}\t{MouseRight2}\t{ButtonState}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,11 @@ namespace osu.Game.Tests.Visual
|
|||||||
string instantiation = ruleset?.AssemblyQualifiedName;
|
string instantiation = ruleset?.AssemblyQualifiedName;
|
||||||
|
|
||||||
foreach (var r in rulesets.AvailableRulesets.Where(rs => instantiation == null || rs.InstantiationInfo == instantiation))
|
foreach (var r in rulesets.AvailableRulesets.Where(rs => instantiation == null || rs.InstantiationInfo == instantiation))
|
||||||
AddStep(r.Name, () => loadPlayerFor(r));
|
{
|
||||||
|
Player p = null;
|
||||||
|
AddStep(r.Name, () => p = loadPlayerFor(r));
|
||||||
|
AddUntilStep(() => p.IsLoaded);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual Beatmap CreateBeatmap()
|
protected virtual Beatmap CreateBeatmap()
|
||||||
@ -64,7 +68,7 @@ namespace osu.Game.Tests.Visual
|
|||||||
return beatmap;
|
return beatmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadPlayerFor(RulesetInfo r)
|
private Player loadPlayerFor(RulesetInfo r)
|
||||||
{
|
{
|
||||||
var beatmap = CreateBeatmap();
|
var beatmap = CreateBeatmap();
|
||||||
|
|
||||||
@ -78,7 +82,11 @@ namespace osu.Game.Tests.Visual
|
|||||||
if (Player != null)
|
if (Player != null)
|
||||||
Remove(Player);
|
Remove(Player);
|
||||||
|
|
||||||
LoadScreen(CreatePlayer(working, instance));
|
var player = CreatePlayer(working, instance);
|
||||||
|
|
||||||
|
LoadComponentAsync(player, LoadScreen);
|
||||||
|
|
||||||
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual Player CreatePlayer(WorkingBeatmap beatmap, Ruleset ruleset) => new Player
|
protected virtual Player CreatePlayer(WorkingBeatmap beatmap, Ruleset ruleset) => new Player
|
||||||
|
Loading…
x
Reference in New Issue
Block a user