using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Yaml; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Tiger.Communication.Messages; using Tiger.Game.Habbos; 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(configuration); collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); collection.AddSingleton(); collection.AddScoped(serviceProvider => serviceProvider.GetRequiredService().OpenSession()); collection.AddScoped(typeof(IRepository<>), typeof(Repository<>)); collection.AddSingleton(); collection.RegisterMessageEvents(); var provider = collection.BuildServiceProvider(); await provider.GetRequiredService().ReloadSettingsAsync(); provider.GetRequiredService().Start($"http://{configuration["Network:Game:Ip"]}:{configuration["Network:Game:Port"]}/"); quitEvent.WaitOne();