mirror of
https://github.com/ppy/osu.git
synced 2024-12-16 18:23:01 +08:00
Merge branch 'master' into roompanel
This commit is contained in:
commit
a850f4bda3
15
.vscode/launch.json
vendored
15
.vscode/launch.json
vendored
@ -3,6 +3,9 @@
|
|||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"name": "Launch VisualTests",
|
"name": "Launch VisualTests",
|
||||||
|
"windows": {
|
||||||
|
"type": "clr"
|
||||||
|
},
|
||||||
"type": "mono",
|
"type": "mono",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${workspaceRoot}/osu.Desktop.VisualTests/bin/Debug/osu!.exe",
|
"program": "${workspaceRoot}/osu.Desktop.VisualTests/bin/Debug/osu!.exe",
|
||||||
@ -11,10 +14,13 @@
|
|||||||
"preLaunchTask": "build",
|
"preLaunchTask": "build",
|
||||||
"runtimeExecutable": null,
|
"runtimeExecutable": null,
|
||||||
"env": {},
|
"env": {},
|
||||||
"externalConsole": false
|
"console": "internalConsole"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Launch Desktop",
|
"name": "Launch Desktop",
|
||||||
|
"windows": {
|
||||||
|
"type": "clr"
|
||||||
|
},
|
||||||
"type": "mono",
|
"type": "mono",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${workspaceRoot}/osu.Desktop/bin/Debug/osu!.exe",
|
"program": "${workspaceRoot}/osu.Desktop/bin/Debug/osu!.exe",
|
||||||
@ -23,10 +29,15 @@
|
|||||||
"preLaunchTask": "build",
|
"preLaunchTask": "build",
|
||||||
"runtimeExecutable": null,
|
"runtimeExecutable": null,
|
||||||
"env": {},
|
"env": {},
|
||||||
"externalConsole": false
|
"console": "internalConsole"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Attach",
|
"name": "Attach",
|
||||||
|
"windows": {
|
||||||
|
"type": "clr",
|
||||||
|
"request": "attach",
|
||||||
|
"processName": "osu!"
|
||||||
|
},
|
||||||
"type": "mono",
|
"type": "mono",
|
||||||
"request": "attach",
|
"request": "attach",
|
||||||
"address": "localhost",
|
"address": "localhost",
|
||||||
|
51
.vscode/tasks.json
vendored
51
.vscode/tasks.json
vendored
@ -2,25 +2,50 @@
|
|||||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||||
// for the documentation about the tasks.json format
|
// for the documentation about the tasks.json format
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"windows": {
|
|
||||||
"command": "msbuild"
|
|
||||||
},
|
|
||||||
"linux": {
|
|
||||||
"command": "xbuild"
|
|
||||||
},
|
|
||||||
"args": [
|
|
||||||
// Ask msbuild to generate full paths for file names.
|
|
||||||
"/property:GenerateFullPaths=true"
|
|
||||||
],
|
|
||||||
"taskSelector": "/t:",
|
"taskSelector": "/t:",
|
||||||
"showOutput": "silent",
|
|
||||||
"tasks": [
|
"tasks": [
|
||||||
{
|
{
|
||||||
"taskName": "build",
|
"taskName": "build",
|
||||||
// Show the output window only if unrecognized errors occur.
|
"isShellCommand": true,
|
||||||
"showOutput": "silent",
|
"showOutput": "silent",
|
||||||
|
"command": "msbuild",
|
||||||
|
"args": [
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/property:DebugType=portable"
|
||||||
|
],
|
||||||
|
"windows": {
|
||||||
|
"args": [
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/property:DebugType=portable",
|
||||||
|
"/m" //parallel compiling support. doesn't work well with mono atm
|
||||||
|
]
|
||||||
|
},
|
||||||
// Use the standard MS compiler pattern to detect errors, warnings and infos
|
// Use the standard MS compiler pattern to detect errors, warnings and infos
|
||||||
"problemMatcher": "$msCompile"
|
"problemMatcher": "$msCompile",
|
||||||
|
"isBuildCommand": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"taskName": "rebuild",
|
||||||
|
"isShellCommand": true,
|
||||||
|
"showOutput": "silent",
|
||||||
|
"command": "msbuild",
|
||||||
|
"args": [
|
||||||
|
// Ask msbuild to generate full paths for file names.
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/property:DebugType=portable",
|
||||||
|
"/target:Clean,Build"
|
||||||
|
],
|
||||||
|
"windows": {
|
||||||
|
"args": [
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/property:DebugType=portable",
|
||||||
|
"/target:Clean,Build",
|
||||||
|
"/m" //parallel compiling support. doesn't work well with mono atm
|
||||||
|
]
|
||||||
|
},
|
||||||
|
// Use the standard MS compiler pattern to detect errors, warnings and infos
|
||||||
|
"problemMatcher": "$msCompile",
|
||||||
|
"isBuildCommand": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -10,7 +10,7 @@ install:
|
|||||||
- cmd: git submodule update --init --recursive
|
- cmd: git submodule update --init --recursive
|
||||||
- cmd: choco install resharper-clt -y
|
- cmd: choco install resharper-clt -y
|
||||||
- cmd: choco install nvika -y
|
- cmd: choco install nvika -y
|
||||||
- cmd: appveyor DownloadFile https://github.com/peppy/CodeFileSanity/releases/download/v0.1/CodeFileSanity.exe
|
- cmd: appveyor DownloadFile https://github.com/peppy/CodeFileSanity/releases/download/v0.2.2/CodeFileSanity.exe
|
||||||
before_build:
|
before_build:
|
||||||
- cmd: CodeFileSanity.exe
|
- cmd: CodeFileSanity.exe
|
||||||
- cmd: nuget restore
|
- cmd: nuget restore
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit a50dd75b114da963c75e6a5314099d99140035b8
|
Subproject commit 9204b838504a51ffe7577c103b91270a2687bfb8
|
@ -1 +1 @@
|
|||||||
Subproject commit 39657fc6066ea3a141ac71cabf67ec9ebf24975c
|
Subproject commit b90c4ed490f76f2995662b3a8af3a32b8756a012
|
@ -23,14 +23,14 @@ Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/maste
|
|||||||
</startup>
|
</startup>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="DeltaCompressionDotNet.MsDelta" publicKeyToken="46b2138a390abf55" culture="neutral" />
|
<assemblyIdentity name="DeltaCompressionDotNet.MsDelta" publicKeyToken="46b2138a390abf55" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
@ -53,7 +53,7 @@ namespace osu.Desktop.Deploy
|
|||||||
private static string nupkgFilename(string ver) => $"{PackageName}.{ver}.nupkg";
|
private static string nupkgFilename(string ver) => $"{PackageName}.{ver}.nupkg";
|
||||||
private static string nupkgDistroFilename(string ver) => $"{PackageName}-{ver}-full.nupkg";
|
private static string nupkgDistroFilename(string ver) => $"{PackageName}-{ver}-full.nupkg";
|
||||||
|
|
||||||
private static Stopwatch sw = new Stopwatch();
|
private static readonly Stopwatch sw = new Stopwatch();
|
||||||
|
|
||||||
private static string codeSigningPassword;
|
private static string codeSigningPassword;
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ namespace osu.Desktop.Deploy
|
|||||||
write($"- Creating release {version}...", ConsoleColor.Yellow);
|
write($"- Creating release {version}...", ConsoleColor.Yellow);
|
||||||
var req = new JsonWebRequest<GitHubRelease>($"{GitHubApiEndpoint}")
|
var req = new JsonWebRequest<GitHubRelease>($"{GitHubApiEndpoint}")
|
||||||
{
|
{
|
||||||
Method = HttpMethod.POST
|
Method = HttpMethod.POST,
|
||||||
};
|
};
|
||||||
req.AddRaw(JsonConvert.SerializeObject(new GitHubRelease
|
req.AddRaw(JsonConvert.SerializeObject(new GitHubRelease
|
||||||
{
|
{
|
||||||
@ -215,6 +215,7 @@ namespace osu.Desktop.Deploy
|
|||||||
var upload = new WebRequest(assetUploadUrl, Path.GetFileName(a))
|
var upload = new WebRequest(assetUploadUrl, Path.GetFileName(a))
|
||||||
{
|
{
|
||||||
Method = HttpMethod.POST,
|
Method = HttpMethod.POST,
|
||||||
|
Timeout = 240000,
|
||||||
ContentType = "application/octet-stream",
|
ContentType = "application/octet-stream",
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -261,7 +262,7 @@ namespace osu.Desktop.Deploy
|
|||||||
|
|
||||||
if (!File.Exists(Path.Combine(ReleasesFolder, nupkgDistroFilename(lastRelease.Name))))
|
if (!File.Exists(Path.Combine(ReleasesFolder, nupkgDistroFilename(lastRelease.Name))))
|
||||||
{
|
{
|
||||||
write("Last verion's package not found locally.", ConsoleColor.Red);
|
write("Last version's package not found locally.", ConsoleColor.Red);
|
||||||
requireDownload = true;
|
requireDownload = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -282,6 +283,8 @@ namespace osu.Desktop.Deploy
|
|||||||
|
|
||||||
foreach (var a in assets)
|
foreach (var a in assets)
|
||||||
{
|
{
|
||||||
|
if (a.Name.EndsWith(".exe")) continue;
|
||||||
|
|
||||||
write($"- Downloading {a.Name}...", ConsoleColor.Yellow);
|
write($"- Downloading {a.Name}...", ConsoleColor.Yellow);
|
||||||
new FileWebRequest(Path.Combine(ReleasesFolder, a.Name), $"{GitHubApiEndpoint}/assets/{a.Id}").AuthenticatedBlockingPerform();
|
new FileWebRequest(Path.Combine(ReleasesFolder, a.Name), $"{GitHubApiEndpoint}/assets/{a.Id}").AuthenticatedBlockingPerform();
|
||||||
}
|
}
|
||||||
@ -337,6 +340,7 @@ namespace osu.Desktop.Deploy
|
|||||||
WorkingDirectory = solutionPath,
|
WorkingDirectory = solutionPath,
|
||||||
CreateNoWindow = true,
|
CreateNoWindow = true,
|
||||||
RedirectStandardOutput = true,
|
RedirectStandardOutput = true,
|
||||||
|
RedirectStandardError = true,
|
||||||
UseShellExecute = false,
|
UseShellExecute = false,
|
||||||
WindowStyle = ProcessWindowStyle.Hidden
|
WindowStyle = ProcessWindowStyle.Hidden
|
||||||
};
|
};
|
||||||
@ -345,6 +349,7 @@ namespace osu.Desktop.Deploy
|
|||||||
if (p == null) return false;
|
if (p == null) return false;
|
||||||
|
|
||||||
string output = p.StandardOutput.ReadToEnd();
|
string output = p.StandardOutput.ReadToEnd();
|
||||||
|
output += p.StandardError.ReadToEnd();
|
||||||
|
|
||||||
if (p.ExitCode == 0) return true;
|
if (p.ExitCode == 0) return true;
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<LangVersion>6</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
@ -68,9 +69,8 @@
|
|||||||
<HintPath>$(SolutionDir)\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.Rocks.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.Rocks.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>$(SolutionDir)\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="NuGet.Squirrel, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="NuGet.Squirrel, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>$(SolutionDir)\packages\squirrel.windows.1.5.2\lib\Net45\NuGet.Squirrel.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\squirrel.windows.1.5.2\lib\Net45\NuGet.Squirrel.dll</HintPath>
|
||||||
@ -104,7 +104,9 @@
|
|||||||
<None Include="..\osu.licenseheader">
|
<None Include="..\osu.licenseheader">
|
||||||
<Link>osu.licenseheader</Link>
|
<Link>osu.licenseheader</Link>
|
||||||
</None>
|
</None>
|
||||||
<None Include="App.config" />
|
<None Include="App.config">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -6,7 +6,7 @@ Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/maste
|
|||||||
<packages>
|
<packages>
|
||||||
<package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net452" />
|
<package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net452" />
|
||||||
<package id="Mono.Cecil" version="0.9.6.4" targetFramework="net452" />
|
<package id="Mono.Cecil" version="0.9.6.4" targetFramework="net452" />
|
||||||
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
|
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net452" />
|
||||||
<package id="NuGet.CommandLine" version="3.5.0" targetFramework="net452" developmentDependency="true" />
|
<package id="NuGet.CommandLine" version="3.5.0" targetFramework="net452" developmentDependency="true" />
|
||||||
<package id="Splat" version="2.0.0" targetFramework="net452" />
|
<package id="Splat" version="2.0.0" targetFramework="net452" />
|
||||||
<package id="squirrel.windows" version="1.5.2" targetFramework="net452" />
|
<package id="squirrel.windows" version="1.5.2" targetFramework="net452" />
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using NUnit.Framework;
|
|
||||||
using osu.Desktop.VisualTests;
|
|
||||||
using osu.Framework.Desktop.Platform;
|
|
||||||
using osu.Game.Modes;
|
|
||||||
using osu.Game.Modes.Catch;
|
|
||||||
using osu.Game.Modes.Mania;
|
|
||||||
using osu.Game.Modes.Osu;
|
|
||||||
using osu.Game.Modes.Taiko;
|
|
||||||
|
|
||||||
namespace osu.Desktop.Tests
|
|
||||||
{
|
|
||||||
[TestFixture]
|
|
||||||
public class BenchmarkTest
|
|
||||||
{
|
|
||||||
[Test]
|
|
||||||
public void TestBenchmark()
|
|
||||||
{
|
|
||||||
using (var host = new HeadlessGameHost())
|
|
||||||
{
|
|
||||||
Ruleset.Register(new OsuRuleset());
|
|
||||||
Ruleset.Register(new TaikoRuleset());
|
|
||||||
Ruleset.Register(new ManiaRuleset());
|
|
||||||
Ruleset.Register(new CatchRuleset());
|
|
||||||
|
|
||||||
host.Run(new Benchmark());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
22
osu.Desktop.Tests/VisualTests.cs
Normal file
22
osu.Desktop.Tests/VisualTests.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using NUnit.Framework;
|
||||||
|
using osu.Desktop.VisualTests;
|
||||||
|
using osu.Framework.Desktop.Platform;
|
||||||
|
|
||||||
|
namespace osu.Desktop.Tests
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class VisualTests
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void TestVisualTests()
|
||||||
|
{
|
||||||
|
using (var host = new HeadlessGameHost())
|
||||||
|
{
|
||||||
|
host.Run(new AutomatedVisualTestGame());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
-->
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
@ -21,6 +21,7 @@
|
|||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||||
|
<LangVersion>6</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
@ -33,18 +34,17 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="mscorlib" />
|
<Reference Include="mscorlib" />
|
||||||
<Reference Include="nunit.framework, Version=3.5.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>$(SolutionDir)\packages\NUnit.3.5.0\lib\net45\nunit.framework.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
<Private>True</Private>
|
</Reference>
|
||||||
|
<Reference Include="nunit.framework, Version=3.6.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>$(SolutionDir)\packages\NUnit.3.6.1\lib\net45\nunit.framework.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="SQLite.Net, Version=3.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="SQLite.Net, Version=3.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>$(SolutionDir)\packages\SQLite.Net.Core-PCL.3.1.1\lib\portable-win8+net45+wp8+wpa81+MonoAndroid1+MonoTouch1\SQLite.Net.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\SQLite.Net.Core-PCL.3.1.1\lib\portable-win8+net45+wp8+wpa81+MonoAndroid1+MonoTouch1\SQLite.Net.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="Newtonsoft.Json">
|
|
||||||
<HintPath>$(SolutionDir)\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="SQLiteNetExtensions">
|
<Reference Include="SQLiteNetExtensions">
|
||||||
<HintPath>$(SolutionDir)\packages\SQLiteNetExtensions.1.3.0\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1\SQLiteNetExtensions.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\SQLiteNetExtensions.1.3.0\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1\SQLiteNetExtensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@ -56,7 +56,7 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="BenchmarkTest.cs" />
|
<Compile Include="VisualTests.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\osu-framework\osu.Framework.Desktop\osu.Framework.Desktop.csproj">
|
<ProjectReference Include="..\osu-framework\osu.Framework.Desktop\osu.Framework.Desktop.csproj">
|
||||||
@ -75,21 +75,21 @@
|
|||||||
<Project>{69051C69-12AE-4E7D-A3E6-460D2E282312}</Project>
|
<Project>{69051C69-12AE-4E7D-A3E6-460D2E282312}</Project>
|
||||||
<Name>osu.Desktop.VisualTests</Name>
|
<Name>osu.Desktop.VisualTests</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Catch\osu.Game.Modes.Catch.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj">
|
||||||
<Project>{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}</Project>
|
<Project>{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}</Project>
|
||||||
<Name>osu.Game.Modes.Catch</Name>
|
<Name>osu.Game.Rulesets.Catch</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Mania\osu.Game.Modes.Mania.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj">
|
||||||
<Project>{48F4582B-7687-4621-9CBE-5C24197CB536}</Project>
|
<Project>{48F4582B-7687-4621-9CBE-5C24197CB536}</Project>
|
||||||
<Name>osu.Game.Modes.Mania</Name>
|
<Name>osu.Game.Rulesets.Mania</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Osu\osu.Game.Modes.Osu.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj">
|
||||||
<Project>{C92A607B-1FDD-4954-9F92-03FF547D9080}</Project>
|
<Project>{C92A607B-1FDD-4954-9F92-03FF547D9080}</Project>
|
||||||
<Name>osu.Game.Modes.Osu</Name>
|
<Name>osu.Game.Rulesets.Osu</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Taiko\osu.Game.Modes.Taiko.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj">
|
||||||
<Project>{F167E17A-7DE6-4AF5-B920-A5112296C695}</Project>
|
<Project>{F167E17A-7DE6-4AF5-B920-A5112296C695}</Project>
|
||||||
<Name>osu.Game.Modes.Taiko</Name>
|
<Name>osu.Game.Rulesets.Taiko</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
||||||
<Project>{0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D}</Project>
|
<Project>{0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D}</Project>
|
||||||
@ -100,12 +100,14 @@
|
|||||||
<None Include="..\osu.licenseheader">
|
<None Include="..\osu.licenseheader">
|
||||||
<Link>osu.licenseheader</Link>
|
<Link>osu.licenseheader</Link>
|
||||||
</None>
|
</None>
|
||||||
<None Include="app.config" />
|
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Properties\" />
|
<Folder Include="Properties\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
-->
|
-->
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
|
||||||
<package id="NUnit" version="3.5.0" targetFramework="net45" />
|
<package id="NUnit" version="3.6.1" targetFramework="net45" />
|
||||||
<package id="SQLite.Net.Core-PCL" version="3.1.1" targetFramework="net45" />
|
<package id="SQLite.Net.Core-PCL" version="3.1.1" targetFramework="net45" />
|
||||||
<package id="SQLite.Net-PCL" version="3.1.1" targetFramework="net45" />
|
<package id="SQLite.Net-PCL" version="3.1.1" targetFramework="net45" />
|
||||||
<package id="SQLiteNetExtensions" version="1.3.0" targetFramework="net45" />
|
<package id="SQLiteNetExtensions" version="1.3.0" targetFramework="net45" />
|
||||||
|
20
osu.Desktop.VisualTests/AutomatedVisualTestGame.cs
Normal file
20
osu.Desktop.VisualTests/AutomatedVisualTestGame.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests
|
||||||
|
{
|
||||||
|
public class AutomatedVisualTestGame : OsuGameBase
|
||||||
|
{
|
||||||
|
protected override void LoadComplete()
|
||||||
|
{
|
||||||
|
base.LoadComplete();
|
||||||
|
|
||||||
|
// Have to construct this here, rather than in the constructor, because
|
||||||
|
// we depend on some dependencies to be loaded within OsuGameBase.load().
|
||||||
|
Add(new TestRunner(new TestBrowser()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
24
osu.Desktop.VisualTests/Beatmaps/TestWorkingBeatmap.cs
Normal file
24
osu.Desktop.VisualTests/Beatmaps/TestWorkingBeatmap.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Audio.Track;
|
||||||
|
using osu.Framework.Graphics.Textures;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Beatmaps
|
||||||
|
{
|
||||||
|
public class TestWorkingBeatmap : WorkingBeatmap
|
||||||
|
{
|
||||||
|
public TestWorkingBeatmap(Beatmap beatmap)
|
||||||
|
: base(beatmap.BeatmapInfo, beatmap.BeatmapInfo.BeatmapSet)
|
||||||
|
{
|
||||||
|
this.beatmap = beatmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly Beatmap beatmap;
|
||||||
|
|
||||||
|
protected override Beatmap GetBeatmap() => beatmap;
|
||||||
|
protected override Texture GetBackground() => null;
|
||||||
|
protected override Track GetTrack() => null;
|
||||||
|
}
|
||||||
|
}
|
@ -1,45 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Framework.Screens.Testing;
|
|
||||||
using osu.Game;
|
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests
|
|
||||||
{
|
|
||||||
public class Benchmark : OsuGameBase
|
|
||||||
{
|
|
||||||
private double timePerTest = 200;
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load()
|
|
||||||
{
|
|
||||||
Host.MaximumDrawHz = int.MaxValue;
|
|
||||||
Host.MaximumUpdateHz = int.MaxValue;
|
|
||||||
Host.MaximumInactiveHz = int.MaxValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
|
||||||
base.LoadComplete();
|
|
||||||
|
|
||||||
TestBrowser f = new TestBrowser();
|
|
||||||
Add(f);
|
|
||||||
|
|
||||||
Console.WriteLine($@"{Time}: Running {f.TestCount} tests for {timePerTest}ms each...");
|
|
||||||
|
|
||||||
for (int i = 1; i < f.TestCount; i++)
|
|
||||||
{
|
|
||||||
int loadableCase = i;
|
|
||||||
Scheduler.AddDelayed(delegate
|
|
||||||
{
|
|
||||||
f.LoadTest(loadableCase);
|
|
||||||
Console.WriteLine($@"{Time}: Switching to test #{loadableCase}");
|
|
||||||
}, loadableCase * timePerTest);
|
|
||||||
}
|
|
||||||
|
|
||||||
Scheduler.AddDelayed(Host.Exit, f.TestCount * timePerTest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -4,11 +4,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using osu.Framework.Desktop;
|
using osu.Framework.Desktop;
|
||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
using osu.Game.Modes;
|
|
||||||
using osu.Game.Modes.Catch;
|
|
||||||
using osu.Game.Modes.Mania;
|
|
||||||
using osu.Game.Modes.Osu;
|
|
||||||
using osu.Game.Modes.Taiko;
|
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests
|
namespace osu.Desktop.VisualTests
|
||||||
{
|
{
|
||||||
@ -21,13 +16,8 @@ namespace osu.Desktop.VisualTests
|
|||||||
|
|
||||||
using (GameHost host = Host.GetSuitableHost(@"osu"))
|
using (GameHost host = Host.GetSuitableHost(@"osu"))
|
||||||
{
|
{
|
||||||
Ruleset.Register(new OsuRuleset());
|
|
||||||
Ruleset.Register(new TaikoRuleset());
|
|
||||||
Ruleset.Register(new ManiaRuleset());
|
|
||||||
Ruleset.Register(new CatchRuleset());
|
|
||||||
|
|
||||||
if (benchmark)
|
if (benchmark)
|
||||||
host.Run(new Benchmark());
|
host.Run(new AutomatedVisualTestGame());
|
||||||
else
|
else
|
||||||
host.Run(new VisualTestGame());
|
host.Run(new VisualTestGame());
|
||||||
}
|
}
|
||||||
|
27
osu.Desktop.VisualTests/Tests/TestCaseBeatmapDetailArea.cs
Normal file
27
osu.Desktop.VisualTests/Tests/TestCaseBeatmapDetailArea.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using OpenTK;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Screens.Select;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseBeatmapDetailArea : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => @"Beatmap details in song select";
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
Add(new BeatmapDetailArea
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Size = new Vector2(550f, 450f),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
65
osu.Desktop.VisualTests/Tests/TestCaseBeatmapDetails.cs
Normal file
65
osu.Desktop.VisualTests/Tests/TestCaseBeatmapDetails.cs
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Primitives;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Database;
|
||||||
|
using osu.Game.Screens.Select;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseBeatmapDetails : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => "BeatmapDetails tab of BeatmapDetailArea";
|
||||||
|
|
||||||
|
private BeatmapDetails details;
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
Add(details = new BeatmapDetails
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Padding = new MarginPadding(150),
|
||||||
|
Beatmap = new BeatmapInfo
|
||||||
|
{
|
||||||
|
Version = "VisualTest",
|
||||||
|
Metadata = new BeatmapMetadata
|
||||||
|
{
|
||||||
|
Source = "Some guy",
|
||||||
|
Tags = "beatmap metadata example with a very very long list of tags and not much creativity",
|
||||||
|
},
|
||||||
|
Difficulty = new BeatmapDifficulty
|
||||||
|
{
|
||||||
|
CircleSize = 7,
|
||||||
|
ApproachRate = 3.5f,
|
||||||
|
OverallDifficulty = 5.7f,
|
||||||
|
DrainRate = 1,
|
||||||
|
},
|
||||||
|
StarDifficulty = 5.3f,
|
||||||
|
Metrics = new BeatmapMetrics
|
||||||
|
{
|
||||||
|
Ratings = Enumerable.Range(0,10),
|
||||||
|
Fails = Enumerable.Range(lastRange, 100).Select(i => i % 12 - 6),
|
||||||
|
Retries = Enumerable.Range(lastRange - 3, 100).Select(i => i % 12 - 6),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
AddRepeatStep("fail values", newRetryAndFailValues, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int lastRange = 1;
|
||||||
|
|
||||||
|
private void newRetryAndFailValues()
|
||||||
|
{
|
||||||
|
details.Beatmap.Metrics.Fails = Enumerable.Range(lastRange, 100).Select(i => i % 12 - 6);
|
||||||
|
details.Beatmap.Metrics.Retries = Enumerable.Range(lastRange - 3, 100).Select(i => i % 12 - 6);
|
||||||
|
details.Beatmap = details.Beatmap;
|
||||||
|
lastRange += 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,10 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using OpenTK.Graphics;
|
||||||
|
using OpenTK.Input;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Screens.Select.Options;
|
using osu.Game.Screens.Select.Options;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
@ -16,9 +19,14 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
var overlay = new BeatmapOptionsOverlay();
|
var overlay = new BeatmapOptionsOverlay();
|
||||||
|
|
||||||
|
overlay.AddButton(@"Remove", @"from unplayed", FontAwesome.fa_times_circle_o, Color4.Purple, null, Key.Number1);
|
||||||
|
overlay.AddButton(@"Clear", @"local scores", FontAwesome.fa_eraser, Color4.Purple, null, Key.Number2);
|
||||||
|
overlay.AddButton(@"Edit", @"Beatmap", FontAwesome.fa_pencil, Color4.Yellow, null, Key.Number3);
|
||||||
|
overlay.AddButton(@"Delete", @"Beatmap", FontAwesome.fa_trash, Color4.Pink, null, Key.Number4, float.MaxValue);
|
||||||
|
|
||||||
Add(overlay);
|
Add(overlay);
|
||||||
|
|
||||||
AddButton(@"Toggle", overlay.ToggleVisibility);
|
AddStep(@"Toggle", overlay.ToggleVisibility);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,14 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Threading;
|
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
internal class TestCaseChatDisplay : TestCase
|
internal class TestCaseChatDisplay : TestCase
|
||||||
{
|
{
|
||||||
private ScheduledDelegate messageRequest;
|
|
||||||
|
|
||||||
public override string Description => @"Testing chat api and overlay";
|
public override string Description => @"Testing chat api and overlay";
|
||||||
|
|
||||||
public override void Reset()
|
public override void Reset()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.Dialog;
|
using osu.Game.Overlays.Dialog;
|
||||||
@ -20,7 +20,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
Add(overlay = new DialogOverlay());
|
Add(overlay = new DialogOverlay());
|
||||||
|
|
||||||
AddButton("dialog #1", () => overlay.Push(new PopupDialog
|
AddStep("dialog #1", () => overlay.Push(new PopupDialog
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.fa_trash_o,
|
Icon = FontAwesome.fa_trash_o,
|
||||||
HeaderText = @"Confirm deletion of",
|
HeaderText = @"Confirm deletion of",
|
||||||
@ -40,7 +40,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
AddButton("dialog #2", () => overlay.Push(new PopupDialog
|
AddStep("dialog #2", () => overlay.Push(new PopupDialog
|
||||||
{
|
{
|
||||||
Icon = FontAwesome.fa_gear,
|
Icon = FontAwesome.fa_gear,
|
||||||
HeaderText = @"What do you want to do with",
|
HeaderText = @"What do you want to do with",
|
||||||
|
@ -2,9 +2,10 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Screens.Tournament;
|
using osu.Game.Screens.Tournament;
|
||||||
using osu.Game.Screens.Tournament.Teams;
|
using osu.Game.Screens.Tournament.Teams;
|
||||||
|
using osu.Game.Users;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
@ -24,57 +25,57 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
private class TestTeamList : ITeamList
|
private class TestTeamList : ITeamList
|
||||||
{
|
{
|
||||||
public IEnumerable<Team> Teams { get; } = new[]
|
public IEnumerable<Country> Teams { get; } = new[]
|
||||||
{
|
{
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "GB",
|
FlagName = "GB",
|
||||||
FullName = "United Kingdom",
|
FullName = "United Kingdom",
|
||||||
Acronym = "UK"
|
Acronym = "UK"
|
||||||
},
|
},
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "FR",
|
FlagName = "FR",
|
||||||
FullName = "France",
|
FullName = "France",
|
||||||
Acronym = "FRA"
|
Acronym = "FRA"
|
||||||
},
|
},
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "CN",
|
FlagName = "CN",
|
||||||
FullName = "China",
|
FullName = "China",
|
||||||
Acronym = "CHN"
|
Acronym = "CHN"
|
||||||
},
|
},
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "AU",
|
FlagName = "AU",
|
||||||
FullName = "Australia",
|
FullName = "Australia",
|
||||||
Acronym = "AUS"
|
Acronym = "AUS"
|
||||||
},
|
},
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "JP",
|
FlagName = "JP",
|
||||||
FullName = "Japan",
|
FullName = "Japan",
|
||||||
Acronym = "JPN"
|
Acronym = "JPN"
|
||||||
},
|
},
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "RO",
|
FlagName = "RO",
|
||||||
FullName = "Romania",
|
FullName = "Romania",
|
||||||
Acronym = "ROM"
|
Acronym = "ROM"
|
||||||
},
|
},
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "IT",
|
FlagName = "IT",
|
||||||
FullName = "Italy",
|
FullName = "Italy",
|
||||||
Acronym = "PIZZA"
|
Acronym = "PIZZA"
|
||||||
},
|
},
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "VE",
|
FlagName = "VE",
|
||||||
FullName = "Venezuela",
|
FullName = "Venezuela",
|
||||||
Acronym = "VNZ"
|
Acronym = "VNZ"
|
||||||
},
|
},
|
||||||
new Team
|
new Country
|
||||||
{
|
{
|
||||||
FlagName = "US",
|
FlagName = "US",
|
||||||
FullName = "United States of America",
|
FullName = "United States of America",
|
||||||
|
@ -5,23 +5,34 @@ using OpenTK;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Timing;
|
using osu.Framework.Timing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Modes.Catch.UI;
|
using osu.Game.Database;
|
||||||
using osu.Game.Modes.Mania.UI;
|
using osu.Game.Rulesets.Catch.UI;
|
||||||
using osu.Game.Modes.Objects;
|
using osu.Game.Rulesets.Mania.UI;
|
||||||
using osu.Game.Modes.Osu.Objects;
|
using osu.Game.Rulesets.Objects;
|
||||||
using osu.Game.Modes.Osu.UI;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
using osu.Game.Modes.Taiko.UI;
|
using osu.Game.Rulesets.Osu.UI;
|
||||||
|
using osu.Game.Rulesets.Taiko.UI;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using osu.Desktop.VisualTests.Beatmaps;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
internal class TestCaseGamefield : TestCase
|
internal class TestCaseGamefield : TestCase
|
||||||
{
|
{
|
||||||
|
private RulesetDatabase rulesets;
|
||||||
|
|
||||||
public override string Description => @"Showing hitobjects and what not.";
|
public override string Description => @"Showing hitobjects and what not.";
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(RulesetDatabase rulesets)
|
||||||
|
{
|
||||||
|
this.rulesets = rulesets;
|
||||||
|
}
|
||||||
|
|
||||||
public override void Reset()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
base.Reset();
|
base.Reset();
|
||||||
@ -34,17 +45,28 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
objects.Add(new HitCircle
|
objects.Add(new HitCircle
|
||||||
{
|
{
|
||||||
StartTime = time,
|
StartTime = time,
|
||||||
Position = new Vector2(RNG.Next(0, 512), RNG.Next(0, 384)),
|
Position = new Vector2(RNG.Next(0, (int)OsuPlayfield.BASE_SIZE.X), RNG.Next(0, (int)OsuPlayfield.BASE_SIZE.Y)),
|
||||||
Scale = RNG.NextSingle(0.5f, 1.0f),
|
Scale = RNG.NextSingle(0.5f, 1.0f),
|
||||||
});
|
});
|
||||||
|
|
||||||
time += RNG.Next(50, 500);
|
time += RNG.Next(50, 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
Beatmap beatmap = new Beatmap
|
WorkingBeatmap beatmap = new TestWorkingBeatmap(new Beatmap
|
||||||
{
|
{
|
||||||
HitObjects = objects
|
HitObjects = objects,
|
||||||
};
|
BeatmapInfo = new BeatmapInfo
|
||||||
|
{
|
||||||
|
Difficulty = new BeatmapDifficulty(),
|
||||||
|
Ruleset = rulesets.Query<RulesetInfo>().First(),
|
||||||
|
Metadata = new BeatmapMetadata
|
||||||
|
{
|
||||||
|
Artist = @"Unknown",
|
||||||
|
Title = @"Sample Beatmap",
|
||||||
|
Author = @"peppy",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Add(new Drawable[]
|
Add(new Drawable[]
|
||||||
{
|
{
|
||||||
|
42
osu.Desktop.VisualTests/Tests/TestCaseGraph.cs
Normal file
42
osu.Desktop.VisualTests/Tests/TestCaseGraph.cs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using OpenTK;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseGraph : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => "graph";
|
||||||
|
|
||||||
|
private BarGraph graph;
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
graph = new BarGraph
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Size = new Vector2(0.5f),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
AddStep("values from 1-10", () => graph.Values = Enumerable.Range(1,10).Select(i => (float)i));
|
||||||
|
AddStep("values from 1-100", () => graph.Values = Enumerable.Range(1, 100).Select(i => (float)i));
|
||||||
|
AddStep("reversed values from 1-10", () => graph.Values = Enumerable.Range(1, 10).Reverse().Select(i => (float)i));
|
||||||
|
AddStep("Bottom to top", () => graph.Direction = BarDirection.BottomToTop);
|
||||||
|
AddStep("Top to bottom", () => graph.Direction = BarDirection.TopToBottom);
|
||||||
|
AddStep("Left to right", () => graph.Direction = BarDirection.LeftToRight);
|
||||||
|
AddStep("Right to left", () => graph.Direction = BarDirection.RightToLeft);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,25 +1,26 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using osu.Framework.Screens.Testing;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Timing;
|
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Modes.Osu.Objects;
|
|
||||||
using osu.Game.Modes.Osu.Objects.Drawables;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
using OpenTK.Graphics;
|
using osu.Framework.Testing;
|
||||||
|
using osu.Framework.Timing;
|
||||||
|
using osu.Game.Rulesets.Objects.Drawables;
|
||||||
|
using osu.Game.Rulesets.Osu.Judgements;
|
||||||
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
|
using osu.Game.Rulesets.Osu.Objects.Drawables;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
internal class TestCaseHitObjects : TestCase
|
internal class TestCaseHitObjects : TestCase
|
||||||
{
|
{
|
||||||
private FramedClock framedClock;
|
private readonly FramedClock framedClock;
|
||||||
|
|
||||||
private bool auto;
|
private bool auto;
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
private HitObjectType mode = HitObjectType.Slider;
|
private HitObjectType mode = HitObjectType.Slider;
|
||||||
|
|
||||||
private BindableNumber<double> playbackSpeed = new BindableDouble(0.5) { MinValue = 0, MaxValue = 1 };
|
private readonly BindableNumber<double> playbackSpeed = new BindableDouble(0.5) { MinValue = 0, MaxValue = 1 };
|
||||||
private Container playfieldContainer;
|
private Container playfieldContainer;
|
||||||
private Container approachContainer;
|
private Container approachContainer;
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
new Vector2(-200, 0),
|
new Vector2(-200, 0),
|
||||||
new Vector2(400, 0),
|
new Vector2(400, 0),
|
||||||
},
|
},
|
||||||
Length = 400,
|
Distance = 400,
|
||||||
Position = new Vector2(-200, 0),
|
Position = new Vector2(-200, 0),
|
||||||
Velocity = 1,
|
Velocity = 1,
|
||||||
TickDistance = 100,
|
TickDistance = 100,
|
||||||
@ -75,7 +76,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
add(new DrawableSpinner(new Spinner
|
add(new DrawableSpinner(new Spinner
|
||||||
{
|
{
|
||||||
StartTime = framedClock.CurrentTime + 600,
|
StartTime = framedClock.CurrentTime + 600,
|
||||||
Length = 1000,
|
EndTime = framedClock.CurrentTime + 1600,
|
||||||
Position = new Vector2(0, 0),
|
Position = new Vector2(0, 0),
|
||||||
}));
|
}));
|
||||||
break;
|
break;
|
||||||
@ -88,21 +89,32 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
playbackSpeed.TriggerChange();
|
playbackSpeed.TriggerChange();
|
||||||
|
|
||||||
AddButton(@"circles", () => load(HitObjectType.Circle));
|
AddStep(@"circles", () => load(HitObjectType.Circle));
|
||||||
AddButton(@"slider", () => load(HitObjectType.Slider));
|
AddStep(@"slider", () => load(HitObjectType.Slider));
|
||||||
AddButton(@"spinner", () => load(HitObjectType.Spinner));
|
AddStep(@"spinner", () => load(HitObjectType.Spinner));
|
||||||
|
|
||||||
AddToggle(@"auto", state => { auto = state; load(mode); });
|
AddToggleStep(@"auto", state => { auto = state; load(mode); });
|
||||||
|
|
||||||
ButtonsContainer.Add(new SpriteText { Text = "Playback Speed" });
|
BasicSliderBar<double> sliderBar;
|
||||||
ButtonsContainer.Add(new BasicSliderBar<double>
|
Add(new Container
|
||||||
|
{
|
||||||
|
Anchor = Anchor.TopRight,
|
||||||
|
Origin = Anchor.TopRight,
|
||||||
|
AutoSizeAxes = Axes.Both,
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new SpriteText { Text = "Playback Speed" },
|
||||||
|
sliderBar = new BasicSliderBar<double>
|
||||||
{
|
{
|
||||||
Width = 150,
|
Width = 150,
|
||||||
Height = 10,
|
Height = 10,
|
||||||
SelectionColor = Color4.Orange,
|
SelectionColor = Color4.Orange,
|
||||||
Bindable = playbackSpeed
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
sliderBar.Current.BindTo(playbackSpeed);
|
||||||
|
|
||||||
framedClock.ProcessFrame();
|
framedClock.ProcessFrame();
|
||||||
|
|
||||||
var clockAdjustContainer = new Container
|
var clockAdjustContainer = new Container
|
||||||
@ -123,7 +135,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
private int depth;
|
private int depth;
|
||||||
|
|
||||||
private void add(DrawableHitObject h)
|
private void add(DrawableOsuHitObject h)
|
||||||
{
|
{
|
||||||
h.Anchor = Anchor.Centre;
|
h.Anchor = Anchor.Centre;
|
||||||
h.Depth = depth++;
|
h.Depth = depth++;
|
||||||
@ -131,7 +143,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
if (auto)
|
if (auto)
|
||||||
{
|
{
|
||||||
h.State = ArmedState.Hit;
|
h.State = ArmedState.Hit;
|
||||||
h.Judgement = new OsuJudgementInfo { Result = HitResult.Hit };
|
h.Judgement = new OsuJudgement { Result = HitResult.Hit };
|
||||||
}
|
}
|
||||||
|
|
||||||
playfieldContainer.Add(h);
|
playfieldContainer.Add(h);
|
||||||
@ -139,5 +151,12 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
if (proxyable != null)
|
if (proxyable != null)
|
||||||
approachContainer.Add(proxyable.ProxiedLayer.CreateProxy());
|
approachContainer.Add(proxyable.ProxiedLayer.CreateProxy());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private enum HitObjectType
|
||||||
|
{
|
||||||
|
Circle,
|
||||||
|
Slider,
|
||||||
|
Spinner
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using OpenTK.Input;
|
using OpenTK.Input;
|
||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
@ -38,19 +38,33 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
};
|
};
|
||||||
BindableInt bindable = new BindableInt { MinValue = 0, MaxValue = 200, Default = 50 };
|
BindableInt bindable = new BindableInt { MinValue = 0, MaxValue = 200, Default = 50 };
|
||||||
bindable.ValueChanged += delegate { kc.FadeTime = bindable.Value; };
|
bindable.ValueChanged += delegate { kc.FadeTime = bindable.Value; };
|
||||||
AddButton("Add Random", () =>
|
AddStep("Add Random", () =>
|
||||||
{
|
{
|
||||||
Key key = (Key)((int)Key.A + RNG.Next(26));
|
Key key = (Key)((int)Key.A + RNG.Next(26));
|
||||||
kc.Add(new KeyCounterKeyboard(key));
|
kc.Add(new KeyCounterKeyboard(key));
|
||||||
});
|
});
|
||||||
ButtonsContainer.Add(new SpriteText { Text = "FadeTime" });
|
|
||||||
ButtonsContainer.Add(new TestSliderBar<int>
|
TestSliderBar<int> sliderBar;
|
||||||
|
|
||||||
|
Add(new Container
|
||||||
|
{
|
||||||
|
Anchor = Anchor.TopRight,
|
||||||
|
Origin = Anchor.TopRight,
|
||||||
|
AutoSizeAxes = Axes.Both,
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new SpriteText { Text = "FadeTime" },
|
||||||
|
sliderBar =new TestSliderBar<int>
|
||||||
{
|
{
|
||||||
Width = 150,
|
Width = 150,
|
||||||
Height = 10,
|
Height = 10,
|
||||||
SelectionColor = Color4.Orange,
|
SelectionColor = Color4.Orange,
|
||||||
Bindable = bindable
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
sliderBar.Current.BindTo(bindable);
|
||||||
|
|
||||||
Add(kc);
|
Add(kc);
|
||||||
}
|
}
|
||||||
private class TestSliderBar<T> : SliderBar<T> where T : struct
|
private class TestSliderBar<T> : SliderBar<T> where T : struct
|
||||||
|
225
osu.Desktop.VisualTests/Tests/TestCaseLeaderboard.cs
Normal file
225
osu.Desktop.VisualTests/Tests/TestCaseLeaderboard.cs
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using OpenTK;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Rulesets.Mods;
|
||||||
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
using osu.Game.Screens.Select.Leaderboards;
|
||||||
|
using osu.Game.Users;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseLeaderboard : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => @"From song select";
|
||||||
|
|
||||||
|
private Leaderboard leaderboard;
|
||||||
|
|
||||||
|
private void newScores()
|
||||||
|
{
|
||||||
|
var scores = new[]
|
||||||
|
{
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.XH,
|
||||||
|
Accuracy = 100,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 6602580,
|
||||||
|
Username = @"waaiiru",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Spain",
|
||||||
|
FlagName = @"ES",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.X,
|
||||||
|
Accuracy = 100,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 4608074,
|
||||||
|
Username = @"Skycries",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Brazil",
|
||||||
|
FlagName = @"BR",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.SH,
|
||||||
|
Accuracy = 100,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 1014222,
|
||||||
|
Username = @"eLy",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Japan",
|
||||||
|
FlagName = @"JP",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.S,
|
||||||
|
Accuracy = 100,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 1541390,
|
||||||
|
Username = @"Toukai",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Canada",
|
||||||
|
FlagName = @"CA",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.A,
|
||||||
|
Accuracy = 100,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 2243452,
|
||||||
|
Username = @"Satoruu",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Venezuela",
|
||||||
|
FlagName = @"VE",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.B,
|
||||||
|
Accuracy = 98.26,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 2705430,
|
||||||
|
Username = @"Mooha",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"France",
|
||||||
|
FlagName = @"FR",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.C,
|
||||||
|
Accuracy = 96.54,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 7151382,
|
||||||
|
Username = @"Mayuri Hana",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Thailand",
|
||||||
|
FlagName = @"TH",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.F,
|
||||||
|
Accuracy = 60.25,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 2051389,
|
||||||
|
Username = @"FunOrange",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Canada",
|
||||||
|
FlagName = @"CA",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.F,
|
||||||
|
Accuracy = 51.40,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 6169483,
|
||||||
|
Username = @"-Hebel-",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Mexico",
|
||||||
|
FlagName = @"MX",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new Score
|
||||||
|
{
|
||||||
|
Rank = ScoreRank.F,
|
||||||
|
Accuracy = 42.22,
|
||||||
|
MaxCombo = 244,
|
||||||
|
TotalScore = 1707827,
|
||||||
|
Mods = new Mod[] { new OsuModHidden(), new OsuModHardRock(), },
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Id = 6702666,
|
||||||
|
Username = @"prhtnsm",
|
||||||
|
Country = new Country
|
||||||
|
{
|
||||||
|
FullName = @"Germany",
|
||||||
|
FlagName = @"DE",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
leaderboard.Scores = scores;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
Add(leaderboard = new Leaderboard
|
||||||
|
{
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Size = new Vector2(550f, 450f),
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep(@"New Scores", newScores);
|
||||||
|
newScores();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Graphics.Colour;
|
using osu.Framework.Graphics.Colour;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Game.Screens.Menu;
|
using osu.Game.Screens.Menu;
|
||||||
|
59
osu.Desktop.VisualTests/Tests/TestCaseMenuOverlays.cs
Normal file
59
osu.Desktop.VisualTests/Tests/TestCaseMenuOverlays.cs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Logging;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Screens.Play;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseMenuOverlays : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => @"Tests pause and fail overlays";
|
||||||
|
|
||||||
|
private PauseOverlay pauseOverlay;
|
||||||
|
private FailOverlay failOverlay;
|
||||||
|
private int retryCount;
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
retryCount = 0;
|
||||||
|
|
||||||
|
Add(pauseOverlay = new PauseOverlay
|
||||||
|
{
|
||||||
|
OnResume = () => Logger.Log(@"Resume"),
|
||||||
|
OnRetry = () => Logger.Log(@"Retry"),
|
||||||
|
OnQuit = () => Logger.Log(@"Quit"),
|
||||||
|
});
|
||||||
|
Add(failOverlay = new FailOverlay
|
||||||
|
{
|
||||||
|
OnRetry = () => Logger.Log(@"Retry"),
|
||||||
|
OnQuit = () => Logger.Log(@"Quit"),
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep(@"Pause", delegate {
|
||||||
|
if(failOverlay.State == Visibility.Visible)
|
||||||
|
{
|
||||||
|
failOverlay.Hide();
|
||||||
|
}
|
||||||
|
pauseOverlay.Show();
|
||||||
|
});
|
||||||
|
AddStep("Fail", delegate {
|
||||||
|
if (pauseOverlay.State == Visibility.Visible)
|
||||||
|
{
|
||||||
|
pauseOverlay.Hide();
|
||||||
|
}
|
||||||
|
failOverlay.Show();
|
||||||
|
});
|
||||||
|
AddStep("Add Retry", delegate
|
||||||
|
{
|
||||||
|
retryCount++;
|
||||||
|
pauseOverlay.Retries = retryCount;
|
||||||
|
failOverlay.Retries = retryCount;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,11 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Overlays.Mods;
|
using osu.Game.Overlays.Mods;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Modes;
|
using osu.Game.Database;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
@ -13,6 +14,13 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
public override string Description => @"Tests the mod select overlay";
|
public override string Description => @"Tests the mod select overlay";
|
||||||
|
|
||||||
private ModSelectOverlay modSelect;
|
private ModSelectOverlay modSelect;
|
||||||
|
private RulesetDatabase rulesets;
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(RulesetDatabase rulesets)
|
||||||
|
{
|
||||||
|
this.rulesets = rulesets;
|
||||||
|
}
|
||||||
|
|
||||||
public override void Reset()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
@ -25,11 +33,10 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
Anchor = Anchor.BottomCentre,
|
Anchor = Anchor.BottomCentre,
|
||||||
});
|
});
|
||||||
|
|
||||||
AddButton("Toggle", modSelect.ToggleVisibility);
|
AddStep("Toggle", modSelect.ToggleVisibility);
|
||||||
AddButton("osu!", () => modSelect.PlayMode.Value = PlayMode.Osu);
|
|
||||||
AddButton("osu!taiko", () => modSelect.PlayMode.Value = PlayMode.Taiko);
|
foreach (var ruleset in rulesets.AllRulesets)
|
||||||
AddButton("osu!catch", () => modSelect.PlayMode.Value = PlayMode.Catch);
|
AddStep(ruleset.CreateInstance().Description, () => modSelect.Ruleset.Value = ruleset);
|
||||||
AddButton("osu!mania", () => modSelect.PlayMode.Value = PlayMode.Mania);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Timing;
|
using osu.Framework.Timing;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
@ -30,7 +30,9 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
Anchor = Anchor.Centre
|
Anchor = Anchor.Centre
|
||||||
};
|
};
|
||||||
Add(mc);
|
Add(mc);
|
||||||
AddToggle(@"Show", state => mc.State = state ? Visibility.Visible : Visibility.Hidden);
|
|
||||||
|
AddToggleStep(@"toggle visibility", state => mc.State = state ? Visibility.Visible : Visibility.Hidden);
|
||||||
|
AddStep(@"show", () => mc.State = Visibility.Visible);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -30,13 +30,13 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
Origin = Anchor.TopRight,
|
Origin = Anchor.TopRight,
|
||||||
});
|
});
|
||||||
|
|
||||||
AddToggle(@"show", state => manager.State = state ? Visibility.Visible : Visibility.Hidden);
|
AddToggleStep(@"show", state => manager.State = state ? Visibility.Visible : Visibility.Hidden);
|
||||||
|
|
||||||
AddButton(@"simple #1", sendNotification1);
|
AddStep(@"simple #1", sendNotification1);
|
||||||
AddButton(@"simple #2", sendNotification2);
|
AddStep(@"simple #2", sendNotification2);
|
||||||
AddButton(@"progress #1", sendProgress1);
|
AddStep(@"progress #1", sendProgress1);
|
||||||
AddButton(@"progress #2", sendProgress2);
|
AddStep(@"progress #2", sendProgress2);
|
||||||
AddButton(@"barrage", () => sendBarrage());
|
AddStep(@"barrage", () => sendBarrage());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendBarrage(int remaining = 100)
|
private void sendBarrage(int remaining = 100)
|
||||||
@ -95,7 +95,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
progressingNotifications.Add(n);
|
progressingNotifications.Add(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ProgressNotification> progressingNotifications = new List<ProgressNotification>();
|
private readonly List<ProgressNotification> progressingNotifications = new List<ProgressNotification>();
|
||||||
|
|
||||||
private void sendProgress1()
|
private void sendProgress1()
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Framework.Logging;
|
|
||||||
using osu.Framework.Screens.Testing;
|
|
||||||
using osu.Game.Screens.Play;
|
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
|
||||||
{
|
|
||||||
internal class TestCasePauseOverlay : TestCase
|
|
||||||
{
|
|
||||||
public override string Description => @"Tests the pause overlay";
|
|
||||||
|
|
||||||
private PauseOverlay pauseOverlay;
|
|
||||||
private int retryCount;
|
|
||||||
|
|
||||||
public override void Reset()
|
|
||||||
{
|
|
||||||
base.Reset();
|
|
||||||
|
|
||||||
Add(pauseOverlay = new PauseOverlay
|
|
||||||
{
|
|
||||||
Depth = -1,
|
|
||||||
OnResume = () => Logger.Log(@"Resume"),
|
|
||||||
OnRetry = () => Logger.Log(@"Retry"),
|
|
||||||
OnQuit = () => Logger.Log(@"Quit")
|
|
||||||
});
|
|
||||||
AddButton("Pause", pauseOverlay.Show);
|
|
||||||
AddButton("Add Retry", delegate
|
|
||||||
{
|
|
||||||
retryCount++;
|
|
||||||
pauseOverlay.Retries = retryCount;
|
|
||||||
});
|
|
||||||
|
|
||||||
retryCount = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,31 +3,35 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Desktop.VisualTests.Platform;
|
using osu.Desktop.VisualTests.Platform;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.Modes;
|
|
||||||
using osu.Game.Screens.Select;
|
using osu.Game.Screens.Select;
|
||||||
|
using osu.Game.Screens.Select.Filter;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
internal class TestCasePlaySongSelect : TestCase
|
internal class TestCasePlaySongSelect : TestCase
|
||||||
{
|
{
|
||||||
private BeatmapDatabase db, oldDb;
|
private BeatmapDatabase db;
|
||||||
private TestStorage storage;
|
private TestStorage storage;
|
||||||
private PlaySongSelect songSelect;
|
private PlaySongSelect songSelect;
|
||||||
|
|
||||||
public override string Description => @"with fake data";
|
public override string Description => @"with fake data";
|
||||||
|
|
||||||
|
private RulesetDatabase rulesets;
|
||||||
|
|
||||||
public override void Reset()
|
public override void Reset()
|
||||||
{
|
{
|
||||||
base.Reset();
|
base.Reset();
|
||||||
oldDb = Dependencies.Get<BeatmapDatabase>();
|
|
||||||
if (db == null)
|
if (db == null)
|
||||||
{
|
{
|
||||||
storage = new TestStorage(@"TestCasePlaySongSelect");
|
storage = new TestStorage(@"TestCasePlaySongSelect");
|
||||||
db = new BeatmapDatabase(storage);
|
|
||||||
Dependencies.Cache(db, true);
|
var backingDatabase = storage.GetDatabase(@"client");
|
||||||
|
|
||||||
|
rulesets = new RulesetDatabase(storage, backingDatabase);
|
||||||
|
db = new BeatmapDatabase(storage, backingDatabase, rulesets);
|
||||||
|
|
||||||
var sets = new List<BeatmapSetInfo>();
|
var sets = new List<BeatmapSetInfo>();
|
||||||
|
|
||||||
@ -39,22 +43,19 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
Add(songSelect = new PlaySongSelect());
|
Add(songSelect = new PlaySongSelect());
|
||||||
|
|
||||||
AddButton(@"Sort by Artist", delegate { songSelect.Filter.Sort = FilterControl.SortMode.Artist; });
|
AddStep(@"Sort by Artist", delegate { songSelect.FilterControl.Sort = SortMode.Artist; });
|
||||||
AddButton(@"Sort by Title", delegate { songSelect.Filter.Sort = FilterControl.SortMode.Title; });
|
AddStep(@"Sort by Title", delegate { songSelect.FilterControl.Sort = SortMode.Title; });
|
||||||
AddButton(@"Sort by Author", delegate { songSelect.Filter.Sort = FilterControl.SortMode.Author; });
|
AddStep(@"Sort by Author", delegate { songSelect.FilterControl.Sort = SortMode.Author; });
|
||||||
AddButton(@"Sort by Difficulty", delegate { songSelect.Filter.Sort = FilterControl.SortMode.Difficulty; });
|
AddStep(@"Sort by Difficulty", delegate { songSelect.FilterControl.Sort = SortMode.Difficulty; });
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Dispose(bool isDisposing)
|
//protected override void Dispose(bool isDisposing)
|
||||||
{
|
//{
|
||||||
if (oldDb != null)
|
// if (oldDb != null)
|
||||||
{
|
// db = null;
|
||||||
Dependencies.Cache(oldDb, true);
|
|
||||||
db = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
base.Dispose(isDisposing);
|
// base.Dispose(isDisposing);
|
||||||
}
|
//}
|
||||||
|
|
||||||
private BeatmapSetInfo createTestBeatmapSet(int i)
|
private BeatmapSetInfo createTestBeatmapSet(int i)
|
||||||
{
|
{
|
||||||
@ -76,10 +77,10 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
new BeatmapInfo
|
new BeatmapInfo
|
||||||
{
|
{
|
||||||
OnlineBeatmapID = 1234 + i,
|
OnlineBeatmapID = 1234 + i,
|
||||||
Mode = PlayMode.Osu,
|
Ruleset = rulesets.Query<RulesetInfo>().First(),
|
||||||
Path = "normal.osu",
|
Path = "normal.osu",
|
||||||
Version = "Normal",
|
Version = "Normal",
|
||||||
BaseDifficulty = new BaseDifficulty
|
Difficulty = new BeatmapDifficulty
|
||||||
{
|
{
|
||||||
OverallDifficulty = 3.5f,
|
OverallDifficulty = 3.5f,
|
||||||
}
|
}
|
||||||
@ -87,10 +88,10 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
new BeatmapInfo
|
new BeatmapInfo
|
||||||
{
|
{
|
||||||
OnlineBeatmapID = 1235 + i,
|
OnlineBeatmapID = 1235 + i,
|
||||||
Mode = PlayMode.Osu,
|
Ruleset = rulesets.Query<RulesetInfo>().First(),
|
||||||
Path = "hard.osu",
|
Path = "hard.osu",
|
||||||
Version = "Hard",
|
Version = "Hard",
|
||||||
BaseDifficulty = new BaseDifficulty
|
Difficulty = new BeatmapDifficulty
|
||||||
{
|
{
|
||||||
OverallDifficulty = 5,
|
OverallDifficulty = 5,
|
||||||
}
|
}
|
||||||
@ -98,10 +99,10 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
new BeatmapInfo
|
new BeatmapInfo
|
||||||
{
|
{
|
||||||
OnlineBeatmapID = 1236 + i,
|
OnlineBeatmapID = 1236 + i,
|
||||||
Mode = PlayMode.Osu,
|
Ruleset = rulesets.Query<RulesetInfo>().First(),
|
||||||
Path = "insane.osu",
|
Path = "insane.osu",
|
||||||
Version = "Insane",
|
Version = "Insane",
|
||||||
BaseDifficulty = new BaseDifficulty
|
Difficulty = new BeatmapDifficulty
|
||||||
{
|
{
|
||||||
OverallDifficulty = 7,
|
OverallDifficulty = 7,
|
||||||
}
|
}
|
||||||
|
@ -4,18 +4,17 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Beatmaps.Formats;
|
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Game.Beatmaps.IO;
|
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
using osu.Game.Modes;
|
using osu.Game.Rulesets.Objects;
|
||||||
using osu.Game.Modes.Objects;
|
using osu.Game.Rulesets.Osu.Objects;
|
||||||
using osu.Game.Modes.Osu.Objects;
|
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
using osu.Desktop.VisualTests.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Osu.UI;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
@ -23,13 +22,14 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
{
|
{
|
||||||
protected Player Player;
|
protected Player Player;
|
||||||
private BeatmapDatabase db;
|
private BeatmapDatabase db;
|
||||||
|
private RulesetDatabase rulesets;
|
||||||
|
|
||||||
public override string Description => @"Showing everything to play the game.";
|
public override string Description => @"Showing everything to play the game.";
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(BeatmapDatabase db)
|
private void load(BeatmapDatabase db, RulesetDatabase rulesets)
|
||||||
{
|
{
|
||||||
|
this.rulesets = rulesets;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
WorkingBeatmap beatmap = null;
|
WorkingBeatmap beatmap = null;
|
||||||
|
|
||||||
var beatmapInfo = db.Query<BeatmapInfo>().FirstOrDefault(b => b.Mode == PlayMode.Osu);
|
var beatmapInfo = db.Query<BeatmapInfo>().FirstOrDefault(b => b.RulesetID == 0);
|
||||||
if (beatmapInfo != null)
|
if (beatmapInfo != null)
|
||||||
beatmap = db.GetWorkingBeatmap(beatmapInfo);
|
beatmap = db.GetWorkingBeatmap(beatmapInfo);
|
||||||
|
|
||||||
@ -53,21 +53,21 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
objects.Add(new HitCircle
|
objects.Add(new HitCircle
|
||||||
{
|
{
|
||||||
StartTime = time,
|
StartTime = time,
|
||||||
Position = new Vector2(i % 4 == 0 || i % 4 == 2 ? 0 : 512,
|
Position = new Vector2(i % 4 == 0 || i % 4 == 2 ? 0 : OsuPlayfield.BASE_SIZE.X,
|
||||||
i % 4 < 2 ? 0 : 384),
|
i % 4 < 2 ? 0 : OsuPlayfield.BASE_SIZE.Y),
|
||||||
NewCombo = i % 4 == 0
|
NewCombo = i % 4 == 0
|
||||||
});
|
});
|
||||||
|
|
||||||
time += 500;
|
time += 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
var decoder = new ConstructableBeatmapDecoder();
|
|
||||||
|
|
||||||
Beatmap b = new Beatmap
|
Beatmap b = new Beatmap
|
||||||
{
|
{
|
||||||
HitObjects = objects,
|
HitObjects = objects,
|
||||||
BeatmapInfo = new BeatmapInfo
|
BeatmapInfo = new BeatmapInfo
|
||||||
{
|
{
|
||||||
|
Difficulty = new BeatmapDifficulty(),
|
||||||
|
Ruleset = rulesets.Query<RulesetInfo>().First(),
|
||||||
Metadata = new BeatmapMetadata
|
Metadata = new BeatmapMetadata
|
||||||
{
|
{
|
||||||
Artist = @"Unknown",
|
Artist = @"Unknown",
|
||||||
@ -77,8 +77,6 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
decoder.Process(b);
|
|
||||||
|
|
||||||
beatmap = new TestWorkingBeatmap(b);
|
beatmap = new TestWorkingBeatmap(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,10 +86,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
Colour = Color4.Black,
|
Colour = Color4.Black,
|
||||||
});
|
});
|
||||||
|
|
||||||
Add(new PlayerLoader(Player = CreatePlayer(beatmap))
|
Add(Player = CreatePlayer(beatmap));
|
||||||
{
|
|
||||||
Beatmap = beatmap
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual Player CreatePlayer(WorkingBeatmap beatmap)
|
protected virtual Player CreatePlayer(WorkingBeatmap beatmap)
|
||||||
@ -101,16 +96,5 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
Beatmap = beatmap
|
Beatmap = beatmap
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TestWorkingBeatmap : WorkingBeatmap
|
|
||||||
{
|
|
||||||
public TestWorkingBeatmap(Beatmap beatmap)
|
|
||||||
: base(beatmap.BeatmapInfo, beatmap.BeatmapInfo.BeatmapSet)
|
|
||||||
{
|
|
||||||
Beatmap = beatmap;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override ArchiveReader GetReader() => null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,22 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using osu.Framework.Input.Handlers;
|
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Modes;
|
using osu.Game.Rulesets.Mods;
|
||||||
|
using osu.Game.Rulesets.Osu.Mods;
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
internal class TestCaseReplay : TestCasePlayer
|
internal class TestCaseReplay : TestCasePlayer
|
||||||
{
|
{
|
||||||
private WorkingBeatmap beatmap;
|
|
||||||
|
|
||||||
private InputHandler replay;
|
|
||||||
|
|
||||||
private Func<Stream> getReplayStream;
|
|
||||||
|
|
||||||
public override string Description => @"Testing replay playback.";
|
public override string Description => @"Testing replay playback.";
|
||||||
|
|
||||||
protected override Player CreatePlayer(WorkingBeatmap beatmap)
|
protected override Player CreatePlayer(WorkingBeatmap beatmap)
|
||||||
{
|
{
|
||||||
var player = base.CreatePlayer(beatmap);
|
beatmap.Mods.Value = new Mod[] { new OsuModAutoplay() };
|
||||||
player.ReplayInputHandler = Ruleset.GetRuleset(beatmap.PlayMode).CreateAutoplayScore(beatmap.Beatmap)?.Replay?.GetInputHandler();
|
|
||||||
return player;
|
return base.CreatePlayer(beatmap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
68
osu.Desktop.VisualTests/Tests/TestCaseResults.cs
Normal file
68
osu.Desktop.VisualTests/Tests/TestCaseResults.cs
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Database;
|
||||||
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
using osu.Game.Screens.Ranking;
|
||||||
|
using osu.Game.Users;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseResults : TestCase
|
||||||
|
{
|
||||||
|
private BeatmapDatabase db;
|
||||||
|
|
||||||
|
public override string Description => @"Results after playing.";
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(BeatmapDatabase db)
|
||||||
|
{
|
||||||
|
this.db = db;
|
||||||
|
}
|
||||||
|
|
||||||
|
private WorkingBeatmap beatmap;
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
if (beatmap == null)
|
||||||
|
{
|
||||||
|
var beatmapInfo = db.Query<BeatmapInfo>().FirstOrDefault(b => b.RulesetID == 0);
|
||||||
|
if (beatmapInfo != null)
|
||||||
|
beatmap = db.GetWorkingBeatmap(beatmapInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
Add(new Results(new Score
|
||||||
|
{
|
||||||
|
TotalScore = 2845370,
|
||||||
|
Accuracy = 0.98,
|
||||||
|
MaxCombo = 123,
|
||||||
|
Rank = ScoreRank.A,
|
||||||
|
Date = DateTime.Now,
|
||||||
|
Statistics = new Dictionary<string, dynamic>()
|
||||||
|
{
|
||||||
|
{ "300", 50 },
|
||||||
|
{ "100", 20 },
|
||||||
|
{ "50", 50 },
|
||||||
|
{ "x", 1 }
|
||||||
|
},
|
||||||
|
User = new User
|
||||||
|
{
|
||||||
|
Username = "peppy",
|
||||||
|
}
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Beatmap = beatmap
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,9 +6,9 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Primitives;
|
using osu.Framework.Graphics.Primitives;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Modes.UI;
|
using osu.Game.Rulesets.UI;
|
||||||
|
|
||||||
namespace osu.Desktop.VisualTests.Tests
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
{
|
{
|
||||||
@ -22,8 +22,6 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
|
|
||||||
int numerator = 0, denominator = 0;
|
int numerator = 0, denominator = 0;
|
||||||
|
|
||||||
bool maniaHold = false;
|
|
||||||
|
|
||||||
ScoreCounter score = new ScoreCounter(7)
|
ScoreCounter score = new ScoreCounter(7)
|
||||||
{
|
{
|
||||||
Origin = Anchor.TopRight,
|
Origin = Anchor.TopRight,
|
||||||
@ -68,7 +66,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
};
|
};
|
||||||
Add(starsLabel);
|
Add(starsLabel);
|
||||||
|
|
||||||
AddButton(@"Reset all", delegate
|
AddStep(@"Reset all", delegate
|
||||||
{
|
{
|
||||||
score.Current.Value = 0;
|
score.Current.Value = 0;
|
||||||
comboCounter.Current.Value = 0;
|
comboCounter.Current.Value = 0;
|
||||||
@ -78,7 +76,7 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
starsLabel.Text = stars.Count.ToString("0.00");
|
starsLabel.Text = stars.Count.ToString("0.00");
|
||||||
});
|
});
|
||||||
|
|
||||||
AddButton(@"Hit! :D", delegate
|
AddStep(@"Hit! :D", delegate
|
||||||
{
|
{
|
||||||
score.Current.Value += 300 + (ulong)(300.0 * (comboCounter.Current > 0 ? comboCounter.Current - 1 : 0) / 25.0);
|
score.Current.Value += 300 + (ulong)(300.0 * (comboCounter.Current > 0 ? comboCounter.Current - 1 : 0) / 25.0);
|
||||||
comboCounter.Increment();
|
comboCounter.Increment();
|
||||||
@ -86,20 +84,20 @@ namespace osu.Desktop.VisualTests.Tests
|
|||||||
accuracyCounter.SetFraction(numerator, denominator);
|
accuracyCounter.SetFraction(numerator, denominator);
|
||||||
});
|
});
|
||||||
|
|
||||||
AddButton(@"miss...", delegate
|
AddStep(@"miss...", delegate
|
||||||
{
|
{
|
||||||
comboCounter.Current.Value = 0;
|
comboCounter.Current.Value = 0;
|
||||||
denominator++;
|
denominator++;
|
||||||
accuracyCounter.SetFraction(numerator, denominator);
|
accuracyCounter.SetFraction(numerator, denominator);
|
||||||
});
|
});
|
||||||
|
|
||||||
AddButton(@"Alter stars", delegate
|
AddStep(@"Alter stars", delegate
|
||||||
{
|
{
|
||||||
stars.Count = RNG.NextSingle() * (stars.StarCount + 1);
|
stars.Count = RNG.NextSingle() * (stars.StarCount + 1);
|
||||||
starsLabel.Text = stars.Count.ToString("0.00");
|
starsLabel.Text = stars.Count.ToString("0.00");
|
||||||
});
|
});
|
||||||
|
|
||||||
AddButton(@"Stop counters", delegate
|
AddStep(@"Stop counters", delegate
|
||||||
{
|
{
|
||||||
score.StopRolling();
|
score.StopRolling();
|
||||||
comboCounter.StopRolling();
|
comboCounter.StopRolling();
|
||||||
|
60
osu.Desktop.VisualTests/Tests/TestCaseSongProgress.cs
Normal file
60
osu.Desktop.VisualTests/Tests/TestCaseSongProgress.cs
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.MathUtils;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Framework.Timing;
|
||||||
|
using osu.Game.Rulesets.Objects;
|
||||||
|
using osu.Game.Screens.Play;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseSongProgress : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => @"With fake data";
|
||||||
|
|
||||||
|
private SongProgress progress;
|
||||||
|
private SongProgressGraph graph;
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
Add(progress = new SongProgress
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.X,
|
||||||
|
AudioClock = new StopwatchClock(true),
|
||||||
|
Anchor = Anchor.BottomLeft,
|
||||||
|
Origin = Anchor.BottomLeft,
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(graph = new SongProgressGraph
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.X,
|
||||||
|
Height = 200,
|
||||||
|
Anchor = Anchor.TopLeft,
|
||||||
|
Origin = Anchor.TopLeft,
|
||||||
|
});
|
||||||
|
|
||||||
|
AddStep("Toggle Bar", progress.ToggleBar);
|
||||||
|
AddWaitStep(5);
|
||||||
|
AddStep("Toggle Bar", progress.ToggleBar);
|
||||||
|
AddWaitStep(2);
|
||||||
|
AddRepeatStep("New Values", displayNewValues, 5);
|
||||||
|
|
||||||
|
displayNewValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void displayNewValues()
|
||||||
|
{
|
||||||
|
List<HitObject> objects = new List<HitObject>();
|
||||||
|
for (double i = 0; i < 5000; i += RNG.NextDouble() * 10 + i / 1000)
|
||||||
|
objects.Add(new HitObject { StartTime = i });
|
||||||
|
|
||||||
|
progress.Objects = objects;
|
||||||
|
graph.Objects = objects;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
45
osu.Desktop.VisualTests/Tests/TestCaseTabControl.cs
Normal file
45
osu.Desktop.VisualTests/Tests/TestCaseTabControl.cs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using OpenTK;
|
||||||
|
using osu.Framework.Graphics.Primitives;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Game.Screens.Select.Filter;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
public class TestCaseTabControl : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => @"Filter for song select";
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
OsuSpriteText text;
|
||||||
|
OsuTabControl<GroupMode> filter;
|
||||||
|
Add(filter = new OsuTabControl<GroupMode>
|
||||||
|
{
|
||||||
|
Margin = new MarginPadding(4),
|
||||||
|
Size = new Vector2(229, 24),
|
||||||
|
AutoSort = true
|
||||||
|
});
|
||||||
|
Add(text = new OsuSpriteText
|
||||||
|
{
|
||||||
|
Text = "None",
|
||||||
|
Margin = new MarginPadding(4),
|
||||||
|
Position = new Vector2(275, 5)
|
||||||
|
});
|
||||||
|
|
||||||
|
filter.PinItem(GroupMode.All);
|
||||||
|
filter.PinItem(GroupMode.RecentlyPlayed);
|
||||||
|
|
||||||
|
filter.Current.ValueChanged += newFilter =>
|
||||||
|
{
|
||||||
|
text.Text = "Currently Selected: " + newFilter.ToString();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
121
osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs
Normal file
121
osu.Desktop.VisualTests/Tests/TestCaseTaikoHitObjects.cs
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System.Linq;
|
||||||
|
using OpenTK;
|
||||||
|
using OpenTK.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Rulesets.Taiko.Objects.Drawables.Pieces;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseTaikoHitObjects : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => "Taiko hit objects";
|
||||||
|
|
||||||
|
private bool kiai;
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
AddToggleStep("Kiai", b =>
|
||||||
|
{
|
||||||
|
kiai = !kiai;
|
||||||
|
updateKiaiState();
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(new CirclePiece
|
||||||
|
{
|
||||||
|
Position = new Vector2(100, 100),
|
||||||
|
AccentColour = Color4.DarkRed,
|
||||||
|
KiaiMode = kiai,
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
new CentreHitSymbolPiece()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(new CirclePiece(true)
|
||||||
|
{
|
||||||
|
Position = new Vector2(350, 100),
|
||||||
|
AccentColour = Color4.DarkRed,
|
||||||
|
KiaiMode = kiai,
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
new CentreHitSymbolPiece()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(new CirclePiece
|
||||||
|
{
|
||||||
|
Position = new Vector2(100, 300),
|
||||||
|
AccentColour = Color4.DarkBlue,
|
||||||
|
KiaiMode = kiai,
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
new RimHitSymbolPiece()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(new CirclePiece(true)
|
||||||
|
{
|
||||||
|
Position = new Vector2(350, 300),
|
||||||
|
AccentColour = Color4.DarkBlue,
|
||||||
|
KiaiMode = kiai,
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
new RimHitSymbolPiece()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(new CirclePiece
|
||||||
|
{
|
||||||
|
Position = new Vector2(100, 500),
|
||||||
|
AccentColour = Color4.Orange,
|
||||||
|
KiaiMode = kiai,
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
new SwellSymbolPiece()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(new ElongatedCirclePiece
|
||||||
|
{
|
||||||
|
Position = new Vector2(575, 100),
|
||||||
|
AccentColour = Color4.Orange,
|
||||||
|
KiaiMode = kiai,
|
||||||
|
Length = 0.10f,
|
||||||
|
PlayfieldLengthReference = () => DrawSize.X
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(new ElongatedCirclePiece(true)
|
||||||
|
{
|
||||||
|
Position = new Vector2(575, 300),
|
||||||
|
AccentColour = Color4.Orange,
|
||||||
|
KiaiMode = kiai,
|
||||||
|
Length = 0.10f,
|
||||||
|
PlayfieldLengthReference = () => DrawSize.X
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateKiaiState()
|
||||||
|
{
|
||||||
|
foreach (var c in Children.OfType<CirclePiece>())
|
||||||
|
c.KiaiMode = kiai;
|
||||||
|
}
|
||||||
|
|
||||||
|
private abstract class BaseCircle : Container
|
||||||
|
{
|
||||||
|
protected readonly CirclePiece Piece;
|
||||||
|
|
||||||
|
protected BaseCircle(CirclePiece piece)
|
||||||
|
{
|
||||||
|
Piece = piece;
|
||||||
|
|
||||||
|
Add(Piece);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
220
osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs
Normal file
220
osu.Desktop.VisualTests/Tests/TestCaseTaikoPlayfield.cs
Normal file
@ -0,0 +1,220 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using OpenTK;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.MathUtils;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Framework.Timing;
|
||||||
|
using osu.Game.Rulesets.Objects.Drawables;
|
||||||
|
using osu.Game.Rulesets.Taiko.Judgements;
|
||||||
|
using osu.Game.Rulesets.Taiko.Objects;
|
||||||
|
using osu.Game.Rulesets.Taiko.Objects.Drawables;
|
||||||
|
using osu.Game.Rulesets.Taiko.UI;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseTaikoPlayfield : TestCase
|
||||||
|
{
|
||||||
|
private const double default_duration = 300;
|
||||||
|
private const float scroll_time = 1000;
|
||||||
|
|
||||||
|
public override string Description => "Taiko playfield";
|
||||||
|
|
||||||
|
protected override double TimePerAction => default_duration * 2;
|
||||||
|
|
||||||
|
private readonly Random rng = new Random(1337);
|
||||||
|
private TaikoPlayfield playfield;
|
||||||
|
private Container playfieldContainer;
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
|
||||||
|
AddStep("Hit!", addHitJudgement);
|
||||||
|
AddStep("Miss :(", addMissJudgement);
|
||||||
|
AddStep("DrumRoll", () => addDrumRoll(false));
|
||||||
|
AddStep("Strong DrumRoll", () => addDrumRoll(true));
|
||||||
|
AddStep("Swell", () => addSwell());
|
||||||
|
AddStep("Centre", () => addCentreHit(false));
|
||||||
|
AddStep("Strong Centre", () => addCentreHit(true));
|
||||||
|
AddStep("Rim", () => addRimHit(false));
|
||||||
|
AddStep("Strong Rim", () => addRimHit(true));
|
||||||
|
AddStep("Add bar line", () => addBarLine(false));
|
||||||
|
AddStep("Add major bar line", () => addBarLine(true));
|
||||||
|
AddStep("Height test 1", () => changePlayfieldSize(1));
|
||||||
|
AddStep("Height test 2", () => changePlayfieldSize(2));
|
||||||
|
AddStep("Height test 3", () => changePlayfieldSize(3));
|
||||||
|
AddStep("Height test 4", () => changePlayfieldSize(4));
|
||||||
|
AddStep("Height test 5", () => changePlayfieldSize(5));
|
||||||
|
AddStep("Reset height", () => changePlayfieldSize(6));
|
||||||
|
|
||||||
|
var rateAdjustClock = new StopwatchClock(true) { Rate = 1 };
|
||||||
|
|
||||||
|
Add(playfieldContainer = new Container
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
RelativeSizeAxes = Axes.X,
|
||||||
|
Height = TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT,
|
||||||
|
Clock = new FramedClock(rateAdjustClock),
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
playfield = new TaikoPlayfield()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void changePlayfieldSize(int step)
|
||||||
|
{
|
||||||
|
// Add new hits
|
||||||
|
switch (step)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
addCentreHit(false);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
addCentreHit(true);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
addDrumRoll(false);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
addDrumRoll(true);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
addSwell(1000);
|
||||||
|
playfieldContainer.Delay(scroll_time - 100);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tween playfield height
|
||||||
|
switch (step)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
playfieldContainer.ResizeTo(new Vector2(1, rng.Next(25, 400)), 500);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
playfieldContainer.ResizeTo(new Vector2(1, TaikoPlayfield.DEFAULT_PLAYFIELD_HEIGHT), 500);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addHitJudgement()
|
||||||
|
{
|
||||||
|
TaikoHitResult hitResult = RNG.Next(2) == 0 ? TaikoHitResult.Good : TaikoHitResult.Great;
|
||||||
|
|
||||||
|
var h = new DrawableTestHit(new Hit())
|
||||||
|
{
|
||||||
|
X = RNG.NextSingle(hitResult == TaikoHitResult.Good ? -0.1f : -0.05f, hitResult == TaikoHitResult.Good ? 0.1f : 0.05f),
|
||||||
|
Judgement = new TaikoJudgement
|
||||||
|
{
|
||||||
|
Result = HitResult.Hit,
|
||||||
|
TaikoResult = hitResult,
|
||||||
|
TimeOffset = 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
playfield.OnJudgement(h);
|
||||||
|
|
||||||
|
if (RNG.Next(10) == 0)
|
||||||
|
{
|
||||||
|
h.Judgement.SecondHit = true;
|
||||||
|
playfield.OnJudgement(h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addMissJudgement()
|
||||||
|
{
|
||||||
|
playfield.OnJudgement(new DrawableTestHit(new Hit())
|
||||||
|
{
|
||||||
|
Judgement = new TaikoJudgement
|
||||||
|
{
|
||||||
|
Result = HitResult.Miss,
|
||||||
|
TimeOffset = 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addBarLine(bool major, double delay = scroll_time)
|
||||||
|
{
|
||||||
|
BarLine bl = new BarLine
|
||||||
|
{
|
||||||
|
StartTime = playfield.Time.Current + delay,
|
||||||
|
ScrollTime = scroll_time
|
||||||
|
};
|
||||||
|
|
||||||
|
playfield.AddBarLine(major ? new DrawableBarLineMajor(bl) : new DrawableBarLine(bl));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addSwell(double duration = default_duration)
|
||||||
|
{
|
||||||
|
playfield.Add(new DrawableSwell(new Swell
|
||||||
|
{
|
||||||
|
StartTime = playfield.Time.Current + scroll_time,
|
||||||
|
Duration = duration,
|
||||||
|
ScrollTime = scroll_time
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addDrumRoll(bool strong, double duration = default_duration)
|
||||||
|
{
|
||||||
|
addBarLine(true);
|
||||||
|
addBarLine(true, scroll_time + duration);
|
||||||
|
|
||||||
|
var d = new DrumRoll
|
||||||
|
{
|
||||||
|
StartTime = playfield.Time.Current + scroll_time,
|
||||||
|
IsStrong = strong,
|
||||||
|
Duration = duration,
|
||||||
|
ScrollTime = scroll_time,
|
||||||
|
};
|
||||||
|
|
||||||
|
playfield.Add(new DrawableDrumRoll(d));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addCentreHit(bool strong)
|
||||||
|
{
|
||||||
|
Hit h = new Hit
|
||||||
|
{
|
||||||
|
StartTime = playfield.Time.Current + scroll_time,
|
||||||
|
ScrollTime = scroll_time
|
||||||
|
};
|
||||||
|
|
||||||
|
if (strong)
|
||||||
|
playfield.Add(new DrawableCentreHitStrong(h));
|
||||||
|
else
|
||||||
|
playfield.Add(new DrawableCentreHit(h));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addRimHit(bool strong)
|
||||||
|
{
|
||||||
|
Hit h = new Hit
|
||||||
|
{
|
||||||
|
StartTime = playfield.Time.Current + scroll_time,
|
||||||
|
ScrollTime = scroll_time
|
||||||
|
};
|
||||||
|
|
||||||
|
if (strong)
|
||||||
|
playfield.Add(new DrawableRimHitStrong(h));
|
||||||
|
else
|
||||||
|
playfield.Add(new DrawableRimHit(h));
|
||||||
|
}
|
||||||
|
|
||||||
|
private class DrawableTestHit : DrawableHitObject<TaikoHitObject, TaikoJudgement>
|
||||||
|
{
|
||||||
|
public DrawableTestHit(TaikoHitObject hitObject)
|
||||||
|
: base(hitObject)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override TaikoJudgement CreateJudgement() => new TaikoJudgement();
|
||||||
|
|
||||||
|
protected override void UpdateState(ArmedState state)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
|
92
osu.Desktop.VisualTests/Tests/TestCaseTooltip.cs
Normal file
92
osu.Desktop.VisualTests/Tests/TestCaseTooltip.cs
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Testing;
|
||||||
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Framework.Configuration;
|
||||||
|
using OpenTK;
|
||||||
|
using osu.Game.Graphics;
|
||||||
|
|
||||||
|
namespace osu.Desktop.VisualTests.Tests
|
||||||
|
{
|
||||||
|
internal class TestCaseTooltip : TestCase
|
||||||
|
{
|
||||||
|
public override string Description => "tests tooltips on various elements";
|
||||||
|
|
||||||
|
public override void Reset()
|
||||||
|
{
|
||||||
|
base.Reset();
|
||||||
|
OsuSliderBar<int> slider;
|
||||||
|
OsuSliderBar<double> sliderDouble;
|
||||||
|
|
||||||
|
const float width = 400;
|
||||||
|
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new FillFlowContainer
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Direction = FillDirection.Vertical,
|
||||||
|
Spacing = new Vector2(0, 10),
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new TooltipTextContainer("text with a tooltip"),
|
||||||
|
new TooltipTextContainer("more text with another tooltip"),
|
||||||
|
new TooltipTextbox
|
||||||
|
{
|
||||||
|
Text = "a textbox with a tooltip",
|
||||||
|
Size = new Vector2(width,30),
|
||||||
|
},
|
||||||
|
slider = new OsuSliderBar<int>
|
||||||
|
{
|
||||||
|
Width = width,
|
||||||
|
},
|
||||||
|
sliderDouble = new OsuSliderBar<double>
|
||||||
|
{
|
||||||
|
Width = width,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
slider.Current.BindTo(new BindableInt(5)
|
||||||
|
{
|
||||||
|
MaxValue = 10,
|
||||||
|
MinValue = 0
|
||||||
|
});
|
||||||
|
|
||||||
|
sliderDouble.Current.BindTo(new BindableDouble(0.5)
|
||||||
|
{
|
||||||
|
MaxValue = 1,
|
||||||
|
MinValue = 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TooltipTextContainer : Container, IHasTooltip
|
||||||
|
{
|
||||||
|
private readonly OsuSpriteText text;
|
||||||
|
|
||||||
|
public string TooltipText => text.Text;
|
||||||
|
|
||||||
|
public TooltipTextContainer(string tooltipText)
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both;
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
text = new OsuSpriteText
|
||||||
|
{
|
||||||
|
Text = tooltipText,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TooltipTextbox : OsuTextBox, IHasTooltip
|
||||||
|
{
|
||||||
|
public string TooltipText => Text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Framework.Screens.Testing;
|
using osu.Framework.Platform;
|
||||||
|
using osu.Framework.Testing;
|
||||||
using osu.Game;
|
using osu.Game;
|
||||||
using osu.Game.Screens.Backgrounds;
|
using osu.Game.Screens.Backgrounds;
|
||||||
|
|
||||||
@ -13,11 +14,22 @@ namespace osu.Desktop.VisualTests
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
new BackgroundScreenDefault { Depth = 10 }.LoadAsync(this, AddInternal);
|
LoadComponentAsync(new BackgroundScreenDefault { Depth = 10 }, AddInternal);
|
||||||
|
|
||||||
// Have to construct this here, rather than in the constructor, because
|
// Have to construct this here, rather than in the constructor, because
|
||||||
// we depend on some dependencies to be loaded within OsuGameBase.load().
|
// we depend on some dependencies to be loaded within OsuGameBase.load().
|
||||||
Add(new TestBrowser());
|
Add(new TestBrowser());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void SetHost(GameHost host)
|
||||||
|
{
|
||||||
|
base.SetHost(host);
|
||||||
|
|
||||||
|
host.UpdateThread.InactiveHz = host.UpdateThread.ActiveHz;
|
||||||
|
host.DrawThread.InactiveHz = host.DrawThread.ActiveHz;
|
||||||
|
host.InputThread.InactiveHz = host.InputThread.ActiveHz;
|
||||||
|
|
||||||
|
host.Window.CursorState = CursorState.Hidden;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
-->
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
@ -23,6 +23,7 @@
|
|||||||
<SignAssembly>false</SignAssembly>
|
<SignAssembly>false</SignAssembly>
|
||||||
<TargetZone>LocalIntranet</TargetZone>
|
<TargetZone>LocalIntranet</TargetZone>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<PublishUrl>publish\</PublishUrl>
|
<PublishUrl>publish\</PublishUrl>
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
<InstallFrom>Disk</InstallFrom>
|
<InstallFrom>Disk</InstallFrom>
|
||||||
@ -60,6 +61,7 @@
|
|||||||
<RunCodeAnalysis>false</RunCodeAnalysis>
|
<RunCodeAnalysis>false</RunCodeAnalysis>
|
||||||
<Prefer32Bit>false</Prefer32Bit>
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||||
|
<LangVersion>6</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>none</DebugType>
|
<DebugType>none</DebugType>
|
||||||
@ -82,22 +84,20 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="mscorlib" />
|
<Reference Include="mscorlib" />
|
||||||
<Reference Include="OpenTK, Version=2.0.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>$(SolutionDir)\packages\ppy.OpenTK.2.0.50727.1340\lib\net45\OpenTK.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="SharpCompress, Version=0.15.1.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
|
<Reference Include="OpenTK, Version=2.0.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\SharpCompress.0.15.1\lib\net45\SharpCompress.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\ppy.OpenTK.2.0.50727.1341\lib\net45\OpenTK.dll</HintPath>
|
||||||
<Private>True</Private>
|
</Reference>
|
||||||
|
<Reference Include="SharpCompress, Version=0.15.2.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
|
||||||
|
<HintPath>$(SolutionDir)\packages\SharpCompress.0.15.2\lib\net45\SharpCompress.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="SQLite.Net, Version=3.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="SQLite.Net, Version=3.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>$(SolutionDir)\packages\SQLite.Net.Core-PCL.3.1.1\lib\portable-win8+net45+wp8+wpa81+MonoAndroid1+MonoTouch1\SQLite.Net.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\SQLite.Net.Core-PCL.3.1.1\lib\portable-win8+net45+wp8+wpa81+MonoAndroid1+MonoTouch1\SQLite.Net.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="Newtonsoft.Json">
|
|
||||||
<HintPath>$(SolutionDir)\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="SQLiteNetExtensions">
|
<Reference Include="SQLiteNetExtensions">
|
||||||
<HintPath>$(SolutionDir)\packages\SQLiteNetExtensions.1.3.0\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1\SQLiteNetExtensions.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\SQLiteNetExtensions.1.3.0\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1\SQLiteNetExtensions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@ -114,7 +114,6 @@
|
|||||||
<None Include="..\osu.licenseheader">
|
<None Include="..\osu.licenseheader">
|
||||||
<Link>osu.licenseheader</Link>
|
<Link>osu.licenseheader</Link>
|
||||||
</None>
|
</None>
|
||||||
<None Include="app.config" />
|
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
<None Include="OpenTK.dll.config" />
|
<None Include="OpenTK.dll.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -150,6 +149,10 @@
|
|||||||
<Project>{65dc628f-a640-4111-ab35-3a5652bc1e17}</Project>
|
<Project>{65dc628f-a640-4111-ab35-3a5652bc1e17}</Project>
|
||||||
<Name>osu.Framework.Desktop</Name>
|
<Name>osu.Framework.Desktop</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\osu-framework\osu.Framework.Testing\osu.Framework.Testing.csproj">
|
||||||
|
<Project>{007b2356-ab6f-4bd9-96d5-116fc2dce69a}</Project>
|
||||||
|
<Name>osu.Framework.Testing</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu-framework\osu.Framework\osu.Framework.csproj">
|
<ProjectReference Include="..\osu-framework\osu.Framework\osu.Framework.csproj">
|
||||||
<Project>{c76bf5b3-985e-4d39-95fe-97c9c879b83a}</Project>
|
<Project>{c76bf5b3-985e-4d39-95fe-97c9c879b83a}</Project>
|
||||||
<Name>osu.Framework</Name>
|
<Name>osu.Framework</Name>
|
||||||
@ -158,21 +161,21 @@
|
|||||||
<Project>{d9a367c9-4c1a-489f-9b05-a0cea2b53b58}</Project>
|
<Project>{d9a367c9-4c1a-489f-9b05-a0cea2b53b58}</Project>
|
||||||
<Name>osu.Game.Resources</Name>
|
<Name>osu.Game.Resources</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Osu\osu.Game.Modes.Osu.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj">
|
||||||
<Project>{c92a607b-1fdd-4954-9f92-03ff547d9080}</Project>
|
<Project>{c92a607b-1fdd-4954-9f92-03ff547d9080}</Project>
|
||||||
<Name>osu.Game.Modes.Osu</Name>
|
<Name>osu.Game.Rulesets.Osu</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Catch\osu.Game.Modes.Catch.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj">
|
||||||
<Project>{58f6c80c-1253-4a0e-a465-b8c85ebeadf3}</Project>
|
<Project>{58f6c80c-1253-4a0e-a465-b8c85ebeadf3}</Project>
|
||||||
<Name>osu.Game.Modes.Catch</Name>
|
<Name>osu.Game.Rulesets.Catch</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Mania\osu.Game.Modes.Mania.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj">
|
||||||
<Project>{48f4582b-7687-4621-9cbe-5c24197cb536}</Project>
|
<Project>{48f4582b-7687-4621-9cbe-5c24197cb536}</Project>
|
||||||
<Name>osu.Game.Modes.Mania</Name>
|
<Name>osu.Game.Rulesets.Mania</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Taiko\osu.Game.Modes.Taiko.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj">
|
||||||
<Project>{f167e17a-7de6-4af5-b920-a5112296c695}</Project>
|
<Project>{f167e17a-7de6-4af5-b920-a5112296c695}</Project>
|
||||||
<Name>osu.Game.Modes.Taiko</Name>
|
<Name>osu.Game.Rulesets.Taiko</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
||||||
<Project>{0d3fbf8a-7464-4cf7-8c90-3e7886df2d4d}</Project>
|
<Project>{0d3fbf8a-7464-4cf7-8c90-3e7886df2d4d}</Project>
|
||||||
@ -180,11 +183,14 @@
|
|||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Benchmark.cs" />
|
<Compile Include="AutomatedVisualTestGame.cs" />
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Tests\TestCaseChatDisplay.cs" />
|
<Compile Include="Tests\TestCaseChatDisplay.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseBeatmapDetails.cs" />
|
||||||
<Compile Include="Tests\TestCaseDrawings.cs" />
|
<Compile Include="Tests\TestCaseDrawings.cs" />
|
||||||
<Compile Include="Tests\TestCaseGamefield.cs" />
|
<Compile Include="Tests\TestCaseGamefield.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseGraph.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseMenuOverlays.cs" />
|
||||||
<Compile Include="Tests\TestCaseMusicController.cs" />
|
<Compile Include="Tests\TestCaseMusicController.cs" />
|
||||||
<Compile Include="Tests\TestCaseNotificationManager.cs" />
|
<Compile Include="Tests\TestCaseNotificationManager.cs" />
|
||||||
<Compile Include="Tests\TestCasePlayer.cs" />
|
<Compile Include="Tests\TestCasePlayer.cs" />
|
||||||
@ -192,20 +198,29 @@
|
|||||||
<Compile Include="Tests\TestCaseKeyCounter.cs" />
|
<Compile Include="Tests\TestCaseKeyCounter.cs" />
|
||||||
<Compile Include="Tests\TestCaseMenuButtonSystem.cs" />
|
<Compile Include="Tests\TestCaseMenuButtonSystem.cs" />
|
||||||
<Compile Include="Tests\TestCaseReplay.cs" />
|
<Compile Include="Tests\TestCaseReplay.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseResults.cs" />
|
||||||
<Compile Include="Tests\TestCaseScoreCounter.cs" />
|
<Compile Include="Tests\TestCaseScoreCounter.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseTabControl.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseTaikoHitObjects.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseTaikoPlayfield.cs" />
|
||||||
<Compile Include="Tests\TestCaseTextAwesome.cs" />
|
<Compile Include="Tests\TestCaseTextAwesome.cs" />
|
||||||
<Compile Include="Tests\TestCasePlaySongSelect.cs" />
|
<Compile Include="Tests\TestCasePlaySongSelect.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseTooltip.cs" />
|
||||||
<Compile Include="Tests\TestCaseTwoLayerButton.cs" />
|
<Compile Include="Tests\TestCaseTwoLayerButton.cs" />
|
||||||
<Compile Include="VisualTestGame.cs" />
|
<Compile Include="VisualTestGame.cs" />
|
||||||
<Compile Include="Platform\TestStorage.cs" />
|
<Compile Include="Platform\TestStorage.cs" />
|
||||||
<Compile Include="Tests\TestCaseOptions.cs" />
|
<Compile Include="Tests\TestCaseOptions.cs" />
|
||||||
<Compile Include="Tests\TestCasePauseOverlay.cs" />
|
<Compile Include="Tests\TestCaseSongProgress.cs" />
|
||||||
<Compile Include="Tests\TestCaseModSelectOverlay.cs" />
|
<Compile Include="Tests\TestCaseModSelectOverlay.cs" />
|
||||||
<Compile Include="Tests\TestCaseDialogOverlay.cs" />
|
<Compile Include="Tests\TestCaseDialogOverlay.cs" />
|
||||||
<Compile Include="Tests\TestCaseBeatmapOptionsOverlay.cs" />
|
<Compile Include="Tests\TestCaseBeatmapOptionsOverlay.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseLeaderboard.cs" />
|
||||||
|
<Compile Include="Beatmaps\TestWorkingBeatmap.cs" />
|
||||||
|
<Compile Include="Tests\TestCaseBeatmapDetailArea.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
|
<ItemGroup />
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
-->
|
-->
|
||||||
<packages>
|
<packages>
|
||||||
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
|
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
|
||||||
<package id="ppy.OpenTK" version="2.0.50727.1340" targetFramework="net45" />
|
<package id="ppy.OpenTK" version="2.0.50727.1341" targetFramework="net45" />
|
||||||
<package id="SharpCompress" version="0.15.1" targetFramework="net45" />
|
<package id="SharpCompress" version="0.15.2" targetFramework="net45" />
|
||||||
<package id="SQLite.Net.Core-PCL" version="3.1.1" targetFramework="net45" />
|
<package id="SQLite.Net.Core-PCL" version="3.1.1" targetFramework="net45" />
|
||||||
<package id="SQLite.Net-PCL" version="3.1.1" targetFramework="net45" />
|
<package id="SQLite.Net-PCL" version="3.1.1" targetFramework="net45" />
|
||||||
<package id="SQLiteNetExtensions" version="1.3.0" targetFramework="net45" />
|
<package id="SQLiteNetExtensions" version="1.3.0" targetFramework="net45" />
|
||||||
|
@ -3,10 +3,7 @@
|
|||||||
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Game.Beatmaps.Formats;
|
|
||||||
using osu.Game.Beatmaps.IO;
|
using osu.Game.Beatmaps.IO;
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Database;
|
|
||||||
|
|
||||||
namespace osu.Desktop.Beatmaps.IO
|
namespace osu.Desktop.Beatmaps.IO
|
||||||
{
|
{
|
||||||
@ -18,20 +15,17 @@ namespace osu.Desktop.Beatmaps.IO
|
|||||||
public static void Register() => AddReader<LegacyFilesystemReader>((storage, path) => Directory.Exists(path));
|
public static void Register() => AddReader<LegacyFilesystemReader>((storage, path) => Directory.Exists(path));
|
||||||
|
|
||||||
private string basePath { get; }
|
private string basePath { get; }
|
||||||
private Beatmap firstMap { get; }
|
|
||||||
|
|
||||||
public LegacyFilesystemReader(string path)
|
public LegacyFilesystemReader(string path)
|
||||||
{
|
{
|
||||||
basePath = path;
|
basePath = path;
|
||||||
|
|
||||||
BeatmapFilenames = Directory.GetFiles(basePath, @"*.osu").Select(Path.GetFileName).ToArray();
|
BeatmapFilenames = Directory.GetFiles(basePath, @"*.osu").Select(Path.GetFileName).ToArray();
|
||||||
|
|
||||||
if (BeatmapFilenames.Length == 0)
|
if (BeatmapFilenames.Length == 0)
|
||||||
throw new FileNotFoundException(@"This directory contains no beatmaps");
|
throw new FileNotFoundException(@"This directory contains no beatmaps");
|
||||||
|
|
||||||
StoryboardFilename = Directory.GetFiles(basePath, @"*.osb").Select(Path.GetFileName).FirstOrDefault();
|
StoryboardFilename = Directory.GetFiles(basePath, @"*.osb").Select(Path.GetFileName).FirstOrDefault();
|
||||||
using (var stream = new StreamReader(GetStream(BeatmapFilenames[0])))
|
|
||||||
{
|
|
||||||
var decoder = BeatmapDecoder.GetDecoder(stream);
|
|
||||||
firstMap = decoder.Decode(stream);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Stream GetStream(string name)
|
public override Stream GetStream(string name)
|
||||||
@ -39,11 +33,6 @@ namespace osu.Desktop.Beatmaps.IO
|
|||||||
return File.OpenRead(Path.Combine(basePath, name));
|
return File.OpenRead(Path.Combine(basePath, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override BeatmapMetadata ReadMetadata()
|
|
||||||
{
|
|
||||||
return firstMap.BeatmapInfo.Metadata;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Dispose()
|
public override void Dispose()
|
||||||
{
|
{
|
||||||
// no-op
|
// no-op
|
||||||
|
@ -17,7 +17,7 @@ namespace osu.Desktop
|
|||||||
{
|
{
|
||||||
internal class OsuGameDesktop : OsuGame
|
internal class OsuGameDesktop : OsuGame
|
||||||
{
|
{
|
||||||
private VersionManager versionManager;
|
private readonly VersionManager versionManager;
|
||||||
|
|
||||||
public OsuGameDesktop(string[] args = null)
|
public OsuGameDesktop(string[] args = null)
|
||||||
: base(args)
|
: base(args)
|
||||||
@ -29,10 +29,10 @@ namespace osu.Desktop
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
versionManager.LoadAsync(this);
|
LoadComponentAsync(versionManager);
|
||||||
ModeChanged += m =>
|
ScreenChanged += s =>
|
||||||
{
|
{
|
||||||
if (!versionManager.IsAlive && m is Intro)
|
if (!versionManager.IsAlive && s is Intro)
|
||||||
Add(versionManager);
|
Add(versionManager);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -43,6 +43,8 @@ namespace osu.Desktop
|
|||||||
var desktopWindow = host.Window as DesktopGameWindow;
|
var desktopWindow = host.Window as DesktopGameWindow;
|
||||||
if (desktopWindow != null)
|
if (desktopWindow != null)
|
||||||
{
|
{
|
||||||
|
desktopWindow.CursorState = CursorState.Hidden;
|
||||||
|
|
||||||
desktopWindow.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location);
|
desktopWindow.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location);
|
||||||
desktopWindow.Title = Name;
|
desktopWindow.Title = Name;
|
||||||
|
|
||||||
|
@ -189,19 +189,24 @@ namespace osu.Desktop.Overlays
|
|||||||
|
|
||||||
private class UpdateProgressNotification : ProgressNotification
|
private class UpdateProgressNotification : ProgressNotification
|
||||||
{
|
{
|
||||||
|
private OsuGame game;
|
||||||
|
|
||||||
protected override Notification CreateCompletionNotification() => new ProgressCompletionNotification()
|
protected override Notification CreateCompletionNotification() => new ProgressCompletionNotification()
|
||||||
{
|
{
|
||||||
Text = @"Update ready to install. Click to restart!",
|
Text = @"Update ready to install. Click to restart!",
|
||||||
Activated = () =>
|
Activated = () =>
|
||||||
{
|
{
|
||||||
UpdateManager.RestartApp();
|
UpdateManager.RestartAppWhenExited();
|
||||||
|
game.GracefullyExit();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours, OsuGame game)
|
||||||
{
|
{
|
||||||
|
this.game = game;
|
||||||
|
|
||||||
IconContent.Add(new Drawable[]
|
IconContent.Add(new Drawable[]
|
||||||
{
|
{
|
||||||
new Box
|
new Box
|
||||||
@ -215,6 +220,7 @@ namespace osu.Desktop.Overlays
|
|||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Icon = FontAwesome.fa_upload,
|
Icon = FontAwesome.fa_upload,
|
||||||
Colour = Color4.White,
|
Colour = Color4.White,
|
||||||
|
TextSize = 20
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -7,11 +7,6 @@ using osu.Desktop.Beatmaps.IO;
|
|||||||
using osu.Framework.Desktop;
|
using osu.Framework.Desktop;
|
||||||
using osu.Framework.Desktop.Platform;
|
using osu.Framework.Desktop.Platform;
|
||||||
using osu.Game.IPC;
|
using osu.Game.IPC;
|
||||||
using osu.Game.Modes;
|
|
||||||
using osu.Game.Modes.Catch;
|
|
||||||
using osu.Game.Modes.Mania;
|
|
||||||
using osu.Game.Modes.Osu;
|
|
||||||
using osu.Game.Modes.Taiko;
|
|
||||||
|
|
||||||
namespace osu.Desktop
|
namespace osu.Desktop
|
||||||
{
|
{
|
||||||
@ -41,11 +36,6 @@ namespace osu.Desktop
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Ruleset.Register(new OsuRuleset());
|
|
||||||
Ruleset.Register(new TaikoRuleset());
|
|
||||||
Ruleset.Register(new ManiaRuleset());
|
|
||||||
Ruleset.Register(new CatchRuleset());
|
|
||||||
|
|
||||||
host.Run(new OsuGameDesktop(args));
|
host.Run(new OsuGameDesktop(args));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
-->
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="DeltaCompressionDotNet.MsDelta" publicKeyToken="46b2138a390abf55" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
@ -23,6 +23,7 @@
|
|||||||
<SignAssembly>false</SignAssembly>
|
<SignAssembly>false</SignAssembly>
|
||||||
<TargetZone>LocalIntranet</TargetZone>
|
<TargetZone>LocalIntranet</TargetZone>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<PublishUrl>publish\</PublishUrl>
|
<PublishUrl>publish\</PublishUrl>
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
<InstallFrom>Disk</InstallFrom>
|
<InstallFrom>Disk</InstallFrom>
|
||||||
@ -62,6 +63,7 @@
|
|||||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||||
<Commandlineparameters>
|
<Commandlineparameters>
|
||||||
</Commandlineparameters>
|
</Commandlineparameters>
|
||||||
|
<LangVersion>6</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>none</DebugType>
|
<DebugType>none</DebugType>
|
||||||
@ -101,10 +103,6 @@
|
|||||||
<HintPath>$(SolutionDir)\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.PatchApi.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.PatchApi.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
<Reference Include="Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
|
||||||
<HintPath>$(SolutionDir)\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
@ -126,7 +124,9 @@
|
|||||||
<HintPath>$(SolutionDir)\packages\squirrel.windows.1.5.2\lib\Net45\NuGet.Squirrel.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\squirrel.windows.1.5.2\lib\Net45\NuGet.Squirrel.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="OpenTK, Version=2.0.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4" />
|
<Reference Include="OpenTK, Version=2.0.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
|
||||||
|
<HintPath>$(SolutionDir)\packages\ppy.OpenTK.2.0.50727.1341\lib\net45\OpenTK.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Splat, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Splat, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>$(SolutionDir)\packages\Splat.2.0.0\lib\Net45\Splat.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\Splat.2.0.0\lib\Net45\Splat.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
@ -153,7 +153,7 @@
|
|||||||
<None Include="..\osu.licenseheader">
|
<None Include="..\osu.licenseheader">
|
||||||
<Link>osu.licenseheader</Link>
|
<Link>osu.licenseheader</Link>
|
||||||
</None>
|
</None>
|
||||||
<None Include="app.config" />
|
<None Include="OpenTK.dll.config" />
|
||||||
<None Include="osu!.res" />
|
<None Include="osu!.res" />
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
<None Include="Properties\app.manifest" />
|
<None Include="Properties\app.manifest" />
|
||||||
@ -198,21 +198,21 @@
|
|||||||
<Project>{d9a367c9-4c1a-489f-9b05-a0cea2b53b58}</Project>
|
<Project>{d9a367c9-4c1a-489f-9b05-a0cea2b53b58}</Project>
|
||||||
<Name>osu.Game.Resources</Name>
|
<Name>osu.Game.Resources</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Osu\osu.Game.Modes.Osu.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj">
|
||||||
<Project>{c92a607b-1fdd-4954-9f92-03ff547d9080}</Project>
|
<Project>{c92a607b-1fdd-4954-9f92-03ff547d9080}</Project>
|
||||||
<Name>osu.Game.Modes.Osu</Name>
|
<Name>osu.Game.Rulesets.Osu</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Catch\osu.Game.Modes.Catch.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj">
|
||||||
<Project>{58f6c80c-1253-4a0e-a465-b8c85ebeadf3}</Project>
|
<Project>{58f6c80c-1253-4a0e-a465-b8c85ebeadf3}</Project>
|
||||||
<Name>osu.Game.Modes.Catch</Name>
|
<Name>osu.Game.Rulesets.Catch</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Mania\osu.Game.Modes.Mania.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj">
|
||||||
<Project>{48f4582b-7687-4621-9cbe-5c24197cb536}</Project>
|
<Project>{48f4582b-7687-4621-9cbe-5c24197cb536}</Project>
|
||||||
<Name>osu.Game.Modes.Mania</Name>
|
<Name>osu.Game.Rulesets.Mania</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Taiko\osu.Game.Modes.Taiko.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj">
|
||||||
<Project>{f167e17a-7de6-4af5-b920-a5112296c695}</Project>
|
<Project>{f167e17a-7de6-4af5-b920-a5112296c695}</Project>
|
||||||
<Name>osu.Game.Modes.Taiko</Name>
|
<Name>osu.Game.Rulesets.Taiko</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
||||||
<Project>{0d3fbf8a-7464-4cf7-8c90-3e7886df2d4d}</Project>
|
<Project>{0d3fbf8a-7464-4cf7-8c90-3e7886df2d4d}</Project>
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
@ -8,7 +7,7 @@ Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/maste
|
|||||||
<package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net45" />
|
<package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net45" />
|
||||||
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net45" />
|
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net45" />
|
||||||
<package id="Mono.Cecil" version="0.9.6.4" targetFramework="net45" />
|
<package id="Mono.Cecil" version="0.9.6.4" targetFramework="net45" />
|
||||||
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
|
<package id="ppy.OpenTK" version="2.0.50727.1341" targetFramework="net45" />
|
||||||
<package id="Splat" version="2.0.0" targetFramework="net45" />
|
<package id="Splat" version="2.0.0" targetFramework="net45" />
|
||||||
<package id="squirrel.windows" version="1.5.2" targetFramework="net45" />
|
<package id="squirrel.windows" version="1.5.2" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
@ -1,21 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Modes.Catch.Objects;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.Beatmaps
|
|
||||||
{
|
|
||||||
internal class CatchBeatmapConverter : IBeatmapConverter<CatchBaseHit>
|
|
||||||
{
|
|
||||||
public Beatmap<CatchBaseHit> Convert(Beatmap original)
|
|
||||||
{
|
|
||||||
return new Beatmap<CatchBaseHit>(original)
|
|
||||||
{
|
|
||||||
HitObjects = new List<CatchBaseHit>() // Todo: Convert HitObjects
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using osu.Game.Modes.Objects;
|
|
||||||
using osu.Game.Modes.Osu.Objects;
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.Objects
|
|
||||||
{
|
|
||||||
internal class CatchConverter : HitObjectConverter<CatchBaseHit>
|
|
||||||
{
|
|
||||||
public override List<CatchBaseHit> Convert(Beatmap beatmap)
|
|
||||||
{
|
|
||||||
List<CatchBaseHit> output = new List<CatchBaseHit>();
|
|
||||||
|
|
||||||
foreach (HitObject i in beatmap.HitObjects)
|
|
||||||
{
|
|
||||||
CatchBaseHit h = i as CatchBaseHit;
|
|
||||||
|
|
||||||
if (h == null)
|
|
||||||
{
|
|
||||||
OsuHitObject o = i as OsuHitObject;
|
|
||||||
|
|
||||||
if (o == null) throw new HitObjectConvertException(@"Catch", i);
|
|
||||||
|
|
||||||
h = new Fruit
|
|
||||||
{
|
|
||||||
StartTime = o.StartTime,
|
|
||||||
Position = o.Position.X,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Add(h);
|
|
||||||
}
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Modes.Catch.Beatmaps;
|
|
||||||
using osu.Game.Modes.Catch.Objects;
|
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
|
||||||
using osu.Game.Modes.UI;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.UI
|
|
||||||
{
|
|
||||||
public class CatchHitRenderer : HitRenderer<CatchBaseHit>
|
|
||||||
{
|
|
||||||
public CatchHitRenderer(Beatmap beatmap)
|
|
||||||
: base(beatmap)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override IBeatmapConverter<CatchBaseHit> CreateBeatmapConverter() => new CatchBeatmapConverter();
|
|
||||||
|
|
||||||
protected override Playfield<CatchBaseHit> CreatePlayfield() => new CatchPlayfield();
|
|
||||||
|
|
||||||
protected override DrawableHitObject<CatchBaseHit> GetVisualRepresentation(CatchBaseHit h) => null;// new DrawableFruit(h);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Modes.Mania.Objects;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Mania.Beatmaps
|
|
||||||
{
|
|
||||||
internal class ManiaBeatmapConverter : IBeatmapConverter<ManiaBaseHit>
|
|
||||||
{
|
|
||||||
public Beatmap<ManiaBaseHit> Convert(Beatmap original)
|
|
||||||
{
|
|
||||||
return new Beatmap<ManiaBaseHit>(original)
|
|
||||||
{
|
|
||||||
HitObjects = new List<ManiaBaseHit>() // Todo: Implement
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using osu.Game.Modes.Objects;
|
|
||||||
using osu.Game.Modes.Osu.Objects;
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Mania.Objects
|
|
||||||
{
|
|
||||||
internal class ManiaConverter : HitObjectConverter<ManiaBaseHit>
|
|
||||||
{
|
|
||||||
private readonly int columns;
|
|
||||||
|
|
||||||
public ManiaConverter(int columns)
|
|
||||||
{
|
|
||||||
this.columns = columns;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override List<ManiaBaseHit> Convert(Beatmap beatmap)
|
|
||||||
{
|
|
||||||
List<ManiaBaseHit> output = new List<ManiaBaseHit>();
|
|
||||||
|
|
||||||
foreach (HitObject i in beatmap.HitObjects)
|
|
||||||
{
|
|
||||||
ManiaBaseHit h = i as ManiaBaseHit;
|
|
||||||
|
|
||||||
if (h == null)
|
|
||||||
{
|
|
||||||
OsuHitObject o = i as OsuHitObject;
|
|
||||||
|
|
||||||
if (o == null) throw new HitObjectConvertException(@"Mania", i);
|
|
||||||
|
|
||||||
h = new Note
|
|
||||||
{
|
|
||||||
StartTime = o.StartTime,
|
|
||||||
Column = (int)Math.Round(o.Position.X / 512 * columns)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Add(h);
|
|
||||||
}
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Modes.Mania.Beatmaps;
|
|
||||||
using osu.Game.Modes.Mania.Objects;
|
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
|
||||||
using osu.Game.Modes.UI;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Mania.UI
|
|
||||||
{
|
|
||||||
public class ManiaHitRenderer : HitRenderer<ManiaBaseHit>
|
|
||||||
{
|
|
||||||
private readonly int columns;
|
|
||||||
|
|
||||||
public ManiaHitRenderer(Beatmap beatmap, int columns = 5)
|
|
||||||
: base(beatmap)
|
|
||||||
{
|
|
||||||
this.columns = columns;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override IBeatmapConverter<ManiaBaseHit> CreateBeatmapConverter() => new ManiaBeatmapConverter();
|
|
||||||
|
|
||||||
protected override Playfield<ManiaBaseHit> CreatePlayfield() => new ManiaPlayfield(columns);
|
|
||||||
|
|
||||||
protected override DrawableHitObject<ManiaBaseHit> GetVisualRepresentation(ManiaBaseHit h)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
//return new DrawableNote(h)
|
|
||||||
//{
|
|
||||||
// Position = new Vector2((float)(h.Column + 0.5) / columns, -0.1f),
|
|
||||||
// RelativePositionAxes = Axes.Both
|
|
||||||
//};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
-->
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
@ -1,107 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using System.ComponentModel;
|
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu.Objects.Drawables
|
|
||||||
{
|
|
||||||
public class DrawableOsuHitObject : DrawableHitObject<OsuHitObject>
|
|
||||||
{
|
|
||||||
public const float TIME_PREEMPT = 600;
|
|
||||||
public const float TIME_FADEIN = 400;
|
|
||||||
public const float TIME_FADEOUT = 500;
|
|
||||||
|
|
||||||
public DrawableOsuHitObject(OsuHitObject hitObject)
|
|
||||||
: base(hitObject)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override JudgementInfo CreateJudgementInfo() => new OsuJudgementInfo { MaxScore = OsuScoreResult.Hit300 };
|
|
||||||
|
|
||||||
protected override void UpdateState(ArmedState state)
|
|
||||||
{
|
|
||||||
if (!IsLoaded) return;
|
|
||||||
|
|
||||||
Flush();
|
|
||||||
|
|
||||||
UpdateInitialState();
|
|
||||||
|
|
||||||
Delay(HitObject.StartTime - Time.Current - TIME_PREEMPT + Judgement.TimeOffset, true);
|
|
||||||
|
|
||||||
UpdatePreemptState();
|
|
||||||
|
|
||||||
Delay(TIME_PREEMPT, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void UpdatePreemptState()
|
|
||||||
{
|
|
||||||
FadeIn(TIME_FADEIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void UpdateInitialState()
|
|
||||||
{
|
|
||||||
Alpha = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class OsuJudgementInfo : PositionalJudgementInfo
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The score the user achieved.
|
|
||||||
/// </summary>
|
|
||||||
public OsuScoreResult Score;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The score which would be achievable on a perfect hit.
|
|
||||||
/// </summary>
|
|
||||||
public OsuScoreResult MaxScore = OsuScoreResult.Hit300;
|
|
||||||
|
|
||||||
public int ScoreValue => scoreToInt(Score);
|
|
||||||
|
|
||||||
public int MaxScoreValue => scoreToInt(MaxScore);
|
|
||||||
|
|
||||||
private int scoreToInt(OsuScoreResult result)
|
|
||||||
{
|
|
||||||
switch (result)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
case OsuScoreResult.Hit50:
|
|
||||||
return 50;
|
|
||||||
case OsuScoreResult.Hit100:
|
|
||||||
return 100;
|
|
||||||
case OsuScoreResult.Hit300:
|
|
||||||
return 300;
|
|
||||||
case OsuScoreResult.SliderTick:
|
|
||||||
return 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ComboResult Combo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum ComboResult
|
|
||||||
{
|
|
||||||
[Description(@"")]
|
|
||||||
None,
|
|
||||||
[Description(@"Good")]
|
|
||||||
Good,
|
|
||||||
[Description(@"Amazing")]
|
|
||||||
Perfect
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum OsuScoreResult
|
|
||||||
{
|
|
||||||
[Description(@"Miss")]
|
|
||||||
Miss,
|
|
||||||
[Description(@"50")]
|
|
||||||
Hit50,
|
|
||||||
[Description(@"100")]
|
|
||||||
Hit100,
|
|
||||||
[Description(@"300")]
|
|
||||||
Hit300,
|
|
||||||
[Description(@"10")]
|
|
||||||
SliderTick
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,85 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Framework.Extensions;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
|
||||||
using osu.Framework.Graphics.Sprites;
|
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using osu.Game.Graphics.Sprites;
|
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
|
||||||
using OpenTK;
|
|
||||||
using OpenTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu.Objects.Drawables
|
|
||||||
{
|
|
||||||
public class HitExplosion : FillFlowContainer
|
|
||||||
{
|
|
||||||
private readonly OsuJudgementInfo judgement;
|
|
||||||
private SpriteText line1;
|
|
||||||
private SpriteText line2;
|
|
||||||
|
|
||||||
public HitExplosion(OsuJudgementInfo judgement, OsuHitObject h = null)
|
|
||||||
{
|
|
||||||
this.judgement = judgement;
|
|
||||||
AutoSizeAxes = Axes.Both;
|
|
||||||
Origin = Anchor.Centre;
|
|
||||||
|
|
||||||
Direction = FillDirection.Vertical;
|
|
||||||
Spacing = new Vector2(0, 2);
|
|
||||||
Position = (h?.StackedEndPosition ?? Vector2.Zero) + judgement.PositionOffset;
|
|
||||||
|
|
||||||
Children = new Drawable[]
|
|
||||||
{
|
|
||||||
line1 = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Anchor = Anchor.TopCentre,
|
|
||||||
Origin = Anchor.TopCentre,
|
|
||||||
Text = judgement.Score.GetDescription(),
|
|
||||||
Font = @"Venera",
|
|
||||||
TextSize = 16,
|
|
||||||
},
|
|
||||||
line2 = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Text = judgement.Combo.GetDescription(),
|
|
||||||
Font = @"Venera",
|
|
||||||
TextSize = 11,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
|
||||||
base.LoadComplete();
|
|
||||||
|
|
||||||
if (judgement.Result == HitResult.Miss)
|
|
||||||
{
|
|
||||||
FadeInFromZero(60);
|
|
||||||
|
|
||||||
ScaleTo(1.6f);
|
|
||||||
ScaleTo(1, 100, EasingTypes.In);
|
|
||||||
|
|
||||||
MoveToOffset(new Vector2(0, 100), 800, EasingTypes.InQuint);
|
|
||||||
RotateTo(40, 800, EasingTypes.InQuint);
|
|
||||||
|
|
||||||
Delay(600);
|
|
||||||
FadeOut(200);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
line1.TransformSpacingTo(new Vector2(14, 0), 1800, EasingTypes.OutQuint);
|
|
||||||
line2.TransformSpacingTo(new Vector2(14, 0), 1800, EasingTypes.OutQuint);
|
|
||||||
FadeOut(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (judgement.Result)
|
|
||||||
{
|
|
||||||
case HitResult.Miss:
|
|
||||||
Colour = Color4.Red;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Expire();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,105 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using osu.Game.Beatmaps.Samples;
|
|
||||||
using osu.Game.Modes.Objects;
|
|
||||||
using OpenTK;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu.Objects
|
|
||||||
{
|
|
||||||
public class OsuHitObjectParser : HitObjectParser
|
|
||||||
{
|
|
||||||
public override HitObject Parse(string text)
|
|
||||||
{
|
|
||||||
string[] split = text.Split(',');
|
|
||||||
var type = (HitObjectType)int.Parse(split[3]);
|
|
||||||
bool combo = type.HasFlag(HitObjectType.NewCombo);
|
|
||||||
type &= (HitObjectType)0xF;
|
|
||||||
type &= ~HitObjectType.NewCombo;
|
|
||||||
OsuHitObject result;
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case HitObjectType.Circle:
|
|
||||||
result = new HitCircle
|
|
||||||
{
|
|
||||||
Position = new Vector2(int.Parse(split[0]), int.Parse(split[1]))
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
case HitObjectType.Slider:
|
|
||||||
CurveTypes curveType = CurveTypes.Catmull;
|
|
||||||
double length = 0;
|
|
||||||
List<Vector2> points = new List<Vector2> { new Vector2(int.Parse(split[0]), int.Parse(split[1])) };
|
|
||||||
|
|
||||||
string[] pointsplit = split[5].Split('|');
|
|
||||||
foreach (string t in pointsplit)
|
|
||||||
{
|
|
||||||
if (t.Length == 1)
|
|
||||||
{
|
|
||||||
switch (t)
|
|
||||||
{
|
|
||||||
case @"C":
|
|
||||||
curveType = CurveTypes.Catmull;
|
|
||||||
break;
|
|
||||||
case @"B":
|
|
||||||
curveType = CurveTypes.Bezier;
|
|
||||||
break;
|
|
||||||
case @"L":
|
|
||||||
curveType = CurveTypes.Linear;
|
|
||||||
break;
|
|
||||||
case @"P":
|
|
||||||
curveType = CurveTypes.PerfectCurve;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
string[] temp = t.Split(':');
|
|
||||||
Vector2 v = new Vector2(
|
|
||||||
(int)Convert.ToDouble(temp[0], CultureInfo.InvariantCulture),
|
|
||||||
(int)Convert.ToDouble(temp[1], CultureInfo.InvariantCulture)
|
|
||||||
);
|
|
||||||
points.Add(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
int repeatCount = Convert.ToInt32(split[6], CultureInfo.InvariantCulture);
|
|
||||||
|
|
||||||
if (repeatCount > 9000)
|
|
||||||
throw new ArgumentOutOfRangeException(nameof(repeatCount), @"Repeat count is way too high");
|
|
||||||
|
|
||||||
if (split.Length > 7)
|
|
||||||
length = Convert.ToDouble(split[7], CultureInfo.InvariantCulture);
|
|
||||||
|
|
||||||
result = new Slider
|
|
||||||
{
|
|
||||||
ControlPoints = points,
|
|
||||||
Length = length,
|
|
||||||
CurveType = curveType,
|
|
||||||
RepeatCount = repeatCount,
|
|
||||||
Position = new Vector2(int.Parse(split[0]), int.Parse(split[1]))
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
case HitObjectType.Spinner:
|
|
||||||
result = new Spinner
|
|
||||||
{
|
|
||||||
Length = Convert.ToDouble(split[5], CultureInfo.InvariantCulture) - Convert.ToDouble(split[2], CultureInfo.InvariantCulture),
|
|
||||||
Position = new Vector2(512, 384) / 2,
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new InvalidOperationException($@"Unknown hit object type {type}");
|
|
||||||
}
|
|
||||||
result.StartTime = Convert.ToDouble(split[2], CultureInfo.InvariantCulture);
|
|
||||||
result.Sample = new HitSampleInfo
|
|
||||||
{
|
|
||||||
Type = (SampleType)int.Parse(split[4]),
|
|
||||||
Set = SampleSet.Soft,
|
|
||||||
};
|
|
||||||
result.NewCombo = combo;
|
|
||||||
// TODO: "addition" field
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu.Objects
|
|
||||||
{
|
|
||||||
public class Spinner : OsuHitObject
|
|
||||||
{
|
|
||||||
public double Length;
|
|
||||||
|
|
||||||
public override double EndTime => StartTime + Length;
|
|
||||||
|
|
||||||
public override HitObjectType Type => HitObjectType.Spinner;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
|
||||||
using osu.Game.Modes.Osu.Objects.Drawables;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu
|
|
||||||
{
|
|
||||||
internal class OsuScoreProcessor : ScoreProcessor
|
|
||||||
{
|
|
||||||
public OsuScoreProcessor(int hitObjectCount = 0)
|
|
||||||
: base(hitObjectCount)
|
|
||||||
{
|
|
||||||
Health.Value = 1;
|
|
||||||
Accuracy.Value = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void UpdateCalculations(JudgementInfo judgement)
|
|
||||||
{
|
|
||||||
if (judgement != null)
|
|
||||||
{
|
|
||||||
switch (judgement.Result)
|
|
||||||
{
|
|
||||||
case HitResult.Hit:
|
|
||||||
Combo.Value++;
|
|
||||||
Health.Value += 0.1f;
|
|
||||||
break;
|
|
||||||
case HitResult.Miss:
|
|
||||||
Combo.Value = 0;
|
|
||||||
Health.Value -= 0.2f;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int score = 0;
|
|
||||||
int maxScore = 0;
|
|
||||||
|
|
||||||
foreach (var judgementInfo in Judgements)
|
|
||||||
{
|
|
||||||
var j = (OsuJudgementInfo)judgementInfo;
|
|
||||||
score += j.ScoreValue;
|
|
||||||
maxScore += j.MaxScoreValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
TotalScore.Value = score;
|
|
||||||
Accuracy.Value = (double)score / maxScore;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
|
||||||
using osu.Game.Modes.Osu.Beatmaps;
|
|
||||||
using osu.Game.Modes.Osu.Objects;
|
|
||||||
using osu.Game.Modes.Osu.Objects.Drawables;
|
|
||||||
using osu.Game.Modes.UI;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Osu.UI
|
|
||||||
{
|
|
||||||
public class OsuHitRenderer : HitRenderer<OsuHitObject>
|
|
||||||
{
|
|
||||||
public OsuHitRenderer(Beatmap beatmap)
|
|
||||||
: base(beatmap)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override IBeatmapConverter<OsuHitObject> CreateBeatmapConverter() => new OsuBeatmapConverter();
|
|
||||||
|
|
||||||
protected override Playfield<OsuHitObject> CreatePlayfield() => new OsuPlayfield();
|
|
||||||
|
|
||||||
protected override DrawableHitObject<OsuHitObject> GetVisualRepresentation(OsuHitObject h)
|
|
||||||
{
|
|
||||||
var circle = h as HitCircle;
|
|
||||||
if (circle != null)
|
|
||||||
return new DrawableHitCircle(circle);
|
|
||||||
|
|
||||||
var slider = h as Slider;
|
|
||||||
if (slider != null)
|
|
||||||
return new DrawableSlider(slider);
|
|
||||||
|
|
||||||
var spinner = h as Spinner;
|
|
||||||
if (spinner != null)
|
|
||||||
return new DrawableSpinner(spinner);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
-->
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /></startup></configuration>
|
|
@ -1,20 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Modes.Taiko.Objects;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Taiko.Beatmaps
|
|
||||||
{
|
|
||||||
internal class TaikoBeatmapConverter : IBeatmapConverter<TaikoBaseHit>
|
|
||||||
{
|
|
||||||
public Beatmap<TaikoBaseHit> Convert(Beatmap original)
|
|
||||||
{
|
|
||||||
return new Beatmap<TaikoBaseHit>(original)
|
|
||||||
{
|
|
||||||
HitObjects = new List<TaikoBaseHit>() // Todo: Implement
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Sprites;
|
|
||||||
using osu.Framework.Graphics.Textures;
|
|
||||||
using osu.Framework.Graphics.Transforms;
|
|
||||||
using OpenTK;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Taiko.Objects.Drawable
|
|
||||||
{
|
|
||||||
internal class DrawableTaikoHit : Sprite
|
|
||||||
{
|
|
||||||
private TaikoBaseHit h;
|
|
||||||
|
|
||||||
public DrawableTaikoHit(TaikoBaseHit h)
|
|
||||||
{
|
|
||||||
this.h = h;
|
|
||||||
|
|
||||||
Origin = Anchor.Centre;
|
|
||||||
Scale = new Vector2(0.2f);
|
|
||||||
RelativePositionAxes = Axes.Both;
|
|
||||||
Position = new Vector2(1.1f, 0.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load(TextureStore textures)
|
|
||||||
{
|
|
||||||
Texture = textures.Get(@"Menu/logo");
|
|
||||||
|
|
||||||
Transforms.Add(new TransformPositionX { StartTime = h.StartTime - 200, EndTime = h.StartTime, StartValue = 1.1f, EndValue = 0.1f });
|
|
||||||
Transforms.Add(new TransformAlpha { StartTime = h.StartTime + h.Duration + 200, EndTime = h.StartTime + h.Duration + 400, StartValue = 1, EndValue = 0 });
|
|
||||||
Expire(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Game.Modes.Objects;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Taiko.Objects
|
|
||||||
{
|
|
||||||
public class TaikoBaseHit : HitObject
|
|
||||||
{
|
|
||||||
public float Scale = 1;
|
|
||||||
|
|
||||||
public TaikoColour Type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum TaikoColour
|
|
||||||
{
|
|
||||||
Red,
|
|
||||||
Blue
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using osu.Game.Modes.Objects;
|
|
||||||
using osu.Game.Modes.Osu.Objects;
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Taiko.Objects
|
|
||||||
{
|
|
||||||
internal class TaikoConverter : HitObjectConverter<TaikoBaseHit>
|
|
||||||
{
|
|
||||||
public override List<TaikoBaseHit> Convert(Beatmap beatmap)
|
|
||||||
{
|
|
||||||
List<TaikoBaseHit> output = new List<TaikoBaseHit>();
|
|
||||||
|
|
||||||
foreach (HitObject i in beatmap.HitObjects)
|
|
||||||
{
|
|
||||||
TaikoBaseHit h = i as TaikoBaseHit;
|
|
||||||
|
|
||||||
if (h == null)
|
|
||||||
{
|
|
||||||
OsuHitObject o = i as OsuHitObject;
|
|
||||||
|
|
||||||
if (o == null) throw new HitObjectConvertException(@"Taiko", i);
|
|
||||||
|
|
||||||
h = new TaikoBaseHit
|
|
||||||
{
|
|
||||||
StartTime = o.StartTime,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
output.Add(h);
|
|
||||||
}
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
|
||||||
using osu.Game.Modes.Objects.Drawables;
|
|
||||||
using osu.Game.Modes.Taiko.Beatmaps;
|
|
||||||
using osu.Game.Modes.Taiko.Objects;
|
|
||||||
using osu.Game.Modes.UI;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Taiko.UI
|
|
||||||
{
|
|
||||||
public class TaikoHitRenderer : HitRenderer<TaikoBaseHit>
|
|
||||||
{
|
|
||||||
public TaikoHitRenderer(Beatmap beatmap)
|
|
||||||
: base(beatmap)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override IBeatmapConverter<TaikoBaseHit> CreateBeatmapConverter() => new TaikoBeatmapConverter();
|
|
||||||
|
|
||||||
protected override Playfield<TaikoBaseHit> CreatePlayfield() => new TaikoPlayfield();
|
|
||||||
|
|
||||||
protected override DrawableHitObject<TaikoBaseHit> GetVisualRepresentation(TaikoBaseHit h) => null;// new DrawableTaikoHit(h);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
||||||
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Sprites;
|
|
||||||
using osu.Framework.Graphics.Textures;
|
|
||||||
using osu.Game.Modes.Taiko.Objects;
|
|
||||||
using osu.Game.Modes.UI;
|
|
||||||
using OpenTK;
|
|
||||||
using OpenTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Modes.Taiko.UI
|
|
||||||
{
|
|
||||||
public class TaikoPlayfield : Playfield<TaikoBaseHit>
|
|
||||||
{
|
|
||||||
public TaikoPlayfield()
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.X;
|
|
||||||
Size = new Vector2(1, 100);
|
|
||||||
Anchor = Anchor.Centre;
|
|
||||||
Origin = Anchor.Centre;
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load(TextureStore textures)
|
|
||||||
{
|
|
||||||
Add(new Box { RelativeSizeAxes = Axes.Both, Alpha = 0.5f });
|
|
||||||
|
|
||||||
Add(new Sprite
|
|
||||||
{
|
|
||||||
Texture = textures.Get(@"Menu/logo"),
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
Scale = new Vector2(0.2f),
|
|
||||||
RelativePositionAxes = Axes.Both,
|
|
||||||
Position = new Vector2(0.1f, 0.5f),
|
|
||||||
Colour = Color4.Gray
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
23
osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs
Normal file
23
osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Catch.Objects;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System;
|
||||||
|
using osu.Game.Rulesets.Objects.Types;
|
||||||
|
using osu.Game.Rulesets.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Objects;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Catch.Beatmaps
|
||||||
|
{
|
||||||
|
internal class CatchBeatmapConverter : BeatmapConverter<CatchBaseHit>
|
||||||
|
{
|
||||||
|
protected override IEnumerable<Type> ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) };
|
||||||
|
|
||||||
|
protected override IEnumerable<CatchBaseHit> ConvertHitObject(HitObject original, Beatmap beatmap)
|
||||||
|
{
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -2,11 +2,12 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Modes.Catch.Beatmaps;
|
using osu.Game.Rulesets.Beatmaps;
|
||||||
using osu.Game.Modes.Catch.Objects;
|
using osu.Game.Rulesets.Catch.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Catch.Objects;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch
|
namespace osu.Game.Rulesets.Catch
|
||||||
{
|
{
|
||||||
public class CatchDifficultyCalculator : DifficultyCalculator<CatchBaseHit>
|
public class CatchDifficultyCalculator : DifficultyCalculator<CatchBaseHit>
|
||||||
{
|
{
|
||||||
@ -19,6 +20,6 @@ namespace osu.Game.Modes.Catch
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IBeatmapConverter<CatchBaseHit> CreateBeatmapConverter() => new CatchBeatmapConverter();
|
protected override BeatmapConverter<CatchBaseHit> CreateBeatmapConverter() => new CatchBeatmapConverter();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,17 +4,20 @@
|
|||||||
using OpenTK.Input;
|
using OpenTK.Input;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Modes.Catch.UI;
|
using osu.Game.Rulesets.Catch.Mods;
|
||||||
using osu.Game.Modes.Objects;
|
using osu.Game.Rulesets.Catch.UI;
|
||||||
using osu.Game.Modes.UI;
|
using osu.Game.Rulesets.Mods;
|
||||||
|
using osu.Game.Rulesets.UI;
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using osu.Game.Rulesets.Catch.Scoring;
|
||||||
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch
|
namespace osu.Game.Rulesets.Catch
|
||||||
{
|
{
|
||||||
public class CatchRuleset : Ruleset
|
public class CatchRuleset : Ruleset
|
||||||
{
|
{
|
||||||
public override HitRenderer CreateHitRendererWith(Beatmap beatmap) => new CatchHitRenderer(beatmap);
|
public override HitRenderer CreateHitRendererWith(WorkingBeatmap beatmap) => new CatchHitRenderer(beatmap);
|
||||||
|
|
||||||
public override IEnumerable<Mod> GetModsFor(ModType type)
|
public override IEnumerable<Mod> GetModsFor(ModType type)
|
||||||
{
|
{
|
||||||
@ -73,8 +76,6 @@ namespace osu.Game.Modes.Catch
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override PlayMode PlayMode => PlayMode.Catch;
|
|
||||||
|
|
||||||
public override string Description => "osu!catch";
|
public override string Description => "osu!catch";
|
||||||
|
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_fruits_o;
|
public override FontAwesome Icon => FontAwesome.fa_osu_fruits_o;
|
||||||
@ -86,10 +87,10 @@ namespace osu.Game.Modes.Catch
|
|||||||
new KeyCounterMouse(MouseButton.Right)
|
new KeyCounterMouse(MouseButton.Right)
|
||||||
};
|
};
|
||||||
|
|
||||||
public override ScoreProcessor CreateScoreProcessor(int hitObjectCount = 0) => null;
|
|
||||||
|
|
||||||
public override HitObjectParser CreateHitObjectParser() => new NullHitObjectParser();
|
|
||||||
|
|
||||||
public override DifficultyCalculator CreateDifficultyCalculator(Beatmap beatmap) => new CatchDifficultyCalculator(beatmap);
|
public override DifficultyCalculator CreateDifficultyCalculator(Beatmap beatmap) => new CatchDifficultyCalculator(beatmap);
|
||||||
|
|
||||||
|
public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor();
|
||||||
|
|
||||||
|
public override int LegacyID => 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
14
osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs
Normal file
14
osu.Game.Rulesets.Catch/Judgements/CatchJudgement.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Rulesets.Judgements;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Catch.Judgements
|
||||||
|
{
|
||||||
|
public class CatchJudgement : Judgement
|
||||||
|
{
|
||||||
|
public override string ResultString => string.Empty;
|
||||||
|
|
||||||
|
public override string MaxResultString => string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,9 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch
|
using osu.Game.Rulesets.Mods;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Catch.Mods
|
||||||
{
|
{
|
||||||
public class CatchModNoFail : ModNoFail
|
public class CatchModNoFail : ModNoFail
|
||||||
{
|
{
|
@ -1,12 +1,12 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Game.Modes.Objects;
|
using osu.Game.Rulesets.Objects;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.Objects
|
namespace osu.Game.Rulesets.Catch.Objects
|
||||||
{
|
{
|
||||||
public abstract class CatchBaseHit : HitObject
|
public abstract class CatchBaseHit : HitObject
|
||||||
{
|
{
|
||||||
public float Position;
|
public float Position { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,11 +8,11 @@ using osu.Framework.Graphics.Textures;
|
|||||||
using osu.Framework.Graphics.Transforms;
|
using osu.Framework.Graphics.Transforms;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.Objects.Drawable
|
namespace osu.Game.Rulesets.Catch.Objects.Drawable
|
||||||
{
|
{
|
||||||
internal class DrawableFruit : Sprite
|
internal class DrawableFruit : Sprite
|
||||||
{
|
{
|
||||||
private CatchBaseHit h;
|
private readonly CatchBaseHit h;
|
||||||
|
|
||||||
public DrawableFruit(CatchBaseHit h)
|
public DrawableFruit(CatchBaseHit h)
|
||||||
{
|
{
|
||||||
@ -29,8 +29,10 @@ namespace osu.Game.Modes.Catch.Objects.Drawable
|
|||||||
{
|
{
|
||||||
Texture = textures.Get(@"Menu/logo");
|
Texture = textures.Get(@"Menu/logo");
|
||||||
|
|
||||||
|
const double duration = 0;
|
||||||
|
|
||||||
Transforms.Add(new TransformPosition { StartTime = h.StartTime - 200, EndTime = h.StartTime, StartValue = new Vector2(h.Position, -0.1f), EndValue = new Vector2(h.Position, 0.9f) });
|
Transforms.Add(new TransformPosition { StartTime = h.StartTime - 200, EndTime = h.StartTime, StartValue = new Vector2(h.Position, -0.1f), EndValue = new Vector2(h.Position, 0.9f) });
|
||||||
Transforms.Add(new TransformAlpha { StartTime = h.StartTime + h.Duration + 200, EndTime = h.StartTime + h.Duration + 400, StartValue = 1, EndValue = 0 });
|
Transforms.Add(new TransformAlpha { StartTime = h.StartTime + duration + 200, EndTime = h.StartTime + duration + 400, StartValue = 1, EndValue = 0 });
|
||||||
Expire(true);
|
Expire(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.Objects
|
namespace osu.Game.Rulesets.Catch.Objects
|
||||||
{
|
{
|
||||||
public class Droplet : CatchBaseHit
|
public class Droplet : CatchBaseHit
|
||||||
{
|
{
|
@ -1,7 +1,7 @@
|
|||||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.Objects
|
namespace osu.Game.Rulesets.Catch.Objects
|
||||||
{
|
{
|
||||||
public class Fruit : CatchBaseHit
|
public class Fruit : CatchBaseHit
|
||||||
{
|
{
|
@ -7,11 +7,11 @@ using System.Runtime.InteropServices;
|
|||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("osu.Game.Modes.Catch")]
|
[assembly: AssemblyTitle("osu.Game.Rulesets.Catch")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("osu.Game.Modes.Catch")]
|
[assembly: AssemblyProduct("osu.Game.Rulesets.Catch")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
26
osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs
Normal file
26
osu.Game.Rulesets.Catch/Scoring/CatchScoreProcessor.cs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Rulesets.Catch.Judgements;
|
||||||
|
using osu.Game.Rulesets.Catch.Objects;
|
||||||
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
using osu.Game.Rulesets.UI;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Catch.Scoring
|
||||||
|
{
|
||||||
|
internal class CatchScoreProcessor : ScoreProcessor<CatchBaseHit, CatchJudgement>
|
||||||
|
{
|
||||||
|
public CatchScoreProcessor()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public CatchScoreProcessor(HitRenderer<CatchBaseHit, CatchJudgement> hitRenderer)
|
||||||
|
: base(hitRenderer)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnNewJudgement(CatchJudgement judgement)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
osu.Game.Rulesets.Catch/UI/CatchHitRenderer.cs
Normal file
31
osu.Game.Rulesets.Catch/UI/CatchHitRenderer.cs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Catch.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Catch.Judgements;
|
||||||
|
using osu.Game.Rulesets.Catch.Objects;
|
||||||
|
using osu.Game.Rulesets.Catch.Scoring;
|
||||||
|
using osu.Game.Rulesets.Objects.Drawables;
|
||||||
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
using osu.Game.Rulesets.UI;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Catch.UI
|
||||||
|
{
|
||||||
|
public class CatchHitRenderer : HitRenderer<CatchBaseHit, CatchJudgement>
|
||||||
|
{
|
||||||
|
public CatchHitRenderer(WorkingBeatmap beatmap)
|
||||||
|
: base(beatmap)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ScoreProcessor CreateScoreProcessor() => new CatchScoreProcessor(this);
|
||||||
|
|
||||||
|
protected override BeatmapConverter<CatchBaseHit> CreateBeatmapConverter() => new CatchBeatmapConverter();
|
||||||
|
|
||||||
|
protected override Playfield<CatchBaseHit, CatchJudgement> CreatePlayfield() => new CatchPlayfield();
|
||||||
|
|
||||||
|
protected override DrawableHitObject<CatchBaseHit, CatchJudgement> GetVisualRepresentation(CatchBaseHit h) => null;
|
||||||
|
}
|
||||||
|
}
|
@ -3,18 +3,18 @@
|
|||||||
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Game.Modes.Catch.Objects;
|
using osu.Game.Rulesets.Catch.Objects;
|
||||||
using osu.Game.Modes.UI;
|
using osu.Game.Rulesets.UI;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
using osu.Game.Rulesets.Catch.Judgements;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Catch.UI
|
namespace osu.Game.Rulesets.Catch.UI
|
||||||
{
|
{
|
||||||
public class CatchPlayfield : Playfield<CatchBaseHit>
|
public class CatchPlayfield : Playfield<CatchBaseHit, CatchJudgement>
|
||||||
{
|
{
|
||||||
public CatchPlayfield()
|
public CatchPlayfield()
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Y;
|
Size = new Vector2(1, 0.9f);
|
||||||
Size = new Vector2(512, 0.9f);
|
|
||||||
Anchor = Anchor.BottomCentre;
|
Anchor = Anchor.BottomCentre;
|
||||||
Origin = Anchor.BottomCentre;
|
Origin = Anchor.BottomCentre;
|
||||||
|
|
@ -7,8 +7,8 @@
|
|||||||
<ProjectGuid>{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}</ProjectGuid>
|
<ProjectGuid>{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}</ProjectGuid>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>osu.Game.Modes.Catch</RootNamespace>
|
<RootNamespace>osu.Game.Rulesets.Catch</RootNamespace>
|
||||||
<AssemblyName>osu.Game.Modes.Catch</AssemblyName>
|
<AssemblyName>osu.Game.Rulesets.Catch</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@ -21,6 +21,7 @@
|
|||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||||
|
<LangVersion>6</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
@ -33,8 +34,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="OpenTK, Version=2.0.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
|
<Reference Include="OpenTK, Version=2.0.0.0, Culture=neutral, PublicKeyToken=bad199fe84eb3df4, processorArchitecture=MSIL">
|
||||||
<HintPath>$(SolutionDir)\packages\ppy.OpenTK.2.0.50727.1340\lib\net45\OpenTK.dll</HintPath>
|
<HintPath>$(SolutionDir)\packages\ppy.OpenTK.2.0.50727.1341\lib\net45\OpenTK.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
@ -49,8 +49,9 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Beatmaps\CatchBeatmapConverter.cs" />
|
<Compile Include="Beatmaps\CatchBeatmapConverter.cs" />
|
||||||
<Compile Include="CatchDifficultyCalculator.cs" />
|
<Compile Include="CatchDifficultyCalculator.cs" />
|
||||||
|
<Compile Include="Scoring\CatchScoreProcessor.cs" />
|
||||||
|
<Compile Include="Judgements\CatchJudgement.cs" />
|
||||||
<Compile Include="Objects\CatchBaseHit.cs" />
|
<Compile Include="Objects\CatchBaseHit.cs" />
|
||||||
<Compile Include="Objects\CatchConverter.cs" />
|
|
||||||
<Compile Include="Objects\Drawable\DrawableFruit.cs" />
|
<Compile Include="Objects\Drawable\DrawableFruit.cs" />
|
||||||
<Compile Include="Objects\Droplet.cs" />
|
<Compile Include="Objects\Droplet.cs" />
|
||||||
<Compile Include="Objects\Fruit.cs" />
|
<Compile Include="Objects\Fruit.cs" />
|
||||||
@ -58,7 +59,7 @@
|
|||||||
<Compile Include="UI\CatchHitRenderer.cs" />
|
<Compile Include="UI\CatchHitRenderer.cs" />
|
||||||
<Compile Include="UI\CatchPlayfield.cs" />
|
<Compile Include="UI\CatchPlayfield.cs" />
|
||||||
<Compile Include="CatchRuleset.cs" />
|
<Compile Include="CatchRuleset.cs" />
|
||||||
<Compile Include="CatchMod.cs" />
|
<Compile Include="Mods\CatchMod.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\osu.licenseheader">
|
<None Include="..\osu.licenseheader">
|
||||||
@ -72,9 +73,9 @@
|
|||||||
<Project>{C76BF5B3-985E-4D39-95FE-97C9C879B83A}</Project>
|
<Project>{C76BF5B3-985E-4D39-95FE-97C9C879B83A}</Project>
|
||||||
<Name>osu.Framework</Name>
|
<Name>osu.Framework</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game.Modes.Osu\osu.Game.Modes.Osu.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj">
|
||||||
<Project>{C92A607B-1FDD-4954-9F92-03FF547D9080}</Project>
|
<Project>{C92A607B-1FDD-4954-9F92-03FF547D9080}</Project>
|
||||||
<Name>osu.Game.Modes.Osu</Name>
|
<Name>osu.Game.Rulesets.Osu</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
||||||
<Project>{0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D}</Project>
|
<Project>{0D3FBF8A-7464-4CF7-8C90-3E7886DF2D4D}</Project>
|
@ -5,5 +5,5 @@ Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|||||||
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
-->
|
-->
|
||||||
<packages>
|
<packages>
|
||||||
<package id="ppy.OpenTK" version="2.0.50727.1340" targetFramework="net45" />
|
<package id="ppy.OpenTK" version="2.0.50727.1341" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
23
osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
Normal file
23
osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Mania.Objects;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System;
|
||||||
|
using osu.Game.Rulesets.Objects.Types;
|
||||||
|
using osu.Game.Rulesets.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Objects;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Mania.Beatmaps
|
||||||
|
{
|
||||||
|
internal class ManiaBeatmapConverter : BeatmapConverter<ManiaBaseHit>
|
||||||
|
{
|
||||||
|
protected override IEnumerable<Type> ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) };
|
||||||
|
|
||||||
|
protected override IEnumerable<ManiaBaseHit> ConvertHitObject(HitObject original, Beatmap beatmap)
|
||||||
|
{
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs
Normal file
14
osu.Game.Rulesets.Mania/Judgements/ManiaJudgement.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Rulesets.Judgements;
|
||||||
|
|
||||||
|
namespace osu.Game.Rulesets.Mania.Judgements
|
||||||
|
{
|
||||||
|
public class ManiaJudgement : Judgement
|
||||||
|
{
|
||||||
|
public override string ResultString => string.Empty;
|
||||||
|
|
||||||
|
public override string MaxResultString => string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -2,11 +2,12 @@
|
|||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Modes.Mania.Beatmaps;
|
using osu.Game.Rulesets.Beatmaps;
|
||||||
using osu.Game.Modes.Mania.Objects;
|
using osu.Game.Rulesets.Mania.Beatmaps;
|
||||||
|
using osu.Game.Rulesets.Mania.Objects;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Mania
|
namespace osu.Game.Rulesets.Mania
|
||||||
{
|
{
|
||||||
public class ManiaDifficultyCalculator : DifficultyCalculator<ManiaBaseHit>
|
public class ManiaDifficultyCalculator : DifficultyCalculator<ManiaBaseHit>
|
||||||
{
|
{
|
||||||
@ -20,6 +21,6 @@ namespace osu.Game.Modes.Mania
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IBeatmapConverter<ManiaBaseHit> CreateBeatmapConverter() => new ManiaBeatmapConverter();
|
protected override BeatmapConverter<ManiaBaseHit> CreateBeatmapConverter() => new ManiaBeatmapConverter();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,17 +3,20 @@
|
|||||||
|
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Modes.Mania.UI;
|
using osu.Game.Rulesets.Mania.Mods;
|
||||||
using osu.Game.Modes.Objects;
|
using osu.Game.Rulesets.Mania.UI;
|
||||||
using osu.Game.Modes.UI;
|
using osu.Game.Rulesets.Mods;
|
||||||
|
using osu.Game.Rulesets.UI;
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using osu.Game.Rulesets.Mania.Scoring;
|
||||||
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
|
||||||
namespace osu.Game.Modes.Mania
|
namespace osu.Game.Rulesets.Mania
|
||||||
{
|
{
|
||||||
public class ManiaRuleset : Ruleset
|
public class ManiaRuleset : Ruleset
|
||||||
{
|
{
|
||||||
public override HitRenderer CreateHitRendererWith(Beatmap beatmap) => new ManiaHitRenderer(beatmap);
|
public override HitRenderer CreateHitRendererWith(WorkingBeatmap beatmap) => new ManiaHitRenderer(beatmap);
|
||||||
|
|
||||||
public override IEnumerable<Mod> GetModsFor(ModType type)
|
public override IEnumerable<Mod> GetModsFor(ModType type)
|
||||||
{
|
{
|
||||||
@ -93,18 +96,16 @@ namespace osu.Game.Modes.Mania
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override PlayMode PlayMode => PlayMode.Mania;
|
|
||||||
|
|
||||||
public override string Description => "osu!mania";
|
public override string Description => "osu!mania";
|
||||||
|
|
||||||
public override FontAwesome Icon => FontAwesome.fa_osu_mania_o;
|
public override FontAwesome Icon => FontAwesome.fa_osu_mania_o;
|
||||||
|
|
||||||
public override IEnumerable<KeyCounter> CreateGameplayKeys() => new KeyCounter[] { /* Todo: Should be keymod specific */ };
|
public override IEnumerable<KeyCounter> CreateGameplayKeys() => new KeyCounter[] { /* Todo: Should be keymod specific */ };
|
||||||
|
|
||||||
public override ScoreProcessor CreateScoreProcessor(int hitObjectCount = 0) => null;
|
|
||||||
|
|
||||||
public override HitObjectParser CreateHitObjectParser() => new NullHitObjectParser();
|
|
||||||
|
|
||||||
public override DifficultyCalculator CreateDifficultyCalculator(Beatmap beatmap) => new ManiaDifficultyCalculator(beatmap);
|
public override DifficultyCalculator CreateDifficultyCalculator(Beatmap beatmap) => new ManiaDifficultyCalculator(beatmap);
|
||||||
|
|
||||||
|
public override ScoreProcessor CreateScoreProcessor() => new ManiaScoreProcessor();
|
||||||
|
|
||||||
|
public override int LegacyID => 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user