82 lines
2.5 KiB
Java
82 lines
2.5 KiB
Java
package it.cavallium.warppi.boot;
|
|
|
|
import java.util.Arrays;
|
|
|
|
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;
|
|
|
|
public class Boot {
|
|
|
|
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));
|
|
Engine.INSTANCE.getLoadPhase().subscribe(Boot::loadCalculator);
|
|
}
|
|
|
|
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();
|
|
Arrays.asList(a).stream().parallel().filter((x) -> x != null).map(String::toLowerCase).forEach(arg -> Boot.parseArgument(args, arg));
|
|
return args;
|
|
}
|
|
|
|
public static void parseArgument(final StartupArgumentsImpl args, final String arg) {
|
|
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:
|
|
// Not using ConsoleUtils because it isn't initialized at this point.
|
|
System.out.println("Unrecognized argument " + arg);
|
|
break;
|
|
}
|
|
}
|
|
}
|