mirror of
https://github.com/osukey/osukey.git
synced 2025-07-01 16:29:58 +09:00
Refactor beatmap import secondary process
Doesn't launch a new game window and now supports several files at once.
This commit is contained in:
@ -2,6 +2,9 @@
|
|||||||
//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 System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using osu.Framework;
|
||||||
using osu.Framework.Desktop;
|
using osu.Framework.Desktop;
|
||||||
using osu.Framework.Platform;
|
using osu.Framework.Platform;
|
||||||
using osu.Game;
|
using osu.Game;
|
||||||
@ -11,11 +14,22 @@ namespace osu.Desktop
|
|||||||
public static class Program
|
public static class Program
|
||||||
{
|
{
|
||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args)
|
public static int Main(string[] args)
|
||||||
{
|
{
|
||||||
BasicGameHost host = Host.GetSuitableHost(@"osu");
|
BasicGameHost host = Host.GetSuitableHost(@"osu");
|
||||||
host.Add(new OsuGame(args));
|
BaseGame osuGame = new OsuGame();
|
||||||
|
if (args.Length != 0 && args.All(File.Exists))
|
||||||
|
{
|
||||||
|
host.Load(osuGame);
|
||||||
|
var beatmapIPC = new IpcChannel<OsuGame.ImportBeatmap>(host);
|
||||||
|
foreach (var file in args)
|
||||||
|
beatmapIPC.SendMessage(new OsuGame.ImportBeatmap { Path = file }).Wait();
|
||||||
|
Console.WriteLine(@"Sent file to running instance");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
host.Add(osuGame);
|
||||||
host.Run();
|
host.Run();
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ namespace osu.Game
|
|||||||
{
|
{
|
||||||
public class OsuGame : OsuGameBase
|
public class OsuGame : OsuGameBase
|
||||||
{
|
{
|
||||||
private class ImportBeatmap
|
public class ImportBeatmap
|
||||||
{
|
{
|
||||||
public string Path;
|
public string Path;
|
||||||
}
|
}
|
||||||
@ -37,16 +37,10 @@ namespace osu.Game
|
|||||||
public ChatConsole Chat;
|
public ChatConsole Chat;
|
||||||
public MainMenu MainMenu => intro?.ChildGameMode as MainMenu;
|
public MainMenu MainMenu => intro?.ChildGameMode as MainMenu;
|
||||||
private Intro intro;
|
private Intro intro;
|
||||||
private string[] args;
|
|
||||||
private IpcChannel<ImportBeatmap> BeatmapIPC;
|
private IpcChannel<ImportBeatmap> BeatmapIPC;
|
||||||
|
|
||||||
public Bindable<PlayMode> PlayMode;
|
public Bindable<PlayMode> PlayMode;
|
||||||
|
|
||||||
public OsuGame(string[] args)
|
|
||||||
{
|
|
||||||
this.args = args;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void SetHost(BasicGameHost host)
|
public override void SetHost(BasicGameHost host)
|
||||||
{
|
{
|
||||||
base.SetHost(host);
|
base.SetHost(host);
|
||||||
@ -60,13 +54,7 @@ namespace osu.Game
|
|||||||
|
|
||||||
if (!Host.IsPrimaryInstance)
|
if (!Host.IsPrimaryInstance)
|
||||||
{
|
{
|
||||||
if (args.Length == 1 && File.Exists(args[0]))
|
Logger.Log(@"osu! does not support multiple running instances.", LoggingTarget.Runtime, LogLevel.Error);
|
||||||
{
|
|
||||||
BeatmapIPC.SendMessage(new ImportBeatmap { Path = args[0] }).Wait();
|
|
||||||
Logger.Log(@"Sent file to running instance");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Logger.Log(@"osu! does not support multiple running instances.", LoggingTarget.Runtime, LogLevel.Error);
|
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,8 +72,11 @@ namespace osu.Game
|
|||||||
protected override void Dispose(bool isDisposing)
|
protected override void Dispose(bool isDisposing)
|
||||||
{
|
{
|
||||||
//refresh token may have changed.
|
//refresh token may have changed.
|
||||||
Config.Set(OsuConfig.Token, API.Token);
|
if (Config != null && API != null)
|
||||||
Config.Save();
|
{
|
||||||
|
Config.Set(OsuConfig.Token, API.Token);
|
||||||
|
Config.Save();
|
||||||
|
}
|
||||||
|
|
||||||
base.Dispose(isDisposing);
|
base.Dispose(isDisposing);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user