public static void Main() { Logger.Initialize(); // Log all unhandled exceptions. AppDomain.CurrentDomain.UnhandledException += (sender, args) => { var exception = args.ExceptionObject as Exception; Logger.Error(exception, LogType.Runtime); }; // Change the working directory to where the executable is. Directory.SetCurrentDirectory(WorkingDirectory); Environment.CurrentDirectory = WorkingDirectory; try { using (var p = Process.GetCurrentProcess()) p.PriorityClass = ProcessPriorityClass.High; } catch (Win32Exception) { /* do nothing */ } CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; NativeAssemblies.Copy(); ConfigManager.Initialize(); SteamManager.Initialize(); using (var game = new QuaverGame()) game.Run(); }
/// <summary> /// Creates a game with embedded resources as a content manager. /// </summary> protected WobbleGame() { Directory.SetCurrentDirectory(WorkingDirectory); Environment.CurrentDirectory = WorkingDirectory; NativeAssemblies.Copy(); Graphics = new GraphicsDeviceManager(this) { PreferredDepthStencilFormat = DepthFormat.Depth24Stencil8, }; GameBase.Game = this; GlobalUserInterface = new GlobalUserInterface(); if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // Required for libbass_fx.so to load properly on Linux and not crash (see https://github.com/ppy/osu/issues/2852). NativeLibrary.Load("libbass.so", NativeLibrary.LoadFlags.RTLD_LAZY | NativeLibrary.LoadFlags.RTLD_GLOBAL); } alphaOneSprite = new Sprite { SpriteBatchOptions = new SpriteBatchOptions { // We want to copy the source alpha and leave the destination color. BlendState = new BlendState { AlphaSourceBlend = Blend.One, AlphaDestinationBlend = Blend.Zero, ColorSourceBlend = Blend.Zero, ColorDestinationBlend = Blend.One } } }; }
/// <summary> /// Starts the game /// </summary> private static void Run() { Logger.Initialize(); // Log all unhandled exceptions. AppDomain.CurrentDomain.UnhandledException += (sender, args) => { var exception = args.ExceptionObject as Exception; Logger.Error(exception, LogType.Runtime); }; StartIpcServer(); // Change the working directory to where the executable is. Directory.SetCurrentDirectory(WorkingDirectory); Environment.CurrentDirectory = WorkingDirectory; try { using (var p = Process.GetCurrentProcess()) p.PriorityClass = ProcessPriorityClass.High; } catch (Win32Exception) { /* do nothing */ } CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; NativeAssemblies.Copy(); ConfigManager.Initialize(); SteamManager.Initialize(); try { Utils.NativeUtils.RegisterURIScheme("quaver", "Quaver"); } catch (Exception e) { Logger.Error(e, LogType.Runtime); } #if VISUAL_TESTS using (var game = new QuaverGame(new HotLoader("../../../../Quaver.Shared/"))) #else using (var game = new QuaverGame()) #endif game.Run(); }
/// <summary> /// Initialize most static objects and dependencies /// </summary> protected override void Initialize() { base.Initialize(); // Copy, if needed, the required assemblies (BASS) for 32 or 64bit CPUs NativeAssemblies.Copy(); // Initialize the logging tool for troubleshooting PulsarcLogger.Initialize(); // Initialize Discord Rich Presence PulsarcDiscord.Initialize(); // Set the default culture (Font formatting Locals) for this thread Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; // Start the thread listening for user input InputManager.StartThread(); // Start our time and frame-time tracker PulsarcTime.Start(); // Initialize FPS fpsDisplay = new FPS(Vector2.Zero); // Initialize the game camera gameCamera = new Camera(Graphics.GraphicsDevice.Viewport, (int)GetDimensions().X, (int)GetDimensions().Y, 1) { Pos = new Vector2(GetDimensions().X / 2, GetDimensions().Y / 2) }; // Start the song selection in the background to have music when entering the game SongScreen = new SongSelection(); SongScreen.Init(); // Create and display the default game screen // (Currently Main menu. In the future can implement an intro) Menu firstScreen = new Menu(); ScreenManager.AddScreen(firstScreen); cursor = new Cursor(); IsReadyToUpdate = true; }
/// <summary> /// Creates a game with embedded resources as a content manager. /// </summary> protected WobbleGame() { Directory.SetCurrentDirectory(WorkingDirectory); Environment.CurrentDirectory = WorkingDirectory; NativeAssemblies.Copy(); Graphics = new GraphicsDeviceManager(this) { PreferredDepthStencilFormat = DepthFormat.Depth24Stencil8, }; GameBase.Game = this; GlobalUserInterface = new GlobalUserInterface(); if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // Required for libbass_fx.so to load properly on Linux and not crash (see https://github.com/ppy/osu/issues/2852). NativeLibrary.Load("libbass.so", NativeLibrary.LoadFlags.RTLD_LAZY | NativeLibrary.LoadFlags.RTLD_GLOBAL); } }