Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ProjectBackup/Java/Microcraft/src/com/jdh/microcraft/Main.java
2022-09-04 12:45:01 +02:00

93 lines
2.6 KiB
Java

package com.jdh.microcraft;
import com.jdh.microcraft.gfx.Renderer;
import com.jdh.microcraft.util.Keyboard;
import com.jdh.microcraft.util.Window;
import java.awt.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.FileSystemNotFoundException;
import java.nio.file.Paths;
import java.nio.file.spi.FileSystemProvider;
import java.util.Map;
import java.util.Optional;
public class Main implements Runnable {
public static void main(String[] args) {
System.out.println("CWD is " + Paths.get("").toAbsolutePath().toString());
// initialize FS
Optional<URI> testURI = Optional.ofNullable(Main.class.getResource("/tiles.png")).map(url -> {
try {
return url.toURI();
} catch (URISyntaxException e) {
throw new Error(e);
}
});
if (testURI.isPresent() && testURI.get().getScheme().equals("jar")) {
for (FileSystemProvider provider : FileSystemProvider.installedProviders()) {
if (provider.getScheme().equalsIgnoreCase("jar")) {
try {
provider.getFileSystem(testURI.get());
} catch (FileSystemNotFoundException e) {
try {
provider.newFileSystem(testURI.get(), Map.of());
} catch (IOException ioe) {
throw new Error(ioe);
}
}
}
}
}
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
Window.init("MICROCRAFT", screen.width / 2, screen.height / 2);
new Thread(new Main()).start();
}
@Override
public void run() {
try {
Window.loop(
this::init,
this::destroy,
this::tick,
this::update,
this::render
);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
private void init() {
Global.mainMenu = new MainMenuState();
Global.currentState = Global.mainMenu;
}
private void destroy() {
}
private void tick() {
Global.ticks++;
Keyboard.tick();
Global.currentState.tick();
}
private void update() {
Keyboard.update();
Global.currentState.update();
}
private void render() {
Global.frames++;
Renderer.clear();
Global.currentState.render();
}
}