mirror of
https://github.com/ppy/osu.git
synced 2025-01-07 21:32:57 +08:00
Merge branch 'master' into no-scope-catch
This commit is contained in:
commit
116b857cea
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@ -5,7 +5,7 @@ updates:
|
|||||||
schedule:
|
schedule:
|
||||||
interval: monthly
|
interval: monthly
|
||||||
time: "17:00"
|
time: "17:00"
|
||||||
open-pull-requests-limit: 99
|
open-pull-requests-limit: 0 # disabled until https://github.com/dependabot/dependabot-core/issues/369 is resolved.
|
||||||
ignore:
|
ignore:
|
||||||
- dependency-name: Microsoft.EntityFrameworkCore.Design
|
- dependency-name: Microsoft.EntityFrameworkCore.Design
|
||||||
versions:
|
versions:
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.EmptyFreeform.Replays;
|
using osu.Game.Rulesets.EmptyFreeform.Replays;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.EmptyFreeform.Mods
|
namespace osu.Game.Rulesets.EmptyFreeform.Mods
|
||||||
{
|
{
|
||||||
@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.EmptyFreeform.Mods
|
|||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo
|
ScoreInfo = new ScoreInfo
|
||||||
{
|
{
|
||||||
User = new User { Username = "sample" },
|
User = new APIUser { Username = "sample" },
|
||||||
},
|
},
|
||||||
Replay = new EmptyFreeformAutoGenerator(beatmap).Generate(),
|
Replay = new EmptyFreeformAutoGenerator(beatmap).Generate(),
|
||||||
};
|
};
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Pippidon.Replays;
|
using osu.Game.Rulesets.Pippidon.Replays;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Pippidon.Mods
|
namespace osu.Game.Rulesets.Pippidon.Mods
|
||||||
{
|
{
|
||||||
@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Pippidon.Mods
|
|||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo
|
ScoreInfo = new ScoreInfo
|
||||||
{
|
{
|
||||||
User = new User { Username = "sample" },
|
User = new APIUser { Username = "sample" },
|
||||||
},
|
},
|
||||||
Replay = new PippidonAutoGenerator(beatmap).Generate(),
|
Replay = new PippidonAutoGenerator(beatmap).Generate(),
|
||||||
};
|
};
|
||||||
|
@ -5,8 +5,8 @@ using osu.Game.Beatmaps;
|
|||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.EmptyScrolling.Replays;
|
using osu.Game.Rulesets.EmptyScrolling.Replays;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.EmptyScrolling.Mods
|
namespace osu.Game.Rulesets.EmptyScrolling.Mods
|
||||||
{
|
{
|
||||||
@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.EmptyScrolling.Mods
|
|||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo
|
ScoreInfo = new ScoreInfo
|
||||||
{
|
{
|
||||||
User = new User { Username = "sample" },
|
User = new APIUser { Username = "sample" },
|
||||||
},
|
},
|
||||||
Replay = new EmptyScrollingAutoGenerator(beatmap).Generate(),
|
Replay = new EmptyScrollingAutoGenerator(beatmap).Generate(),
|
||||||
};
|
};
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Pippidon.Replays;
|
using osu.Game.Rulesets.Pippidon.Replays;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Pippidon.Mods
|
namespace osu.Game.Rulesets.Pippidon.Mods
|
||||||
{
|
{
|
||||||
@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Pippidon.Mods
|
|||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo
|
ScoreInfo = new ScoreInfo
|
||||||
{
|
{
|
||||||
User = new User { Username = "sample" },
|
User = new APIUser { Username = "sample" },
|
||||||
},
|
},
|
||||||
Replay = new PippidonAutoGenerator(beatmap).Generate(),
|
Replay = new PippidonAutoGenerator(beatmap).Generate(),
|
||||||
};
|
};
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ppy.osu.Game.Resources" Version="2021.1026.0" />
|
<PackageReference Include="ppy.osu.Game.Resources" Version="2021.1026.0" />
|
||||||
<PackageReference Include="ppy.osu.Framework.Android" Version="2021.1106.0" />
|
<PackageReference Include="ppy.osu.Framework.Android" Version="2021.1108.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Transitive Dependencies">
|
<ItemGroup Label="Transitive Dependencies">
|
||||||
<!-- Realm needs to be directly referenced in all Xamarin projects, as it will not pull in its transitive dependencies otherwise. -->
|
<!-- Realm needs to be directly referenced in all Xamarin projects, as it will not pull in its transitive dependencies otherwise. -->
|
||||||
|
@ -11,10 +11,10 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Logging;
|
using osu.Framework.Logging;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
using LogLevel = osu.Framework.Logging.LogLevel;
|
using LogLevel = osu.Framework.Logging.LogLevel;
|
||||||
using User = osu.Game.Users.User;
|
|
||||||
|
|
||||||
namespace osu.Desktop
|
namespace osu.Desktop
|
||||||
{
|
{
|
||||||
@ -27,7 +27,7 @@ namespace osu.Desktop
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private IBindable<RulesetInfo> ruleset { get; set; }
|
private IBindable<RulesetInfo> ruleset { get; set; }
|
||||||
|
|
||||||
private IBindable<User> user;
|
private IBindable<APIUser> user;
|
||||||
|
|
||||||
private readonly IBindable<UserStatus> status = new Bindable<UserStatus>();
|
private readonly IBindable<UserStatus> status = new Bindable<UserStatus>();
|
||||||
private readonly IBindable<UserActivity> activity = new Bindable<UserActivity>();
|
private readonly IBindable<UserActivity> activity = new Bindable<UserActivity>();
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Catch.Replays;
|
using osu.Game.Rulesets.Catch.Replays;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Catch.Mods
|
namespace osu.Game.Rulesets.Catch.Mods
|
||||||
{
|
{
|
||||||
@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Catch.Mods
|
|||||||
{
|
{
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "osu!salad" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "osu!salad" } },
|
||||||
Replay = new CatchAutoGenerator(beatmap).Generate(),
|
Replay = new CatchAutoGenerator(beatmap).Generate(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Catch.Objects;
|
using osu.Game.Rulesets.Catch.Objects;
|
||||||
using osu.Game.Rulesets.Catch.Replays;
|
using osu.Game.Rulesets.Catch.Replays;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Catch.Mods
|
namespace osu.Game.Rulesets.Catch.Mods
|
||||||
{
|
{
|
||||||
@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Catch.Mods
|
|||||||
{
|
{
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "osu!salad" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "osu!salad" } },
|
||||||
Replay = new CatchAutoGenerator(beatmap).Generate(),
|
Replay = new CatchAutoGenerator(beatmap).Generate(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mania.Beatmaps;
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
using osu.Game.Rulesets.Mania.Replays;
|
using osu.Game.Rulesets.Mania.Replays;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Mania.Mods
|
namespace osu.Game.Rulesets.Mania.Mods
|
||||||
{
|
{
|
||||||
@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Mania.Mods
|
|||||||
{
|
{
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "osu!topus" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "osu!topus" } },
|
||||||
Replay = new ManiaAutoGenerator((ManiaBeatmap)beatmap).Generate(),
|
Replay = new ManiaAutoGenerator((ManiaBeatmap)beatmap).Generate(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mania.Beatmaps;
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
using osu.Game.Rulesets.Mania.Objects;
|
using osu.Game.Rulesets.Mania.Objects;
|
||||||
using osu.Game.Rulesets.Mania.Replays;
|
using osu.Game.Rulesets.Mania.Replays;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Mania.Mods
|
namespace osu.Game.Rulesets.Mania.Mods
|
||||||
{
|
{
|
||||||
@ -16,7 +16,7 @@ namespace osu.Game.Rulesets.Mania.Mods
|
|||||||
{
|
{
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "osu!topus" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "osu!topus" } },
|
||||||
Replay = new ManiaAutoGenerator((ManiaBeatmap)beatmap).Generate(),
|
Replay = new ManiaAutoGenerator((ManiaBeatmap)beatmap).Generate(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -15,13 +15,13 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
{
|
{
|
||||||
protected override string ResourceAssembly => "osu.Game.Rulesets.Osu";
|
protected override string ResourceAssembly => "osu.Game.Rulesets.Osu";
|
||||||
|
|
||||||
[TestCase(6.5295339534769958d, "diffcalc-test")]
|
[TestCase(6.6975550434910005d, "diffcalc-test")]
|
||||||
[TestCase(1.1514260533755143d, "zero-length-sliders")]
|
[TestCase(1.4670676815251105d, "zero-length-sliders")]
|
||||||
public void Test(double expected, string name)
|
public void Test(double expected, string name)
|
||||||
=> base.Test(expected, name);
|
=> base.Test(expected, name);
|
||||||
|
|
||||||
[TestCase(9.047752485219954d, "diffcalc-test")]
|
[TestCase(8.9389769779826267d, "diffcalc-test")]
|
||||||
[TestCase(1.3985711787077566d, "zero-length-sliders")]
|
[TestCase(1.7786917985891204d, "zero-length-sliders")]
|
||||||
public void TestClockRateAdjusted(double expected, string name)
|
public void TestClockRateAdjusted(double expected, string name)
|
||||||
=> Test(expected, name, new OsuModDoubleTime());
|
=> Test(expected, name, new OsuModDoubleTime());
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Replays;
|
using osu.Game.Replays;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Osu.Beatmaps;
|
using osu.Game.Rulesets.Osu.Beatmaps;
|
||||||
@ -14,7 +15,6 @@ using osu.Game.Rulesets.Osu.Scoring;
|
|||||||
using osu.Game.Rulesets.Scoring;
|
using osu.Game.Rulesets.Scoring;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Tests.Visual;
|
using osu.Game.Tests.Visual;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Tests
|
namespace osu.Game.Rulesets.Osu.Tests
|
||||||
@ -69,7 +69,7 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
{
|
{
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "Autoplay" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "Autoplay" } },
|
||||||
Replay = new MissingAutoGenerator(beatmap, mods).Generate()
|
Replay = new MissingAutoGenerator(beatmap, mods).Generate()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
|
|
||||||
if (mods.Any(h => h is OsuModRelax))
|
if (mods.Any(h => h is OsuModRelax))
|
||||||
{
|
{
|
||||||
effectiveMissCount += countOk + countMeh;
|
// As we're adding Oks and Mehs to an approximated number of combo breaks the result can be higher than total hits in specific scenarios (which breaks some calculations) so we need to clamp it.
|
||||||
|
effectiveMissCount = Math.Min(effectiveMissCount + countOk + countMeh, totalHits);
|
||||||
|
|
||||||
multiplier *= 0.6;
|
multiplier *= 0.6;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,13 +111,11 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
|
|
||||||
double approachRateFactor = 0.0;
|
double approachRateFactor = 0.0;
|
||||||
if (Attributes.ApproachRate > 10.33)
|
if (Attributes.ApproachRate > 10.33)
|
||||||
approachRateFactor = Attributes.ApproachRate - 10.33;
|
approachRateFactor = 0.3 * (Attributes.ApproachRate - 10.33);
|
||||||
else if (Attributes.ApproachRate < 8.0)
|
else if (Attributes.ApproachRate < 8.0)
|
||||||
approachRateFactor = 0.025 * (8.0 - Attributes.ApproachRate);
|
approachRateFactor = 0.1 * (8.0 - Attributes.ApproachRate);
|
||||||
|
|
||||||
double approachRateTotalHitsFactor = 1.0 / (1.0 + Math.Exp(-(0.007 * (totalHits - 400))));
|
aimValue *= 1.0 + approachRateFactor * lengthBonus; // Buff for longer maps with high AR.
|
||||||
|
|
||||||
double approachRateBonus = 1.0 + (0.03 + 0.37 * approachRateTotalHitsFactor) * approachRateFactor;
|
|
||||||
|
|
||||||
if (mods.Any(m => m is OsuModBlinds))
|
if (mods.Any(m => m is OsuModBlinds))
|
||||||
aimValue *= 1.3 + (totalHits * (0.0016 / (1 + 2 * effectiveMissCount)) * Math.Pow(accuracy, 16)) * (1 - 0.003 * Attributes.DrainRate * Attributes.DrainRate);
|
aimValue *= 1.3 + (totalHits * (0.0016 / (1 + 2 * effectiveMissCount)) * Math.Pow(accuracy, 16)) * (1 - 0.003 * Attributes.DrainRate * Attributes.DrainRate);
|
||||||
@ -125,10 +125,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
aimValue *= 1.0 + 0.04 * (12.0 - Attributes.ApproachRate);
|
aimValue *= 1.0 + 0.04 * (12.0 - Attributes.ApproachRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
aimValue *= approachRateBonus;
|
aimValue *= accuracy;
|
||||||
|
|
||||||
// Scale the aim value with accuracy _slightly_.
|
|
||||||
aimValue *= 0.5 + accuracy / 2.0;
|
|
||||||
// It is important to also consider accuracy difficulty when doing that.
|
// It is important to also consider accuracy difficulty when doing that.
|
||||||
aimValue *= 0.98 + Math.Pow(Attributes.OverallDifficulty, 2) / 2500;
|
aimValue *= 0.98 + Math.Pow(Attributes.OverallDifficulty, 2) / 2500;
|
||||||
|
|
||||||
@ -154,11 +151,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
|
|
||||||
double approachRateFactor = 0.0;
|
double approachRateFactor = 0.0;
|
||||||
if (Attributes.ApproachRate > 10.33)
|
if (Attributes.ApproachRate > 10.33)
|
||||||
approachRateFactor = Attributes.ApproachRate - 10.33;
|
approachRateFactor = 0.3 * (Attributes.ApproachRate - 10.33);
|
||||||
|
|
||||||
double approachRateTotalHitsFactor = 1.0 / (1.0 + Math.Exp(-(0.007 * (totalHits - 400))));
|
speedValue *= 1.0 + approachRateFactor * lengthBonus; // Buff for longer maps with high AR.
|
||||||
|
|
||||||
speedValue *= 1.0 + (0.03 + 0.37 * approachRateTotalHitsFactor) * approachRateFactor;
|
|
||||||
|
|
||||||
if (mods.Any(m => m is OsuModBlinds))
|
if (mods.Any(m => m is OsuModBlinds))
|
||||||
{
|
{
|
||||||
@ -255,7 +250,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
|
|
||||||
private int calculateEffectiveMissCount()
|
private int calculateEffectiveMissCount()
|
||||||
{
|
{
|
||||||
// guess the number of misses + slider breaks from combo
|
// Guess the number of misses + slider breaks from combo
|
||||||
double comboBasedMissCount = 0.0;
|
double comboBasedMissCount = 0.0;
|
||||||
|
|
||||||
if (Attributes.SliderCount > 0)
|
if (Attributes.SliderCount > 0)
|
||||||
@ -265,7 +260,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty
|
|||||||
comboBasedMissCount = fullComboThreshold / Math.Max(1.0, scoreMaxCombo);
|
comboBasedMissCount = fullComboThreshold / Math.Max(1.0, scoreMaxCombo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// we're clamping misscount because since its derived from combo it can be higher than total hits and that breaks some calculations
|
// Clamp misscount since it's derived from combo and can be higher than total hits and that breaks some calculations
|
||||||
comboBasedMissCount = Math.Min(comboBasedMissCount, totalHits);
|
comboBasedMissCount = Math.Min(comboBasedMissCount, totalHits);
|
||||||
|
|
||||||
return Math.Max(countMiss, (int)Math.Floor(comboBasedMissCount));
|
return Math.Max(countMiss, (int)Math.Floor(comboBasedMissCount));
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
// 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;
|
||||||
using System.Linq;
|
|
||||||
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
using osu.Game.Rulesets.Difficulty.Preprocessing;
|
||||||
using osu.Game.Rulesets.Objects;
|
using osu.Game.Rulesets.Objects;
|
||||||
using osu.Game.Rulesets.Osu.Objects;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
@ -14,6 +13,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing
|
|||||||
{
|
{
|
||||||
private const int normalized_radius = 50; // Change radius to 50 to make 100 the diameter. Easier for mental maths.
|
private const int normalized_radius = 50; // Change radius to 50 to make 100 the diameter. Easier for mental maths.
|
||||||
private const int min_delta_time = 25;
|
private const int min_delta_time = 25;
|
||||||
|
private const float maximum_slider_radius = normalized_radius * 2.4f;
|
||||||
|
private const float assumed_slider_radius = normalized_radius * 1.65f;
|
||||||
|
|
||||||
protected new OsuHitObject BaseObject => (OsuHitObject)base.BaseObject;
|
protected new OsuHitObject BaseObject => (OsuHitObject)base.BaseObject;
|
||||||
|
|
||||||
@ -89,7 +90,7 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing
|
|||||||
if (lastObject is Slider lastSlider)
|
if (lastObject is Slider lastSlider)
|
||||||
{
|
{
|
||||||
computeSliderCursorPosition(lastSlider);
|
computeSliderCursorPosition(lastSlider);
|
||||||
TravelDistance = lastSlider.LazyTravelDistance * scalingFactor;
|
TravelDistance = lastSlider.LazyTravelDistance;
|
||||||
TravelTime = Math.Max(lastSlider.LazyTravelTime / clockRate, min_delta_time);
|
TravelTime = Math.Max(lastSlider.LazyTravelTime / clockRate, min_delta_time);
|
||||||
MovementTime = Math.Max(StrainTime - TravelTime, min_delta_time);
|
MovementTime = Math.Max(StrainTime - TravelTime, min_delta_time);
|
||||||
|
|
||||||
@ -99,7 +100,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing
|
|||||||
// For hitobjects which continue in the direction of the slider, the player will normally follow through the slider,
|
// For hitobjects which continue in the direction of the slider, the player will normally follow through the slider,
|
||||||
// such that they're not jumping from the lazy position but rather from very close to (or the end of) the slider.
|
// such that they're not jumping from the lazy position but rather from very close to (or the end of) the slider.
|
||||||
// In such cases, a leniency is applied by also considering the jump distance from the tail of the slider, and taking the minimum jump distance.
|
// In such cases, a leniency is applied by also considering the jump distance from the tail of the slider, and taking the minimum jump distance.
|
||||||
MovementDistance = Math.Min(JumpDistance, tailJumpDistance);
|
// Additional distance is removed based on position of jump relative to slider follow circle radius.
|
||||||
|
// JumpDistance is the leniency distance beyond the assumed_slider_radius. tailJumpDistance is maximum_slider_radius since the full distance of radial leniency is still possible.
|
||||||
|
MovementDistance = Math.Max(0, Math.Min(JumpDistance - (maximum_slider_radius - assumed_slider_radius), tailJumpDistance - maximum_slider_radius));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -126,37 +129,60 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing
|
|||||||
if (slider.LazyEndPosition != null)
|
if (slider.LazyEndPosition != null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
slider.LazyEndPosition = slider.StackedPosition;
|
slider.LazyTravelTime = slider.NestedHitObjects[^1].StartTime - slider.StartTime;
|
||||||
|
|
||||||
float followCircleRadius = (float)(slider.Radius * 2.4);
|
double endTimeMin = slider.LazyTravelTime / slider.SpanDuration;
|
||||||
var computeVertex = new Action<double>(t =>
|
if (endTimeMin % 2 >= 1)
|
||||||
{
|
endTimeMin = 1 - endTimeMin % 1;
|
||||||
double progress = (t - slider.StartTime) / slider.SpanDuration;
|
|
||||||
if (progress % 2 >= 1)
|
|
||||||
progress = 1 - progress % 1;
|
|
||||||
else
|
else
|
||||||
progress %= 1;
|
endTimeMin %= 1;
|
||||||
|
|
||||||
// ReSharper disable once PossibleInvalidOperationException (bugged in current r# version)
|
slider.LazyEndPosition = slider.StackedPosition + slider.Path.PositionAt(endTimeMin); // temporary lazy end position until a real result can be derived.
|
||||||
var diff = slider.StackedPosition + slider.Path.PositionAt(progress) - slider.LazyEndPosition.Value;
|
var currCursorPosition = slider.StackedPosition;
|
||||||
float dist = diff.Length;
|
double scalingFactor = normalized_radius / slider.Radius; // lazySliderDistance is coded to be sensitive to scaling, this makes the maths easier with the thresholds being used.
|
||||||
|
|
||||||
slider.LazyTravelTime = t - slider.StartTime;
|
for (int i = 1; i < slider.NestedHitObjects.Count; i++)
|
||||||
|
|
||||||
if (dist > followCircleRadius)
|
|
||||||
{
|
{
|
||||||
// The cursor would be outside the follow circle, we need to move it
|
var currMovementObj = (OsuHitObject)slider.NestedHitObjects[i];
|
||||||
diff.Normalize(); // Obtain direction of diff
|
|
||||||
dist -= followCircleRadius;
|
|
||||||
slider.LazyEndPosition += diff * dist;
|
|
||||||
slider.LazyTravelDistance += dist;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Skip the head circle
|
Vector2 currMovement = Vector2.Subtract(currMovementObj.StackedPosition, currCursorPosition);
|
||||||
var scoringTimes = slider.NestedHitObjects.Skip(1).Select(t => t.StartTime);
|
double currMovementLength = scalingFactor * currMovement.Length;
|
||||||
foreach (double time in scoringTimes)
|
|
||||||
computeVertex(time);
|
// Amount of movement required so that the cursor position needs to be updated.
|
||||||
|
double requiredMovement = assumed_slider_radius;
|
||||||
|
|
||||||
|
if (i == slider.NestedHitObjects.Count - 1)
|
||||||
|
{
|
||||||
|
// The end of a slider has special aim rules due to the relaxed time constraint on position.
|
||||||
|
// There is both a lazy end position as well as the actual end slider position. We assume the player takes the simpler movement.
|
||||||
|
// For sliders that are circular, the lazy end position may actually be farther away than the sliders true end.
|
||||||
|
// This code is designed to prevent buffing situations where lazy end is actually a less efficient movement.
|
||||||
|
Vector2 lazyMovement = Vector2.Subtract((Vector2)slider.LazyEndPosition, currCursorPosition);
|
||||||
|
|
||||||
|
if (lazyMovement.Length < currMovement.Length)
|
||||||
|
currMovement = lazyMovement;
|
||||||
|
|
||||||
|
currMovementLength = scalingFactor * currMovement.Length;
|
||||||
|
}
|
||||||
|
else if (currMovementObj is SliderRepeat)
|
||||||
|
{
|
||||||
|
// For a slider repeat, assume a tighter movement threshold to better assess repeat sliders.
|
||||||
|
requiredMovement = normalized_radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currMovementLength > requiredMovement)
|
||||||
|
{
|
||||||
|
// this finds the positional delta from the required radius and the current position, and updates the currCursorPosition accordingly, as well as rewarding distance.
|
||||||
|
currCursorPosition = Vector2.Add(currCursorPosition, Vector2.Multiply(currMovement, (float)((currMovementLength - requiredMovement) / currMovementLength)));
|
||||||
|
currMovementLength *= (currMovementLength - requiredMovement) / currMovementLength;
|
||||||
|
slider.LazyTravelDistance += (float)currMovementLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == slider.NestedHitObjects.Count - 1)
|
||||||
|
slider.LazyEndPosition = currCursorPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
slider.LazyTravelDistance *= (float)Math.Pow(1 + slider.RepeatCount / 2.5, 1.0 / 2.5); // Bonus for repeat sliders until a better per nested object strain system can be achieved.
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector2 getEndCursorPosition(OsuHitObject hitObject)
|
private Vector2 getEndCursorPosition(OsuHitObject hitObject)
|
||||||
|
@ -23,8 +23,10 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
|
|
||||||
private const double wide_angle_multiplier = 1.5;
|
private const double wide_angle_multiplier = 1.5;
|
||||||
private const double acute_angle_multiplier = 2.0;
|
private const double acute_angle_multiplier = 2.0;
|
||||||
|
private const double slider_multiplier = 1.5;
|
||||||
|
private const double velocity_change_multiplier = 0.75;
|
||||||
|
|
||||||
private double currentStrain = 1;
|
private double currentStrain;
|
||||||
|
|
||||||
private double skillMultiplier => 23.25;
|
private double skillMultiplier => 23.25;
|
||||||
private double strainDecayBase => 0.15;
|
private double strainDecayBase => 0.15;
|
||||||
@ -61,7 +63,11 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
prevVelocity = Math.Max(prevVelocity, movementVelocity + travelVelocity);
|
prevVelocity = Math.Max(prevVelocity, movementVelocity + travelVelocity);
|
||||||
}
|
}
|
||||||
|
|
||||||
double angleBonus = 0;
|
double wideAngleBonus = 0;
|
||||||
|
double acuteAngleBonus = 0;
|
||||||
|
double sliderBonus = 0;
|
||||||
|
double velocityChangeBonus = 0;
|
||||||
|
|
||||||
double aimStrain = currVelocity; // Start strain with regular velocity.
|
double aimStrain = currVelocity; // Start strain with regular velocity.
|
||||||
|
|
||||||
if (Math.Max(osuCurrObj.StrainTime, osuLastObj.StrainTime) < 1.25 * Math.Min(osuCurrObj.StrainTime, osuLastObj.StrainTime)) // If rhythms are the same.
|
if (Math.Max(osuCurrObj.StrainTime, osuLastObj.StrainTime) < 1.25 * Math.Min(osuCurrObj.StrainTime, osuLastObj.StrainTime)) // If rhythms are the same.
|
||||||
@ -73,10 +79,10 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
double lastLastAngle = osuLastLastObj.Angle.Value;
|
double lastLastAngle = osuLastLastObj.Angle.Value;
|
||||||
|
|
||||||
// Rewarding angles, take the smaller velocity as base.
|
// Rewarding angles, take the smaller velocity as base.
|
||||||
angleBonus = Math.Min(currVelocity, prevVelocity);
|
double angleBonus = Math.Min(currVelocity, prevVelocity);
|
||||||
|
|
||||||
double wideAngleBonus = calcWideAngleBonus(currAngle);
|
wideAngleBonus = calcWideAngleBonus(currAngle);
|
||||||
double acuteAngleBonus = calcAcuteAngleBonus(currAngle);
|
acuteAngleBonus = calcAcuteAngleBonus(currAngle);
|
||||||
|
|
||||||
if (osuCurrObj.StrainTime > 100) // Only buff deltaTime exceeding 300 bpm 1/2.
|
if (osuCurrObj.StrainTime > 100) // Only buff deltaTime exceeding 300 bpm 1/2.
|
||||||
acuteAngleBonus = 0;
|
acuteAngleBonus = 0;
|
||||||
@ -88,14 +94,48 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
* Math.Pow(Math.Sin(Math.PI / 2 * (Math.Clamp(osuCurrObj.JumpDistance, 50, 100) - 50) / 50), 2); // Buff distance exceeding 50 (radius) up to 100 (diameter).
|
* Math.Pow(Math.Sin(Math.PI / 2 * (Math.Clamp(osuCurrObj.JumpDistance, 50, 100) - 50) / 50), 2); // Buff distance exceeding 50 (radius) up to 100 (diameter).
|
||||||
}
|
}
|
||||||
|
|
||||||
wideAngleBonus *= angleBonus * (1 - Math.Min(wideAngleBonus, Math.Pow(calcWideAngleBonus(lastAngle), 3))); // Penalize wide angles if they're repeated, reducing the penalty as the lastAngle gets more acute.
|
// Penalize wide angles if they're repeated, reducing the penalty as the lastAngle gets more acute.
|
||||||
acuteAngleBonus *= 0.5 + 0.5 * (1 - Math.Min(acuteAngleBonus, Math.Pow(calcAcuteAngleBonus(lastLastAngle), 3))); // Penalize acute angles if they're repeated, reducing the penalty as the lastLastAngle gets more obtuse.
|
wideAngleBonus *= angleBonus * (1 - Math.Min(wideAngleBonus, Math.Pow(calcWideAngleBonus(lastAngle), 3)));
|
||||||
|
// Penalize acute angles if they're repeated, reducing the penalty as the lastLastAngle gets more obtuse.
|
||||||
angleBonus = acuteAngleBonus * acute_angle_multiplier + wideAngleBonus * wide_angle_multiplier; // add the angle buffs together.
|
acuteAngleBonus *= 0.5 + 0.5 * (1 - Math.Min(acuteAngleBonus, Math.Pow(calcAcuteAngleBonus(lastLastAngle), 3)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
aimStrain += angleBonus; // Add in angle bonus.
|
if (Math.Max(prevVelocity, currVelocity) != 0)
|
||||||
|
{
|
||||||
|
// We want to use the average velocity over the whole object when awarding differences, not the individual jump and slider path velocities.
|
||||||
|
prevVelocity = (osuLastObj.JumpDistance + osuLastObj.TravelDistance) / osuLastObj.StrainTime;
|
||||||
|
currVelocity = (osuCurrObj.JumpDistance + osuCurrObj.TravelDistance) / osuCurrObj.StrainTime;
|
||||||
|
|
||||||
|
// Scale with ratio of difference compared to 0.5 * max dist.
|
||||||
|
double distRatio = Math.Pow(Math.Sin(Math.PI / 2 * Math.Abs(prevVelocity - currVelocity) / Math.Max(prevVelocity, currVelocity)), 2);
|
||||||
|
|
||||||
|
// Reward for % distance up to 125 / strainTime for overlaps where velocity is still changing.
|
||||||
|
double overlapVelocityBuff = Math.Min(125 / Math.Min(osuCurrObj.StrainTime, osuLastObj.StrainTime), Math.Abs(prevVelocity - currVelocity));
|
||||||
|
|
||||||
|
// Reward for % distance slowed down compared to previous, paying attention to not award overlap
|
||||||
|
double nonOverlapVelocityBuff = Math.Abs(prevVelocity - currVelocity)
|
||||||
|
// do not award overlap
|
||||||
|
* Math.Pow(Math.Sin(Math.PI / 2 * Math.Min(1, Math.Min(osuCurrObj.JumpDistance, osuLastObj.JumpDistance) / 100)), 2);
|
||||||
|
|
||||||
|
// Choose the largest bonus, multiplied by ratio.
|
||||||
|
velocityChangeBonus = Math.Max(overlapVelocityBuff, nonOverlapVelocityBuff) * distRatio;
|
||||||
|
|
||||||
|
// Penalize for rhythm changes.
|
||||||
|
velocityChangeBonus *= Math.Pow(Math.Min(osuCurrObj.StrainTime, osuLastObj.StrainTime) / Math.Max(osuCurrObj.StrainTime, osuLastObj.StrainTime), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (osuCurrObj.TravelTime != 0)
|
||||||
|
{
|
||||||
|
// Reward sliders based on velocity.
|
||||||
|
sliderBonus = osuCurrObj.TravelDistance / osuCurrObj.TravelTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add in acute angle bonus or wide angle bonus + velocity change bonus, whichever is larger.
|
||||||
|
aimStrain += Math.Max(acuteAngleBonus * acute_angle_multiplier, wideAngleBonus * wide_angle_multiplier + velocityChangeBonus * velocity_change_multiplier);
|
||||||
|
|
||||||
|
// Add in additional slider velocity bonus.
|
||||||
|
aimStrain += sliderBonus * slider_multiplier;
|
||||||
|
|
||||||
return aimStrain;
|
return aimStrain;
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
private double strainDecayBase => 0.15;
|
private double strainDecayBase => 0.15;
|
||||||
protected override double DecayWeight => 1.0;
|
protected override double DecayWeight => 1.0;
|
||||||
protected override int HistoryLength => 10; // Look back for 10 notes is added for the sake of flashlight calculations.
|
protected override int HistoryLength => 10; // Look back for 10 notes is added for the sake of flashlight calculations.
|
||||||
private double currentStrain = 1;
|
|
||||||
|
private double currentStrain;
|
||||||
|
|
||||||
private double strainValueOf(DifficultyHitObject current)
|
private double strainValueOf(DifficultyHitObject current)
|
||||||
{
|
{
|
||||||
|
@ -24,8 +24,8 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Skills
|
|||||||
private double skillMultiplier => 1375;
|
private double skillMultiplier => 1375;
|
||||||
private double strainDecayBase => 0.3;
|
private double strainDecayBase => 0.3;
|
||||||
|
|
||||||
private double currentStrain = 1;
|
private double currentStrain;
|
||||||
private double currentRhythm = 1;
|
private double currentRhythm;
|
||||||
|
|
||||||
protected override int ReducedSectionCount => 5;
|
protected override int ReducedSectionCount => 5;
|
||||||
protected override double DifficultyMultiplier => 1.04;
|
protected override double DifficultyMultiplier => 1.04;
|
||||||
|
@ -5,10 +5,10 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Osu.Replays;
|
using osu.Game.Rulesets.Osu.Replays;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Mods
|
namespace osu.Game.Rulesets.Osu.Mods
|
||||||
{
|
{
|
||||||
@ -18,7 +18,7 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
|
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "Autoplay" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "Autoplay" } },
|
||||||
Replay = new OsuAutoGenerator(beatmap, mods).Generate()
|
Replay = new OsuAutoGenerator(beatmap, mods).Generate()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,11 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Osu.Objects;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
using osu.Game.Rulesets.Osu.Replays;
|
using osu.Game.Rulesets.Osu.Replays;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Mods
|
namespace osu.Game.Rulesets.Osu.Mods
|
||||||
{
|
{
|
||||||
@ -19,7 +19,7 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
|
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "Autoplay" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "Autoplay" } },
|
||||||
Replay = new OsuAutoGenerator(beatmap, mods).Generate()
|
Replay = new OsuAutoGenerator(beatmap, mods).Generate()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,91 @@
|
|||||||
|
// 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.Linq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using osu.Framework.Input;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Framework.Utils;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Edit;
|
||||||
|
using osu.Game.Rulesets.Taiko.Beatmaps;
|
||||||
|
using osu.Game.Screens.Edit;
|
||||||
|
using osu.Game.Screens.Edit.Setup;
|
||||||
|
using osu.Game.Screens.Menu;
|
||||||
|
using osu.Game.Screens.Select;
|
||||||
|
using osu.Game.Tests.Visual;
|
||||||
|
using osuTK.Input;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Taiko.Tests.Editor
|
||||||
|
{
|
||||||
|
public class TestSceneEditorSaving : OsuGameTestScene
|
||||||
|
{
|
||||||
|
private Screens.Edit.Editor editor => Game.ChildrenOfType<Screens.Edit.Editor>().FirstOrDefault();
|
||||||
|
|
||||||
|
private EditorBeatmap editorBeatmap => (EditorBeatmap)editor.Dependencies.Get(typeof(EditorBeatmap));
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Tests the general expected flow of creating a new beatmap, saving it, then loading it back from song select.
|
||||||
|
/// Emphasis is placed on <see cref="BeatmapDifficulty.SliderMultiplier"/>, since taiko has special handling for it to keep compatibility with stable.
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void TestNewBeatmapSaveThenLoad()
|
||||||
|
{
|
||||||
|
AddStep("set default beatmap", () => Game.Beatmap.SetDefault());
|
||||||
|
AddStep("set taiko ruleset", () => Ruleset.Value = new TaikoRuleset().RulesetInfo);
|
||||||
|
|
||||||
|
PushAndConfirm(() => new EditorLoader());
|
||||||
|
|
||||||
|
AddUntilStep("wait for editor load", () => editor?.IsLoaded == true);
|
||||||
|
|
||||||
|
AddUntilStep("wait for metadata screen load", () => editor.ChildrenOfType<MetadataSection>().FirstOrDefault()?.IsLoaded == true);
|
||||||
|
|
||||||
|
// We intentionally switch away from the metadata screen, else there is a feedback loop with the textbox handling which causes metadata changes below to get overwritten.
|
||||||
|
|
||||||
|
AddStep("Enter compose mode", () => InputManager.Key(Key.F1));
|
||||||
|
AddUntilStep("Wait for compose mode load", () => editor.ChildrenOfType<HitObjectComposer>().FirstOrDefault()?.IsLoaded == true);
|
||||||
|
|
||||||
|
AddStep("Set slider multiplier", () => editorBeatmap.Difficulty.SliderMultiplier = 2);
|
||||||
|
AddStep("Set artist and title", () =>
|
||||||
|
{
|
||||||
|
editorBeatmap.BeatmapInfo.Metadata.Artist = "artist";
|
||||||
|
editorBeatmap.BeatmapInfo.Metadata.Title = "title";
|
||||||
|
});
|
||||||
|
AddStep("Set difficulty name", () => editorBeatmap.BeatmapInfo.Version = "difficulty");
|
||||||
|
|
||||||
|
checkMutations();
|
||||||
|
|
||||||
|
AddStep("Save", () => InputManager.Keys(PlatformAction.Save));
|
||||||
|
|
||||||
|
checkMutations();
|
||||||
|
|
||||||
|
AddStep("Exit", () => InputManager.Key(Key.Escape));
|
||||||
|
|
||||||
|
AddUntilStep("Wait for main menu", () => Game.ScreenStack.CurrentScreen is MainMenu);
|
||||||
|
|
||||||
|
PushAndConfirm(() => new PlaySongSelect());
|
||||||
|
|
||||||
|
AddUntilStep("Wait for beatmap selected", () => !Game.Beatmap.IsDefault);
|
||||||
|
AddStep("Open options", () => InputManager.Key(Key.F3));
|
||||||
|
AddStep("Enter editor", () => InputManager.Key(Key.Number5));
|
||||||
|
|
||||||
|
AddUntilStep("Wait for editor load", () => editor != null);
|
||||||
|
|
||||||
|
checkMutations();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkMutations()
|
||||||
|
{
|
||||||
|
AddAssert("Beatmap has correct slider multiplier", () =>
|
||||||
|
{
|
||||||
|
// we can only assert value correctness on TaikoMultiplierAppliedDifficulty, because that is the final difficulty converted taiko beatmaps use.
|
||||||
|
// therefore, ensure that we have that difficulty type by calling .CopyFrom(), which is a no-op if the type is already correct.
|
||||||
|
var taikoDifficulty = new TaikoBeatmapConverter.TaikoMultiplierAppliedDifficulty();
|
||||||
|
taikoDifficulty.CopyFrom(editorBeatmap.Difficulty);
|
||||||
|
return Precision.AlmostEquals(taikoDifficulty.SliderMultiplier, 2);
|
||||||
|
});
|
||||||
|
AddAssert("Beatmap has correct metadata", () => editorBeatmap.BeatmapInfo.Metadata.Artist == "artist" && editorBeatmap.BeatmapInfo.Metadata.Title == "title");
|
||||||
|
AddAssert("Beatmap has correct difficulty name", () => editorBeatmap.BeatmapInfo.Version == "difficulty");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -191,7 +191,7 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps
|
|||||||
|
|
||||||
protected override Beatmap<TaikoHitObject> CreateBeatmap() => new TaikoBeatmap();
|
protected override Beatmap<TaikoHitObject> CreateBeatmap() => new TaikoBeatmap();
|
||||||
|
|
||||||
private class TaikoMultiplierAppliedDifficulty : BeatmapDifficulty
|
internal class TaikoMultiplierAppliedDifficulty : BeatmapDifficulty
|
||||||
{
|
{
|
||||||
public TaikoMultiplierAppliedDifficulty(IBeatmapDifficultyInfo difficulty)
|
public TaikoMultiplierAppliedDifficulty(IBeatmapDifficultyInfo difficulty)
|
||||||
{
|
{
|
||||||
@ -209,7 +209,7 @@ namespace osu.Game.Rulesets.Taiko.Beatmaps
|
|||||||
{
|
{
|
||||||
base.CopyTo(other);
|
base.CopyTo(other);
|
||||||
if (!(other is TaikoMultiplierAppliedDifficulty))
|
if (!(other is TaikoMultiplierAppliedDifficulty))
|
||||||
SliderMultiplier /= LegacyBeatmapEncoder.LEGACY_TAIKO_VELOCITY_MULTIPLIER;
|
other.SliderMultiplier /= LegacyBeatmapEncoder.LEGACY_TAIKO_VELOCITY_MULTIPLIER;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyFrom(IBeatmapDifficultyInfo other)
|
public override void CopyFrom(IBeatmapDifficultyInfo other)
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Taiko.Replays;
|
using osu.Game.Rulesets.Taiko.Replays;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Taiko.Mods
|
namespace osu.Game.Rulesets.Taiko.Mods
|
||||||
{
|
{
|
||||||
@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Taiko.Mods
|
|||||||
{
|
{
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "mekkadosu!" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "mekkadosu!" } },
|
||||||
Replay = new TaikoAutoGenerator(beatmap).Generate(),
|
Replay = new TaikoAutoGenerator(beatmap).Generate(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Taiko.Objects;
|
using osu.Game.Rulesets.Taiko.Objects;
|
||||||
using osu.Game.Rulesets.Taiko.Replays;
|
using osu.Game.Rulesets.Taiko.Replays;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Taiko.Mods
|
namespace osu.Game.Rulesets.Taiko.Mods
|
||||||
{
|
{
|
||||||
@ -15,7 +15,7 @@ namespace osu.Game.Rulesets.Taiko.Mods
|
|||||||
{
|
{
|
||||||
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
public override Score CreateReplayScore(IBeatmap beatmap, IReadOnlyList<Mod> mods) => new Score
|
||||||
{
|
{
|
||||||
ScoreInfo = new ScoreInfo { User = new User { Username = "mekkadosu!" } },
|
ScoreInfo = new ScoreInfo { User = new APIUser { Username = "mekkadosu!" } },
|
||||||
Replay = new TaikoAutoGenerator(beatmap).Generate(),
|
Replay = new TaikoAutoGenerator(beatmap).Generate(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
|||||||
Assert.AreEqual("Renatus", metadata.TitleUnicode);
|
Assert.AreEqual("Renatus", metadata.TitleUnicode);
|
||||||
Assert.AreEqual("Soleily", metadata.Artist);
|
Assert.AreEqual("Soleily", metadata.Artist);
|
||||||
Assert.AreEqual("Soleily", metadata.ArtistUnicode);
|
Assert.AreEqual("Soleily", metadata.ArtistUnicode);
|
||||||
Assert.AreEqual("Gamu", metadata.AuthorString);
|
Assert.AreEqual("Gamu", metadata.Author.Username);
|
||||||
Assert.AreEqual("Insane", beatmapInfo.Version);
|
Assert.AreEqual("Insane", beatmapInfo.Version);
|
||||||
Assert.AreEqual(string.Empty, metadata.Source);
|
Assert.AreEqual(string.Empty, metadata.Source);
|
||||||
Assert.AreEqual("MBC7 Unisphere 地球ヤバイEP Chikyu Yabai", metadata.Tags);
|
Assert.AreEqual("MBC7 Unisphere 地球ヤバイEP Chikyu Yabai", metadata.Tags);
|
||||||
@ -547,7 +547,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
|||||||
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
||||||
Assert.IsNotNull(beatmap);
|
Assert.IsNotNull(beatmap);
|
||||||
Assert.AreEqual("Beatmap with corrupted header", beatmap.Metadata.Title);
|
Assert.AreEqual("Beatmap with corrupted header", beatmap.Metadata.Title);
|
||||||
Assert.AreEqual("Evil Hacker", beatmap.Metadata.AuthorString);
|
Assert.AreEqual("Evil Hacker", beatmap.Metadata.Author.Username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -565,7 +565,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
|||||||
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
||||||
Assert.IsNotNull(beatmap);
|
Assert.IsNotNull(beatmap);
|
||||||
Assert.AreEqual("Beatmap with no header", beatmap.Metadata.Title);
|
Assert.AreEqual("Beatmap with no header", beatmap.Metadata.Title);
|
||||||
Assert.AreEqual("Incredibly Evil Hacker", beatmap.Metadata.AuthorString);
|
Assert.AreEqual("Incredibly Evil Hacker", beatmap.Metadata.Author.Username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -583,7 +583,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
|||||||
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
||||||
Assert.IsNotNull(beatmap);
|
Assert.IsNotNull(beatmap);
|
||||||
Assert.AreEqual("Empty lines at start", beatmap.Metadata.Title);
|
Assert.AreEqual("Empty lines at start", beatmap.Metadata.Title);
|
||||||
Assert.AreEqual("Edge Case Hunter", beatmap.Metadata.AuthorString);
|
Assert.AreEqual("Edge Case Hunter", beatmap.Metadata.Author.Username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -601,7 +601,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
|||||||
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
||||||
Assert.IsNotNull(beatmap);
|
Assert.IsNotNull(beatmap);
|
||||||
Assert.AreEqual("The dog ate the file header", beatmap.Metadata.Title);
|
Assert.AreEqual("The dog ate the file header", beatmap.Metadata.Title);
|
||||||
Assert.AreEqual("Why does this keep happening", beatmap.Metadata.AuthorString);
|
Assert.AreEqual("Why does this keep happening", beatmap.Metadata.Author.Username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -619,7 +619,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
|||||||
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
Assert.DoesNotThrow(() => beatmap = decoder.Decode(stream));
|
||||||
Assert.IsNotNull(beatmap);
|
Assert.IsNotNull(beatmap);
|
||||||
Assert.AreEqual("No empty line delimiting header from contents", beatmap.Metadata.Title);
|
Assert.AreEqual("No empty line delimiting header from contents", beatmap.Metadata.Title);
|
||||||
Assert.AreEqual("Edge Case Hunter", beatmap.Metadata.AuthorString);
|
Assert.AreEqual("Edge Case Hunter", beatmap.Metadata.Author.Username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
|||||||
Assert.AreEqual("Soleily", meta.Artist);
|
Assert.AreEqual("Soleily", meta.Artist);
|
||||||
Assert.AreEqual("Soleily", meta.ArtistUnicode);
|
Assert.AreEqual("Soleily", meta.ArtistUnicode);
|
||||||
Assert.AreEqual("03. Renatus - Soleily 192kbps.mp3", meta.AudioFile);
|
Assert.AreEqual("03. Renatus - Soleily 192kbps.mp3", meta.AudioFile);
|
||||||
Assert.AreEqual("Gamu", meta.AuthorString);
|
Assert.AreEqual("Gamu", meta.Author.Username);
|
||||||
Assert.AreEqual("machinetop_background.jpg", meta.BackgroundFile);
|
Assert.AreEqual("machinetop_background.jpg", meta.BackgroundFile);
|
||||||
Assert.AreEqual(164471, meta.PreviewTime);
|
Assert.AreEqual(164471, meta.PreviewTime);
|
||||||
Assert.AreEqual(string.Empty, meta.Source);
|
Assert.AreEqual(string.Empty, meta.Source);
|
||||||
|
@ -17,12 +17,12 @@ using osu.Framework.Logging;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.IO;
|
using osu.Game.IO;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Rulesets.Osu.Objects;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Tests.Resources;
|
using osu.Game.Tests.Resources;
|
||||||
using osu.Game.Tests.Scores.IO;
|
using osu.Game.Tests.Scores.IO;
|
||||||
using osu.Game.Users;
|
|
||||||
using SharpCompress.Archives;
|
using SharpCompress.Archives;
|
||||||
using SharpCompress.Archives.Zip;
|
using SharpCompress.Archives.Zip;
|
||||||
using SharpCompress.Common;
|
using SharpCompress.Common;
|
||||||
@ -408,8 +408,8 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
var manager = osu.Dependencies.Get<BeatmapManager>();
|
var manager = osu.Dependencies.Get<BeatmapManager>();
|
||||||
|
|
||||||
// ReSharper disable once AccessToModifiedClosure
|
// ReSharper disable once AccessToModifiedClosure
|
||||||
manager.ItemUpdated.BindValueChanged(_ => Interlocked.Increment(ref itemAddRemoveFireCount));
|
manager.ItemUpdated += _ => Interlocked.Increment(ref itemAddRemoveFireCount);
|
||||||
manager.ItemRemoved.BindValueChanged(_ => Interlocked.Increment(ref itemAddRemoveFireCount));
|
manager.ItemRemoved += _ => Interlocked.Increment(ref itemAddRemoveFireCount);
|
||||||
|
|
||||||
var imported = await LoadOszIntoOsu(osu);
|
var imported = await LoadOszIntoOsu(osu);
|
||||||
|
|
||||||
@ -859,7 +859,7 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
|
|
||||||
var manager = osu.Dependencies.Get<BeatmapManager>();
|
var manager = osu.Dependencies.Get<BeatmapManager>();
|
||||||
|
|
||||||
var working = manager.CreateNew(new OsuRuleset().RulesetInfo, User.SYSTEM_USER);
|
var working = manager.CreateNew(new OsuRuleset().RulesetInfo, APIUser.SYSTEM_USER);
|
||||||
|
|
||||||
var beatmap = working.Beatmap;
|
var beatmap = working.Beatmap;
|
||||||
|
|
||||||
@ -892,7 +892,7 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
var osu = LoadOsuIntoHost(host);
|
var osu = LoadOsuIntoHost(host);
|
||||||
var manager = osu.Dependencies.Get<BeatmapManager>();
|
var manager = osu.Dependencies.Get<BeatmapManager>();
|
||||||
|
|
||||||
var working = manager.CreateNew(new OsuRuleset().RulesetInfo, User.SYSTEM_USER);
|
var working = manager.CreateNew(new OsuRuleset().RulesetInfo, APIUser.SYSTEM_USER);
|
||||||
|
|
||||||
manager.Save(working.BeatmapInfo, working.Beatmap);
|
manager.Save(working.BeatmapInfo, working.Beatmap);
|
||||||
|
|
||||||
@ -919,7 +919,7 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
var osu = LoadOsuIntoHost(host);
|
var osu = LoadOsuIntoHost(host);
|
||||||
var manager = osu.Dependencies.Get<BeatmapManager>();
|
var manager = osu.Dependencies.Get<BeatmapManager>();
|
||||||
|
|
||||||
var working = manager.CreateNew(new OsuRuleset().RulesetInfo, User.SYSTEM_USER);
|
var working = manager.CreateNew(new OsuRuleset().RulesetInfo, APIUser.SYSTEM_USER);
|
||||||
|
|
||||||
((Beatmap)working.Beatmap).HitObjects.Add(new HitCircle { StartTime = 5000 });
|
((Beatmap)working.Beatmap).HitObjects.Add(new HitCircle { StartTime = 5000 });
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ namespace osu.Game.Tests.Beatmaps.IO
|
|||||||
Assert.AreEqual("Soleily", meta.Artist);
|
Assert.AreEqual("Soleily", meta.Artist);
|
||||||
Assert.AreEqual("Soleily", meta.ArtistUnicode);
|
Assert.AreEqual("Soleily", meta.ArtistUnicode);
|
||||||
Assert.AreEqual("03. Renatus - Soleily 192kbps.mp3", meta.AudioFile);
|
Assert.AreEqual("03. Renatus - Soleily 192kbps.mp3", meta.AudioFile);
|
||||||
Assert.AreEqual("Deif", meta.AuthorString);
|
Assert.AreEqual("Deif", meta.Author.Username);
|
||||||
Assert.AreEqual("machinetop_background.jpg", meta.BackgroundFile);
|
Assert.AreEqual("machinetop_background.jpg", meta.BackgroundFile);
|
||||||
Assert.AreEqual(164471, meta.PreviewTime);
|
Assert.AreEqual(164471, meta.PreviewTime);
|
||||||
Assert.AreEqual(string.Empty, meta.Source);
|
Assert.AreEqual(string.Empty, meta.Source);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Users;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Beatmaps
|
namespace osu.Game.Tests.Beatmaps
|
||||||
{
|
{
|
||||||
@ -34,7 +34,7 @@ namespace osu.Game.Tests.Beatmaps
|
|||||||
{
|
{
|
||||||
Artist = "artist",
|
Artist = "artist",
|
||||||
Title = "title",
|
Title = "title",
|
||||||
Author = new User { Username = "creator" }
|
Author = new APIUser { Username = "creator" }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ namespace osu.Game.Tests.Beatmaps
|
|||||||
{
|
{
|
||||||
Artist = "artist",
|
Artist = "artist",
|
||||||
Title = "title",
|
Title = "title",
|
||||||
Author = new User { Username = "creator" }
|
Author = new APIUser { Username = "creator" }
|
||||||
},
|
},
|
||||||
Version = "difficulty"
|
Version = "difficulty"
|
||||||
};
|
};
|
||||||
|
@ -9,9 +9,9 @@ using osu.Framework.Graphics.Containers;
|
|||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Tests.Visual;
|
using osu.Game.Tests.Visual;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Chat
|
namespace osu.Game.Tests.Chat
|
||||||
{
|
{
|
||||||
@ -133,7 +133,7 @@ namespace osu.Game.Tests.Chat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Channel createChannel(int id, ChannelType type) => new Channel(new User())
|
private Channel createChannel(int id, ChannelType type) => new Channel(new APIUser())
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
Name = $"Channel {id}",
|
Name = $"Channel {id}",
|
||||||
|
@ -482,7 +482,10 @@ namespace osu.Game.Tests.Database
|
|||||||
var metadata = new RealmBeatmapMetadata
|
var metadata = new RealmBeatmapMetadata
|
||||||
{
|
{
|
||||||
Artist = "SomeArtist",
|
Artist = "SomeArtist",
|
||||||
Author = "SomeAuthor"
|
Author =
|
||||||
|
{
|
||||||
|
Username = "SomeAuthor"
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var ruleset = realmFactory.Context.All<RealmRuleset>().First();
|
var ruleset = realmFactory.Context.All<RealmRuleset>().First();
|
||||||
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using osu.Framework.Input;
|
||||||
using osu.Framework.Input.Bindings;
|
using osu.Framework.Input.Bindings;
|
||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
@ -33,7 +34,7 @@ namespace osu.Game.Tests.Database
|
|||||||
storage = new NativeStorage(directory.FullName);
|
storage = new NativeStorage(directory.FullName);
|
||||||
|
|
||||||
realmContextFactory = new RealmContextFactory(storage, "test");
|
realmContextFactory = new RealmContextFactory(storage, "test");
|
||||||
keyBindingStore = new RealmKeyBindingStore(realmContextFactory);
|
keyBindingStore = new RealmKeyBindingStore(realmContextFactory, new ReadableKeyCombinationProvider());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -54,7 +54,7 @@ namespace osu.Game.Tests.Editing.Checks
|
|||||||
{
|
{
|
||||||
// While this is a problem, it is out of scope for this check and is caught by a different one.
|
// While this is a problem, it is out of scope for this check and is caught by a different one.
|
||||||
beatmap.Metadata.BackgroundFile = string.Empty;
|
beatmap.Metadata.BackgroundFile = string.Empty;
|
||||||
var context = getContext(null, System.Array.Empty<byte>());
|
var context = getContext(null, new MemoryStream(System.Array.Empty<byte>()));
|
||||||
|
|
||||||
Assert.That(check.Run(context), Is.Empty);
|
Assert.That(check.Run(context), Is.Empty);
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ namespace osu.Game.Tests.Editing.Checks
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestTooUncompressed()
|
public void TestTooUncompressed()
|
||||||
{
|
{
|
||||||
var context = getContext(new Texture(1920, 1080), new byte[1024 * 1024 * 3]);
|
var context = getContext(new Texture(1920, 1080), new MemoryStream(new byte[1024 * 1024 * 3]));
|
||||||
|
|
||||||
var issues = check.Run(context).ToList();
|
var issues = check.Run(context).ToList();
|
||||||
|
|
||||||
@ -111,19 +111,32 @@ namespace osu.Game.Tests.Editing.Checks
|
|||||||
Assert.That(issues.Single().Template is CheckBackgroundQuality.IssueTemplateTooUncompressed);
|
Assert.That(issues.Single().Template is CheckBackgroundQuality.IssueTemplateTooUncompressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
private BeatmapVerifierContext getContext(Texture background, [CanBeNull] byte[] fileBytes = null)
|
[Test]
|
||||||
|
public void TestStreamClosed()
|
||||||
{
|
{
|
||||||
return new BeatmapVerifierContext(beatmap, getMockWorkingBeatmap(background, fileBytes).Object);
|
var background = new Texture(1920, 1080);
|
||||||
|
var stream = new Mock<MemoryStream>(new byte[1024 * 1024]);
|
||||||
|
|
||||||
|
var context = getContext(background, stream.Object);
|
||||||
|
|
||||||
|
Assert.That(check.Run(context), Is.Empty);
|
||||||
|
|
||||||
|
stream.Verify(x => x.Close(), Times.Once());
|
||||||
|
}
|
||||||
|
|
||||||
|
private BeatmapVerifierContext getContext(Texture background, [CanBeNull] Stream stream = null)
|
||||||
|
{
|
||||||
|
return new BeatmapVerifierContext(beatmap, getMockWorkingBeatmap(background, stream).Object);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the mock of the working beatmap with the given background and filesize.
|
/// Returns the mock of the working beatmap with the given background and its file stream.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="background">The texture of the background.</param>
|
/// <param name="background">The texture of the background.</param>
|
||||||
/// <param name="fileBytes">The bytes that represent the background file.</param>
|
/// <param name="stream">The stream representing the background file.</param>
|
||||||
private Mock<IWorkingBeatmap> getMockWorkingBeatmap(Texture background, [CanBeNull] byte[] fileBytes = null)
|
private Mock<IWorkingBeatmap> getMockWorkingBeatmap(Texture background, [CanBeNull] Stream stream = null)
|
||||||
{
|
{
|
||||||
var stream = new MemoryStream(fileBytes ?? new byte[1024 * 1024]);
|
stream ??= new MemoryStream(new byte[1024 * 1024]);
|
||||||
|
|
||||||
var mock = new Mock<IWorkingBeatmap>();
|
var mock = new Mock<IWorkingBeatmap>();
|
||||||
mock.SetupGet(w => w.Beatmap).Returns(beatmap);
|
mock.SetupGet(w => w.Beatmap).Returns(beatmap);
|
||||||
|
@ -6,10 +6,10 @@ using Humanizer;
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Extensions.ObjectExtensions;
|
using osu.Framework.Extensions.ObjectExtensions;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Tests.Visual.Multiplayer;
|
using osu.Game.Tests.Visual.Multiplayer;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.NonVisual.Multiplayer
|
namespace osu.Game.Tests.NonVisual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -21,7 +21,7 @@ namespace osu.Game.Tests.NonVisual.Multiplayer
|
|||||||
{
|
{
|
||||||
int id = 2000;
|
int id = 2000;
|
||||||
|
|
||||||
AddRepeatStep("add some users", () => Client.AddUser(new User { Id = id++ }), 5);
|
AddRepeatStep("add some users", () => Client.AddUser(new APIUser { Id = id++ }), 5);
|
||||||
checkPlayingUserCount(0);
|
checkPlayingUserCount(0);
|
||||||
|
|
||||||
AddAssert("playlist item is available", () => Client.CurrentMatchPlayingItem.Value != null);
|
AddAssert("playlist item is available", () => Client.CurrentMatchPlayingItem.Value != null);
|
||||||
@ -64,7 +64,7 @@ namespace osu.Game.Tests.NonVisual.Multiplayer
|
|||||||
room.State = MultiplayerRoomState.Playing;
|
room.State = MultiplayerRoomState.Playing;
|
||||||
room.Users.Add(new MultiplayerRoomUser(PLAYER_1_ID)
|
room.Users.Add(new MultiplayerRoomUser(PLAYER_1_ID)
|
||||||
{
|
{
|
||||||
User = new User { Id = PLAYER_1_ID },
|
User = new APIUser { Id = PLAYER_1_ID },
|
||||||
State = MultiplayerUserState.Playing
|
State = MultiplayerUserState.Playing
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Tests.Visual.Multiplayer;
|
using osu.Game.Tests.Visual.Multiplayer;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.OnlinePlay
|
namespace osu.Game.Tests.OnlinePlay
|
||||||
{
|
{
|
||||||
@ -14,7 +14,7 @@ namespace osu.Game.Tests.OnlinePlay
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestUserAddedOnJoin()
|
public void TestUserAddedOnJoin()
|
||||||
{
|
{
|
||||||
var user = new User { Id = 33 };
|
var user = new APIUser { Id = 33 };
|
||||||
|
|
||||||
AddRepeatStep("add user multiple times", () => Client.AddUser(user), 3);
|
AddRepeatStep("add user multiple times", () => Client.AddUser(user), 3);
|
||||||
AddAssert("room has 2 users", () => Client.Room?.Users.Count == 2);
|
AddAssert("room has 2 users", () => Client.Room?.Users.Count == 2);
|
||||||
@ -23,7 +23,7 @@ namespace osu.Game.Tests.OnlinePlay
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestUserRemovedOnLeave()
|
public void TestUserRemovedOnLeave()
|
||||||
{
|
{
|
||||||
var user = new User { Id = 44 };
|
var user = new APIUser { Id = 44 };
|
||||||
|
|
||||||
AddStep("add user", () => Client.AddUser(user));
|
AddStep("add user", () => Client.AddUser(user));
|
||||||
AddAssert("room has 2 users", () => Client.Room?.Users.Count == 2);
|
AddAssert("room has 2 users", () => Client.Room?.Users.Count == 2);
|
||||||
|
@ -11,12 +11,12 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.IO.Archives;
|
using osu.Game.IO.Archives;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Rulesets.Osu.Mods;
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
using osu.Game.Rulesets.Scoring;
|
using osu.Game.Rulesets.Scoring;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Scores.IO
|
namespace osu.Game.Tests.Scores.IO
|
||||||
{
|
{
|
||||||
@ -38,7 +38,7 @@ namespace osu.Game.Tests.Scores.IO
|
|||||||
Accuracy = 0.8,
|
Accuracy = 0.8,
|
||||||
MaxCombo = 500,
|
MaxCombo = 500,
|
||||||
Combo = 250,
|
Combo = 250,
|
||||||
User = new User { Username = "Test user" },
|
User = new APIUser { Username = "Test user" },
|
||||||
Date = DateTimeOffset.Now,
|
Date = DateTimeOffset.Now,
|
||||||
OnlineScoreID = 12345,
|
OnlineScoreID = 12345,
|
||||||
};
|
};
|
||||||
|
@ -10,10 +10,10 @@ using osu.Framework.Testing;
|
|||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
using osu.Game.Graphics.Backgrounds;
|
using osu.Game.Graphics.Backgrounds;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Screens;
|
using osu.Game.Screens;
|
||||||
using osu.Game.Screens.Backgrounds;
|
using osu.Game.Screens.Backgrounds;
|
||||||
using osu.Game.Skinning;
|
using osu.Game.Skinning;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Background
|
namespace osu.Game.Tests.Visual.Background
|
||||||
{
|
{
|
||||||
@ -113,7 +113,7 @@ namespace osu.Game.Tests.Visual.Background
|
|||||||
AddStep($"set background mode to {source}", () => config.SetValue(OsuSetting.MenuBackgroundSource, source));
|
AddStep($"set background mode to {source}", () => config.SetValue(OsuSetting.MenuBackgroundSource, source));
|
||||||
|
|
||||||
private void setSupporter(bool isSupporter) =>
|
private void setSupporter(bool isSupporter) =>
|
||||||
AddStep($"set supporter {isSupporter}", () => ((DummyAPIAccess)API).LocalUser.Value = new User
|
AddStep($"set supporter {isSupporter}", () => ((DummyAPIAccess)API).LocalUser.Value = new APIUser
|
||||||
{
|
{
|
||||||
IsSupporter = isSupporter,
|
IsSupporter = isSupporter,
|
||||||
Id = API.LocalUser.Value.Id + 1,
|
Id = API.LocalUser.Value.Id + 1,
|
||||||
|
@ -18,6 +18,7 @@ using osu.Game.Configuration;
|
|||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Osu.Mods;
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
@ -29,7 +30,6 @@ using osu.Game.Screens.Ranking;
|
|||||||
using osu.Game.Screens.Select;
|
using osu.Game.Screens.Select;
|
||||||
using osu.Game.Tests.Beatmaps;
|
using osu.Game.Tests.Beatmaps;
|
||||||
using osu.Game.Tests.Resources;
|
using osu.Game.Tests.Resources;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
@ -231,7 +231,7 @@ namespace osu.Game.Tests.Visual.Background
|
|||||||
|
|
||||||
AddStep("Transition to Results", () => player.Push(results = new FadeAccessibleResults(new ScoreInfo
|
AddStep("Transition to Results", () => player.Push(results = new FadeAccessibleResults(new ScoreInfo
|
||||||
{
|
{
|
||||||
User = new User { Username = "osu!" },
|
User = new APIUser { Username = "osu!" },
|
||||||
BeatmapInfo = new TestBeatmap(Ruleset.Value).BeatmapInfo,
|
BeatmapInfo = new TestBeatmap(Ruleset.Value).BeatmapInfo,
|
||||||
Ruleset = Ruleset.Value,
|
Ruleset = Ruleset.Value,
|
||||||
})));
|
})));
|
||||||
|
@ -9,17 +9,22 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Beatmaps.Drawables.Cards;
|
using osu.Game.Beatmaps.Drawables.Cards;
|
||||||
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests;
|
||||||
using osu.Game.Online.API.Requests.Responses;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Beatmaps
|
namespace osu.Game.Tests.Visual.Beatmaps
|
||||||
{
|
{
|
||||||
public class TestSceneBeatmapCard : OsuTestScene
|
public class TestSceneBeatmapCard : OsuTestScene
|
||||||
{
|
{
|
||||||
|
private DummyAPIAccess dummyAPI => (DummyAPIAccess)API;
|
||||||
|
|
||||||
private APIBeatmapSet[] testCases;
|
private APIBeatmapSet[] testCases;
|
||||||
|
|
||||||
#region Test case generation
|
#region Test case generation
|
||||||
@ -31,22 +36,51 @@ namespace osu.Game.Tests.Visual.Beatmaps
|
|||||||
normal.HasVideo = true;
|
normal.HasVideo = true;
|
||||||
normal.HasStoryboard = true;
|
normal.HasStoryboard = true;
|
||||||
|
|
||||||
|
var withStatistics = CreateAPIBeatmapSet(Ruleset.Value);
|
||||||
|
withStatistics.Title = withStatistics.TitleUnicode = "play favourite stats";
|
||||||
|
withStatistics.Status = BeatmapSetOnlineStatus.Approved;
|
||||||
|
withStatistics.FavouriteCount = 284_239;
|
||||||
|
withStatistics.PlayCount = 999_001;
|
||||||
|
withStatistics.Ranked = DateTimeOffset.Now.AddDays(-45);
|
||||||
|
withStatistics.HypeStatus = new BeatmapSetHypeStatus
|
||||||
|
{
|
||||||
|
Current = 34,
|
||||||
|
Required = 5
|
||||||
|
};
|
||||||
|
withStatistics.NominationStatus = new BeatmapSetNominationStatus
|
||||||
|
{
|
||||||
|
Current = 1,
|
||||||
|
Required = 2
|
||||||
|
};
|
||||||
|
|
||||||
var undownloadable = getUndownloadableBeatmapSet();
|
var undownloadable = getUndownloadableBeatmapSet();
|
||||||
|
undownloadable.LastUpdated = DateTimeOffset.Now.AddYears(-1);
|
||||||
|
|
||||||
var someDifficulties = getManyDifficultiesBeatmapSet(11);
|
var someDifficulties = getManyDifficultiesBeatmapSet(11);
|
||||||
|
someDifficulties.Title = someDifficulties.TitleUnicode = "favourited";
|
||||||
someDifficulties.Title = someDifficulties.TitleUnicode = "some difficulties";
|
someDifficulties.Title = someDifficulties.TitleUnicode = "some difficulties";
|
||||||
someDifficulties.Status = BeatmapSetOnlineStatus.Qualified;
|
someDifficulties.Status = BeatmapSetOnlineStatus.Qualified;
|
||||||
|
someDifficulties.HasFavourited = true;
|
||||||
|
someDifficulties.FavouriteCount = 1;
|
||||||
|
someDifficulties.NominationStatus = new BeatmapSetNominationStatus
|
||||||
|
{
|
||||||
|
Current = 2,
|
||||||
|
Required = 2
|
||||||
|
};
|
||||||
|
|
||||||
var manyDifficulties = getManyDifficultiesBeatmapSet(100);
|
var manyDifficulties = getManyDifficultiesBeatmapSet(100);
|
||||||
manyDifficulties.Status = BeatmapSetOnlineStatus.Pending;
|
manyDifficulties.Status = BeatmapSetOnlineStatus.Pending;
|
||||||
|
|
||||||
var explicitMap = CreateAPIBeatmapSet(Ruleset.Value);
|
var explicitMap = CreateAPIBeatmapSet(Ruleset.Value);
|
||||||
|
explicitMap.Title = someDifficulties.TitleUnicode = "explicit beatmap";
|
||||||
explicitMap.HasExplicitContent = true;
|
explicitMap.HasExplicitContent = true;
|
||||||
|
|
||||||
var featuredMap = CreateAPIBeatmapSet(Ruleset.Value);
|
var featuredMap = CreateAPIBeatmapSet(Ruleset.Value);
|
||||||
|
featuredMap.Title = someDifficulties.TitleUnicode = "featured artist beatmap";
|
||||||
featuredMap.TrackId = 1;
|
featuredMap.TrackId = 1;
|
||||||
|
|
||||||
var explicitFeaturedMap = CreateAPIBeatmapSet(Ruleset.Value);
|
var explicitFeaturedMap = CreateAPIBeatmapSet(Ruleset.Value);
|
||||||
|
explicitFeaturedMap.Title = someDifficulties.TitleUnicode = "explicit featured artist";
|
||||||
explicitFeaturedMap.HasExplicitContent = true;
|
explicitFeaturedMap.HasExplicitContent = true;
|
||||||
explicitFeaturedMap.TrackId = 2;
|
explicitFeaturedMap.TrackId = 2;
|
||||||
|
|
||||||
@ -59,6 +93,7 @@ namespace osu.Game.Tests.Visual.Beatmaps
|
|||||||
testCases = new[]
|
testCases = new[]
|
||||||
{
|
{
|
||||||
normal,
|
normal,
|
||||||
|
withStatistics,
|
||||||
undownloadable,
|
undownloadable,
|
||||||
someDifficulties,
|
someDifficulties,
|
||||||
manyDifficulties,
|
manyDifficulties,
|
||||||
@ -75,7 +110,7 @@ namespace osu.Game.Tests.Visual.Beatmaps
|
|||||||
Title = "undownloadable beatmap",
|
Title = "undownloadable beatmap",
|
||||||
Artist = "test",
|
Artist = "test",
|
||||||
Source = "more tests",
|
Source = "more tests",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = "BanchoBot",
|
Username = "BanchoBot",
|
||||||
Id = 3,
|
Id = 3,
|
||||||
@ -120,7 +155,7 @@ namespace osu.Game.Tests.Visual.Beatmaps
|
|||||||
OnlineID = 1,
|
OnlineID = 1,
|
||||||
Title = "many difficulties beatmap",
|
Title = "many difficulties beatmap",
|
||||||
Artist = "test",
|
Artist = "test",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = "BanchoBot",
|
Username = "BanchoBot",
|
||||||
Id = 3,
|
Id = 3,
|
||||||
@ -134,6 +169,19 @@ namespace osu.Game.Tests.Visual.Beatmaps
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
[SetUpSteps]
|
||||||
|
public void SetUpSteps()
|
||||||
|
{
|
||||||
|
AddStep("register request handling", () => dummyAPI.HandleRequest = request =>
|
||||||
|
{
|
||||||
|
if (!(request is PostBeatmapFavouriteRequest))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
request.TriggerSuccess();
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private Drawable createContent(OverlayColourScheme colourScheme, Func<APIBeatmapSet, Drawable> creationFunc)
|
private Drawable createContent(OverlayColourScheme colourScheme, Func<APIBeatmapSet, Drawable> creationFunc)
|
||||||
{
|
{
|
||||||
var colourProvider = new OverlayColourProvider(colourScheme);
|
var colourProvider = new OverlayColourProvider(colourScheme);
|
||||||
|
@ -0,0 +1,86 @@
|
|||||||
|
// 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.Linq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Graphics.Sprites;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Beatmaps.Drawables.Cards.Buttons;
|
||||||
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
using osu.Game.Overlays;
|
||||||
|
using osu.Game.Resources.Localisation.Web;
|
||||||
|
using osuTK;
|
||||||
|
using osuTK.Input;
|
||||||
|
|
||||||
|
namespace osu.Game.Tests.Visual.Beatmaps
|
||||||
|
{
|
||||||
|
public class TestSceneBeatmapCardFavouriteButton : OsuManualInputManagerTestScene
|
||||||
|
{
|
||||||
|
private DummyAPIAccess dummyAPI => (DummyAPIAccess)API;
|
||||||
|
|
||||||
|
[Cached]
|
||||||
|
private OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Blue);
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestInitialState([Values] bool favourited)
|
||||||
|
{
|
||||||
|
APIBeatmapSet beatmapSetInfo = null;
|
||||||
|
FavouriteButton button = null;
|
||||||
|
|
||||||
|
AddStep("create beatmap set", () =>
|
||||||
|
{
|
||||||
|
beatmapSetInfo = CreateAPIBeatmapSet(Ruleset.Value);
|
||||||
|
beatmapSetInfo.HasFavourited = favourited;
|
||||||
|
});
|
||||||
|
AddStep("create button", () => Child = button = new FavouriteButton(beatmapSetInfo) { Scale = new Vector2(2) });
|
||||||
|
|
||||||
|
assertCorrectIcon(favourited);
|
||||||
|
AddAssert("correct tooltip text", () => button.TooltipText == (favourited ? BeatmapsetsStrings.ShowDetailsUnfavourite : BeatmapsetsStrings.ShowDetailsFavourite));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestRequestHandling()
|
||||||
|
{
|
||||||
|
APIBeatmapSet beatmapSetInfo = null;
|
||||||
|
FavouriteButton button = null;
|
||||||
|
BeatmapFavouriteAction? lastRequestAction = null;
|
||||||
|
|
||||||
|
AddStep("create beatmap set", () => beatmapSetInfo = CreateAPIBeatmapSet(Ruleset.Value));
|
||||||
|
AddStep("create button", () => Child = button = new FavouriteButton(beatmapSetInfo) { Scale = new Vector2(2) });
|
||||||
|
|
||||||
|
assertCorrectIcon(false);
|
||||||
|
|
||||||
|
AddStep("register request handling", () => dummyAPI.HandleRequest = request =>
|
||||||
|
{
|
||||||
|
if (!(request is PostBeatmapFavouriteRequest favouriteRequest))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
lastRequestAction = favouriteRequest.Action;
|
||||||
|
request.TriggerSuccess();
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep("click icon", () =>
|
||||||
|
{
|
||||||
|
InputManager.MoveMouseTo(button);
|
||||||
|
InputManager.Click(MouseButton.Left);
|
||||||
|
});
|
||||||
|
AddUntilStep("favourite request sent", () => lastRequestAction == BeatmapFavouriteAction.Favourite);
|
||||||
|
assertCorrectIcon(true);
|
||||||
|
|
||||||
|
AddStep("click icon", () =>
|
||||||
|
{
|
||||||
|
InputManager.MoveMouseTo(button);
|
||||||
|
InputManager.Click(MouseButton.Left);
|
||||||
|
});
|
||||||
|
AddUntilStep("unfavourite request sent", () => lastRequestAction == BeatmapFavouriteAction.UnFavourite);
|
||||||
|
assertCorrectIcon(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertCorrectIcon(bool favourited) => AddAssert("icon correct",
|
||||||
|
() => this.ChildrenOfType<SpriteIcon>().Single().Icon.Equals(favourited ? FontAwesome.Solid.Heart : FontAwesome.Regular.Heart));
|
||||||
|
}
|
||||||
|
}
|
@ -13,10 +13,17 @@ namespace osu.Game.Tests.Visual.Components
|
|||||||
{
|
{
|
||||||
public class TestScenePreviewTrackManager : OsuTestScene, IPreviewTrackOwner
|
public class TestScenePreviewTrackManager : OsuTestScene, IPreviewTrackOwner
|
||||||
{
|
{
|
||||||
private readonly TestPreviewTrackManager trackManager = new TestPreviewTrackManager();
|
private readonly IAdjustableAudioComponent gameTrackAudio = new AudioAdjustments();
|
||||||
|
|
||||||
|
private readonly TestPreviewTrackManager trackManager;
|
||||||
|
|
||||||
private AudioManager audio;
|
private AudioManager audio;
|
||||||
|
|
||||||
|
public TestScenePreviewTrackManager()
|
||||||
|
{
|
||||||
|
trackManager = new TestPreviewTrackManager(gameTrackAudio);
|
||||||
|
}
|
||||||
|
|
||||||
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
||||||
{
|
{
|
||||||
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
|
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
|
||||||
@ -151,19 +158,19 @@ namespace osu.Game.Tests.Visual.Components
|
|||||||
audio.VolumeTrack.Value = 1;
|
audio.VolumeTrack.Value = 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
AddAssert("game not muted", () => audio.Tracks.AggregateVolume.Value != 0);
|
AddAssert("game not muted", () => gameTrackAudio.AggregateVolume.Value != 0);
|
||||||
|
|
||||||
AddStep("get track", () => Add(owner = new TestTrackOwner(track = getTrack())));
|
AddStep("get track", () => Add(owner = new TestTrackOwner(track = getTrack())));
|
||||||
AddUntilStep("wait loaded", () => track.IsLoaded);
|
AddUntilStep("wait loaded", () => track.IsLoaded);
|
||||||
AddStep("start track", () => track.Start());
|
AddStep("start track", () => track.Start());
|
||||||
AddAssert("game is muted", () => audio.Tracks.AggregateVolume.Value == 0);
|
AddAssert("game is muted", () => gameTrackAudio.AggregateVolume.Value == 0);
|
||||||
|
|
||||||
if (stopAnyPlaying)
|
if (stopAnyPlaying)
|
||||||
AddStep("stop any playing", () => trackManager.StopAnyPlaying(owner));
|
AddStep("stop any playing", () => trackManager.StopAnyPlaying(owner));
|
||||||
else
|
else
|
||||||
AddStep("stop track", () => track.Stop());
|
AddStep("stop track", () => track.Stop());
|
||||||
|
|
||||||
AddAssert("game not muted", () => audio.Tracks.AggregateVolume.Value != 0);
|
AddAssert("game not muted", () => gameTrackAudio.AggregateVolume.Value != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -224,6 +231,11 @@ namespace osu.Game.Tests.Visual.Components
|
|||||||
|
|
||||||
public new PreviewTrack CurrentTrack => base.CurrentTrack;
|
public new PreviewTrack CurrentTrack => base.CurrentTrack;
|
||||||
|
|
||||||
|
public TestPreviewTrackManager(IAdjustableAudioComponent mainTrackAdjustments)
|
||||||
|
: base(mainTrackAdjustments)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
protected override TrackManagerPreviewTrack CreatePreviewTrack(IBeatmapSetInfo beatmapSetInfo, ITrackStore trackStore) => new TestPreviewTrack(beatmapSetInfo, trackStore);
|
protected override TrackManagerPreviewTrack CreatePreviewTrack(IBeatmapSetInfo beatmapSetInfo, ITrackStore trackStore) => new TestPreviewTrack(beatmapSetInfo, trackStore);
|
||||||
|
|
||||||
public override bool UpdateSubTree()
|
public override bool UpdateSubTree()
|
||||||
|
@ -7,8 +7,8 @@ using osu.Framework.Bindables;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Screens.Play.HUD;
|
using osu.Game.Screens.Play.HUD;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Gameplay
|
namespace osu.Game.Tests.Visual.Gameplay
|
||||||
@ -39,7 +39,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
playerScore.Value = 1222333;
|
playerScore.Value = 1222333;
|
||||||
});
|
});
|
||||||
|
|
||||||
AddStep("add local player", () => createLeaderboardScore(playerScore, new User { Username = "You", Id = 3 }, true));
|
AddStep("add local player", () => createLeaderboardScore(playerScore, new APIUser { Username = "You", Id = 3 }, true));
|
||||||
AddStep("toggle expanded", () => leaderboard.Expanded.Value = !leaderboard.Expanded.Value);
|
AddStep("toggle expanded", () => leaderboard.Expanded.Value = !leaderboard.Expanded.Value);
|
||||||
AddSliderStep("set player score", 50, 5000000, 1222333, v => playerScore.Value = v);
|
AddSliderStep("set player score", 50, 5000000, 1222333, v => playerScore.Value = v);
|
||||||
}
|
}
|
||||||
@ -50,8 +50,8 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
var player2Score = new BindableDouble(1234567);
|
var player2Score = new BindableDouble(1234567);
|
||||||
var player3Score = new BindableDouble(1111111);
|
var player3Score = new BindableDouble(1111111);
|
||||||
|
|
||||||
AddStep("add player 2", () => createLeaderboardScore(player2Score, new User { Username = "Player 2" }));
|
AddStep("add player 2", () => createLeaderboardScore(player2Score, new APIUser { Username = "Player 2" }));
|
||||||
AddStep("add player 3", () => createLeaderboardScore(player3Score, new User { Username = "Player 3" }));
|
AddStep("add player 3", () => createLeaderboardScore(player3Score, new APIUser { Username = "Player 3" }));
|
||||||
|
|
||||||
AddUntilStep("is player 2 position #1", () => leaderboard.CheckPositionByUsername("Player 2", 1));
|
AddUntilStep("is player 2 position #1", () => leaderboard.CheckPositionByUsername("Player 2", 1));
|
||||||
AddUntilStep("is player position #2", () => leaderboard.CheckPositionByUsername("You", 2));
|
AddUntilStep("is player position #2", () => leaderboard.CheckPositionByUsername("You", 2));
|
||||||
@ -72,38 +72,38 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
public void TestRandomScores()
|
public void TestRandomScores()
|
||||||
{
|
{
|
||||||
int playerNumber = 1;
|
int playerNumber = 1;
|
||||||
AddRepeatStep("add player with random score", () => createRandomScore(new User { Username = $"Player {playerNumber++}" }), 10);
|
AddRepeatStep("add player with random score", () => createRandomScore(new APIUser { Username = $"Player {playerNumber++}" }), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestExistingUsers()
|
public void TestExistingUsers()
|
||||||
{
|
{
|
||||||
AddStep("add peppy", () => createRandomScore(new User { Username = "peppy", Id = 2 }));
|
AddStep("add peppy", () => createRandomScore(new APIUser { Username = "peppy", Id = 2 }));
|
||||||
AddStep("add smoogipoo", () => createRandomScore(new User { Username = "smoogipoo", Id = 1040328 }));
|
AddStep("add smoogipoo", () => createRandomScore(new APIUser { Username = "smoogipoo", Id = 1040328 }));
|
||||||
AddStep("add flyte", () => createRandomScore(new User { Username = "flyte", Id = 3103765 }));
|
AddStep("add flyte", () => createRandomScore(new APIUser { Username = "flyte", Id = 3103765 }));
|
||||||
AddStep("add frenzibyte", () => createRandomScore(new User { Username = "frenzibyte", Id = 14210502 }));
|
AddStep("add frenzibyte", () => createRandomScore(new APIUser { Username = "frenzibyte", Id = 14210502 }));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestMaxHeight()
|
public void TestMaxHeight()
|
||||||
{
|
{
|
||||||
int playerNumber = 1;
|
int playerNumber = 1;
|
||||||
AddRepeatStep("add 3 other players", () => createRandomScore(new User { Username = $"Player {playerNumber++}" }), 3);
|
AddRepeatStep("add 3 other players", () => createRandomScore(new APIUser { Username = $"Player {playerNumber++}" }), 3);
|
||||||
checkHeight(4);
|
checkHeight(4);
|
||||||
|
|
||||||
AddRepeatStep("add 4 other players", () => createRandomScore(new User { Username = $"Player {playerNumber++}" }), 4);
|
AddRepeatStep("add 4 other players", () => createRandomScore(new APIUser { Username = $"Player {playerNumber++}" }), 4);
|
||||||
checkHeight(8);
|
checkHeight(8);
|
||||||
|
|
||||||
AddRepeatStep("add 4 other players", () => createRandomScore(new User { Username = $"Player {playerNumber++}" }), 4);
|
AddRepeatStep("add 4 other players", () => createRandomScore(new APIUser { Username = $"Player {playerNumber++}" }), 4);
|
||||||
checkHeight(8);
|
checkHeight(8);
|
||||||
|
|
||||||
void checkHeight(int panelCount)
|
void checkHeight(int panelCount)
|
||||||
=> AddAssert($"leaderboard height is {panelCount} panels high", () => leaderboard.DrawHeight == (GameplayLeaderboardScore.PANEL_HEIGHT + leaderboard.Spacing) * panelCount);
|
=> AddAssert($"leaderboard height is {panelCount} panels high", () => leaderboard.DrawHeight == (GameplayLeaderboardScore.PANEL_HEIGHT + leaderboard.Spacing) * panelCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createRandomScore(User user) => createLeaderboardScore(new BindableDouble(RNG.Next(0, 5_000_000)), user);
|
private void createRandomScore(APIUser user) => createLeaderboardScore(new BindableDouble(RNG.Next(0, 5_000_000)), user);
|
||||||
|
|
||||||
private void createLeaderboardScore(BindableDouble score, User user, bool isTracked = false)
|
private void createLeaderboardScore(BindableDouble score, APIUser user, bool isTracked = false)
|
||||||
{
|
{
|
||||||
var leaderboardScore = leaderboard.Add(user, isTracked);
|
var leaderboardScore = leaderboard.Add(user, isTracked);
|
||||||
leaderboardScore.TotalScore.BindTo(score);
|
leaderboardScore.TotalScore.BindTo(score);
|
||||||
|
@ -7,15 +7,16 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Game.Online;
|
using osu.Game.Online;
|
||||||
using osu.Game.Online.API.Requests.Responses;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Database;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Screens.Ranking;
|
using osu.Game.Screens.Ranking;
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Gameplay
|
namespace osu.Game.Tests.Visual.Gameplay
|
||||||
{
|
{
|
||||||
@ -113,6 +114,36 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
AddAssert("button is not enabled", () => !downloadButton.ChildrenOfType<DownloadButton>().First().Enabled.Value);
|
AddAssert("button is not enabled", () => !downloadButton.ChildrenOfType<DownloadButton>().First().Enabled.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Resolved]
|
||||||
|
private ScoreManager scoreManager { get; set; }
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestScoreImportThenDelete()
|
||||||
|
{
|
||||||
|
ILive<ScoreInfo> imported = null;
|
||||||
|
|
||||||
|
AddStep("create button without replay", () =>
|
||||||
|
{
|
||||||
|
Child = downloadButton = new TestReplayDownloadButton(getScoreInfo(false))
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
AddUntilStep("wait for load", () => downloadButton.IsLoaded);
|
||||||
|
|
||||||
|
AddUntilStep("state is not downloaded", () => downloadButton.State.Value == DownloadState.NotDownloaded);
|
||||||
|
|
||||||
|
AddStep("import score", () => imported = scoreManager.Import(getScoreInfo(true)).Result);
|
||||||
|
|
||||||
|
AddUntilStep("state is available", () => downloadButton.State.Value == DownloadState.LocallyAvailable);
|
||||||
|
|
||||||
|
AddStep("delete score", () => scoreManager.Delete(imported.Value));
|
||||||
|
|
||||||
|
AddUntilStep("state is not downloaded", () => downloadButton.State.Value == DownloadState.NotDownloaded);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CreateButtonWithNoScore()
|
public void CreateButtonWithNoScore()
|
||||||
{
|
{
|
||||||
@ -139,7 +170,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
RulesetID = 0,
|
RulesetID = 0,
|
||||||
Beatmap = CreateAPIBeatmapSet(new OsuRuleset().RulesetInfo).Beatmaps.First(),
|
Beatmap = CreateAPIBeatmapSet(new OsuRuleset().RulesetInfo).Beatmaps.First(),
|
||||||
HasReplay = replayAvailable,
|
HasReplay = replayAvailable,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 39828,
|
Id = 39828,
|
||||||
Username = @"WubWoofWolf",
|
Username = @"WubWoofWolf",
|
||||||
|
@ -9,6 +9,7 @@ using osu.Framework.Screens;
|
|||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Spectator;
|
using osu.Game.Online.Spectator;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Rulesets.Osu.Replays;
|
using osu.Game.Rulesets.Osu.Replays;
|
||||||
@ -18,13 +19,12 @@ using osu.Game.Screens.Play;
|
|||||||
using osu.Game.Tests.Beatmaps.IO;
|
using osu.Game.Tests.Beatmaps.IO;
|
||||||
using osu.Game.Tests.Visual.Multiplayer;
|
using osu.Game.Tests.Visual.Multiplayer;
|
||||||
using osu.Game.Tests.Visual.Spectator;
|
using osu.Game.Tests.Visual.Spectator;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Gameplay
|
namespace osu.Game.Tests.Visual.Gameplay
|
||||||
{
|
{
|
||||||
public class TestSceneSpectator : ScreenTestScene
|
public class TestSceneSpectator : ScreenTestScene
|
||||||
{
|
{
|
||||||
private readonly User streamingUser = new User { Id = MultiplayerTestScene.PLAYER_1_ID, Username = "Test user" };
|
private readonly APIUser streamingUser = new APIUser { Id = MultiplayerTestScene.PLAYER_1_ID, Username = "Test user" };
|
||||||
|
|
||||||
[Cached(typeof(UserLookupCache))]
|
[Cached(typeof(UserLookupCache))]
|
||||||
private UserLookupCache lookupCache = new TestUserLookupCache();
|
private UserLookupCache lookupCache = new TestUserLookupCache();
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Spectator;
|
using osu.Game.Online.Spectator;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Mania;
|
using osu.Game.Rulesets.Mania;
|
||||||
using osu.Game.Tests.Visual.Spectator;
|
using osu.Game.Tests.Visual.Spectator;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Gameplay
|
namespace osu.Game.Tests.Visual.Gameplay
|
||||||
{
|
{
|
||||||
@ -24,7 +24,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
|
|
||||||
public override void SetUpSteps()
|
public override void SetUpSteps()
|
||||||
{
|
{
|
||||||
AddStep("set dummy user", () => dummyAPIAccess.LocalUser.Value = new User
|
AddStep("set dummy user", () => dummyAPIAccess.LocalUser.Value = new APIUser
|
||||||
{
|
{
|
||||||
Id = dummy_user_id,
|
Id = dummy_user_id,
|
||||||
Username = "DummyUser"
|
Username = "DummyUser"
|
||||||
|
@ -0,0 +1,98 @@
|
|||||||
|
// 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 NUnit.Framework;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Rulesets.Judgements;
|
||||||
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
|
using osu.Game.Rulesets.Osu.Scoring;
|
||||||
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
using osu.Game.Screens.Play.HUD;
|
||||||
|
using osuTK;
|
||||||
|
|
||||||
|
namespace osu.Game.Tests.Visual.Gameplay
|
||||||
|
{
|
||||||
|
public class TestSceneUnstableRateCounter : OsuTestScene
|
||||||
|
{
|
||||||
|
[Cached(typeof(ScoreProcessor))]
|
||||||
|
private TestScoreProcessor scoreProcessor = new TestScoreProcessor();
|
||||||
|
|
||||||
|
private readonly OsuHitWindows hitWindows = new OsuHitWindows();
|
||||||
|
|
||||||
|
private UnstableRateCounter counter;
|
||||||
|
|
||||||
|
private double prev;
|
||||||
|
|
||||||
|
[SetUpSteps]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
AddStep("Reset Score Processor", () => scoreProcessor.Reset());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestBasic()
|
||||||
|
{
|
||||||
|
AddStep("Create Display", recreateDisplay);
|
||||||
|
|
||||||
|
// Needs multiples 2 by the nature of UR, and went for 4 to be safe.
|
||||||
|
// Creates a 250 UR by placing a +25ms then a -25ms judgement, which then results in a 250 UR
|
||||||
|
AddRepeatStep("Set UR to 250", () => applyJudgement(25, true), 4);
|
||||||
|
|
||||||
|
AddUntilStep("UR = 250", () => counter.Current.Value == 250.0);
|
||||||
|
|
||||||
|
AddRepeatStep("Revert UR", () =>
|
||||||
|
{
|
||||||
|
scoreProcessor.RevertResult(
|
||||||
|
new JudgementResult(new HitCircle { HitWindows = hitWindows }, new Judgement())
|
||||||
|
{
|
||||||
|
TimeOffset = 25,
|
||||||
|
Type = HitResult.Perfect,
|
||||||
|
});
|
||||||
|
}, 4);
|
||||||
|
|
||||||
|
AddUntilStep("UR is 0", () => counter.Current.Value == 0.0);
|
||||||
|
AddUntilStep("Counter is invalid", () => counter.Child.Alpha == 0.3f);
|
||||||
|
|
||||||
|
//Sets a UR of 0 by creating 10 10ms offset judgements. Since average = offset, UR = 0
|
||||||
|
AddRepeatStep("Set UR to 0", () => applyJudgement(10, false), 10);
|
||||||
|
//Applies a UR of 100 by creating 10 -10ms offset judgements. At the 10th judgement, offset should be 100.
|
||||||
|
AddRepeatStep("Bring UR to 100", () => applyJudgement(-10, false), 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void recreateDisplay()
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
Add(counter = new UnstableRateCounter
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Scale = new Vector2(5),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyJudgement(double offsetMs, bool alt)
|
||||||
|
{
|
||||||
|
double placement = offsetMs;
|
||||||
|
|
||||||
|
if (alt)
|
||||||
|
{
|
||||||
|
placement = prev > 0 ? -offsetMs : offsetMs;
|
||||||
|
prev = placement;
|
||||||
|
}
|
||||||
|
|
||||||
|
scoreProcessor.ApplyResult(new JudgementResult(new HitCircle { HitWindows = hitWindows }, new Judgement())
|
||||||
|
{
|
||||||
|
TimeOffset = placement,
|
||||||
|
Type = HitResult.Perfect,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TestScoreProcessor : ScoreProcessor
|
||||||
|
{
|
||||||
|
public void Reset() => base.Reset(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Screens.Menu;
|
using osu.Game.Screens.Menu;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Menus
|
namespace osu.Game.Tests.Visual.Menus
|
||||||
{
|
{
|
||||||
@ -17,7 +17,7 @@ namespace osu.Game.Tests.Visual.Menus
|
|||||||
|
|
||||||
AddStep("toggle support", () =>
|
AddStep("toggle support", () =>
|
||||||
{
|
{
|
||||||
((DummyAPIAccess)API).LocalUser.Value = new User
|
((DummyAPIAccess)API).LocalUser.Value = new APIUser
|
||||||
{
|
{
|
||||||
Username = API.LocalUser.Value.Username,
|
Username = API.LocalUser.Value.Username,
|
||||||
Id = API.LocalUser.Value.Id + 1,
|
Id = API.LocalUser.Value.Id + 1,
|
||||||
|
@ -10,6 +10,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Online.Rooms.RoomStatuses;
|
using osu.Game.Online.Rooms.RoomStatuses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
@ -17,7 +18,6 @@ using osu.Game.Rulesets.Osu;
|
|||||||
using osu.Game.Screens.OnlinePlay.Lounge;
|
using osu.Game.Screens.OnlinePlay.Lounge;
|
||||||
using osu.Game.Screens.OnlinePlay.Lounge.Components;
|
using osu.Game.Screens.OnlinePlay.Lounge.Components;
|
||||||
using osu.Game.Tests.Beatmaps;
|
using osu.Game.Tests.Beatmaps;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
@ -174,11 +174,11 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
private DrawableRoom createLoungeRoom(Room room)
|
private DrawableRoom createLoungeRoom(Room room)
|
||||||
{
|
{
|
||||||
room.Host.Value ??= new User { Username = "peppy", Id = 2 };
|
room.Host.Value ??= new APIUser { Username = "peppy", Id = 2 };
|
||||||
|
|
||||||
if (room.RecentParticipants.Count == 0)
|
if (room.RecentParticipants.Count == 0)
|
||||||
{
|
{
|
||||||
room.RecentParticipants.AddRange(Enumerable.Range(0, 20).Select(i => new User
|
room.RecentParticipants.AddRange(Enumerable.Range(0, 20).Select(i => new APIUser
|
||||||
{
|
{
|
||||||
Id = i,
|
Id = i,
|
||||||
Username = $"User {i}"
|
Username = $"User {i}"
|
||||||
|
@ -5,10 +5,10 @@ using System.Linq;
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Screens.OnlinePlay.Lounge.Components;
|
using osu.Game.Screens.OnlinePlay.Lounge.Components;
|
||||||
using osu.Game.Tests.Visual.OnlinePlay;
|
using osu.Game.Tests.Visual.OnlinePlay;
|
||||||
using osu.Game.Users;
|
|
||||||
using osu.Game.Users.Drawables;
|
using osu.Game.Users.Drawables;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
@ -25,7 +25,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
Name = { Value = "test room" },
|
Name = { Value = "test room" },
|
||||||
Host =
|
Host =
|
||||||
{
|
{
|
||||||
Value = new User
|
Value = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Username = "peppy",
|
Username = "peppy",
|
||||||
@ -137,7 +137,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
private void addUser(int id)
|
private void addUser(int id)
|
||||||
{
|
{
|
||||||
SelectedRoom.Value.RecentParticipants.Add(new User
|
SelectedRoom.Value.RecentParticipants.Add(new APIUser
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
Username = $"User {id}"
|
Username = $"User {id}"
|
||||||
|
@ -14,6 +14,7 @@ using osu.Framework.Testing;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Beatmaps.Drawables;
|
using osu.Game.Beatmaps.Drawables;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Overlays.BeatmapListing.Panels;
|
using osu.Game.Overlays.BeatmapListing.Panels;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
@ -21,7 +22,6 @@ using osu.Game.Rulesets.Osu;
|
|||||||
using osu.Game.Rulesets.Osu.Mods;
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
using osu.Game.Screens.OnlinePlay;
|
using osu.Game.Screens.OnlinePlay;
|
||||||
using osu.Game.Tests.Beatmaps;
|
using osu.Game.Tests.Beatmaps;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
@ -294,7 +294,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
Metadata = new BeatmapMetadata
|
Metadata = new BeatmapMetadata
|
||||||
{
|
{
|
||||||
Artist = "Artist",
|
Artist = "Artist",
|
||||||
Author = new User { Username = "Creator name here" },
|
Author = new APIUser { Username = "Creator name here" },
|
||||||
Title = "Long title used to check background colour",
|
Title = "Long title used to check background colour",
|
||||||
},
|
},
|
||||||
BeatmapSet = new BeatmapSetInfo()
|
BeatmapSet = new BeatmapSetInfo()
|
||||||
|
@ -10,8 +10,8 @@ using osu.Game.Online.API.Requests.Responses;
|
|||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Screens.OnlinePlay.Match.Components;
|
using osu.Game.Screens.OnlinePlay.Match.Components;
|
||||||
using osu.Game.Tests.Visual.OnlinePlay;
|
using osu.Game.Tests.Visual.OnlinePlay;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -32,7 +32,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
new APIUserScoreAggregate
|
new APIUserScoreAggregate
|
||||||
{
|
{
|
||||||
UserID = 2,
|
UserID = 2,
|
||||||
User = new User { Id = 2, Username = "peppy" },
|
User = new APIUser { Id = 2, Username = "peppy" },
|
||||||
TotalScore = 995533,
|
TotalScore = 995533,
|
||||||
RoomID = 3,
|
RoomID = 3,
|
||||||
CompletedBeatmaps = 1,
|
CompletedBeatmaps = 1,
|
||||||
@ -42,7 +42,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
new APIUserScoreAggregate
|
new APIUserScoreAggregate
|
||||||
{
|
{
|
||||||
UserID = 1040328,
|
UserID = 1040328,
|
||||||
User = new User { Id = 1040328, Username = "smoogipoo" },
|
User = new APIUser { Id = 1040328, Username = "smoogipoo" },
|
||||||
TotalScore = 981100,
|
TotalScore = 981100,
|
||||||
RoomID = 3,
|
RoomID = 3,
|
||||||
CompletedBeatmaps = 1,
|
CompletedBeatmaps = 1,
|
||||||
|
@ -6,11 +6,11 @@ using System.Linq;
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Timing;
|
using osu.Framework.Timing;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Rulesets.Osu.Scoring;
|
using osu.Game.Rulesets.Osu.Scoring;
|
||||||
using osu.Game.Screens.OnlinePlay.Multiplayer.Spectate;
|
using osu.Game.Screens.OnlinePlay.Multiplayer.Spectate;
|
||||||
using osu.Game.Screens.Play.HUD;
|
using osu.Game.Screens.Play.HUD;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -35,7 +35,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
foreach ((int userId, var _) in clocks)
|
foreach ((int userId, var _) in clocks)
|
||||||
{
|
{
|
||||||
SpectatorClient.StartPlay(userId, 0);
|
SpectatorClient.StartPlay(userId, 0);
|
||||||
OnlinePlayDependencies.Client.AddUser(new User { Id = userId });
|
OnlinePlayDependencies.Client.AddUser(new APIUser { Id = userId });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ using osu.Framework.Graphics.Containers;
|
|||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Multiplayer.MatchTypes.TeamVersus;
|
using osu.Game.Online.Multiplayer.MatchTypes.TeamVersus;
|
||||||
using osu.Game.Rulesets.UI;
|
using osu.Game.Rulesets.UI;
|
||||||
@ -19,7 +20,6 @@ using osu.Game.Screens.Play;
|
|||||||
using osu.Game.Screens.Play.HUD;
|
using osu.Game.Screens.Play.HUD;
|
||||||
using osu.Game.Screens.Play.PlayerSettings;
|
using osu.Game.Screens.Play.PlayerSettings;
|
||||||
using osu.Game.Tests.Beatmaps.IO;
|
using osu.Game.Tests.Beatmaps.IO;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
@ -59,8 +59,8 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("start players silently", () =>
|
AddStep("start players silently", () =>
|
||||||
{
|
{
|
||||||
OnlinePlayDependencies.Client.AddUser(new User { Id = PLAYER_1_ID }, true);
|
OnlinePlayDependencies.Client.AddUser(new APIUser { Id = PLAYER_1_ID }, true);
|
||||||
OnlinePlayDependencies.Client.AddUser(new User { Id = PLAYER_2_ID }, true);
|
OnlinePlayDependencies.Client.AddUser(new APIUser { Id = PLAYER_2_ID }, true);
|
||||||
|
|
||||||
playingUsers.Add(new MultiplayerRoomUser(PLAYER_1_ID));
|
playingUsers.Add(new MultiplayerRoomUser(PLAYER_1_ID));
|
||||||
playingUsers.Add(new MultiplayerRoomUser(PLAYER_2_ID));
|
playingUsers.Add(new MultiplayerRoomUser(PLAYER_2_ID));
|
||||||
@ -120,13 +120,13 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("start players", () =>
|
AddStep("start players", () =>
|
||||||
{
|
{
|
||||||
var player1 = OnlinePlayDependencies.Client.AddUser(new User { Id = PLAYER_1_ID }, true);
|
var player1 = OnlinePlayDependencies.Client.AddUser(new APIUser { Id = PLAYER_1_ID }, true);
|
||||||
player1.MatchState = new TeamVersusUserState
|
player1.MatchState = new TeamVersusUserState
|
||||||
{
|
{
|
||||||
TeamID = 0,
|
TeamID = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
var player2 = OnlinePlayDependencies.Client.AddUser(new User { Id = PLAYER_2_ID }, true);
|
var player2 = OnlinePlayDependencies.Client.AddUser(new APIUser { Id = PLAYER_2_ID }, true);
|
||||||
player2.MatchState = new TeamVersusUserState
|
player2.MatchState = new TeamVersusUserState
|
||||||
{
|
{
|
||||||
TeamID = 1,
|
TeamID = 1,
|
||||||
@ -367,7 +367,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
var user = new MultiplayerRoomUser(id)
|
var user = new MultiplayerRoomUser(id)
|
||||||
{
|
{
|
||||||
User = new User { Id = id },
|
User = new APIUser { Id = id },
|
||||||
};
|
};
|
||||||
|
|
||||||
OnlinePlayDependencies.Client.AddUser(user.User, true);
|
OnlinePlayDependencies.Client.AddUser(user.User, true);
|
||||||
|
@ -17,6 +17,7 @@ using osu.Framework.Utils;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Overlays.Mods;
|
using osu.Game.Overlays.Mods;
|
||||||
@ -32,7 +33,6 @@ using osu.Game.Screens.Play;
|
|||||||
using osu.Game.Screens.Ranking;
|
using osu.Game.Screens.Ranking;
|
||||||
using osu.Game.Screens.Spectate;
|
using osu.Game.Screens.Spectate;
|
||||||
using osu.Game.Tests.Resources;
|
using osu.Game.Tests.Resources;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
@ -129,12 +129,12 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
private void addRandomPlayer()
|
private void addRandomPlayer()
|
||||||
{
|
{
|
||||||
int randomUser = RNG.Next(200000, 500000);
|
int randomUser = RNG.Next(200000, 500000);
|
||||||
client.AddUser(new User { Id = randomUser, Username = $"user {randomUser}" });
|
client.AddUser(new APIUser { Id = randomUser, Username = $"user {randomUser}" });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeLastUser()
|
private void removeLastUser()
|
||||||
{
|
{
|
||||||
User lastUser = client.Room?.Users.Last().User;
|
APIUser lastUser = client.Room?.Users.Last().User;
|
||||||
|
|
||||||
if (lastUser == null || lastUser == client.LocalUser?.User)
|
if (lastUser == null || lastUser == client.LocalUser?.User)
|
||||||
return;
|
return;
|
||||||
@ -144,7 +144,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
private void kickLastUser()
|
private void kickLastUser()
|
||||||
{
|
{
|
||||||
User lastUser = client.Room?.Users.Last().User;
|
APIUser lastUser = client.Room?.Users.Last().User;
|
||||||
|
|
||||||
if (lastUser == null || lastUser == client.LocalUser?.User)
|
if (lastUser == null || lastUser == client.LocalUser?.User)
|
||||||
return;
|
return;
|
||||||
@ -414,7 +414,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
AddStep("join other user (ready, host)", () =>
|
AddStep("join other user (ready, host)", () =>
|
||||||
{
|
{
|
||||||
client.AddUser(new User { Id = MultiplayerTestScene.PLAYER_1_ID, Username = "Other" });
|
client.AddUser(new APIUser { Id = MultiplayerTestScene.PLAYER_1_ID, Username = "Other" });
|
||||||
client.TransferHost(MultiplayerTestScene.PLAYER_1_ID);
|
client.TransferHost(MultiplayerTestScene.PLAYER_1_ID);
|
||||||
client.ChangeUserState(MultiplayerTestScene.PLAYER_1_ID, MultiplayerUserState.Ready);
|
client.ChangeUserState(MultiplayerTestScene.PLAYER_1_ID, MultiplayerUserState.Ready);
|
||||||
});
|
});
|
||||||
@ -454,7 +454,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
AddStep("join other user (ready, host)", () =>
|
AddStep("join other user (ready, host)", () =>
|
||||||
{
|
{
|
||||||
client.AddUser(new User { Id = MultiplayerTestScene.PLAYER_1_ID, Username = "Other" });
|
client.AddUser(new APIUser { Id = MultiplayerTestScene.PLAYER_1_ID, Username = "Other" });
|
||||||
client.TransferHost(MultiplayerTestScene.PLAYER_1_ID);
|
client.TransferHost(MultiplayerTestScene.PLAYER_1_ID);
|
||||||
client.ChangeUserState(MultiplayerTestScene.PLAYER_1_ID, MultiplayerUserState.Ready);
|
client.ChangeUserState(MultiplayerTestScene.PLAYER_1_ID, MultiplayerUserState.Ready);
|
||||||
});
|
});
|
||||||
|
@ -11,6 +11,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Spectator;
|
using osu.Game.Online.Spectator;
|
||||||
using osu.Game.Replays.Legacy;
|
using osu.Game.Replays.Legacy;
|
||||||
@ -20,7 +21,6 @@ using osu.Game.Scoring;
|
|||||||
using osu.Game.Screens.Play.HUD;
|
using osu.Game.Screens.Play.HUD;
|
||||||
using osu.Game.Tests.Visual.OnlinePlay;
|
using osu.Game.Tests.Visual.OnlinePlay;
|
||||||
using osu.Game.Tests.Visual.Spectator;
|
using osu.Game.Tests.Visual.Spectator;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -58,7 +58,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
foreach (int user in users)
|
foreach (int user in users)
|
||||||
{
|
{
|
||||||
SpectatorClient.StartPlay(user, Beatmap.Value.BeatmapInfo.OnlineBeatmapID ?? 0);
|
SpectatorClient.StartPlay(user, Beatmap.Value.BeatmapInfo.OnlineBeatmapID ?? 0);
|
||||||
multiplayerUsers.Add(OnlinePlayDependencies.Client.AddUser(new User { Id = user }, true));
|
multiplayerUsers.Add(OnlinePlayDependencies.Client.AddUser(new APIUser { Id = user }, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
|
@ -7,6 +7,7 @@ using NUnit.Framework;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Multiplayer.MatchTypes.TeamVersus;
|
using osu.Game.Online.Multiplayer.MatchTypes.TeamVersus;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
@ -15,7 +16,6 @@ using osu.Game.Screens.OnlinePlay.Multiplayer;
|
|||||||
using osu.Game.Screens.Play.HUD;
|
using osu.Game.Screens.Play.HUD;
|
||||||
using osu.Game.Tests.Visual.OnlinePlay;
|
using osu.Game.Tests.Visual.OnlinePlay;
|
||||||
using osu.Game.Tests.Visual.Spectator;
|
using osu.Game.Tests.Visual.Spectator;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -62,7 +62,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
foreach (int user in users)
|
foreach (int user in users)
|
||||||
{
|
{
|
||||||
SpectatorClient.StartPlay(user, Beatmap.Value.BeatmapInfo.OnlineBeatmapID ?? 0);
|
SpectatorClient.StartPlay(user, Beatmap.Value.BeatmapInfo.OnlineBeatmapID ?? 0);
|
||||||
var roomUser = OnlinePlayDependencies.Client.AddUser(new User { Id = user }, true);
|
var roomUser = OnlinePlayDependencies.Client.AddUser(new APIUser { Id = user }, true);
|
||||||
|
|
||||||
roomUser.MatchState = new TeamVersusUserState
|
roomUser.MatchState = new TeamVersusUserState
|
||||||
{
|
{
|
||||||
|
@ -9,6 +9,7 @@ using osu.Framework.Platform;
|
|||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
@ -18,7 +19,6 @@ using osu.Game.Screens.OnlinePlay.Multiplayer;
|
|||||||
using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
|
using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
|
||||||
using osu.Game.Tests.Beatmaps;
|
using osu.Game.Tests.Beatmaps;
|
||||||
using osu.Game.Tests.Resources;
|
using osu.Game.Tests.Resources;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
@ -119,7 +119,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
AddStep("join other user (ready)", () =>
|
AddStep("join other user (ready)", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User { Id = PLAYER_1_ID });
|
Client.AddUser(new APIUser { Id = PLAYER_1_ID });
|
||||||
Client.ChangeUserState(PLAYER_1_ID, MultiplayerUserState.Ready);
|
Client.ChangeUserState(PLAYER_1_ID, MultiplayerUserState.Ready);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ using osu.Framework.Testing;
|
|||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Online;
|
using osu.Game.Online;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
@ -34,7 +35,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddAssert("one unique panel", () => this.ChildrenOfType<ParticipantPanel>().Select(p => p.User).Distinct().Count() == 1);
|
AddAssert("one unique panel", () => this.ChildrenOfType<ParticipantPanel>().Select(p => p.User).Distinct().Count() == 1);
|
||||||
|
|
||||||
AddStep("add user", () => Client.AddUser(new User
|
AddStep("add user", () => Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
Username = "Second",
|
Username = "Second",
|
||||||
@ -63,11 +64,11 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestRemoveUser()
|
public void TestRemoveUser()
|
||||||
{
|
{
|
||||||
User secondUser = null;
|
APIUser secondUser = null;
|
||||||
|
|
||||||
AddStep("add a user", () =>
|
AddStep("add a user", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(secondUser = new User
|
Client.AddUser(secondUser = new APIUser
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
Username = "Second",
|
Username = "Second",
|
||||||
@ -146,7 +147,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestCrownChangesStateWhenHostTransferred()
|
public void TestCrownChangesStateWhenHostTransferred()
|
||||||
{
|
{
|
||||||
AddStep("add user", () => Client.AddUser(new User
|
AddStep("add user", () => Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
Username = "Second",
|
Username = "Second",
|
||||||
@ -165,7 +166,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestKickButtonOnlyPresentWhenHost()
|
public void TestKickButtonOnlyPresentWhenHost()
|
||||||
{
|
{
|
||||||
AddStep("add user", () => Client.AddUser(new User
|
AddStep("add user", () => Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
Username = "Second",
|
Username = "Second",
|
||||||
@ -186,7 +187,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestKickButtonKicks()
|
public void TestKickButtonKicks()
|
||||||
{
|
{
|
||||||
AddStep("add user", () => Client.AddUser(new User
|
AddStep("add user", () => Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
Username = "Second",
|
Username = "Second",
|
||||||
@ -205,7 +206,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < 20; i++)
|
for (int i = 0; i < 20; i++)
|
||||||
{
|
{
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = i,
|
Id = i,
|
||||||
Username = $"User {i}",
|
Username = $"User {i}",
|
||||||
@ -249,7 +250,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("add user", () =>
|
AddStep("add user", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 0,
|
Id = 0,
|
||||||
Username = "User 0",
|
Username = "User 0",
|
||||||
@ -295,7 +296,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
AddStep("add user with mods", () =>
|
AddStep("add user with mods", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 0,
|
Id = 0,
|
||||||
Username = "Baka",
|
Username = "Baka",
|
||||||
|
@ -14,12 +14,12 @@ using osu.Framework.Testing;
|
|||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
|
using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
|
||||||
using osu.Game.Tests.Resources;
|
using osu.Game.Tests.Resources;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("add second user as host", () =>
|
AddStep("add second user as host", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User { Id = 2, Username = "Another user" });
|
Client.AddUser(new APIUser { Id = 2, Username = "Another user" });
|
||||||
Client.TransferHost(2);
|
Client.TransferHost(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
Client.TransferHost(Client.Room?.Users[0].UserID ?? 0);
|
Client.TransferHost(Client.Room?.Users[0].UserID ?? 0);
|
||||||
|
|
||||||
if (!allReady)
|
if (!allReady)
|
||||||
Client.AddUser(new User { Id = 2, Username = "Another user" });
|
Client.AddUser(new APIUser { Id = 2, Username = "Another user" });
|
||||||
});
|
});
|
||||||
|
|
||||||
addClickButtonStep();
|
addClickButtonStep();
|
||||||
@ -142,7 +142,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("add host", () =>
|
AddStep("add host", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User { Id = 2, Username = "Another user" });
|
Client.AddUser(new APIUser { Id = 2, Username = "Another user" });
|
||||||
Client.TransferHost(2);
|
Client.TransferHost(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -158,7 +158,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
AddStep("setup", () =>
|
AddStep("setup", () =>
|
||||||
{
|
{
|
||||||
Client.TransferHost(Client.Room?.Users[0].UserID ?? 0);
|
Client.TransferHost(Client.Room?.Users[0].UserID ?? 0);
|
||||||
Client.AddUser(new User { Id = 2, Username = "Another user" });
|
Client.AddUser(new APIUser { Id = 2, Username = "Another user" });
|
||||||
});
|
});
|
||||||
|
|
||||||
addClickButtonStep();
|
addClickButtonStep();
|
||||||
@ -177,7 +177,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
Client.TransferHost(Client.Room?.Users[0].UserID ?? 0);
|
Client.TransferHost(Client.Room?.Users[0].UserID ?? 0);
|
||||||
for (int i = 0; i < users; i++)
|
for (int i = 0; i < users; i++)
|
||||||
Client.AddUser(new User { Id = i, Username = "Another user" });
|
Client.AddUser(new APIUser { Id = i, Username = "Another user" });
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!isHost)
|
if (!isHost)
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Screens.OnlinePlay.Multiplayer;
|
using osu.Game.Screens.OnlinePlay.Multiplayer;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -31,7 +31,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
MaxCombo = 500,
|
MaxCombo = 500,
|
||||||
Combo = 250,
|
Combo = 250,
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User { Username = "Test user" },
|
User = new APIUser { Username = "Test user" },
|
||||||
Date = DateTimeOffset.Now,
|
Date = DateTimeOffset.Now,
|
||||||
OnlineScoreID = 12345,
|
OnlineScoreID = 12345,
|
||||||
Ruleset = rulesetInfo,
|
Ruleset = rulesetInfo,
|
||||||
|
@ -14,12 +14,12 @@ using osu.Framework.Platform;
|
|||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
|
using osu.Game.Screens.OnlinePlay.Multiplayer.Match;
|
||||||
using osu.Game.Tests.Resources;
|
using osu.Game.Tests.Resources;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestReadyButtonEnabledWhenHostAndUsersReady()
|
public void TestReadyButtonEnabledWhenHostAndUsersReady()
|
||||||
{
|
{
|
||||||
AddStep("add user", () => Client.AddUser(new User { Id = PLAYER_1_ID }));
|
AddStep("add user", () => Client.AddUser(new APIUser { Id = PLAYER_1_ID }));
|
||||||
AddStep("set user ready", () => Client.ChangeUserState(PLAYER_1_ID, MultiplayerUserState.Ready));
|
AddStep("set user ready", () => Client.ChangeUserState(PLAYER_1_ID, MultiplayerUserState.Ready));
|
||||||
|
|
||||||
addClickSpectateButtonStep();
|
addClickSpectateButtonStep();
|
||||||
@ -157,7 +157,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("add user and transfer host", () =>
|
AddStep("add user and transfer host", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User { Id = PLAYER_1_ID });
|
Client.AddUser(new APIUser { Id = PLAYER_1_ID });
|
||||||
Client.TransferHost(PLAYER_1_ID);
|
Client.TransferHost(PLAYER_1_ID);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -5,11 +5,11 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Screens.OnlinePlay.Multiplayer;
|
using osu.Game.Screens.OnlinePlay.Multiplayer;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -35,7 +35,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
MaxCombo = 500,
|
MaxCombo = 500,
|
||||||
Combo = 250,
|
Combo = 250,
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User { Username = "Test user" },
|
User = new APIUser { Username = "Test user" },
|
||||||
Date = DateTimeOffset.Now,
|
Date = DateTimeOffset.Now,
|
||||||
OnlineScoreID = 12345,
|
OnlineScoreID = 12345,
|
||||||
Ruleset = rulesetInfo,
|
Ruleset = rulesetInfo,
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Screens.OnlinePlay.Lounge.Components;
|
using osu.Game.Screens.OnlinePlay.Lounge.Components;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Multiplayer
|
namespace osu.Game.Tests.Visual.Multiplayer
|
||||||
{
|
{
|
||||||
@ -25,7 +25,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("add user", () =>
|
AddStep("add user", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Statistics = { GlobalRank = 1234 }
|
Statistics = { GlobalRank = 1234 }
|
||||||
@ -41,19 +41,19 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("add users", () =>
|
AddStep("add users", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Statistics = { GlobalRank = 1234 }
|
Statistics = { GlobalRank = 1234 }
|
||||||
});
|
});
|
||||||
|
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
Statistics = { GlobalRank = 3333 }
|
Statistics = { GlobalRank = 3333 }
|
||||||
});
|
});
|
||||||
|
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 4,
|
Id = 4,
|
||||||
Statistics = { GlobalRank = 4321 }
|
Statistics = { GlobalRank = 4321 }
|
||||||
@ -75,13 +75,13 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
AddStep("add users", () =>
|
AddStep("add users", () =>
|
||||||
{
|
{
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Statistics = { GlobalRank = min }
|
Statistics = { GlobalRank = min }
|
||||||
});
|
});
|
||||||
|
|
||||||
Client.AddUser(new User
|
Client.AddUser(new APIUser
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
Statistics = { GlobalRank = max }
|
Statistics = { GlobalRank = max }
|
||||||
|
@ -127,9 +127,13 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
|
|
||||||
AddAssert("room type is head to head", () => client.Room?.Settings.MatchType == MatchType.HeadToHead);
|
AddAssert("room type is head to head", () => client.Room?.Settings.MatchType == MatchType.HeadToHead);
|
||||||
|
|
||||||
|
AddUntilStep("team displays are not displaying teams", () => multiplayerScreenStack.ChildrenOfType<TeamDisplay>().All(d => d.DisplayedTeam == null));
|
||||||
|
|
||||||
AddStep("change to team vs", () => client.ChangeSettings(matchType: MatchType.TeamVersus));
|
AddStep("change to team vs", () => client.ChangeSettings(matchType: MatchType.TeamVersus));
|
||||||
|
|
||||||
AddAssert("room type is team vs", () => client.Room?.Settings.MatchType == MatchType.TeamVersus);
|
AddAssert("room type is team vs", () => client.Room?.Settings.MatchType == MatchType.TeamVersus);
|
||||||
|
|
||||||
|
AddUntilStep("team displays are displaying teams", () => multiplayerScreenStack.ChildrenOfType<TeamDisplay>().All(d => d.DisplayedTeam != null));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createRoom(Func<Room> room)
|
private void createRoom(Func<Room> room)
|
||||||
|
@ -8,6 +8,7 @@ using osu.Framework.Bindables;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.AccountCreation;
|
using osu.Game.Overlays.AccountCreation;
|
||||||
using osu.Game.Overlays.Settings;
|
using osu.Game.Overlays.Settings;
|
||||||
@ -20,7 +21,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
private readonly Container userPanelArea;
|
private readonly Container userPanelArea;
|
||||||
private readonly AccountCreationOverlay accountCreation;
|
private readonly AccountCreationOverlay accountCreation;
|
||||||
|
|
||||||
private IBindable<User> localUser;
|
private IBindable<APIUser> localUser;
|
||||||
|
|
||||||
public TestSceneAccountCreationOverlay()
|
public TestSceneAccountCreationOverlay()
|
||||||
{
|
{
|
||||||
|
@ -14,8 +14,8 @@ using osu.Game.Online.API.Requests.Responses;
|
|||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.BeatmapListing;
|
using osu.Game.Overlays.BeatmapListing;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -53,7 +53,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
};
|
};
|
||||||
|
|
||||||
// non-supporter user
|
// non-supporter user
|
||||||
api.LocalUser.Value = new User
|
api.LocalUser.Value = new APIUser
|
||||||
{
|
{
|
||||||
Username = "TestBot",
|
Username = "TestBot",
|
||||||
Id = API.LocalUser.Value.Id + 1,
|
Id = API.LocalUser.Value.Id + 1,
|
||||||
|
@ -7,11 +7,11 @@ using osu.Game.Beatmaps;
|
|||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.BeatmapSet;
|
using osu.Game.Overlays.BeatmapSet;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Users;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Game.Online.API.Requests.Responses;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -56,7 +56,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Artist = @"naru narusegawa",
|
Artist = @"naru narusegawa",
|
||||||
Source = @"hinata sou",
|
Source = @"hinata sou",
|
||||||
Tags = @"test tag tag more tag",
|
Tags = @"test tag tag more tag",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = @"BanchoBot",
|
Username = @"BanchoBot",
|
||||||
Id = 3,
|
Id = 3,
|
||||||
|
@ -11,9 +11,9 @@ using osu.Framework.Graphics.Shapes;
|
|||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Overlays.Chat.Tabs;
|
using osu.Game.Overlays.Chat.Tabs;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
@ -108,7 +108,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addRandomPrivateChannel() =>
|
private void addRandomPrivateChannel() =>
|
||||||
channelTabControl.AddChannel(new Channel(new User
|
channelTabControl.AddChannel(new Channel(new APIUser
|
||||||
{
|
{
|
||||||
Id = RNG.Next(1000, 10000000),
|
Id = RNG.Next(1000, 10000000),
|
||||||
Username = "Test User " + RNG.Next(1000)
|
Username = "Test User " + RNG.Next(1000)
|
||||||
|
@ -6,9 +6,9 @@ using NUnit.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.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Overlays.Chat;
|
using osu.Game.Overlays.Chat;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -55,14 +55,14 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
private static long messageCounter;
|
private static long messageCounter;
|
||||||
|
|
||||||
internal static readonly User TEST_SENDER_BACKGROUND = new User
|
internal static readonly APIUser TEST_SENDER_BACKGROUND = new APIUser
|
||||||
{
|
{
|
||||||
Username = @"i-am-important",
|
Username = @"i-am-important",
|
||||||
Id = 42,
|
Id = 42,
|
||||||
Colour = "#250cc9",
|
Colour = "#250cc9",
|
||||||
};
|
};
|
||||||
|
|
||||||
internal static readonly User TEST_SENDER = new User
|
internal static readonly APIUser TEST_SENDER = new APIUser
|
||||||
{
|
{
|
||||||
Username = @"Somebody",
|
Username = @"Somebody",
|
||||||
Id = 1,
|
Id = 1,
|
||||||
@ -75,7 +75,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
Content = text;
|
Content = text;
|
||||||
IsAction = isAction;
|
IsAction = isAction;
|
||||||
Sender = new User
|
Sender = new APIUser
|
||||||
{
|
{
|
||||||
Username = username ?? $"user {number}",
|
Username = username ?? $"user {number}",
|
||||||
Id = number,
|
Id = number,
|
||||||
|
@ -10,10 +10,10 @@ using osu.Framework.Extensions.Color4Extensions;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Chat;
|
using osu.Game.Overlays.Chat;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
@ -168,14 +168,14 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
private static long messageCounter;
|
private static long messageCounter;
|
||||||
|
|
||||||
internal static readonly User TEST_SENDER_BACKGROUND = new User
|
internal static readonly APIUser TEST_SENDER_BACKGROUND = new APIUser
|
||||||
{
|
{
|
||||||
Username = @"i-am-important",
|
Username = @"i-am-important",
|
||||||
Id = 42,
|
Id = 42,
|
||||||
Colour = "#250cc9",
|
Colour = "#250cc9",
|
||||||
};
|
};
|
||||||
|
|
||||||
internal static readonly User TEST_SENDER = new User
|
internal static readonly APIUser TEST_SENDER = new APIUser
|
||||||
{
|
{
|
||||||
Username = @"Somebody",
|
Username = @"Somebody",
|
||||||
Id = 1,
|
Id = 1,
|
||||||
@ -188,7 +188,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
Content = text;
|
Content = text;
|
||||||
IsAction = isAction;
|
IsAction = isAction;
|
||||||
Sender = new User
|
Sender = new APIUser
|
||||||
{
|
{
|
||||||
Username = $"User {number}",
|
Username = $"User {number}",
|
||||||
Id = number,
|
Id = number,
|
||||||
|
@ -18,12 +18,12 @@ using osu.Framework.Testing;
|
|||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Chat;
|
using osu.Game.Overlays.Chat;
|
||||||
using osu.Game.Overlays.Chat.Selection;
|
using osu.Game.Overlays.Chat.Selection;
|
||||||
using osu.Game.Overlays.Chat.Tabs;
|
using osu.Game.Overlays.Chat.Tabs;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
@ -53,7 +53,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
public TestSceneChatOverlay()
|
public TestSceneChatOverlay()
|
||||||
{
|
{
|
||||||
channels = Enumerable.Range(1, 10)
|
channels = Enumerable.Range(1, 10)
|
||||||
.Select(index => new Channel(new User())
|
.Select(index => new Channel(new APIUser())
|
||||||
{
|
{
|
||||||
Name = $"Channel no. {index}",
|
Name = $"Channel no. {index}",
|
||||||
Topic = index == 3 ? null : $"We talk about the number {index} here",
|
Topic = index == 3 ? null : $"We talk about the number {index} here",
|
||||||
@ -98,7 +98,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
case GetUserRequest getUser:
|
case GetUserRequest getUser:
|
||||||
if (getUser.Lookup.Equals("some body", StringComparison.OrdinalIgnoreCase))
|
if (getUser.Lookup.Equals("some body", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
getUser.TriggerSuccess(new User
|
getUser.TriggerSuccess(new APIUser
|
||||||
{
|
{
|
||||||
Username = "some body",
|
Username = "some body",
|
||||||
Id = 1,
|
Id = 1,
|
||||||
@ -149,7 +149,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
ChannelId = channel1.Id,
|
ChannelId = channel1.Id,
|
||||||
Content = "hello from channel 1!",
|
Content = "hello from channel 1!",
|
||||||
Sender = new User
|
Sender = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Username = "test_user"
|
Username = "test_user"
|
||||||
|
@ -9,6 +9,7 @@ using NUnit.Framework;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Spectator;
|
using osu.Game.Online.Spectator;
|
||||||
using osu.Game.Overlays.Dashboard;
|
using osu.Game.Overlays.Dashboard;
|
||||||
using osu.Game.Tests.Visual.Spectator;
|
using osu.Game.Tests.Visual.Spectator;
|
||||||
@ -18,7 +19,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
public class TestSceneCurrentlyPlayingDisplay : OsuTestScene
|
public class TestSceneCurrentlyPlayingDisplay : OsuTestScene
|
||||||
{
|
{
|
||||||
private readonly User streamingUser = new User { Id = 2, Username = "Test user" };
|
private readonly APIUser streamingUser = new APIUser { Id = 2, Username = "Test user" };
|
||||||
|
|
||||||
private TestSpectatorClient spectatorClient;
|
private TestSpectatorClient spectatorClient;
|
||||||
private CurrentlyPlayingDisplay currentlyPlaying;
|
private CurrentlyPlayingDisplay currentlyPlaying;
|
||||||
@ -83,13 +84,13 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
"pishifat"
|
"pishifat"
|
||||||
};
|
};
|
||||||
|
|
||||||
protected override Task<User> ComputeValueAsync(int lookup, CancellationToken token = default)
|
protected override Task<APIUser> ComputeValueAsync(int lookup, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
// tests against failed lookups
|
// tests against failed lookups
|
||||||
if (lookup == 13)
|
if (lookup == 13)
|
||||||
return Task.FromResult<User>(null);
|
return Task.FromResult<APIUser>(null);
|
||||||
|
|
||||||
return Task.FromResult(new User
|
return Task.FromResult(new APIUser
|
||||||
{
|
{
|
||||||
Id = lookup,
|
Id = lookup,
|
||||||
Username = usernames[lookup % usernames.Length],
|
Username = usernames[lookup % usernames.Length],
|
||||||
|
@ -45,10 +45,10 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
AddStep("import soleily", () => beatmaps.Import(TestResources.GetQuickTestBeatmapForImport()));
|
AddStep("import soleily", () => beatmaps.Import(TestResources.GetQuickTestBeatmapForImport()));
|
||||||
|
|
||||||
AddUntilStep("wait for beatmap import", () => beatmaps.GetAllUsableBeatmapSets().Any(b => b.OnlineBeatmapSetID == 241526));
|
AddUntilStep("wait for beatmap import", () => beatmaps.GetAllUsableBeatmapSets().Any(b => b.OnlineBeatmapSetID == 241526));
|
||||||
AddAssert("button state downloaded", () => downloadButton.DownloadState == DownloadState.LocallyAvailable);
|
AddUntilStep("button state downloaded", () => downloadButton.DownloadState == DownloadState.LocallyAvailable);
|
||||||
|
|
||||||
createButtonWithBeatmap(createSoleily());
|
createButtonWithBeatmap(createSoleily());
|
||||||
AddAssert("button state downloaded", () => downloadButton.DownloadState == DownloadState.LocallyAvailable);
|
AddUntilStep("button state downloaded", () => downloadButton.DownloadState == DownloadState.LocallyAvailable);
|
||||||
ensureSoleilyRemoved();
|
ensureSoleilyRemoved();
|
||||||
AddAssert("button state not downloaded", () => downloadButton.DownloadState == DownloadState.NotDownloaded);
|
AddAssert("button state not downloaded", () => downloadButton.DownloadState == DownloadState.NotDownloaded);
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,8 @@ using osu.Game.Beatmaps;
|
|||||||
using osu.Game.Online.API.Requests.Responses;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays.BeatmapListing.Panels;
|
using osu.Game.Overlays.BeatmapListing.Panels;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -74,7 +74,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Title = "undownloadable beatmap",
|
Title = "undownloadable beatmap",
|
||||||
Artist = "test",
|
Artist = "test",
|
||||||
Source = "more tests",
|
Source = "more tests",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = "BanchoBot",
|
Username = "BanchoBot",
|
||||||
Id = 3,
|
Id = 3,
|
||||||
@ -121,7 +121,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Title = "undownloadable beatmap",
|
Title = "undownloadable beatmap",
|
||||||
Artist = "test",
|
Artist = "test",
|
||||||
Source = "more tests",
|
Source = "more tests",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = "BanchoBot",
|
Username = "BanchoBot",
|
||||||
Id = 3,
|
Id = 3,
|
||||||
|
@ -7,6 +7,7 @@ using NUnit.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.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Dashboard.Friends;
|
using osu.Game.Overlays.Dashboard.Friends;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
@ -44,9 +45,9 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
// No need to do anything, fetch is performed automatically.
|
// No need to do anything, fetch is performed automatically.
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<User> getUsers() => new List<User>
|
private List<APIUser> getUsers() => new List<APIUser>
|
||||||
{
|
{
|
||||||
new User
|
new APIUser
|
||||||
{
|
{
|
||||||
Username = "flyte",
|
Username = "flyte",
|
||||||
Id = 3103765,
|
Id = 3103765,
|
||||||
@ -55,7 +56,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Country = new Country { FlagName = "JP" },
|
Country = new Country { FlagName = "JP" },
|
||||||
CoverUrl = "https://osu.ppy.sh/images/headers/profile-covers/c6.jpg"
|
CoverUrl = "https://osu.ppy.sh/images/headers/profile-covers/c6.jpg"
|
||||||
},
|
},
|
||||||
new User
|
new APIUser
|
||||||
{
|
{
|
||||||
Username = "peppy",
|
Username = "peppy",
|
||||||
Id = 2,
|
Id = 2,
|
||||||
@ -66,7 +67,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
IsSupporter = true,
|
IsSupporter = true,
|
||||||
SupportLevel = 3,
|
SupportLevel = 3,
|
||||||
},
|
},
|
||||||
new User
|
new APIUser
|
||||||
{
|
{
|
||||||
Username = "Evast",
|
Username = "Evast",
|
||||||
Id = 8195163,
|
Id = 8195163,
|
||||||
|
@ -7,9 +7,9 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Profile.Sections;
|
using osu.Game.Overlays.Profile.Sections;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -37,8 +37,8 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Child = section = new HistoricalSection(),
|
Child = section = new HistoricalSection(),
|
||||||
});
|
});
|
||||||
|
|
||||||
AddStep("Show peppy", () => section.User.Value = new User { Id = 2 });
|
AddStep("Show peppy", () => section.User.Value = new APIUser { Id = 2 });
|
||||||
AddStep("Show WubWoofWolf", () => section.User.Value = new User { Id = 39828 });
|
AddStep("Show WubWoofWolf", () => section.User.Value = new APIUser { Id = 39828 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,14 +15,14 @@ using osu.Game.Online.API.Requests.Responses;
|
|||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Notifications;
|
using osu.Game.Overlays.Notifications;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
public class TestSceneMessageNotifier : OsuManualInputManagerTestScene
|
public class TestSceneMessageNotifier : OsuManualInputManagerTestScene
|
||||||
{
|
{
|
||||||
private User friend;
|
private APIUser friend;
|
||||||
private Channel publicChannel;
|
private Channel publicChannel;
|
||||||
private Channel privateMessageChannel;
|
private Channel privateMessageChannel;
|
||||||
private TestContainer testContainer;
|
private TestContainer testContainer;
|
||||||
@ -37,7 +37,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
daa.HandleRequest = dummyAPIHandleRequest;
|
daa.HandleRequest = dummyAPIHandleRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend = new User { Id = 0, Username = "Friend" };
|
friend = new APIUser { Id = 0, Username = "Friend" };
|
||||||
publicChannel = new Channel { Id = 1, Name = "osu" };
|
publicChannel = new Channel { Id = 1, Name = "osu" };
|
||||||
privateMessageChannel = new Channel(friend) { Id = 2, Name = friend.Username, Type = ChannelType.PM };
|
privateMessageChannel = new Channel(friend) { Id = 2, Name = friend.Username, Type = ChannelType.PM };
|
||||||
|
|
||||||
@ -178,9 +178,9 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
AddAssert("1 notification fired", () => testContainer.NotificationOverlay.UnreadCount.Value == 1);
|
AddAssert("1 notification fired", () => testContainer.NotificationOverlay.UnreadCount.Value == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void receiveMessage(User sender, Channel channel, string content) => channel.AddNewMessages(createMessage(sender, channel, content));
|
private void receiveMessage(APIUser sender, Channel channel, string content) => channel.AddNewMessages(createMessage(sender, channel, content));
|
||||||
|
|
||||||
private Message createMessage(User sender, Channel channel, string content) => new Message(messageIdCounter++)
|
private Message createMessage(APIUser sender, Channel channel, string content) => new Message(messageIdCounter++)
|
||||||
{
|
{
|
||||||
Content = content,
|
Content = content,
|
||||||
Sender = sender,
|
Sender = sender,
|
||||||
|
@ -11,9 +11,9 @@ using osu.Game.Overlays.Comments;
|
|||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Online.API.Requests.Responses;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Users;
|
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -154,9 +154,9 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
5
|
5
|
||||||
},
|
},
|
||||||
Users = new List<User>
|
Users = new List<APIUser>
|
||||||
{
|
{
|
||||||
new User
|
new APIUser
|
||||||
{
|
{
|
||||||
Id = 1,
|
Id = 1,
|
||||||
Username = "Good_Admin"
|
Username = "Good_Admin"
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
using osu.Game.Overlays.Profile.Sections.Historical;
|
using osu.Game.Overlays.Profile.Sections.Historical;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Users;
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
@ -12,7 +11,7 @@ using System;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using static osu.Game.Users.User;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -21,7 +20,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
[Cached]
|
[Cached]
|
||||||
private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Red);
|
private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Red);
|
||||||
|
|
||||||
private readonly Bindable<User> user = new Bindable<User>();
|
private readonly Bindable<APIUser> user = new Bindable<APIUser>();
|
||||||
private readonly PlayHistorySubsection section;
|
private readonly PlayHistorySubsection section;
|
||||||
|
|
||||||
public TestScenePlayHistorySubsection()
|
public TestScenePlayHistorySubsection()
|
||||||
@ -101,80 +100,80 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
|
|
||||||
private int getChartValuesLength() => this.ChildrenOfType<ProfileLineChart>().Single().Values.Length;
|
private int getChartValuesLength() => this.ChildrenOfType<ProfileLineChart>().Single().Values.Length;
|
||||||
|
|
||||||
private static readonly User user_with_null_values = new User
|
private static readonly APIUser user_with_null_values = new APIUser
|
||||||
{
|
{
|
||||||
Id = 1
|
Id = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly User user_with_empty_values = new User
|
private static readonly APIUser user_with_empty_values = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
MonthlyPlaycounts = Array.Empty<UserHistoryCount>()
|
MonthlyPlaycounts = Array.Empty<APIUserHistoryCount>()
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly User user_with_one_value = new User
|
private static readonly APIUser user_with_one_value = new APIUser
|
||||||
{
|
{
|
||||||
Id = 3,
|
Id = 3,
|
||||||
MonthlyPlaycounts = new[]
|
MonthlyPlaycounts = new[]
|
||||||
{
|
{
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 100 }
|
new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 100 }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly User user_with_two_values = new User
|
private static readonly APIUser user_with_two_values = new APIUser
|
||||||
{
|
{
|
||||||
Id = 4,
|
Id = 4,
|
||||||
MonthlyPlaycounts = new[]
|
MonthlyPlaycounts = new[]
|
||||||
{
|
{
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 1 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 1 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 2 }
|
new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 2 }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly User user_with_constant_values = new User
|
private static readonly APIUser user_with_constant_values = new APIUser
|
||||||
{
|
{
|
||||||
Id = 5,
|
Id = 5,
|
||||||
MonthlyPlaycounts = new[]
|
MonthlyPlaycounts = new[]
|
||||||
{
|
{
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 5 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 5 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 5 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 5 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 7, 1), Count = 5 }
|
new APIUserHistoryCount { Date = new DateTime(2010, 7, 1), Count = 5 }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly User user_with_zero_values = new User
|
private static readonly APIUser user_with_zero_values = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6,
|
Id = 6,
|
||||||
MonthlyPlaycounts = new[]
|
MonthlyPlaycounts = new[]
|
||||||
{
|
{
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 0 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 0 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 0 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 0 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 7, 1), Count = 0 }
|
new APIUserHistoryCount { Date = new DateTime(2010, 7, 1), Count = 0 }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly User user_with_filled_values = new User
|
private static readonly APIUser user_with_filled_values = new APIUser
|
||||||
{
|
{
|
||||||
Id = 7,
|
Id = 7,
|
||||||
MonthlyPlaycounts = new[]
|
MonthlyPlaycounts = new[]
|
||||||
{
|
{
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 1000 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 1000 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 20 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 20 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 7, 1), Count = 20000 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 7, 1), Count = 20000 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 8, 1), Count = 30 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 8, 1), Count = 30 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 9, 1), Count = 50 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 9, 1), Count = 50 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 10, 1), Count = 2000 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 10, 1), Count = 2000 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 11, 1), Count = 2100 }
|
new APIUserHistoryCount { Date = new DateTime(2010, 11, 1), Count = 2100 }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly User user_with_missing_values = new User
|
private static readonly APIUser user_with_missing_values = new APIUser
|
||||||
{
|
{
|
||||||
Id = 8,
|
Id = 8,
|
||||||
MonthlyPlaycounts = new[]
|
MonthlyPlaycounts = new[]
|
||||||
{
|
{
|
||||||
new UserHistoryCount { Date = new DateTime(2020, 1, 1), Count = 100 },
|
new APIUserHistoryCount { Date = new DateTime(2020, 1, 1), Count = 100 },
|
||||||
new UserHistoryCount { Date = new DateTime(2020, 7, 1), Count = 200 }
|
new APIUserHistoryCount { Date = new DateTime(2020, 7, 1), Count = 200 }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,10 @@ using osu.Game.Rulesets.Catch;
|
|||||||
using osu.Game.Rulesets.Mania;
|
using osu.Game.Rulesets.Mania;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Rulesets.Taiko;
|
using osu.Game.Rulesets.Taiko;
|
||||||
using osu.Game.Users;
|
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -22,7 +22,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
public TestSceneProfileRulesetSelector()
|
public TestSceneProfileRulesetSelector()
|
||||||
{
|
{
|
||||||
ProfileRulesetSelector selector;
|
ProfileRulesetSelector selector;
|
||||||
var user = new Bindable<User>();
|
var user = new Bindable<APIUser>();
|
||||||
|
|
||||||
Child = selector = new ProfileRulesetSelector
|
Child = selector = new ProfileRulesetSelector
|
||||||
{
|
{
|
||||||
@ -36,10 +36,10 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
AddStep("set taiko as default", () => selector.SetDefaultRuleset(new TaikoRuleset().RulesetInfo));
|
AddStep("set taiko as default", () => selector.SetDefaultRuleset(new TaikoRuleset().RulesetInfo));
|
||||||
AddStep("set catch as default", () => selector.SetDefaultRuleset(new CatchRuleset().RulesetInfo));
|
AddStep("set catch as default", () => selector.SetDefaultRuleset(new CatchRuleset().RulesetInfo));
|
||||||
|
|
||||||
AddStep("User with osu as default", () => user.Value = new User { PlayMode = "osu" });
|
AddStep("User with osu as default", () => user.Value = new APIUser { PlayMode = "osu" });
|
||||||
AddStep("User with mania as default", () => user.Value = new User { PlayMode = "mania" });
|
AddStep("User with mania as default", () => user.Value = new APIUser { PlayMode = "mania" });
|
||||||
AddStep("User with taiko as default", () => user.Value = new User { PlayMode = "taiko" });
|
AddStep("User with taiko as default", () => user.Value = new APIUser { PlayMode = "taiko" });
|
||||||
AddStep("User with catch as default", () => user.Value = new User { PlayMode = "fruits" });
|
AddStep("User with catch as default", () => user.Value = new APIUser { PlayMode = "fruits" });
|
||||||
AddStep("null user", () => user.Value = null);
|
AddStep("null user", () => user.Value = null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Profile.Header.Components;
|
using osu.Game.Overlays.Profile.Header.Components;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
@ -81,7 +82,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
GlobalRank = 89000,
|
GlobalRank = 89000,
|
||||||
PP = 12345,
|
PP = 12345,
|
||||||
RankHistory = new User.RankHistoryData
|
RankHistory = new APIRankHistory
|
||||||
{
|
{
|
||||||
Data = data,
|
Data = data,
|
||||||
}
|
}
|
||||||
@ -94,7 +95,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
GlobalRank = 89000,
|
GlobalRank = 89000,
|
||||||
PP = 12345,
|
PP = 12345,
|
||||||
RankHistory = new User.RankHistoryData
|
RankHistory = new APIRankHistory
|
||||||
{
|
{
|
||||||
Data = dataWithZeros,
|
Data = dataWithZeros,
|
||||||
}
|
}
|
||||||
@ -107,7 +108,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
GlobalRank = 12000,
|
GlobalRank = 12000,
|
||||||
PP = 12345,
|
PP = 12345,
|
||||||
RankHistory = new User.RankHistoryData
|
RankHistory = new APIRankHistory
|
||||||
{
|
{
|
||||||
Data = smallData,
|
Data = smallData,
|
||||||
}
|
}
|
||||||
@ -120,7 +121,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
GlobalRank = 12000,
|
GlobalRank = 12000,
|
||||||
PP = 12345,
|
PP = 12345,
|
||||||
RankHistory = new User.RankHistoryData
|
RankHistory = new APIRankHistory
|
||||||
{
|
{
|
||||||
Data = edgyData,
|
Data = edgyData,
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ using osu.Game.Rulesets.Osu.Mods;
|
|||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -50,7 +51,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
new APIScoreInfo
|
new APIScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6602580,
|
Id = 6602580,
|
||||||
Username = @"waaiiru",
|
Username = @"waaiiru",
|
||||||
@ -75,7 +76,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
},
|
},
|
||||||
new APIScoreInfo
|
new APIScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 4608074,
|
Id = 4608074,
|
||||||
Username = @"Skycries",
|
Username = @"Skycries",
|
||||||
@ -99,7 +100,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
},
|
},
|
||||||
new APIScoreInfo
|
new APIScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 1014222,
|
Id = 1014222,
|
||||||
Username = @"eLy",
|
Username = @"eLy",
|
||||||
@ -122,7 +123,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
},
|
},
|
||||||
new APIScoreInfo
|
new APIScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 1541390,
|
Id = 1541390,
|
||||||
Username = @"Toukai",
|
Username = @"Toukai",
|
||||||
@ -144,7 +145,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
},
|
},
|
||||||
new APIScoreInfo
|
new APIScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 7151382,
|
Id = 7151382,
|
||||||
Username = @"Mayuri Hana",
|
Username = @"Mayuri Hana",
|
||||||
@ -167,7 +168,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
Score = new APIScoreInfo
|
Score = new APIScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 7151382,
|
Id = 7151382,
|
||||||
Username = @"Mayuri Hana",
|
Username = @"Mayuri Hana",
|
||||||
@ -190,7 +191,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
Score = new APIScoreInfo
|
Score = new APIScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 7151382,
|
Id = 7151382,
|
||||||
Username = @"Mayuri Hana",
|
Username = @"Mayuri Hana",
|
||||||
@ -215,7 +216,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
new APIScoreInfo
|
new APIScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6602580,
|
Id = 6602580,
|
||||||
Username = @"waaiiru",
|
Username = @"waaiiru",
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Online.Chat;
|
using osu.Game.Online.Chat;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays.Chat;
|
using osu.Game.Overlays.Chat;
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
@ -18,26 +18,26 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
public class TestSceneStandAloneChatDisplay : OsuManualInputManagerTestScene
|
public class TestSceneStandAloneChatDisplay : OsuManualInputManagerTestScene
|
||||||
{
|
{
|
||||||
private readonly User admin = new User
|
private readonly APIUser admin = new APIUser
|
||||||
{
|
{
|
||||||
Username = "HappyStick",
|
Username = "HappyStick",
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Colour = "f2ca34"
|
Colour = "f2ca34"
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly User redUser = new User
|
private readonly APIUser redUser = new APIUser
|
||||||
{
|
{
|
||||||
Username = "BanchoBot",
|
Username = "BanchoBot",
|
||||||
Id = 3,
|
Id = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly User blueUser = new User
|
private readonly APIUser blueUser = new APIUser
|
||||||
{
|
{
|
||||||
Username = "Zallius",
|
Username = "Zallius",
|
||||||
Id = 4,
|
Id = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly User longUsernameUser = new User
|
private readonly APIUser longUsernameUser = new APIUser
|
||||||
{
|
{
|
||||||
Username = "Very Long Long Username",
|
Username = "Very Long Long Username",
|
||||||
Id = 5,
|
Id = 5,
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
// 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;
|
||||||
using osu.Game.Overlays.Profile.Sections.Historical;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Game.Overlays;
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using static osu.Game.Users.User;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
using osu.Game.Overlays;
|
||||||
|
using osu.Game.Overlays.Profile.Sections.Historical;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -29,28 +29,28 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
|
|
||||||
var values = new[]
|
var values = new[]
|
||||||
{
|
{
|
||||||
new UserHistoryCount { Date = new DateTime(2000, 1, 1), Count = 10 },
|
new APIUserHistoryCount { Date = new DateTime(2000, 1, 1), Count = 10 },
|
||||||
new UserHistoryCount { Date = new DateTime(2000, 2, 1), Count = 20 },
|
new APIUserHistoryCount { Date = new DateTime(2000, 2, 1), Count = 20 },
|
||||||
new UserHistoryCount { Date = new DateTime(2000, 3, 1), Count = 100 },
|
new APIUserHistoryCount { Date = new DateTime(2000, 3, 1), Count = 100 },
|
||||||
new UserHistoryCount { Date = new DateTime(2000, 4, 1), Count = 15 },
|
new APIUserHistoryCount { Date = new DateTime(2000, 4, 1), Count = 15 },
|
||||||
new UserHistoryCount { Date = new DateTime(2000, 5, 1), Count = 30 }
|
new APIUserHistoryCount { Date = new DateTime(2000, 5, 1), Count = 30 }
|
||||||
};
|
};
|
||||||
|
|
||||||
var moreValues = new[]
|
var moreValues = new[]
|
||||||
{
|
{
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 1000 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 5, 1), Count = 1000 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 20 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 6, 1), Count = 20 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 7, 1), Count = 20000 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 7, 1), Count = 20000 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 8, 1), Count = 30 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 8, 1), Count = 30 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 9, 1), Count = 50 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 9, 1), Count = 50 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 10, 1), Count = 2000 },
|
new APIUserHistoryCount { Date = new DateTime(2010, 10, 1), Count = 2000 },
|
||||||
new UserHistoryCount { Date = new DateTime(2010, 11, 1), Count = 2100 }
|
new APIUserHistoryCount { Date = new DateTime(2010, 11, 1), Count = 2100 }
|
||||||
};
|
};
|
||||||
|
|
||||||
AddStep("Set fake values", () => graph.Values = values);
|
AddStep("Set fake values", () => graph.Values = values);
|
||||||
AddStep("Set more values", () => graph.Values = moreValues);
|
AddStep("Set more values", () => graph.Values = moreValues);
|
||||||
AddStep("Set null values", () => graph.Values = null);
|
AddStep("Set null values", () => graph.Values = null);
|
||||||
AddStep("Set empty values", () => graph.Values = Array.Empty<UserHistoryCount>());
|
AddStep("Set empty values", () => graph.Values = Array.Empty<APIUserHistoryCount>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
@ -42,27 +43,27 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Spacing = new Vector2(10f),
|
Spacing = new Vector2(10f),
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new UserBrickPanel(new User
|
new UserBrickPanel(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"flyte",
|
Username = @"flyte",
|
||||||
Id = 3103765,
|
Id = 3103765,
|
||||||
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c6.jpg"
|
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c6.jpg"
|
||||||
}),
|
}),
|
||||||
new UserBrickPanel(new User
|
new UserBrickPanel(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"peppy",
|
Username = @"peppy",
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Colour = "99EB47",
|
Colour = "99EB47",
|
||||||
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg",
|
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg",
|
||||||
}),
|
}),
|
||||||
flyte = new UserGridPanel(new User
|
flyte = new UserGridPanel(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"flyte",
|
Username = @"flyte",
|
||||||
Id = 3103765,
|
Id = 3103765,
|
||||||
Country = new Country { FlagName = @"JP" },
|
Country = new Country { FlagName = @"JP" },
|
||||||
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c6.jpg"
|
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c6.jpg"
|
||||||
}) { Width = 300 },
|
}) { Width = 300 },
|
||||||
peppy = new UserGridPanel(new User
|
peppy = new UserGridPanel(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"peppy",
|
Username = @"peppy",
|
||||||
Id = 2,
|
Id = 2,
|
||||||
@ -71,7 +72,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
IsSupporter = true,
|
IsSupporter = true,
|
||||||
SupportLevel = 3,
|
SupportLevel = 3,
|
||||||
}) { Width = 300 },
|
}) { Width = 300 },
|
||||||
evast = new TestUserListPanel(new User
|
evast = new TestUserListPanel(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"Evast",
|
Username = @"Evast",
|
||||||
Id = 8195163,
|
Id = 8195163,
|
||||||
@ -134,7 +135,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
|
|
||||||
private class TestUserListPanel : UserListPanel
|
private class TestUserListPanel : UserListPanel
|
||||||
{
|
{
|
||||||
public TestUserListPanel(User user)
|
public TestUserListPanel(APIUser user)
|
||||||
: base(user)
|
: base(user)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ using System;
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Profile;
|
using osu.Game.Overlays.Profile;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
@ -30,26 +31,26 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
|
|
||||||
AddStep("Show test dummy", () => header.User.Value = TestSceneUserProfileOverlay.TEST_USER);
|
AddStep("Show test dummy", () => header.User.Value = TestSceneUserProfileOverlay.TEST_USER);
|
||||||
|
|
||||||
AddStep("Show null dummy", () => header.User.Value = new User
|
AddStep("Show null dummy", () => header.User.Value = new APIUser
|
||||||
{
|
{
|
||||||
Username = "Null"
|
Username = "Null"
|
||||||
});
|
});
|
||||||
|
|
||||||
AddStep("Show online dummy", () => header.User.Value = new User
|
AddStep("Show online dummy", () => header.User.Value = new APIUser
|
||||||
{
|
{
|
||||||
Username = "IAmOnline",
|
Username = "IAmOnline",
|
||||||
LastVisit = DateTimeOffset.Now,
|
LastVisit = DateTimeOffset.Now,
|
||||||
IsOnline = true,
|
IsOnline = true,
|
||||||
});
|
});
|
||||||
|
|
||||||
AddStep("Show offline dummy", () => header.User.Value = new User
|
AddStep("Show offline dummy", () => header.User.Value = new APIUser
|
||||||
{
|
{
|
||||||
Username = "IAmOffline",
|
Username = "IAmOffline",
|
||||||
LastVisit = DateTimeOffset.Now,
|
LastVisit = DateTimeOffset.Now,
|
||||||
IsOnline = false,
|
IsOnline = false,
|
||||||
});
|
});
|
||||||
|
|
||||||
addOnlineStep("Show ppy", new User
|
addOnlineStep("Show ppy", new APIUser
|
||||||
{
|
{
|
||||||
Username = @"peppy",
|
Username = @"peppy",
|
||||||
Id = 2,
|
Id = 2,
|
||||||
@ -58,7 +59,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg"
|
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg"
|
||||||
});
|
});
|
||||||
|
|
||||||
addOnlineStep("Show flyte", new User
|
addOnlineStep("Show flyte", new APIUser
|
||||||
{
|
{
|
||||||
Username = @"flyte",
|
Username = @"flyte",
|
||||||
Id = 3103765,
|
Id = 3103765,
|
||||||
@ -67,7 +68,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addOnlineStep(string name, User fallback)
|
private void addOnlineStep(string name, APIUser fallback)
|
||||||
{
|
{
|
||||||
AddStep(name, () =>
|
AddStep(name, () =>
|
||||||
{
|
{
|
||||||
|
@ -6,6 +6,7 @@ using System.Linq;
|
|||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Profile;
|
using osu.Game.Overlays.Profile;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
@ -22,7 +23,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private IAPIProvider api { get; set; }
|
private IAPIProvider api { get; set; }
|
||||||
|
|
||||||
public static readonly User TEST_USER = new User
|
public static readonly APIUser TEST_USER = new APIUser
|
||||||
{
|
{
|
||||||
Username = @"Somebody",
|
Username = @"Somebody",
|
||||||
Id = 1,
|
Id = 1,
|
||||||
@ -41,7 +42,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Current = 727,
|
Current = 727,
|
||||||
Progress = 69,
|
Progress = 69,
|
||||||
},
|
},
|
||||||
RankHistory = new User.RankHistoryData
|
RankHistory = new APIRankHistory
|
||||||
{
|
{
|
||||||
Mode = @"osu",
|
Mode = @"osu",
|
||||||
Data = Enumerable.Range(2345, 45).Concat(Enumerable.Range(2109, 40)).ToArray()
|
Data = Enumerable.Range(2345, 45).Concat(Enumerable.Range(2109, 40)).ToArray()
|
||||||
@ -58,7 +59,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
},
|
},
|
||||||
Title = "osu!volunteer",
|
Title = "osu!volunteer",
|
||||||
Colour = "ff0000",
|
Colour = "ff0000",
|
||||||
Achievements = Array.Empty<User.UserAchievement>(),
|
Achievements = Array.Empty<APIUserAchievement>(),
|
||||||
};
|
};
|
||||||
|
|
||||||
public TestSceneUserProfileOverlay()
|
public TestSceneUserProfileOverlay()
|
||||||
@ -70,42 +71,42 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
AddStep("Show offline dummy", () => profile.ShowUser(TEST_USER, false));
|
AddStep("Show offline dummy", () => profile.ShowUser(TEST_USER));
|
||||||
|
|
||||||
AddStep("Show null dummy", () => profile.ShowUser(new User
|
AddStep("Show null dummy", () => profile.ShowUser(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"Null",
|
Username = @"Null",
|
||||||
Id = 1,
|
Id = 1,
|
||||||
}, false));
|
}));
|
||||||
|
|
||||||
AddStep("Show ppy", () => profile.ShowUser(new User
|
AddStep("Show ppy", () => profile.ShowUser(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"peppy",
|
Username = @"peppy",
|
||||||
Id = 2,
|
Id = 2,
|
||||||
IsSupporter = true,
|
IsSupporter = true,
|
||||||
Country = new Country { FullName = @"Australia", FlagName = @"AU" },
|
Country = new Country { FullName = @"Australia", FlagName = @"AU" },
|
||||||
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg"
|
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c3.jpg"
|
||||||
}, api.IsLoggedIn));
|
}));
|
||||||
|
|
||||||
AddStep("Show flyte", () => profile.ShowUser(new User
|
AddStep("Show flyte", () => profile.ShowUser(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"flyte",
|
Username = @"flyte",
|
||||||
Id = 3103765,
|
Id = 3103765,
|
||||||
Country = new Country { FullName = @"Japan", FlagName = @"JP" },
|
Country = new Country { FullName = @"Japan", FlagName = @"JP" },
|
||||||
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c6.jpg"
|
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c6.jpg"
|
||||||
}, api.IsLoggedIn));
|
}));
|
||||||
|
|
||||||
AddStep("Show bancho", () => profile.ShowUser(new User
|
AddStep("Show bancho", () => profile.ShowUser(new APIUser
|
||||||
{
|
{
|
||||||
Username = @"BanchoBot",
|
Username = @"BanchoBot",
|
||||||
Id = 3,
|
Id = 3,
|
||||||
IsBot = true,
|
IsBot = true,
|
||||||
Country = new Country { FullName = @"Saint Helena", FlagName = @"SH" },
|
Country = new Country { FullName = @"Saint Helena", FlagName = @"SH" },
|
||||||
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c4.jpg"
|
CoverUrl = @"https://osu.ppy.sh/images/headers/profile-covers/c4.jpg"
|
||||||
}, api.IsLoggedIn));
|
}));
|
||||||
|
|
||||||
AddStep("Show ppy from username", () => profile.ShowUser(@"peppy"));
|
AddStep("Show ppy from username", () => profile.ShowUser(new APIUser { Username = @"peppy" }));
|
||||||
AddStep("Show flyte from username", () => profile.ShowUser(@"flyte"));
|
AddStep("Show flyte from username", () => profile.ShowUser(new APIUser { Username = @"flyte" }));
|
||||||
|
|
||||||
AddStep("Hide", profile.Hide);
|
AddStep("Hide", profile.Hide);
|
||||||
AddStep("Show without reload", profile.Show);
|
AddStep("Show without reload", profile.Show);
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays.Profile.Header.Components;
|
using osu.Game.Overlays.Profile.Header.Components;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -48,13 +48,13 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
AddUntilStep("Is hidden", () => container.Alpha == 0);
|
AddUntilStep("Is hidden", () => container.Alpha == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static readonly User[] users =
|
private static readonly APIUser[] users =
|
||||||
{
|
{
|
||||||
new User { Id = 1, PreviousUsernames = new[] { "username1" } },
|
new APIUser { Id = 1, PreviousUsernames = new[] { "username1" } },
|
||||||
new User { Id = 2, PreviousUsernames = new[] { "longusername", "longerusername" } },
|
new APIUser { Id = 2, PreviousUsernames = new[] { "longusername", "longerusername" } },
|
||||||
new User { Id = 3, PreviousUsernames = new[] { "test", "angelsim", "verylongusername" } },
|
new APIUser { Id = 3, PreviousUsernames = new[] { "test", "angelsim", "verylongusername" } },
|
||||||
new User { Id = 4, PreviousUsernames = new[] { "ihavenoidea", "howcani", "makethistext", "anylonger" } },
|
new APIUser { Id = 4, PreviousUsernames = new[] { "ihavenoidea", "howcani", "makethistext", "anylonger" } },
|
||||||
new User { Id = 5, PreviousUsernames = Array.Empty<string>() },
|
new APIUser { Id = 5, PreviousUsernames = Array.Empty<string>() },
|
||||||
null
|
null
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -8,9 +8,9 @@ using osu.Framework.Graphics.Containers;
|
|||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Profile.Sections;
|
using osu.Game.Overlays.Profile.Sections;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -44,7 +44,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
AddStep("Show cookiezi", () => ranks.User.Value = new User { Id = 124493 });
|
AddStep("Show cookiezi", () => ranks.User.Value = new APIUser { Id = 124493 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,10 +9,10 @@ using osu.Game.Online.API;
|
|||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Mania;
|
using osu.Game.Rulesets.Mania;
|
||||||
using osu.Game.Users;
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Taiko;
|
using osu.Game.Rulesets.Taiko;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
@ -23,7 +23,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private IAPIProvider api { get; set; }
|
private IAPIProvider api { get; set; }
|
||||||
|
|
||||||
private readonly Bindable<User> user = new Bindable<User>();
|
private readonly Bindable<APIUser> user = new Bindable<APIUser>();
|
||||||
private GetUserRequest request;
|
private GetUserRequest request;
|
||||||
private readonly LoadingLayer loading;
|
private readonly LoadingLayer loading;
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
|
|
||||||
private class UserTestContainer : FillFlowContainer
|
private class UserTestContainer : FillFlowContainer
|
||||||
{
|
{
|
||||||
public readonly Bindable<User> User = new Bindable<User>();
|
public readonly Bindable<APIUser> User = new Bindable<APIUser>();
|
||||||
|
|
||||||
public UserTestContainer()
|
public UserTestContainer()
|
||||||
{
|
{
|
||||||
@ -85,7 +85,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
User.BindValueChanged(onUserUpdate, true);
|
User.BindValueChanged(onUserUpdate, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onUserUpdate(ValueChangedEvent<User> user)
|
private void onUserUpdate(ValueChangedEvent<APIUser> user)
|
||||||
{
|
{
|
||||||
Clear();
|
Clear();
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Screens.OnlinePlay.Components;
|
using osu.Game.Screens.OnlinePlay.Components;
|
||||||
using osu.Game.Tests.Visual.OnlinePlay;
|
using osu.Game.Tests.Visual.OnlinePlay;
|
||||||
@ -19,7 +20,7 @@ namespace osu.Game.Tests.Visual.Playlists
|
|||||||
|
|
||||||
for (int i = 0; i < 50; i++)
|
for (int i = 0; i < 50; i++)
|
||||||
{
|
{
|
||||||
SelectedRoom.Value.RecentParticipants.Add(new User
|
SelectedRoom.Value.RecentParticipants.Add(new APIUser
|
||||||
{
|
{
|
||||||
Username = "peppy",
|
Username = "peppy",
|
||||||
Statistics = new UserStatistics { GlobalRank = 1234 },
|
Statistics = new UserStatistics { GlobalRank = 1234 },
|
||||||
|
@ -14,6 +14,7 @@ using osu.Game.Graphics.Containers;
|
|||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Rooms;
|
using osu.Game.Online.Rooms;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Rulesets.Scoring;
|
using osu.Game.Rulesets.Scoring;
|
||||||
@ -21,7 +22,6 @@ using osu.Game.Scoring;
|
|||||||
using osu.Game.Screens.OnlinePlay.Playlists;
|
using osu.Game.Screens.OnlinePlay.Playlists;
|
||||||
using osu.Game.Screens.Ranking;
|
using osu.Game.Screens.Ranking;
|
||||||
using osu.Game.Tests.Beatmaps;
|
using osu.Game.Tests.Beatmaps;
|
||||||
using osu.Game.Users;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Playlists
|
namespace osu.Game.Tests.Visual.Playlists
|
||||||
{
|
{
|
||||||
@ -260,7 +260,7 @@ namespace osu.Game.Tests.Visual.Playlists
|
|||||||
Rank = userScore.Rank,
|
Rank = userScore.Rank,
|
||||||
MaxCombo = userScore.MaxCombo,
|
MaxCombo = userScore.MaxCombo,
|
||||||
TotalScore = userScore.TotalScore - i,
|
TotalScore = userScore.TotalScore - i,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Username = $"peppy{i}",
|
Username = $"peppy{i}",
|
||||||
@ -278,7 +278,7 @@ namespace osu.Game.Tests.Visual.Playlists
|
|||||||
Rank = userScore.Rank,
|
Rank = userScore.Rank,
|
||||||
MaxCombo = userScore.MaxCombo,
|
MaxCombo = userScore.MaxCombo,
|
||||||
TotalScore = userScore.TotalScore + i,
|
TotalScore = userScore.TotalScore + i,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Username = $"peppy{i}",
|
Username = $"peppy{i}",
|
||||||
@ -314,7 +314,7 @@ namespace osu.Game.Tests.Visual.Playlists
|
|||||||
Rank = ScoreRank.X,
|
Rank = ScoreRank.X,
|
||||||
MaxCombo = 1000,
|
MaxCombo = 1000,
|
||||||
TotalScore = startTotalScore + (sort == "score_asc" ? i : -i),
|
TotalScore = startTotalScore + (sort == "score_asc" ? i : -i),
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Username = $"peppy{i}",
|
Username = $"peppy{i}",
|
||||||
|
@ -8,6 +8,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Colour;
|
using osu.Framework.Graphics.Colour;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Rulesets.Osu.Mods;
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
@ -15,7 +16,6 @@ using osu.Game.Rulesets.Scoring;
|
|||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Screens.Ranking.Expanded.Accuracy;
|
using osu.Game.Screens.Ranking.Expanded.Accuracy;
|
||||||
using osu.Game.Tests.Beatmaps;
|
using osu.Game.Tests.Beatmaps;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Ranking
|
namespace osu.Game.Tests.Visual.Ranking
|
||||||
@ -66,7 +66,7 @@ namespace osu.Game.Tests.Visual.Ranking
|
|||||||
|
|
||||||
private ScoreInfo createScore(double accuracy, ScoreRank rank) => new ScoreInfo
|
private ScoreInfo createScore(double accuracy, ScoreRank rank) => new ScoreInfo
|
||||||
{
|
{
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Username = "peppy",
|
Username = "peppy",
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
// 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.Linq;
|
using System.Linq;
|
||||||
|
using JetBrains.Annotations;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Extensions.Color4Extensions;
|
using osu.Framework.Extensions.Color4Extensions;
|
||||||
@ -11,6 +12,7 @@ using osu.Framework.Graphics.Shapes;
|
|||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
@ -18,7 +20,6 @@ using osu.Game.Scoring;
|
|||||||
using osu.Game.Screens.Ranking;
|
using osu.Game.Screens.Ranking;
|
||||||
using osu.Game.Screens.Ranking.Expanded;
|
using osu.Game.Screens.Ranking.Expanded;
|
||||||
using osu.Game.Tests.Beatmaps;
|
using osu.Game.Tests.Beatmaps;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Ranking
|
namespace osu.Game.Tests.Visual.Ranking
|
||||||
@ -31,7 +32,7 @@ namespace osu.Game.Tests.Visual.Ranking
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestMapWithKnownMapper()
|
public void TestMapWithKnownMapper()
|
||||||
{
|
{
|
||||||
var author = new User { Username = "mapper_name" };
|
var author = new APIUser { Username = "mapper_name" };
|
||||||
|
|
||||||
AddStep("show example score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo)
|
AddStep("show example score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo)
|
||||||
{
|
{
|
||||||
@ -42,7 +43,7 @@ namespace osu.Game.Tests.Visual.Ranking
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestExcessMods()
|
public void TestExcessMods()
|
||||||
{
|
{
|
||||||
var author = new User { Username = "mapper_name" };
|
var author = new APIUser { Username = "mapper_name" };
|
||||||
|
|
||||||
AddStep("show excess mods score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo, true)
|
AddStep("show excess mods score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo, true)
|
||||||
{
|
{
|
||||||
@ -57,7 +58,7 @@ namespace osu.Game.Tests.Visual.Ranking
|
|||||||
{
|
{
|
||||||
AddStep("show example score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo)
|
AddStep("show example score", () => showPanel(new TestScoreInfo(new OsuRuleset().RulesetInfo)
|
||||||
{
|
{
|
||||||
BeatmapInfo = createTestBeatmap(null)
|
BeatmapInfo = createTestBeatmap(new APIUser())
|
||||||
}));
|
}));
|
||||||
|
|
||||||
AddAssert("mapped by text not present", () =>
|
AddAssert("mapped by text not present", () =>
|
||||||
@ -74,7 +75,7 @@ namespace osu.Game.Tests.Visual.Ranking
|
|||||||
var ruleset = new OsuRuleset();
|
var ruleset = new OsuRuleset();
|
||||||
|
|
||||||
var mods = new Mod[] { ruleset.GetAutoplayMod() };
|
var mods = new Mod[] { ruleset.GetAutoplayMod() };
|
||||||
var beatmap = createTestBeatmap(null);
|
var beatmap = createTestBeatmap(new APIUser());
|
||||||
|
|
||||||
showPanel(new TestScoreInfo(ruleset.RulesetInfo)
|
showPanel(new TestScoreInfo(ruleset.RulesetInfo)
|
||||||
{
|
{
|
||||||
@ -90,7 +91,7 @@ namespace osu.Game.Tests.Visual.Ranking
|
|||||||
private void showPanel(ScoreInfo score) =>
|
private void showPanel(ScoreInfo score) =>
|
||||||
Child = new ExpandedPanelMiddleContentContainer(score);
|
Child = new ExpandedPanelMiddleContentContainer(score);
|
||||||
|
|
||||||
private BeatmapInfo createTestBeatmap(User author)
|
private BeatmapInfo createTestBeatmap([NotNull] APIUser author)
|
||||||
{
|
{
|
||||||
var beatmap = new TestBeatmap(rulesetStore.GetRuleset(0)).BeatmapInfo;
|
var beatmap = new TestBeatmap(rulesetStore.GetRuleset(0)).BeatmapInfo;
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
loadBeatmaps();
|
loadBeatmaps();
|
||||||
|
|
||||||
AddStep("Sort by author", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Author }, false));
|
AddStep("Sort by author", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Author }, false));
|
||||||
AddAssert("Check zzzzz is at bottom", () => carousel.BeatmapSets.Last().Metadata.AuthorString == "zzzzz");
|
AddAssert("Check zzzzz is at bottom", () => carousel.BeatmapSets.Last().Metadata.Author.Username == "zzzzz");
|
||||||
AddStep("Sort by artist", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Artist }, false));
|
AddStep("Sort by artist", () => carousel.Filter(new FilterCriteria { Sort = SortMode.Artist }, false));
|
||||||
AddAssert($"Check #{set_count} is at bottom", () => carousel.BeatmapSets.Last().Metadata.Title.EndsWith($"#{set_count}!", StringComparison.Ordinal));
|
AddAssert($"Check #{set_count} is at bottom", () => carousel.BeatmapSets.Last().Metadata.Title.EndsWith($"#{set_count}!", StringComparison.Ordinal));
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Online.Leaderboards;
|
using osu.Game.Online.Leaderboards;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
@ -133,7 +134,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
MaxCombo = 244,
|
MaxCombo = 244,
|
||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock() },
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock() },
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6602580,
|
Id = 6602580,
|
||||||
Username = @"waaiiru",
|
Username = @"waaiiru",
|
||||||
@ -156,7 +157,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
MaxCombo = 244,
|
MaxCombo = 244,
|
||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6602580,
|
Id = 6602580,
|
||||||
Username = @"waaiiru",
|
Username = @"waaiiru",
|
||||||
@ -198,7 +199,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6602580,
|
Id = 6602580,
|
||||||
Username = @"waaiiru",
|
Username = @"waaiiru",
|
||||||
@ -217,7 +218,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 4608074,
|
Id = 4608074,
|
||||||
Username = @"Skycries",
|
Username = @"Skycries",
|
||||||
@ -236,7 +237,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 1014222,
|
Id = 1014222,
|
||||||
Username = @"eLy",
|
Username = @"eLy",
|
||||||
@ -255,7 +256,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 1541390,
|
Id = 1541390,
|
||||||
Username = @"Toukai",
|
Username = @"Toukai",
|
||||||
@ -274,7 +275,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2243452,
|
Id = 2243452,
|
||||||
Username = @"Satoruu",
|
Username = @"Satoruu",
|
||||||
@ -293,7 +294,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2705430,
|
Id = 2705430,
|
||||||
Username = @"Mooha",
|
Username = @"Mooha",
|
||||||
@ -312,7 +313,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 7151382,
|
Id = 7151382,
|
||||||
Username = @"Mayuri Hana",
|
Username = @"Mayuri Hana",
|
||||||
@ -331,7 +332,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 2051389,
|
Id = 2051389,
|
||||||
Username = @"FunOrange",
|
Username = @"FunOrange",
|
||||||
@ -350,7 +351,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6169483,
|
Id = 6169483,
|
||||||
Username = @"-Hebel-",
|
Username = @"-Hebel-",
|
||||||
@ -369,7 +370,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
//Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
BeatmapInfo = beatmapInfo,
|
BeatmapInfo = beatmapInfo,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6702666,
|
Id = 6702666,
|
||||||
Username = @"prhtnsm",
|
Username = @"prhtnsm",
|
||||||
|
@ -9,6 +9,7 @@ using osu.Framework.Testing;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Online.API;
|
using osu.Game.Online.API;
|
||||||
using osu.Game.Online.API.Requests;
|
using osu.Game.Online.API.Requests;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Catch;
|
using osu.Game.Rulesets.Catch;
|
||||||
using osu.Game.Rulesets.Mania;
|
using osu.Game.Rulesets.Mania;
|
||||||
@ -40,9 +41,9 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
|
|
||||||
base.SetUpSteps();
|
base.SetUpSteps();
|
||||||
|
|
||||||
User getUser(int? rulesetID)
|
APIUser getUser(int? rulesetID)
|
||||||
{
|
{
|
||||||
return new User
|
return new APIUser
|
||||||
{
|
{
|
||||||
Username = @"Dummy",
|
Username = @"Dummy",
|
||||||
Id = 1001,
|
Id = 1001,
|
||||||
|
@ -18,6 +18,7 @@ using osu.Framework.Testing;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
@ -29,7 +30,6 @@ using osu.Game.Screens.Play;
|
|||||||
using osu.Game.Screens.Select;
|
using osu.Game.Screens.Select;
|
||||||
using osu.Game.Screens.Select.Carousel;
|
using osu.Game.Screens.Select.Carousel;
|
||||||
using osu.Game.Screens.Select.Filter;
|
using osu.Game.Screens.Select.Filter;
|
||||||
using osu.Game.Users;
|
|
||||||
using osuTK.Input;
|
using osuTK.Input;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.SongSelect
|
namespace osu.Game.Tests.Visual.SongSelect
|
||||||
@ -807,7 +807,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
|
|
||||||
songSelect.PresentScore(new ScoreInfo
|
songSelect.PresentScore(new ScoreInfo
|
||||||
{
|
{
|
||||||
User = new User { Username = "woo" },
|
User = new APIUser { Username = "woo" },
|
||||||
BeatmapInfo = getPresentBeatmap(),
|
BeatmapInfo = getPresentBeatmap(),
|
||||||
Ruleset = getPresentBeatmap().Ruleset
|
Ruleset = getPresentBeatmap().Ruleset
|
||||||
});
|
});
|
||||||
@ -839,7 +839,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
|
|
||||||
songSelect.PresentScore(new ScoreInfo
|
songSelect.PresentScore(new ScoreInfo
|
||||||
{
|
{
|
||||||
User = new User { Username = "woo" },
|
User = new APIUser { Username = "woo" },
|
||||||
BeatmapInfo = getPresentBeatmap(),
|
BeatmapInfo = getPresentBeatmap(),
|
||||||
Ruleset = getPresentBeatmap().Ruleset
|
Ruleset = getPresentBeatmap().Ruleset
|
||||||
});
|
});
|
||||||
|
@ -5,6 +5,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
using osu.Game.Online.Leaderboards;
|
using osu.Game.Online.Leaderboards;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
@ -60,7 +61,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
MaxCombo = 244,
|
MaxCombo = 244,
|
||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 6602580,
|
Id = 6602580,
|
||||||
Username = @"waaiiru",
|
Username = @"waaiiru",
|
||||||
@ -78,7 +79,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
Accuracy = 1,
|
Accuracy = 1,
|
||||||
MaxCombo = 244,
|
MaxCombo = 244,
|
||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 4608074,
|
Id = 4608074,
|
||||||
Username = @"Skycries",
|
Username = @"Skycries",
|
||||||
@ -96,7 +97,7 @@ namespace osu.Game.Tests.Visual.SongSelect
|
|||||||
Accuracy = 1,
|
Accuracy = 1,
|
||||||
MaxCombo = 244,
|
MaxCombo = 244,
|
||||||
TotalScore = 1707827,
|
TotalScore = 1707827,
|
||||||
User = new User
|
User = new APIUser
|
||||||
{
|
{
|
||||||
Id = 1541390,
|
Id = 1541390,
|
||||||
Username = @"Toukai",
|
Username = @"Toukai",
|
||||||
|
@ -7,11 +7,11 @@ using osu.Game.Overlays.Dashboard.Home;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Users;
|
|
||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Game.Online.API.Requests.Responses;
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
using APIUser = osu.Game.Online.API.Requests.Responses.APIUser;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.UserInterface
|
namespace osu.Game.Tests.Visual.UserInterface
|
||||||
{
|
{
|
||||||
@ -62,7 +62,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
{
|
{
|
||||||
Title = "Very Long Title (TV size) [TATOE]",
|
Title = "Very Long Title (TV size) [TATOE]",
|
||||||
Artist = "This artist has a really long name how is this possible",
|
Artist = "This artist has a really long name how is this possible",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = "author",
|
Username = "author",
|
||||||
Id = 100
|
Id = 100
|
||||||
@ -77,7 +77,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
{
|
{
|
||||||
Title = "Very Long Title (TV size) [TATOE]",
|
Title = "Very Long Title (TV size) [TATOE]",
|
||||||
Artist = "This artist has a really long name how is this possible",
|
Artist = "This artist has a really long name how is this possible",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = "author",
|
Username = "author",
|
||||||
Id = 100
|
Id = 100
|
||||||
@ -96,7 +96,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
{
|
{
|
||||||
Title = "Very Long Title (TV size) [TATOE]",
|
Title = "Very Long Title (TV size) [TATOE]",
|
||||||
Artist = "This artist has a really long name how is this possible",
|
Artist = "This artist has a really long name how is this possible",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = "author",
|
Username = "author",
|
||||||
Id = 100
|
Id = 100
|
||||||
@ -111,7 +111,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
{
|
{
|
||||||
Title = "Very Long Title (TV size) [TATOE]",
|
Title = "Very Long Title (TV size) [TATOE]",
|
||||||
Artist = "This artist has a really long name how is this possible",
|
Artist = "This artist has a really long name how is this possible",
|
||||||
Author = new User
|
Author = new APIUser
|
||||||
{
|
{
|
||||||
Username = "author",
|
Username = "author",
|
||||||
Id = 100
|
Id = 100
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user