Net.Like.Xue.Tokyo/Assets/Artists/Scripts/Program.cs

107 lines
4.0 KiB
C#

using System.Threading;
using BITKit;
using BITKit.UX;
using BITKit.UX.Settings;
using Cysharp.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Net.Like.Xue.Tokyo.UX;
using Net.Project.B.UX;
using Project.B.Player;
using Project.B.UX;
using UnityEngine;
using IUXDialogue = Net.Project.B.UX.IUXDialogue;
namespace Net.Like.Xue.Tokyo
{
public class Program : MonoBehaviour
{
private async void Start()
{
DontDestroyOnLoad(gameObject);
var source = new CancellationTokenSource();
destroyCancellationToken.Register(source.Cancel);
var serviceCollection = BITApp.ServiceCollection = new ServiceCollection();
await global::Project.B.Program.AddProjectBServices(serviceCollection,source);
serviceCollection.AddSingleton<IUXService, UXService>();
serviceCollection.AddSingleton<UXRadialMenu>();
serviceCollection.AddSingleton<UXContextMenu>();
serviceCollection.AddSingleton<UXAlert>();
serviceCollection.AddSingleton<IUXDialogue, UXDialogue<IUXHud>>();
serviceCollection.AddSingleton<IUXLoadingMap, UXLoadingMap>();
serviceCollection.AddSingleton<IUXLobby,UXMenu>();
serviceCollection.AddSingleton<IUXMapSelector,UXLevel>();
serviceCollection.AddSingleton<IUXHud,UXHud>();
serviceCollection.AddSingleton<IUXMap,UXMap>();
serviceCollection.AddSingleton<IUXCosmetics, UXCosmetics<IUXLobby>>();
serviceCollection.AddSingleton<IUXSettings, UXSettings<IUXLobby,PlayerSettings>>();
serviceCollection.AddKeyedSingleton<IUXMap, UXMap<IUXHud>>(nameof(IUXHud));
serviceCollection.AddKeyedSingleton<IUXMap, UXMap<IUXMap>>(nameof(IUXMap));
serviceCollection.AddSingleton<IUXBuyStation, UXBuyStation>();
serviceCollection.AddSingleton<IUXInventory, UXInventory<IUXHud>>();
serviceCollection.AddSingleton<IUXSnapshotWindow, UXSnapshotWindow>();
serviceCollection.AddSingleton<IUXItemInspector, UXItemInspector>();
serviceCollection.AddSingleton<IUXInventorySwap, UXInventorySwap>();
serviceCollection.AddSingleton<UXEscMenu>();
//获取服务提供者
await using var serviceProvider = BITApp.ServiceProvider = serviceCollection.BuildServiceProvider();
await global::Project.B.Program.BuildServiceProvider(serviceProvider,destroyCancellationToken);
var uxService = serviceProvider.GetRequiredService<IUXService>();
await uxService.InitializeAsync();
uxService.Entry<IUXLobby>();
serviceProvider.GetRequiredService<IUXSettings>();
serviceProvider.GetRequiredService<UXAlert>();
serviceProvider.GetRequiredService<IUXHud>();
serviceProvider.GetRequiredService<IUXDialogue>();
serviceProvider.GetRequiredService<IUXLoadingMap>();
serviceProvider.GetRequiredService<IUXSnapshotWindow>();
serviceProvider.GetRequiredService<IUXCosmetics>();
serviceProvider.GetRequiredService<IUXBuyStation>();
serviceProvider.GetRequiredKeyedService<IUXMap>(nameof(IUXHud));
serviceProvider.GetRequiredKeyedService<IUXMap>(nameof(IUXMap));
var inventory = serviceProvider.GetRequiredService<IUXInventory>();
inventory.AutoInspect = ItemQuality.Develop;
serviceProvider.GetRequiredService<UXContextMenu>();
serviceProvider.GetRequiredService<IUXInventorySwap>();
Application.targetFrameRate = 165;
BITApp.WalkUntilInitialize.TrySetResult();
await destroyCancellationToken.WaitUntilCanceled();
BITApp.WalkUntilInitialize = new();
}
}
}