mirror of
https://github.com/ppy/osu.git
synced 2025-01-12 20:22:55 +08:00
Merge branch 'net6-ios' into guard-url-protocols
This commit is contained in:
commit
ce408eaac0
8
.github/workflows/ci.yml
vendored
8
.github/workflows/ci.yml
vendored
@ -132,8 +132,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
dotnet-version: "6.0.x"
|
dotnet-version: "6.0.x"
|
||||||
|
|
||||||
# Contrary to seemingly any other msbuild, msbuild running on macOS/Mono
|
- name: Install .NET Workloads
|
||||||
# cannot accept .sln(f) files as arguments.
|
run: dotnet workload install maui-ios
|
||||||
# Build just the main game for now.
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: msbuild osu.iOS/osu.iOS.csproj /restore /p:Configuration=Debug
|
run: dotnet build -c Debug osu.iOS
|
||||||
|
@ -32,7 +32,7 @@ If you are looking to install or test osu! without setting up a development envi
|
|||||||
|
|
||||||
**Latest build:**
|
**Latest build:**
|
||||||
|
|
||||||
| [Windows 8.1+ (x64)](https://github.com/ppy/osu/releases/latest/download/install.exe) | macOS 10.15+ ([Intel](https://github.com/ppy/osu/releases/latest/download/osu.app.Intel.zip), [Apple Silicon](https://github.com/ppy/osu/releases/latest/download/osu.app.Apple.Silicon.zip)) | [Linux (x64)](https://github.com/ppy/osu/releases/latest/download/osu.AppImage) | [iOS 10+](https://osu.ppy.sh/home/testflight) | [Android 5+](https://github.com/ppy/osu/releases/latest/download/sh.ppy.osulazer.apk) |
|
| [Windows 8.1+ (x64)](https://github.com/ppy/osu/releases/latest/download/install.exe) | macOS 10.15+ ([Intel](https://github.com/ppy/osu/releases/latest/download/osu.app.Intel.zip), [Apple Silicon](https://github.com/ppy/osu/releases/latest/download/osu.app.Apple.Silicon.zip)) | [Linux (x64)](https://github.com/ppy/osu/releases/latest/download/osu.AppImage) | [iOS 13.4+](https://osu.ppy.sh/home/testflight) | [Android 5+](https://github.com/ppy/osu/releases/latest/download/sh.ppy.osulazer.apk) |
|
||||||
| ------------- | ------------- | ------------- | ------------- | ------------- |
|
| ------------- | ------------- | ------------- | ------------- | ------------- |
|
||||||
|
|
||||||
- The iOS testflight link may fill up (Apple has a hard limit of 10,000 users). We reset it occasionally when this happens. Please do not ask about this. Check back regularly for link resets or follow [peppy](https://twitter.com/ppy) on twitter for announcements of link resets.
|
- The iOS testflight link may fill up (Apple has a hard limit of 10,000 users). We reset it occasionally when this happens. Please do not ask about this. Check back regularly for link resets or follow [peppy](https://twitter.com/ppy) on twitter for announcements of link resets.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
clone_depth: 1
|
clone_depth: 1
|
||||||
version: '{branch}-{build}'
|
version: '{branch}-{build}'
|
||||||
image: Visual Studio 2019
|
image: Visual Studio 2022
|
||||||
cache:
|
cache:
|
||||||
- '%LOCALAPPDATA%\NuGet\v3-cache -> appveyor.yml'
|
- '%LOCALAPPDATA%\NuGet\v3-cache -> appveyor.yml'
|
||||||
|
|
||||||
@ -11,6 +11,7 @@ dotnet_csproj:
|
|||||||
|
|
||||||
before_build:
|
before_build:
|
||||||
- cmd: dotnet --info # Useful when version mismatch between CI and local
|
- cmd: dotnet --info # Useful when version mismatch between CI and local
|
||||||
|
- cmd: dotnet workload install maui-ios # Change to `dotnet workload restore` once there's no old projects
|
||||||
- cmd: nuget restore -verbosity quiet # Only nuget.exe knows both new (.NET Core) and old (Xamarin) projects
|
- cmd: nuget restore -verbosity quiet # Only nuget.exe knows both new (.NET Core) and old (Xamarin) projects
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using osu.Framework.iOS;
|
|
||||||
using UIKit;
|
using UIKit;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Catch.Tests.iOS
|
namespace osu.Game.Rulesets.Catch.Tests.iOS
|
||||||
@ -12,7 +11,7 @@ namespace osu.Game.Rulesets.Catch.Tests.iOS
|
|||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
UIApplication.Main(args, typeof(GameUIApplication), typeof(AppDelegate));
|
UIApplication.Main(args, null, typeof(AppDelegate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>10.0</string>
|
<string>13.4</string>
|
||||||
<key>UIDeviceFamily</key>
|
<key>UIDeviceFamily</key>
|
||||||
<array>
|
<array>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
|
@ -1,35 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
|
|
||||||
<ProjectGuid>{4004C7B7-1A62-43F1-9DF2-52450FA67E70}</ProjectGuid>
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net6.0-ios</TargetFramework>
|
||||||
|
<SupportedOSPlatformVersion>13.4</SupportedOSPlatformVersion>
|
||||||
<RootNamespace>osu.Game.Rulesets.Catch.Tests</RootNamespace>
|
<RootNamespace>osu.Game.Rulesets.Catch.Tests</RootNamespace>
|
||||||
<AssemblyName>osu.Game.Rulesets.Catch.Tests.iOS</AssemblyName>
|
<AssemblyName>osu.Game.Rulesets.Catch.Tests.iOS</AssemblyName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\osu.iOS.props" />
|
<Import Project="..\osu.iOS.props" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Info.plist" />
|
|
||||||
<None Include="Entitlements.plist" />
|
|
||||||
<LinkDescription Include="..\osu.iOS\Linker.xml">
|
|
||||||
<Link>Linker.xml</Link>
|
|
||||||
</LinkDescription>
|
|
||||||
<Compile Include="Application.cs" />
|
|
||||||
<Compile Include="AppDelegate.cs" />
|
|
||||||
<Compile Include="..\osu.Game.Rulesets.Catch.Tests\**\*.cs" Exclude="**\obj\**">
|
<Compile Include="..\osu.Game.Rulesets.Catch.Tests\**\*.cs" Exclude="**\obj\**">
|
||||||
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Project References">
|
<ItemGroup Label="Project References">
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj" />
|
||||||
<Project>{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}</Project>
|
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj" />
|
||||||
<Name>osu.Game</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj">
|
|
||||||
<Project>{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Catch</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
|
</Project>
|
||||||
</Project>
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using osu.Framework.iOS;
|
|
||||||
using UIKit;
|
using UIKit;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Mania.Tests.iOS
|
namespace osu.Game.Rulesets.Mania.Tests.iOS
|
||||||
@ -12,7 +11,7 @@ namespace osu.Game.Rulesets.Mania.Tests.iOS
|
|||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
UIApplication.Main(args, typeof(GameUIApplication), typeof(AppDelegate));
|
UIApplication.Main(args, null, typeof(AppDelegate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>10.0</string>
|
<string>13.4</string>
|
||||||
<key>UIDeviceFamily</key>
|
<key>UIDeviceFamily</key>
|
||||||
<array>
|
<array>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
|
@ -1,35 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
|
|
||||||
<ProjectGuid>{39FD990E-B6CE-4B2A-999F-BC008CF2C64C}</ProjectGuid>
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net6.0-ios</TargetFramework>
|
||||||
|
<SupportedOSPlatformVersion>13.4</SupportedOSPlatformVersion>
|
||||||
<RootNamespace>osu.Game.Rulesets.Mania.Tests</RootNamespace>
|
<RootNamespace>osu.Game.Rulesets.Mania.Tests</RootNamespace>
|
||||||
<AssemblyName>osu.Game.Rulesets.Mania.Tests.iOS</AssemblyName>
|
<AssemblyName>osu.Game.Rulesets.Mania.Tests.iOS</AssemblyName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\osu.iOS.props" />
|
<Import Project="..\osu.iOS.props" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Info.plist" />
|
|
||||||
<None Include="Entitlements.plist" />
|
|
||||||
<LinkDescription Include="..\osu.iOS\Linker.xml">
|
|
||||||
<Link>Linker.xml</Link>
|
|
||||||
</LinkDescription>
|
|
||||||
<Compile Include="Application.cs" />
|
|
||||||
<Compile Include="AppDelegate.cs" />
|
|
||||||
<Compile Include="..\osu.Game.Rulesets.Mania.Tests\**\*.cs" Exclude="**\obj\**">
|
<Compile Include="..\osu.Game.Rulesets.Mania.Tests\**\*.cs" Exclude="**\obj\**">
|
||||||
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Project References">
|
<ItemGroup Label="Project References">
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj" />
|
||||||
<Project>{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}</Project>
|
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj" />
|
||||||
<Name>osu.Game</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj">
|
|
||||||
<Project>{48F4582B-7687-4621-9CBE-5C24197CB536}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Mania</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
|
</Project>
|
||||||
</Project>
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using osu.Framework.iOS;
|
|
||||||
using UIKit;
|
using UIKit;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Tests.iOS
|
namespace osu.Game.Rulesets.Osu.Tests.iOS
|
||||||
@ -12,7 +11,7 @@ namespace osu.Game.Rulesets.Osu.Tests.iOS
|
|||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
UIApplication.Main(args, typeof(GameUIApplication), typeof(AppDelegate));
|
UIApplication.Main(args, null, typeof(AppDelegate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>10.0</string>
|
<string>13.4</string>
|
||||||
<key>UIDeviceFamily</key>
|
<key>UIDeviceFamily</key>
|
||||||
<array>
|
<array>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
|
@ -1,35 +1,20 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<OutputType>Exe</OutputType>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
|
<TargetFramework>net6.0-ios</TargetFramework>
|
||||||
<ProjectGuid>{6653CA6F-DB06-4604-A3FD-762E25C2AF96}</ProjectGuid>
|
<SupportedOSPlatformVersion>13.4</SupportedOSPlatformVersion>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<RootNamespace>osu.Game.Rulesets.Osu.Tests</RootNamespace>
|
<RootNamespace>osu.Game.Rulesets.Osu.Tests</RootNamespace>
|
||||||
<AssemblyName>osu.Game.Rulesets.Osu.Tests.iOS</AssemblyName>
|
<AssemblyName>osu.Game.Rulesets.Osu.Tests.iOS</AssemblyName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\osu.iOS.props" />
|
<Import Project="..\osu.iOS.props" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Info.plist" />
|
|
||||||
<None Include="Entitlements.plist" />
|
|
||||||
<LinkDescription Include="..\osu.iOS\Linker.xml">
|
|
||||||
<Link>Linker.xml</Link>
|
|
||||||
</LinkDescription>
|
|
||||||
<Compile Include="Application.cs" />
|
|
||||||
<Compile Include="AppDelegate.cs" />
|
|
||||||
<Compile Include="..\osu.Game.Rulesets.Osu.Tests\**\*.cs" Exclude="**\obj\**">
|
<Compile Include="..\osu.Game.Rulesets.Osu.Tests\**\*.cs" Exclude="**\obj\**">
|
||||||
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Project References">
|
<ItemGroup Label="Project References">
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj" />
|
||||||
<Project>{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}</Project>
|
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj" />
|
||||||
<Name>osu.Game</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj">
|
|
||||||
<Project>{C92A607B-1FDD-4954-9F92-03FF547D9080}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Osu</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
|
</Project>
|
||||||
</Project>
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using osu.Framework.iOS;
|
|
||||||
using UIKit;
|
using UIKit;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Taiko.Tests.iOS
|
namespace osu.Game.Rulesets.Taiko.Tests.iOS
|
||||||
@ -12,7 +11,7 @@ namespace osu.Game.Rulesets.Taiko.Tests.iOS
|
|||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
UIApplication.Main(args, typeof(GameUIApplication), typeof(AppDelegate));
|
UIApplication.Main(args, null, typeof(AppDelegate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>10.0</string>
|
<string>13.4</string>
|
||||||
<key>UIDeviceFamily</key>
|
<key>UIDeviceFamily</key>
|
||||||
<array>
|
<array>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
|
@ -1,35 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
|
|
||||||
<ProjectGuid>{7E408809-66AC-49D1-AF4D-98834F9B979A}</ProjectGuid>
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net6.0-ios</TargetFramework>
|
||||||
|
<SupportedOSPlatformVersion>13.4</SupportedOSPlatformVersion>
|
||||||
<RootNamespace>osu.Game.Rulesets.Taiko.Tests</RootNamespace>
|
<RootNamespace>osu.Game.Rulesets.Taiko.Tests</RootNamespace>
|
||||||
<AssemblyName>osu.Game.Rulesets.Taiko.Tests.iOS</AssemblyName>
|
<AssemblyName>osu.Game.Rulesets.Taiko.Tests.iOS</AssemblyName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\osu.iOS.props" />
|
<Import Project="..\osu.iOS.props" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Info.plist" />
|
|
||||||
<None Include="Entitlements.plist" />
|
|
||||||
<LinkDescription Include="..\osu.iOS\Linker.xml">
|
|
||||||
<Link>Linker.xml</Link>
|
|
||||||
</LinkDescription>
|
|
||||||
<Compile Include="Application.cs" />
|
|
||||||
<Compile Include="AppDelegate.cs" />
|
|
||||||
<Compile Include="..\osu.Game.Rulesets.Taiko.Tests\**\*.cs" Exclude="**\obj\**">
|
<Compile Include="..\osu.Game.Rulesets.Taiko.Tests\**\*.cs" Exclude="**\obj\**">
|
||||||
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Project References">
|
<ItemGroup Label="Project References">
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj" />
|
||||||
<Project>{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}</Project>
|
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj" />
|
||||||
<Name>osu.Game</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj">
|
|
||||||
<Project>{F167E17A-7DE6-4AF5-B920-A5112296C695}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Taiko</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
|
</Project>
|
||||||
</Project>
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using osu.Framework.iOS;
|
|
||||||
using UIKit;
|
using UIKit;
|
||||||
|
|
||||||
namespace osu.Game.Tests.iOS
|
namespace osu.Game.Tests.iOS
|
||||||
@ -12,7 +11,7 @@ namespace osu.Game.Tests.iOS
|
|||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
UIApplication.Main(args, typeof(GameUIApplication), typeof(AppDelegate));
|
UIApplication.Main(args, null, typeof(AppDelegate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>10.0</string>
|
<string>13.4</string>
|
||||||
<key>UIDeviceFamily</key>
|
<key>UIDeviceFamily</key>
|
||||||
<array>
|
<array>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
|
@ -1,54 +1,26 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<ProjectGuid>{65FF8E19-6934-469B-B690-23C6D6E56A17}</ProjectGuid>
|
<TargetFramework>net6.0-ios</TargetFramework>
|
||||||
|
<SupportedOSPlatformVersion>13.4</SupportedOSPlatformVersion>
|
||||||
<RootNamespace>osu.Game.Tests</RootNamespace>
|
<RootNamespace>osu.Game.Tests</RootNamespace>
|
||||||
<AssemblyName>osu.Game.Tests.iOS</AssemblyName>
|
<AssemblyName>osu.Game.Tests.iOS</AssemblyName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\osu.iOS.props" />
|
<Import Project="..\osu.iOS.props" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Info.plist" />
|
|
||||||
<None Include="Entitlements.plist" />
|
|
||||||
<LinkDescription Include="..\osu.iOS\Linker.xml">
|
|
||||||
<Link>Linker.xml</Link>
|
|
||||||
</LinkDescription>
|
|
||||||
<Compile Include="Application.cs" />
|
|
||||||
<Compile Include="AppDelegate.cs" />
|
|
||||||
<Compile Include="..\osu.Game.Tests\**\*.cs" Exclude="**\obj\**">
|
<Compile Include="..\osu.Game.Tests\**\*.cs" Exclude="**\obj\**">
|
||||||
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup>
|
|
||||||
<NoWarn>$(NoWarn);CA2007</NoWarn>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup Label="Project References">
|
<ItemGroup Label="Project References">
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj" />
|
||||||
<Project>{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}</Project>
|
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj" />
|
||||||
<Name>osu.Game</Name>
|
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj" />
|
||||||
</ProjectReference>
|
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj" />
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj">
|
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj" />
|
||||||
<Project>{C92A607B-1FDD-4954-9F92-03FF547D9080}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Osu</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj">
|
|
||||||
<Project>{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Catch</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj">
|
|
||||||
<Project>{48F4582B-7687-4621-9CBE-5C24197CB536}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Mania</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj">
|
|
||||||
<Project>{F167E17A-7DE6-4AF5-B920-A5112296C695}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Taiko</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup Label="Package References">
|
<ItemGroup Label="Package References">
|
||||||
<PackageReference Include="DeepEqual" Version="2.0.0" />
|
<PackageReference Include="DeepEqual" Version="2.0.0" />
|
||||||
<PackageReference Include="Moq" Version="4.17.2" />
|
<PackageReference Include="Moq" Version="4.17.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -261,7 +261,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestFinalFramesPurgedBeforeEndingPlay()
|
public void TestFinalFramesPurgedBeforeEndingPlay()
|
||||||
{
|
{
|
||||||
AddStep("begin playing", () => spectatorClient.BeginPlaying(TestGameplayState.Create(new OsuRuleset()), new Score()));
|
AddStep("begin playing", () => spectatorClient.BeginPlaying(0, TestGameplayState.Create(new OsuRuleset()), new Score()));
|
||||||
|
|
||||||
AddStep("send frames and finish play", () =>
|
AddStep("send frames and finish play", () =>
|
||||||
{
|
{
|
||||||
|
@ -147,7 +147,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
spectatorClient.BeginPlaying(TestGameplayState.Create(new OsuRuleset()), recordingScore);
|
spectatorClient.BeginPlaying(0, TestGameplayState.Create(new OsuRuleset()), recordingScore);
|
||||||
spectatorClient.OnNewFrames += onNewFrames;
|
spectatorClient.OnNewFrames += onNewFrames;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
129
osu.Game.Tests/Visual/UserInterface/TestSceneButtonsInput.cs
Normal file
129
osu.Game.Tests/Visual/UserInterface/TestSceneButtonsInput.cs
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Overlays.Settings;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using osuTK;
|
||||||
|
using osu.Game.Overlays;
|
||||||
|
using osu.Game.Graphics.UserInterfaceV2;
|
||||||
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Game.Graphics.Containers;
|
||||||
|
using osu.Framework.Graphics.Shapes;
|
||||||
|
using osuTK.Graphics;
|
||||||
|
using osu.Game.Graphics.Sprites;
|
||||||
|
|
||||||
|
namespace osu.Game.Tests.Visual.UserInterface
|
||||||
|
{
|
||||||
|
public partial class TestSceneButtonsInput : OsuManualInputManagerTestScene
|
||||||
|
{
|
||||||
|
private const int width = 500;
|
||||||
|
|
||||||
|
[Cached]
|
||||||
|
private OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Green);
|
||||||
|
|
||||||
|
private readonly SettingsButton settingsButton;
|
||||||
|
private readonly OsuClickableContainer clickableContainer;
|
||||||
|
private readonly RoundedButton roundedButton;
|
||||||
|
private readonly ShearedButton shearedButton;
|
||||||
|
|
||||||
|
public TestSceneButtonsInput()
|
||||||
|
{
|
||||||
|
Add(new FillFlowContainer
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Y,
|
||||||
|
Width = 500,
|
||||||
|
Spacing = new Vector2(0, 5),
|
||||||
|
Direction = FillDirection.Vertical,
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
clickableContainer = new OsuClickableContainer
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.X,
|
||||||
|
Height = 40,
|
||||||
|
Enabled = { Value = true },
|
||||||
|
Masking = true,
|
||||||
|
CornerRadius = 20,
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new Box
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Colour = Color4.Red
|
||||||
|
},
|
||||||
|
new OsuSpriteText
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Text = "Rounded clickable container"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
settingsButton = new SettingsButton
|
||||||
|
{
|
||||||
|
Enabled = { Value = true },
|
||||||
|
Text = "Settings button"
|
||||||
|
},
|
||||||
|
roundedButton = new RoundedButton
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.X,
|
||||||
|
Enabled = { Value = true },
|
||||||
|
Text = "Rounded button"
|
||||||
|
},
|
||||||
|
shearedButton = new ShearedButton(width)
|
||||||
|
{
|
||||||
|
Text = "Sheared button",
|
||||||
|
LighterColour = Colour4.FromHex("#FFFFFF"),
|
||||||
|
DarkerColour = Colour4.FromHex("#FFCC22"),
|
||||||
|
TextColour = Colour4.Black,
|
||||||
|
Height = 40,
|
||||||
|
Enabled = { Value = true },
|
||||||
|
Padding = new MarginPadding(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestSettingsButtonInput()
|
||||||
|
{
|
||||||
|
AddStep("Move cursor to button", () => InputManager.MoveMouseTo(settingsButton));
|
||||||
|
AddAssert("Button is hovered", () => settingsButton.IsHovered);
|
||||||
|
AddStep("Move cursor to padded area", () => InputManager.MoveMouseTo(settingsButton.ScreenSpaceDrawQuad.TopLeft + new Vector2(SettingsPanel.CONTENT_MARGINS / 2f, 10)));
|
||||||
|
AddAssert("Cursor within a button", () => settingsButton.ScreenSpaceDrawQuad.Contains(InputManager.CurrentState.Mouse.Position));
|
||||||
|
AddAssert("Button is not hovered", () => !settingsButton.IsHovered);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestRoundedButtonInput()
|
||||||
|
{
|
||||||
|
AddStep("Move cursor to button", () => InputManager.MoveMouseTo(roundedButton));
|
||||||
|
AddAssert("Button is hovered", () => roundedButton.IsHovered);
|
||||||
|
AddStep("Move cursor to corner", () => InputManager.MoveMouseTo(roundedButton.ScreenSpaceDrawQuad.TopLeft + Vector2.One));
|
||||||
|
AddAssert("Cursor within a button", () => roundedButton.ScreenSpaceDrawQuad.Contains(InputManager.CurrentState.Mouse.Position));
|
||||||
|
AddAssert("Button is not hovered", () => !roundedButton.IsHovered);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestShearedButtonInput()
|
||||||
|
{
|
||||||
|
AddStep("Move cursor to button", () => InputManager.MoveMouseTo(shearedButton));
|
||||||
|
AddAssert("Button is hovered", () => shearedButton.IsHovered);
|
||||||
|
AddStep("Move cursor to corner", () => InputManager.MoveMouseTo(shearedButton.ScreenSpaceDrawQuad.TopLeft + Vector2.One));
|
||||||
|
AddAssert("Cursor within a button", () => shearedButton.ScreenSpaceDrawQuad.Contains(InputManager.CurrentState.Mouse.Position));
|
||||||
|
AddAssert("Button is not hovered", () => !shearedButton.IsHovered);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestRoundedClickableContainerInput()
|
||||||
|
{
|
||||||
|
AddStep("Move cursor to button", () => InputManager.MoveMouseTo(clickableContainer));
|
||||||
|
AddAssert("Button is hovered", () => clickableContainer.IsHovered);
|
||||||
|
AddStep("Move cursor to corner", () => InputManager.MoveMouseTo(clickableContainer.ScreenSpaceDrawQuad.TopLeft + Vector2.One));
|
||||||
|
AddAssert("Cursor within a button", () => clickableContainer.ScreenSpaceDrawQuad.Contains(InputManager.CurrentState.Mouse.Position));
|
||||||
|
AddAssert("Button is not hovered", () => !clickableContainer.IsHovered);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,47 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using NUnit.Framework;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Game.Graphics.UserInterface;
|
|
||||||
using osuTK;
|
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.UserInterface
|
|
||||||
{
|
|
||||||
public partial class TestSceneOsuButton : OsuTestScene
|
|
||||||
{
|
|
||||||
[Test]
|
|
||||||
public void TestToggleEnabled()
|
|
||||||
{
|
|
||||||
OsuButton button = null;
|
|
||||||
|
|
||||||
AddStep("add button", () => Child = button = new OsuButton
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
Size = new Vector2(200),
|
|
||||||
Text = "Button"
|
|
||||||
});
|
|
||||||
|
|
||||||
AddToggleStep("toggle enabled", toggle =>
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 6; i++)
|
|
||||||
button.Action = toggle ? () => { } : null;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void TestInitiallyDisabled()
|
|
||||||
{
|
|
||||||
AddStep("add button", () => Child = new OsuButton
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
Size = new Vector2(200),
|
|
||||||
Text = "Button"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,14 +1,13 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Cursor;
|
using osu.Framework.Graphics.Cursor;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Graphics.Containers
|
namespace osu.Game.Graphics.Containers
|
||||||
{
|
{
|
||||||
@ -18,6 +17,12 @@ namespace osu.Game.Graphics.Containers
|
|||||||
|
|
||||||
private readonly Container content = new Container { RelativeSizeAxes = Axes.Both };
|
private readonly Container content = new Container { RelativeSizeAxes = Axes.Both };
|
||||||
|
|
||||||
|
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) =>
|
||||||
|
// base call is checked for cases when `OsuClickableContainer` has masking applied to it directly (ie. externally in object initialisation).
|
||||||
|
base.ReceivePositionalInputAt(screenSpacePos)
|
||||||
|
// Implementations often apply masking / edge rounding at a content level, so it's imperative to check that as well.
|
||||||
|
&& Content.ReceivePositionalInputAt(screenSpacePos);
|
||||||
|
|
||||||
protected override Container<Drawable> Content => content;
|
protected override Container<Drawable> Content => content;
|
||||||
|
|
||||||
protected virtual HoverSounds CreateHoverSounds(HoverSampleSet sampleSet) => new HoverClickSounds(sampleSet) { Enabled = { BindTarget = Enabled } };
|
protected virtual HoverSounds CreateHoverSounds(HoverSampleSet sampleSet) => new HoverClickSounds(sampleSet) { Enabled = { BindTarget = Enabled } };
|
||||||
@ -38,11 +43,8 @@ namespace osu.Game.Graphics.Containers
|
|||||||
content.AutoSizeAxes = AutoSizeAxes;
|
content.AutoSizeAxes = AutoSizeAxes;
|
||||||
}
|
}
|
||||||
|
|
||||||
InternalChildren = new Drawable[]
|
AddInternal(content);
|
||||||
{
|
Add(CreateHoverSounds(sampleSet));
|
||||||
content,
|
|
||||||
CreateHoverSounds(sampleSet)
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Extensions.Color4Extensions;
|
using osu.Framework.Extensions.Color4Extensions;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
@ -13,6 +11,7 @@ using osu.Framework.Graphics.UserInterface;
|
|||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Framework.Localisation;
|
using osu.Framework.Localisation;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osuTK;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
namespace osu.Game.Graphics.UserInterface
|
||||||
@ -20,16 +19,12 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A button with added default sound effects.
|
/// A button with added default sound effects.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class OsuButton : Button
|
public abstract partial class OsuButton : Button
|
||||||
{
|
{
|
||||||
public LocalisableString Text
|
public LocalisableString Text
|
||||||
{
|
{
|
||||||
get => SpriteText?.Text ?? default;
|
get => SpriteText.Text;
|
||||||
set
|
set => SpriteText.Text = value;
|
||||||
{
|
|
||||||
if (SpriteText != null)
|
|
||||||
SpriteText.Text = value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Color4? backgroundColour;
|
private Color4? backgroundColour;
|
||||||
@ -66,13 +61,19 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
|
|
||||||
protected override Container<Drawable> Content { get; }
|
protected override Container<Drawable> Content { get; }
|
||||||
|
|
||||||
|
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) =>
|
||||||
|
// base call is checked for cases when `OsuClickableContainer` has masking applied to it directly (ie. externally in object initialisation).
|
||||||
|
base.ReceivePositionalInputAt(screenSpacePos)
|
||||||
|
// Implementations often apply masking / edge rounding at a content level, so it's imperative to check that as well.
|
||||||
|
&& Content.ReceivePositionalInputAt(screenSpacePos);
|
||||||
|
|
||||||
protected Box Hover;
|
protected Box Hover;
|
||||||
protected Box Background;
|
protected Box Background;
|
||||||
protected SpriteText SpriteText;
|
protected SpriteText SpriteText;
|
||||||
|
|
||||||
private readonly Box flashLayer;
|
private readonly Box flashLayer;
|
||||||
|
|
||||||
public OsuButton(HoverSampleSet? hoverSounds = HoverSampleSet.Button)
|
protected OsuButton(HoverSampleSet? hoverSounds = HoverSampleSet.Button)
|
||||||
{
|
{
|
||||||
Height = 40;
|
Height = 40;
|
||||||
|
|
||||||
@ -115,7 +116,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (hoverSounds.HasValue)
|
if (hoverSounds.HasValue)
|
||||||
AddInternal(new HoverClickSounds(hoverSounds.Value) { Enabled = { BindTarget = Enabled } });
|
Add(new HoverClickSounds(hoverSounds.Value) { Enabled = { BindTarget = Enabled } });
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.SignalR.Client;
|
using Microsoft.AspNetCore.SignalR.Client;
|
||||||
@ -59,17 +60,21 @@ namespace osu.Game.Online
|
|||||||
var builder = new HubConnectionBuilder()
|
var builder = new HubConnectionBuilder()
|
||||||
.WithUrl(endpoint, options =>
|
.WithUrl(endpoint, options =>
|
||||||
{
|
{
|
||||||
// Use HttpClient.DefaultProxy once on net6 everywhere.
|
// Configuring proxies is not supported on iOS, see https://github.com/xamarin/xamarin-macios/issues/14632.
|
||||||
// The credential setter can also be removed at this point.
|
if (RuntimeInfo.OS != RuntimeInfo.Platform.iOS)
|
||||||
options.Proxy = WebRequest.DefaultWebProxy;
|
{
|
||||||
if (options.Proxy != null)
|
// Use HttpClient.DefaultProxy once on net6 everywhere.
|
||||||
options.Proxy.Credentials = CredentialCache.DefaultCredentials;
|
// The credential setter can also be removed at this point.
|
||||||
|
options.Proxy = WebRequest.DefaultWebProxy;
|
||||||
|
if (options.Proxy != null)
|
||||||
|
options.Proxy.Credentials = CredentialCache.DefaultCredentials;
|
||||||
|
}
|
||||||
|
|
||||||
options.Headers.Add("Authorization", $"Bearer {api.AccessToken}");
|
options.Headers.Add("Authorization", $"Bearer {api.AccessToken}");
|
||||||
options.Headers.Add("OsuVersionHash", versionHash);
|
options.Headers.Add("OsuVersionHash", versionHash);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (RuntimeInfo.SupportsJIT && preferMessagePack)
|
if (RuntimeFeature.IsDynamicCodeCompiled && preferMessagePack)
|
||||||
{
|
{
|
||||||
builder.AddMessagePackProtocol(options =>
|
builder.AddMessagePackProtocol(options =>
|
||||||
{
|
{
|
||||||
|
@ -15,8 +15,9 @@ namespace osu.Game.Online.Spectator
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Signal the start of a new play session.
|
/// Signal the start of a new play session.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="scoreToken">The score submission token.</param>
|
||||||
/// <param name="state">The state of gameplay.</param>
|
/// <param name="state">The state of gameplay.</param>
|
||||||
Task BeginPlaySession(SpectatorState state);
|
Task BeginPlaySession(long? scoreToken, SpectatorState state);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Send a bundle of frame data for the current play session.
|
/// Send a bundle of frame data for the current play session.
|
||||||
|
@ -47,7 +47,7 @@ namespace osu.Game.Online.Spectator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task BeginPlayingInternal(SpectatorState state)
|
protected override async Task BeginPlayingInternal(long? scoreToken, SpectatorState state)
|
||||||
{
|
{
|
||||||
if (!IsConnected.Value)
|
if (!IsConnected.Value)
|
||||||
return;
|
return;
|
||||||
@ -56,7 +56,7 @@ namespace osu.Game.Online.Spectator
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await connection.InvokeAsync(nameof(ISpectatorServer.BeginPlaySession), state);
|
await connection.InvokeAsync(nameof(ISpectatorServer.BeginPlaySession), scoreToken, state);
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
@ -65,7 +65,7 @@ namespace osu.Game.Online.Spectator
|
|||||||
Debug.Assert(connector != null);
|
Debug.Assert(connector != null);
|
||||||
|
|
||||||
await connector.Reconnect();
|
await connector.Reconnect();
|
||||||
await BeginPlayingInternal(state);
|
await BeginPlayingInternal(scoreToken, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exceptions can occur if, for instance, the locally played beatmap doesn't have a server-side counterpart.
|
// Exceptions can occur if, for instance, the locally played beatmap doesn't have a server-side counterpart.
|
||||||
|
@ -76,6 +76,7 @@ namespace osu.Game.Online.Spectator
|
|||||||
|
|
||||||
private IBeatmap? currentBeatmap;
|
private IBeatmap? currentBeatmap;
|
||||||
private Score? currentScore;
|
private Score? currentScore;
|
||||||
|
private long? currentScoreToken;
|
||||||
|
|
||||||
private readonly Queue<FrameDataBundle> pendingFrameBundles = new Queue<FrameDataBundle>();
|
private readonly Queue<FrameDataBundle> pendingFrameBundles = new Queue<FrameDataBundle>();
|
||||||
|
|
||||||
@ -108,7 +109,7 @@ namespace osu.Game.Online.Spectator
|
|||||||
// re-send state in case it wasn't received
|
// re-send state in case it wasn't received
|
||||||
if (IsPlaying)
|
if (IsPlaying)
|
||||||
// TODO: this is likely sent out of order after a reconnect scenario. needs further consideration.
|
// TODO: this is likely sent out of order after a reconnect scenario. needs further consideration.
|
||||||
BeginPlayingInternal(currentState);
|
BeginPlayingInternal(currentScoreToken, currentState);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -159,7 +160,7 @@ namespace osu.Game.Online.Spectator
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BeginPlaying(GameplayState state, Score score)
|
public void BeginPlaying(long? scoreToken, GameplayState state, Score score)
|
||||||
{
|
{
|
||||||
// This schedule is only here to match the one below in `EndPlaying`.
|
// This schedule is only here to match the one below in `EndPlaying`.
|
||||||
Schedule(() =>
|
Schedule(() =>
|
||||||
@ -178,8 +179,9 @@ namespace osu.Game.Online.Spectator
|
|||||||
|
|
||||||
currentBeatmap = state.Beatmap;
|
currentBeatmap = state.Beatmap;
|
||||||
currentScore = score;
|
currentScore = score;
|
||||||
|
currentScoreToken = scoreToken;
|
||||||
|
|
||||||
BeginPlayingInternal(currentState);
|
BeginPlayingInternal(currentScoreToken, currentState);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,7 +266,7 @@ namespace osu.Game.Online.Spectator
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract Task BeginPlayingInternal(SpectatorState state);
|
protected abstract Task BeginPlayingInternal(long? scoreToken, SpectatorState state);
|
||||||
|
|
||||||
protected abstract Task SendFramesInternal(FrameDataBundle bundle);
|
protected abstract Task SendFramesInternal(FrameDataBundle bundle);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ namespace osu.Game.Overlays.Chat
|
|||||||
public Color4 AccentColour { get; }
|
public Color4 AccentColour { get; }
|
||||||
|
|
||||||
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) =>
|
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) =>
|
||||||
Child.ReceivePositionalInputAt(screenSpacePos);
|
colouredDrawable.ReceivePositionalInputAt(screenSpacePos);
|
||||||
|
|
||||||
public float FontSize
|
public float FontSize
|
||||||
{
|
{
|
||||||
@ -87,13 +87,13 @@ namespace osu.Game.Overlays.Chat
|
|||||||
{
|
{
|
||||||
AccentColour = default_colours[user.Id % default_colours.Length];
|
AccentColour = default_colours[user.Id % default_colours.Length];
|
||||||
|
|
||||||
Child = colouredDrawable = drawableText;
|
Add(colouredDrawable = drawableText);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AccentColour = Color4Extensions.FromHex(user.Colour);
|
AccentColour = Color4Extensions.FromHex(user.Colour);
|
||||||
|
|
||||||
Child = new Container
|
Add(new Container
|
||||||
{
|
{
|
||||||
Anchor = Anchor.TopRight,
|
Anchor = Anchor.TopRight,
|
||||||
Origin = Anchor.TopRight,
|
Origin = Anchor.TopRight,
|
||||||
@ -127,7 +127,7 @@ namespace osu.Game.Overlays.Chat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,11 @@ namespace osu.Game.Scoring.Legacy
|
|||||||
/// Database version in stable-compatible YYYYMMDD format.
|
/// Database version in stable-compatible YYYYMMDD format.
|
||||||
/// Should be incremented if any changes are made to the format/usage.
|
/// Should be incremented if any changes are made to the format/usage.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// <list type="bullet">
|
||||||
|
/// <item><description>30000001: Appends <see cref="LegacyReplaySoloScoreInfo"/> to the end of scores.</description></item>
|
||||||
|
/// </list>
|
||||||
|
/// </remarks>
|
||||||
public const int LATEST_VERSION = 30000001;
|
public const int LATEST_VERSION = 30000001;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -7,6 +7,7 @@ using osu.Framework.Audio;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Scoring;
|
using osu.Game.Scoring;
|
||||||
using osu.Game.Screens.Play;
|
using osu.Game.Screens.Play;
|
||||||
|
using osu.Game.Screens.Ranking;
|
||||||
|
|
||||||
namespace osu.Game.Screens.OnlinePlay.Multiplayer.Spectate
|
namespace osu.Game.Screens.OnlinePlay.Multiplayer.Spectate
|
||||||
{
|
{
|
||||||
@ -70,5 +71,7 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Spectate
|
|||||||
clockAdjustmentsFromMods.BindAdjustments(gameplayClockContainer.AdjustmentsFromMods);
|
clockAdjustmentsFromMods.BindAdjustments(gameplayClockContainer.AdjustmentsFromMods);
|
||||||
return gameplayClockContainer;
|
return gameplayClockContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override ResultsScreen CreateResults(ScoreInfo score) => new MultiSpectatorResultsScreen(score);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using osu.Game.Online.API;
|
||||||
|
using osu.Game.Scoring;
|
||||||
|
using osu.Game.Screens.Play;
|
||||||
|
|
||||||
|
namespace osu.Game.Screens.OnlinePlay.Multiplayer.Spectate
|
||||||
|
{
|
||||||
|
public partial class MultiSpectatorResultsScreen : SpectatorResultsScreen
|
||||||
|
{
|
||||||
|
public MultiSpectatorResultsScreen(ScoreInfo score)
|
||||||
|
: base(score)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override APIRequest FetchScores(Action<IEnumerable<ScoreInfo>> scoresCallback) => null;
|
||||||
|
|
||||||
|
protected override APIRequest FetchNextPage(int direction, Action<IEnumerable<ScoreInfo>> scoresCallback) => null;
|
||||||
|
}
|
||||||
|
}
|
@ -148,7 +148,7 @@ namespace osu.Game.Screens.Play
|
|||||||
realmBeatmap.LastPlayed = DateTimeOffset.Now;
|
realmBeatmap.LastPlayed = DateTimeOffset.Now;
|
||||||
});
|
});
|
||||||
|
|
||||||
spectatorClient.BeginPlaying(GameplayState, Score);
|
spectatorClient.BeginPlaying(token, GameplayState, Score);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnExiting(ScreenExitEvent e)
|
public override bool OnExiting(ScreenExitEvent e)
|
||||||
|
@ -126,7 +126,7 @@ namespace osu.Game.Tests.Visual.Spectator
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Task BeginPlayingInternal(SpectatorState state)
|
protected override Task BeginPlayingInternal(long? scoreToken, SpectatorState state)
|
||||||
{
|
{
|
||||||
// Track the local user's playing beatmap ID.
|
// Track the local user's playing beatmap ID.
|
||||||
Debug.Assert(state.BeatmapID != null);
|
Debug.Assert(state.BeatmapID != null);
|
||||||
|
@ -1,72 +1,19 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<LangVersion>8.0</LangVersion>
|
|
||||||
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
|
||||||
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
|
|
||||||
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
|
|
||||||
<OutputPath>bin\$(Platform)\$(Configuration)</OutputPath>
|
|
||||||
<MtouchI18n>cjk,mideast,other,rare,west</MtouchI18n>
|
|
||||||
<OptimizePNGs>false</OptimizePNGs>
|
|
||||||
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
|
|
||||||
<MtouchVerbosity></MtouchVerbosity>
|
|
||||||
<CodesignKey>iPhone Developer</CodesignKey>
|
<CodesignKey>iPhone Developer</CodesignKey>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<NullabilityInfoContextSupport>true</NullabilityInfoContextSupport>
|
||||||
</PropertyGroup>
|
<!-- Workaround for an upstream issue which Realm suffers from (https://github.com/dotnet/runtime/issues/69410). -->
|
||||||
<PropertyGroup>
|
<UseInterpreter>true</UseInterpreter>
|
||||||
<!-- Generated via osu.Framework.iOS/generate-symbol-strip-flags.sh -->
|
<!-- MT7091 occurs when referencing a .framework bundle that consists of a static library.
|
||||||
<GeneratedMtouchSymbolStripFlags>--nosymbolstrip=BASS_FX_BPM_BeatCallbackReset --nosymbolstrip=BASS_FX_BPM_BeatCallbackSet --nosymbolstrip=BASS_FX_BPM_BeatDecodeGet --nosymbolstrip=BASS_FX_BPM_BeatFree --nosymbolstrip=BASS_FX_BPM_BeatGetParameters --nosymbolstrip=BASS_FX_BPM_BeatSetParameters --nosymbolstrip=BASS_FX_BPM_CallbackReset --nosymbolstrip=BASS_FX_BPM_CallbackSet --nosymbolstrip=BASS_FX_BPM_DecodeGet --nosymbolstrip=BASS_FX_BPM_Free --nosymbolstrip=BASS_FX_BPM_Translate --nosymbolstrip=BASS_FX_GetVersion --nosymbolstrip=BASS_FX_ReverseCreate --nosymbolstrip=BASS_FX_ReverseGetSource --nosymbolstrip=BASS_FX_TempoCreate --nosymbolstrip=BASS_FX_TempoGetRateRatio --nosymbolstrip=BASS_FX_TempoGetSource --nosymbolstrip=BASS_Mixer_ChannelFlags --nosymbolstrip=BASS_Mixer_ChannelGetData --nosymbolstrip=BASS_Mixer_ChannelGetEnvelopePos --nosymbolstrip=BASS_Mixer_ChannelGetLevel --nosymbolstrip=BASS_Mixer_ChannelGetLevelEx --nosymbolstrip=BASS_Mixer_ChannelGetMatrix --nosymbolstrip=BASS_Mixer_ChannelGetMixer --nosymbolstrip=BASS_Mixer_ChannelGetPosition --nosymbolstrip=BASS_Mixer_ChannelGetPositionEx --nosymbolstrip=BASS_Mixer_ChannelIsActive --nosymbolstrip=BASS_Mixer_ChannelRemove --nosymbolstrip=BASS_Mixer_ChannelRemoveSync --nosymbolstrip=BASS_Mixer_ChannelSetEnvelope --nosymbolstrip=BASS_Mixer_ChannelSetEnvelopePos --nosymbolstrip=BASS_Mixer_ChannelSetMatrix --nosymbolstrip=BASS_Mixer_ChannelSetMatrixEx --nosymbolstrip=BASS_Mixer_ChannelSetPosition --nosymbolstrip=BASS_Mixer_ChannelSetSync --nosymbolstrip=BASS_Mixer_GetVersion --nosymbolstrip=BASS_Mixer_StreamAddChannel --nosymbolstrip=BASS_Mixer_StreamAddChannelEx --nosymbolstrip=BASS_Mixer_StreamCreate --nosymbolstrip=BASS_Mixer_StreamGetChannels --nosymbolstrip=BASS_Split_StreamCreate --nosymbolstrip=BASS_Split_StreamGetAvailable --nosymbolstrip=BASS_Split_StreamGetSource --nosymbolstrip=BASS_Split_StreamGetSplits --nosymbolstrip=BASS_Split_StreamReset --nosymbolstrip=BASS_Split_StreamResetEx</GeneratedMtouchSymbolStripFlags>
|
It only warns about not copying the library to the app bundle to save space,
|
||||||
<!-- Disable mono-cil-strip (nostrip) to avoid random attributes potentially stripped out from certain members. -->
|
so there's nothing to be worried about. -->
|
||||||
<MtouchExtraArgs>--nolinkaway --nostrip $(GeneratedMtouchSymbolStripFlags)</MtouchExtraArgs>
|
<NoWarn>$(NoWarn);MT7091</NoWarn>
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<DefineConstants>DEBUG;ENABLE_TEST_CLOUD;</DefineConstants>
|
|
||||||
<MtouchDebug>true</MtouchDebug>
|
|
||||||
<MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Platform)' == 'iPhoneSimulator'">
|
|
||||||
<MtouchArch>x86_64</MtouchArch>
|
|
||||||
<MtouchLink>None</MtouchLink>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Platform)' == 'iPhone'">
|
<PropertyGroup Condition="'$(Platform)' == 'iPhone'">
|
||||||
<MtouchFloat32>true</MtouchFloat32>
|
<RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
|
||||||
<MtouchLink>SdkOnly</MtouchLink>
|
|
||||||
<MtouchArch>ARM64</MtouchArch>
|
|
||||||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
|
<PropertyGroup Condition="'$(Platform)' == 'iPhoneSimulator'">
|
||||||
<MtouchFastDev>true</MtouchFastDev>
|
<RuntimeIdentifier>iossimulator-x64</RuntimeIdentifier>
|
||||||
<IOSDebuggerPort>25823</IOSDebuggerPort>
|
|
||||||
<DeviceSpecificBuild>false</DeviceSpecificBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
|
|
||||||
<MtouchNoSymbolStrip>true</MtouchNoSymbolStrip>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
|
|
||||||
<DeviceSpecificBuild>true</DeviceSpecificBuild>
|
|
||||||
<IOSDebuggerPort>28126</IOSDebuggerPort>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
<Reference Include="System.Core" />
|
|
||||||
<Reference Include="Xamarin.iOS" />
|
|
||||||
<Reference Include="mscorlib" />
|
|
||||||
<Reference Include="System.Net.Http" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup Label="Package References">
|
|
||||||
<PackageReference Include="ppy.osu.Game.Resources" Version="2022.1207.0" />
|
|
||||||
<PackageReference Include="ppy.osu.Framework.iOS" Version="2022.1213.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
<!-- See https://github.com/dotnet/runtime/issues/35988 (can be removed after Xamarin uses net6.0) -->
|
|
||||||
<PropertyGroup>
|
|
||||||
<NoWarn>$(NoWarn);NU1605</NoWarn>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<!-- Workaround to make SignalR 5.x work properly, avoiding a runtime error (https://github.com/mono/mono/issues/20805#issuecomment-791440473) -->
|
<!-- Workaround to make SignalR 5.x work properly, avoiding a runtime error (https://github.com/mono/mono/issues/20805#issuecomment-791440473) -->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -77,16 +24,15 @@
|
|||||||
<IncludeAssets>none</IncludeAssets>
|
<IncludeAssets>none</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<!-- Xamarin.iOS does not automatically handle transitive dependencies from NuGet packages. -->
|
<ItemGroup>
|
||||||
<ItemGroup Label="Transitive Dependencies">
|
<PackageReference Include="ppy.osu.Framework.iOS" Version="2022.1204.0" />
|
||||||
<PackageReference Include="DiffPlex" Version="1.7.1" />
|
|
||||||
<PackageReference Include="Humanizer" Version="2.14.1" />
|
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
|
||||||
<PackageReference Include="ppy.osu.Framework" Version="2022.1213.0" />
|
|
||||||
<PackageReference Include="SharpCompress" Version="0.32.2" />
|
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
|
||||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
|
||||||
<PackageReference Include="ppy.osu.Framework.NativeLibs" Version="2022.429.0" ExcludeAssets="all" />
|
|
||||||
<PackageReference Include="Realm" Version="10.18.0" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<!-- OpenTabletDriver contains P/Invokes to the "Quartz" framework for native macOS code.
|
||||||
|
This leads iOS linker into attempting to include that framework, despite not existing on such platform.
|
||||||
|
See: https://github.com/OpenTabletDriver/OpenTabletDriver/issues/2524 / https://github.com/xamarin/xamarin-macios/issues/15118#issuecomment-1141893683 -->
|
||||||
|
<Target Name="OsuFrameworkIOSRemoveQuartz" BeforeTargets="_ComputeLinkNativeExecutableInputs" AfterTargets="_LoadLinkerOutput">
|
||||||
|
<ItemGroup>
|
||||||
|
<_LinkerFrameworks Remove="Quartz"/>
|
||||||
|
</ItemGroup>
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using osu.Framework.iOS;
|
|
||||||
using UIKit;
|
using UIKit;
|
||||||
|
|
||||||
namespace osu.iOS
|
namespace osu.iOS
|
||||||
@ -12,7 +11,7 @@ namespace osu.iOS
|
|||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
UIApplication.Main(args, typeof(GameUIApplication), typeof(AppDelegate));
|
UIApplication.Main(args, null, typeof(AppDelegate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>10.0</string>
|
<string>13.4</string>
|
||||||
<key>UIDeviceFamily</key>
|
<key>UIDeviceFamily</key>
|
||||||
<array>
|
<array>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using Foundation;
|
using Foundation;
|
||||||
|
using Microsoft.Maui.Devices;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Input.Handlers;
|
using osu.Framework.Input.Handlers;
|
||||||
using osu.Framework.iOS.Input;
|
using osu.Framework.iOS.Input;
|
||||||
@ -12,7 +13,6 @@ using osu.Game;
|
|||||||
using osu.Game.Overlays.Settings;
|
using osu.Game.Overlays.Settings;
|
||||||
using osu.Game.Updater;
|
using osu.Game.Updater;
|
||||||
using osu.Game.Utils;
|
using osu.Game.Utils;
|
||||||
using Xamarin.Essentials;
|
|
||||||
|
|
||||||
namespace osu.iOS
|
namespace osu.iOS
|
||||||
{
|
{
|
||||||
|
@ -1,124 +1,16 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<PropertyGroup Label="Project">
|
||||||
<PropertyGroup>
|
<TargetFramework>net6.0-ios</TargetFramework>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<SupportedOSPlatformVersion>13.4</SupportedOSPlatformVersion>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
|
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<ProjectGuid>{3F082D0B-A964-43D7-BDF7-C256D76A50D0}</ProjectGuid>
|
<UseMauiEssentials>true</UseMauiEssentials>
|
||||||
<RootNamespace>osu.iOS</RootNamespace>
|
|
||||||
<AssemblyName>osu.iOS</AssemblyName>
|
|
||||||
<MtouchUseLlvm>false</MtouchUseLlvm> <!-- This currently causes random lockups during gameplay. https://github.com/mono/mono/issues/18973 -->
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="..\osu.iOS.props" />
|
<Import Project="..\osu.iOS.props" />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Resources\" />
|
<ProjectReference Include="..\osu.Game\osu.Game.csproj" />
|
||||||
|
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj" />
|
||||||
|
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj" />
|
||||||
|
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj" />
|
||||||
|
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<InterfaceDefinition Include="LaunchScreen.storyboard" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Info.plist" />
|
|
||||||
<None Include="Entitlements.plist" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="Application.cs" />
|
|
||||||
<Compile Include="AppDelegate.cs" />
|
|
||||||
<Compile Include="IOSMouseSettings.cs" />
|
|
||||||
<Compile Include="OsuGameIOS.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<LinkDescription Include="Linker.xml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\osu.Game\osu.Game.csproj">
|
|
||||||
<Project>{2A66DD92-ADB1-4994-89E2-C94E04ACDA0D}</Project>
|
|
||||||
<Name>osu.Game</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Catch\osu.Game.Rulesets.Catch.csproj">
|
|
||||||
<Project>{58F6C80C-1253-4A0E-A465-B8C85EBEADF3}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Catch</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Mania\osu.Game.Rulesets.Mania.csproj">
|
|
||||||
<Project>{48F4582B-7687-4621-9CBE-5C24197CB536}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Mania</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Osu\osu.Game.Rulesets.Osu.csproj">
|
|
||||||
<Project>{C92A607B-1FDD-4954-9F92-03FF547D9080}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Osu</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\osu.Game.Rulesets.Taiko\osu.Game.Rulesets.Taiko.csproj">
|
|
||||||
<Project>{F167E17A-7DE6-4AF5-B920-A5112296C695}</Project>
|
|
||||||
<Name>osu.Game.Rulesets.Taiko</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ITunesArtwork Include="iTunesArtwork" />
|
|
||||||
<ITunesArtwork Include="iTunesArtwork%402x" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ImageAsset Include="Assets.xcassets\Contents.json">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iOSAppStore.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadApp1x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadApp2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadNotification1x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadNotification2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadProApp2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadSettings1x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadSettings2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadSpotlight1x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPadSpotlight2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPhoneApp2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPhoneApp3x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPhoneNotification2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPhoneNotification3x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPhoneSettings2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPhoneSettings3x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPhoneSpotlight2x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\iPhoneSpotlight3x.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Xamarin.Essentials" Version="1.7.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
|
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
Reference in New Issue
Block a user