1 module polyplex.core; 2 3 public import polyplex.core.game; 4 public import polyplex.core.render; 5 public import polyplex.core.window; 6 public import polyplex.core.locale; 7 public import polyplex.core.input; 8 public import polyplex.core.content; 9 public import polyplex.core.color; 10 11 import polyplex; 12 import polyplex.utils; 13 14 public class BasicGameLauncher 15 { 16 private static void launch(Game game, string[] args) 17 { 18 try 19 { 20 ChosenBackend = GraphicsBackend.Vulkan; 21 if (args.length == 2) 22 { 23 if (args[1] == "-vulkan") 24 { 25 ChosenBackend = GraphicsBackend.Vulkan; 26 } 27 else if (args[1] == "-opengl") 28 { 29 ChosenBackend = GraphicsBackend.OpenGL; 30 } 31 } 32 Logger.Info("Set rendering backend to {0}...", ChosenBackend); 33 do_launch(game); 34 } 35 catch (Exception ex) 36 { 37 Logger.Info("Application failed! {0}", ex); 38 } 39 } 40 41 private static void do_launch(Game game) 42 { 43 try 44 { 45 /*if (ChosenBackend == GraphicsBackend.Vulkan) 46 { 47 try 48 { 49 InitLibraries(); 50 game.Run(); 51 } 52 catch 53 { 54 Logger.Recover("Going to OpenGL fallback mode..."); 55 ChosenBackend = GraphicsBackend.OpenGL; 56 do_launch(game); 57 } 58 } 59 else 60 {*/ 61 Logger.Recover("Going to OpenGL fallback mode..."); 62 ChosenBackend = GraphicsBackend.OpenGL; 63 InitLibraries(); 64 game.Run(); 65 /*}*/ 66 } 67 catch (Error err) 68 { 69 Logger.Log("Fatal Error! {0}", err, LogType.Fatal); 70 } 71 } 72 73 public static void InitSDL() { 74 ChosenBackend = GraphicsBackend.NoneChosen; 75 InitLibraries(); 76 } 77 78 public static void LaunchGame(Game g, string[] args) { 79 Logger.Debug("Launching {0} with args {1}...", g.Window.Title, args); 80 launch(g, args); 81 } 82 }