TigerEmu/Program.cs

67 lines
2.9 KiB
C#

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Yaml;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Tiger.Communication.Messages;
using Tiger.Communication.Messages.Interfaces;
using Tiger.Game.Achievements;
using Tiger.Game.Catalogue;
using Tiger.Game.Figuredata;
using Tiger.Game.Habbos;
using Tiger.Game.LandingView;
using Tiger.Game.Navigator;
using Tiger.Game.Navigator.Views;
using Tiger.Game.Rooms;
using Tiger.Game.Settings;
using Tiger.Networking.Game;
using Tiger.Networking.Game.Sessions;
using Tiger.Storage;
using Tiger.Utils;
var quitEvent = new ManualResetEvent(false);
Console.CancelKeyPress += (sender, e) =>
{
quitEvent.Set();
e.Cancel = true;
};
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddYamlFile("appsettings.yaml")
.Build();
var collection = new ServiceCollection();
collection.AddLogging(builder => builder.AddConsole());
collection.AddSingleton<IConfiguration>(configuration);
collection.AddSingleton<IWebSocketServer, WebSocketServer>();
collection.AddSingleton<IGameSessionManager, GameSessionManager>();
collection.AddSingleton<IMessageHandler, MessageHandler>();
collection.AddSingleton<INhSessionFactory, NhSessionFactory>();
collection.AddScoped(serviceProvider => serviceProvider.GetRequiredService<INhSessionFactory>().OpenSession());
collection.AddScoped(typeof(IRepository<>), typeof(Repository<>));
collection.AddSingleton<ISettingManager, SettingManager>();
collection.AddSingleton<ICatalogueManager, CatalogueManager>();
collection.AddSingleton<IFigureDataManager, FiguredataManager>();
collection.AddSingleton<ILandingViewManager, LandingViewManager>();
collection.AddSingleton<IAchievementManager, AchievementManager>();
collection.AddSingleton<INavigatorManager, NavigatorManager>();
collection.AddSingleton<IRoomManager, RoomManager>();
collection.RegisterOnInherited<IMessageEvent>();
collection.RegisterOnInherited<INavigatorView>();
var provider = collection.BuildServiceProvider();
await provider.GetRequiredService<ISettingManager>().ReloadSettingsAsync();
await provider.GetRequiredService<ICatalogueManager>().LoadPagesAsync();
await provider.GetRequiredService<ICatalogueManager>().LoadFeaturedPagesAsync();
await provider.GetRequiredService<ICatalogueManager>().LoadClubOffersAsync();
provider.GetRequiredService<IFigureDataManager>();
await provider.GetRequiredService<ILandingViewManager>().LoadPromoArticlesAsync();
await provider.GetRequiredService<IAchievementManager>().LoadAchievementsAsync();
await provider.GetRequiredService<IRoomManager>().LoadPrivateCategoriesAsync();
await provider.GetRequiredService<IRoomManager>().LoadRoomModels();
provider.GetRequiredService<IWebSocketServer>().Start($"http://{configuration["Network:Game:Ip"]}:{configuration["Network:Game:Port"]}/");
quitEvent.WaitOne();