WarpPI/core/src/main/java/it/cavallium/warppi/boot/Boot.java

82 lines
2.5 KiB
Java
Raw Normal View History

package it.cavallium.warppi.boot;
import java.util.Arrays;
2018-09-02 12:45:51 +02:00
import it.cavallium.warppi.Engine;
import it.cavallium.warppi.Engine.LoadingStatus;
import it.cavallium.warppi.Platform;
import it.cavallium.warppi.device.PIHardwareDisplay;
import it.cavallium.warppi.device.PIHardwareTouchDevice;
import it.cavallium.warppi.gui.CalculatorHUD;
import it.cavallium.warppi.gui.screens.LoadingScreen;
import it.cavallium.warppi.math.rules.RulesManager;
import it.cavallium.warppi.util.Error;
2018-09-04 12:12:41 +02:00
public class Boot {
2018-09-22 11:17:30 +02:00
public static void boot(final Platform platform, final String[] args) throws Exception {
Engine.start(platform, new LoadingScreen(), new PIHardwareDisplay(), new PIHardwareTouchDevice(false, false, false), new CalculatorHUD(), Boot.parseStartupArguments(args));
2018-09-04 12:12:41 +02:00
Engine.INSTANCE.getLoadPhase().subscribe(Boot::loadCalculator);
}
2018-09-22 11:17:30 +02:00
private static void loadCalculator(final LoadingStatus loading) {
try {
Engine.INSTANCE.getHardwareDevice().getDisplayManager().setBrightness(0.2f);
RulesManager.initialize();
RulesManager.warmUp();
loading.done();
} catch (InterruptedException | Error e) {
e.printStackTrace();
}
loading.failed();
}
public static StartupArguments parseStartupArguments(final String[] a) {
final StartupArgumentsImpl args = new StartupArgumentsImpl();
2018-09-28 13:43:42 +02:00
Arrays.asList(a).stream().parallel().filter((x) -> x != null).map(String::toLowerCase).forEach(arg -> Boot.parseArgument(args, arg));
return args;
}
2018-09-02 12:45:51 +02:00
2018-09-22 11:17:30 +02:00
public static void parseArgument(final StartupArgumentsImpl args, final String arg) {
2018-08-29 00:07:45 +02:00
switch (arg) {
case "-zoomed":
args.setZoomed(true);
break;
case "-verbose":
args.setVerboseLoggingEnabled(true);
break;
case "-noraspi":
args.setRaspberryModeAllowed(false);
break;
case "nogui":
args.setNoGUIEngineForced(true);
break;
case "ms-dos":
args.setMSDOSModeEnabled(true);
break;
case "html":
args.setHTMLEngineForced(true);
break;
case "gpu":
args.setGPUEngineForced(true);
break;
case "cpu":
args.setCPUEngineForced(true);
break;
case "framebuffer":
args.setFrameBufferEngineForced(true);
break;
case "-debug":
args.setDebugEnabled(true);
break;
case "-uncached":
args.setUncached(true);
break;
default:
2018-09-28 13:43:42 +02:00
// Not using ConsoleUtils because it isn't initialized at this point.
System.out.println("Unrecognized argument " + arg);
2018-08-29 00:07:45 +02:00
break;
}
}
}