package funkin.util; import flixel.util.FlxSignal.FlxTypedSignal; #if (cpp && windows) @:cppFileCode(' #include #include #include ') #end class WindowUtil { /** * Runs platform-specific code to open a URL in a web browser. * @param targetUrl The URL to open. */ public static function openURL(targetUrl:String) { #if CAN_OPEN_LINKS #if linux Sys.command('/usr/bin/xdg-open', [targetUrl, "&"]); #else // This should work on Windows and HTML5. FlxG.openURL(targetUrl); #end #else throw 'Cannot open URLs on this platform.'; #end } /** * Dispatched when the game window is closed. */ public static final windowExit:FlxTypedSignalVoid> = new FlxTypedSignalVoid>(); /** * Wires up FlxSignals that happen based on window activity. * For example, we can run a callback when the window is closed. */ public static function initWindowEvents() { // onUpdate is called every frame just before rendering. // onExit is called when the game window is closed. openfl.Lib.current.stage.application.onExit.add(function(exitCode:Int) { windowExit.dispatch(exitCode); }); } /** * Turns off that annoying "Report to Microsoft" dialog that pops up when the game crashes. */ public static function disableCrashHandler() { #if (cpp && windows) untyped __cpp__('SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);'); #else // Do nothing. #end } /** * Sets the title of the application window. * @param value The title to use. */ public static function setWindowTitle(value:String):Void { lime.app.Application.current.window.title = value; } }