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 }