This commit is contained in:
BlockManBlue 2024-02-28 17:08:02 -07:00 committed by GitHub
parent 2ae0d180e2
commit 065cc6b755
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 243 additions and 102 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,11 +1,11 @@
package main;
import javax.swing.*;
import project.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.nio.file.Files;
public class Main {
public static Image icon = new ImageIcon("data/icon.png").getImage();
public static void main(String[] args){
@ -131,22 +131,28 @@ public class Main {
loadButton.setBackground(new Color(0, 0, 50));
loadButton.setForeground(Color.white);
selWindow.add(loadButton);
JButton deleteButton = new JButton("Remove from Registry");
JButton deleteButton = new JButton("Delete Project");
deleteButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Project.projRegistry[loadSel] = null;
int sel = JOptionPane.showConfirmDialog(selWindow, "Are you sure you want to delete this project?", "Trident", JOptionPane.YES_NO_OPTION);
if(sel == 0){
deleteDir(new File("data/projects/" + Project.projRegistry[loadSel]));
String[] newRegistry = new String[Project.projRegistry.length - 1];
boolean skippedNull = false;
for(int i = 0; i < Project.projRegistry.length; i++){
if(Project.projRegistry[i] != null){
newRegistry[i + (skippedNull ? 1 : 0)] = Project.projRegistry[i];
}else{
skippedNull = true;
for(int i = 0, j = 0; i < Project.projRegistry.length; i++){
if(i != loadSel){
newRegistry[j] = Project.projRegistry[i];
j++;
}
}
Project.projRegistry = newRegistry;
loadSel = 0;
Project.saveRegistry();
JOptionPane.showMessageDialog(selWindow, "Deleted the project.", "Trident", JOptionPane.INFORMATION_MESSAGE);
if(Project.projRegistry.length == 0){
selWindow.dispose();
main(new String[0]);
@ -154,6 +160,9 @@ public class Main {
}
text.setText(Project.projRegistry[loadSel] + "\n(" + (loadSel + 1) + "/" + Project.projRegistry.length + ")");
}
}
});
deleteButton.setBackground(new Color(0, 0, 50));
deleteButton.setForeground(Color.white);
@ -206,8 +215,24 @@ public class Main {
}
}
public static void deleteDir(File file) {
if(!file.exists()) return;
File[] contents = file.listFiles();
if (contents != null) {
for (File f : contents) {
if (! Files.isSymbolicLink(f.toPath())) {
deleteDir(f);
}
}
}
file.delete();
}
public static JFrame window;
public static void loadProject(int proj){
JFrame window = new JFrame("Trident Editor");
window = new JFrame("Trident Editor");
window.setSize(700, 500);
window.setMinimumSize(new Dimension(700, 500));
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

View file

@ -290,8 +290,9 @@ public class MainPanel extends JPanel {
break;
case 6:
project.currentScene.save("data/projects/" + project.name);
System.exit(0);
break;
Main.window.dispose();
Main.main(new String[0]);
return;
}
}
if(dropType == 1){

View file

@ -99,6 +99,7 @@ public class Project {
writer.println("import java.awt.*;");
writer.println("import blib.game.*;");
writer.println("import blib.util.*;");
writer.println("");
writer.println("import java.awt.event.*;");
writer.println("import java.io.File;");
writer.println("import java.io.PrintWriter;");
@ -114,14 +115,18 @@ public class Project {
writer.println("public class MainPanel extends JPanel {");
writer.println("");
writer.println(" protected FrameManager frameManager = new FrameManager();");
writer.println(" protected Server server;");
writer.println(" public static Server server;");
writer.println(" protected KeyManager km = new InputListener(this);");
writer.println(" private Animator introAnim;");
writer.println(" private Position introPos = new Position();");
writer.println(" private ImageIcon splash = new ImageIcon(\"data/images/trident/splash.png\");");
writer.println(" private boolean inIntro = false;");
writer.println(" public static Position introPos = new Position();");
writer.println(" public static ImageIcon splash = new ImageIcon(\"data/images/trident/splash.png\");");
writer.println(" public static boolean inIntro = false;");
writer.println(" private RenderingThread rendThread = new RenderingThread();");
writer.println(" ");
writer.println(" public MainPanel(){");
writer.println("");
writer.println(" System.setProperty(\"sun.java2d.opengl\", \"true\"); // hardware acceleration?");
writer.println("");
writer.println(" setBackground(Color.black);");
writer.println("");
writer.println(" Trident.player = new Player(new Position(), km, 0.1, this, \"data/images/player\", 16, 16);");
@ -138,6 +143,8 @@ public class Project {
writer.println(" Trident.addCustomEntity(new Trigger());");
writer.println(" Trident.addCustomEntity(new TridLight());");
writer.println("");
writer.println(" setFocusTraversalKeysEnabled(false);");
writer.println("");
writer.println(" Update.setup();");
writer.println("");
writer.println(" Trident.setupScenes();");
@ -160,87 +167,21 @@ public class Project {
writer.println(" BTools.resizeImgIcon(Trident.splash, 160, 160);");
writer.println(" }");
writer.println("");
writer.println(" server = new Server(new ServerListener());");
writer.println(" rendThread.start();");
writer.println("");
writer.println(" server = new Server(new ServerListener(), this);");
writer.println(" }");
writer.println("");
writer.println(" public void paintComponent(Graphics graphics){");
writer.println(" super.paintComponent(graphics);");
writer.println(" Graphics g = frameManager.newFrame();");
writer.println(" int WIDTH = frameManager.WIDTH, HEIGHT = frameManager.HEIGHT;");
writer.println(" int offX, offY;");
writer.println(" offX = Trident.camShake.offX;");
writer.println(" offY = Trident.camShake.offY;");
writer.println("");
writer.println(" frameManager.bgColor = Trident.currentScene.bgColor;");
writer.println("");
writer.println(" if(Trident.engineDraw){");
writer.println(" for(TridEntity e: Trident.currentScene.entities){");
writer.println(" Point p = Trident.player.camera.worldToScreen(e.position);");
writer.println(" e.engineRender(g, this, p.x, p.y);");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" ArrayList<ArrayList<Entity>> splitEnt = Trident.player.camera.splitEntities(Trident.tridArrToEntArr(Trident.currentScene.entities), 16);");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(2), offX, offY);");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(0), offX, offY);");
writer.println(" if(Trident.drawPlayer){");
writer.println(" Trident.player.render(this, g, frameManager.WIDTH / 2 - 16 - offX, frameManager.HEIGHT / 2 - 16 - offY);");
writer.println(" }");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(1), offX, offY);");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(3), offX, offY);");
writer.println("");
writer.println("");
writer.println(" Trident.lightManager.render(Trident.player.camera, Trident.lights, g, offX, offY);");
writer.println("");
writer.println(" if(Trident.drawCollision){");
writer.println(" g.setColor(Color.red);");
writer.println(" ArrayList<Rectangle> collision = Trident.currentScene.getCollision();");
writer.println(" collision.add(Trident.player.getCollision());");
writer.println(" for(Rectangle r: collision){");
writer.println(" Point p = Trident.player.camera.worldToScreen(new Position(r.x, r.y));");
writer.println(" g.drawRect(p.x, p.y, r.width, r.height);");
writer.println(" g.drawLine(p.x, p.y, p.x + r.width, p.y + r.height);");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" if(Trident.drawPos){");
writer.println(" g.setColor(Trident.debugColor);");
writer.println(" g.setFont(new Font(\"Arial\", Font.ITALIC, 10));");
writer.println(" TextBox.draw(Trident.player.getPos().toStringSimple(), g, 10, 30);");
writer.println(" }");
writer.println(" if(Trident.drawFrames){");
writer.println(" g.setColor(Trident.debugColor);");
writer.println(" g.setFont(new Font(\"Arial\", Font.ITALIC, 10));");
writer.println(" TextBox.draw(\"delay: \" + server.getElapsedTime() + \" ms\", g, 10, 30);");
writer.println(" TextBox.draw(\"FPS: \" + (1000 / server.getElapsedTime()), g, 10, 40);");
writer.println(" ");
writer.println(" if(rendThread.lastFrame != null){");
writer.println(" g.drawImage(rendThread.lastFrame, 0, 0, null);");
writer.println(" }");
writer.println(" ");
writer.println(" // Apply Post Processing");
writer.println(" if(Trident.enableExposure){");
writer.println(" Trident.exposure.filter(frameManager.getFrame(), frameManager.getFrame());");
writer.println(" }");
writer.println(" if(Trident.enableBloom){");
writer.println(" Trident.bloom.filter(frameManager.getFrame(), frameManager.getFrame());");
writer.println(" }");
writer.println(" ");
writer.println(" if(inIntro){");
writer.println(" g.setColor(Color.black);");
writer.println(" g.fillRect(0, 0, 700, 500);");
writer.println("");
writer.println(" if(Trident.splash != null && BTools.hasImage(Trident.splash)){");
writer.println(" // Trident splash + custom splash");
writer.println(" splash.paintIcon(this, g, WIDTH / 2 - 80, 40);");
writer.println(" Trident.splash.paintIcon(this, g, WIDTH / 2 - 80, HEIGHT - 200);");
writer.println(" }else{");
writer.println(" // Trident splash only");
writer.println(" splash.paintIcon(this, g, WIDTH / 2 - 80, HEIGHT / 2 - 80);");
writer.println(" }");
writer.println("");
writer.println(" float alpha = (float)introPos.x;");
writer.println(" g.setColor(new Color(0f, 0f, 0f, alpha));");
writer.println(" g.fillRect(0, 0, 700, 500);");
writer.println(" }");
writer.println("");
writer.println(" frameManager.renderFrame(this, graphics);");
writer.println(" }");
writer.println("");
@ -251,6 +192,10 @@ public class Project {
writer.println(" }");
writer.println("");
writer.println(" public void onKeyPressed(int key){");
writer.println(" if(key == KeyEvent.VK_F12){");
writer.println(" frameManager.saveScreenshot(\"data/screenshots\");");
writer.println(" Update.tridentEvent(Trident.EVENT_SCREENSHOT);");
writer.println(" }");
writer.println(" if(key == KeyEvent.VK_F11){");
writer.println(" Trident.fullscreen = !Trident.fullscreen;");
writer.println(" Main.window = BTools.getWindowFullscreen(Main.window, Trident.fullscreen, panel);");
@ -395,6 +340,18 @@ public class Project {
writer.println(" int blurLevel = Integer.parseInt(cmdParts.get(1)); ");
writer.println(" Trident.setLightBlur(blurLevel);");
writer.println(" break;");
writer.println(" case \"fullbright\":");
writer.println(" if(cmdParts.size() == 1){");
writer.println(" JOptionPane.showMessageDialog(null, \"fullbright is \" + Trident.fullbright, \"Dev Console\", JOptionPane.INFORMATION_MESSAGE);");
writer.println(" break;");
writer.println(" }");
writer.println(" if(cmdParts.get(1).equals(\"1\") || cmdParts.get(1).equals(\"true\")){");
writer.println(" Trident.fullbright = true;");
writer.println(" }");
writer.println(" if(cmdParts.get(1).equals(\"0\") || cmdParts.get(1).equals(\"false\")){");
writer.println(" Trident.fullbright = false;");
writer.println(" }");
writer.println(" break;");
writer.println(" default:");
writer.println(" int cmd = Update.command(cmdParts);");
writer.println(" if(cmd != 0){");
@ -467,6 +424,10 @@ public class Project {
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" if(Trident.reset){");
writer.println(" km.reset();");
writer.println(" Trident.reset = false;");
writer.println(" }");
writer.println(" for(int i = 0; i < 255; i++){");
writer.println(" Trident.keys[i] = km.getKeyDown(i);");
writer.println(" }");
@ -476,11 +437,18 @@ public class Project {
writer.println(" Trident.m4 = km.getMouseDown(4);");
writer.println(" Trident.m5 = km.getMouseDown(5);");
writer.println("");
writer.println(" if(Trident.newSprite != null){");
writer.println(" Trident.player = new Player(Trident.player.getPos(), km, 0.2, panel, Trident.newSprite, 16, 16);");
writer.println(" Trident.newSprite = null;");
writer.println(" Trident.player.resizeImages(32, 32);");
writer.println(" Trident.player.camera.setDimension = new Dimension(frameManager.WIDTH, frameManager.HEIGHT);");
writer.println(" Trident.camShake = new CamShake(Trident.player.camera);");
writer.println(" Trident.player.shortCollision = true;");
writer.println(" }");
writer.println("");
writer.println(" Update.update(server.getElapsedTime());");
writer.println("");
writer.println(" Trident.getEntities().sort((o1, o2) -> o2.compareSort(o1));");
writer.println("");
writer.println(" repaint();");
writer.println(" try {Trident.getEntities().sort((o1, o2) -> o2.compareSort(o1));} catch(Exception e){}");
writer.println(" }");
writer.println(" }");
writer.println("}");
@ -623,6 +591,7 @@ public class Project {
writer.println(" public static ImageIcon splash = null;");
writer.println(" public static boolean drawFrames = false;");
writer.println(" public static boolean consoleEnabled = true;");
writer.println(" public static boolean fullbright = false;");
writer.println(" ");
writer.println(" // Public Variables");
writer.println(" public static Point mousePos;");
@ -646,6 +615,11 @@ public class Project {
writer.println(" protected static LightManager lightManager = new LightManager(255);");
writer.println(" protected static GlowFilter bloom = new GlowFilter();");
writer.println(" protected static ExposureFilter exposure = new ExposureFilter();");
writer.println(" protected static boolean reset = false;");
writer.println(" protected static String newSprite = null;");
writer.println("");
writer.println(" // Trident Events");
writer.println(" public static final int EVENT_SCREENSHOT = 0;");
writer.println("");
writer.println("");
writer.println(" // Setting methods");
@ -739,6 +713,18 @@ public class Project {
writer.println(" public static void addLight(Light l){");
writer.println(" lights.add(l);");
writer.println(" }");
writer.println(" public static void resetKeys(){");
writer.println(" reset = true;");
writer.println(" }");
writer.println(" public static void setPlrSprite(String path){");
writer.println(" newSprite = path;");
writer.println(" }");
writer.println(" public static void removeLight(Light l){");
writer.println(" lights.remove(l);");
writer.println(" }");
writer.println(" public static void setDefaultLight(int level){");
writer.println(" lightManager.defaultLight = level;");
writer.println(" }");
writer.println("");
writer.println(" // Getting methods");
writer.println(" public static double getPlrSpeed(){");
@ -797,6 +783,12 @@ public class Project {
writer.println(" public static Player getPlr(){");
writer.println(" return player;");
writer.println(" }");
writer.println(" public static int getFrameWidth(){");
writer.println(" return 684;");
writer.println(" }");
writer.println(" public static int getFrameHeight(){");
writer.println(" return 462;");
writer.println(" }");
writer.println("");
writer.println("}");
writer.close();
@ -908,6 +900,123 @@ public class Project {
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/RenderingThread.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident;");
writer.println("");
writer.println("import java.awt.image.*;");
writer.println("import java.util.ArrayList;");
writer.println("import java.util.ConcurrentModificationException;");
writer.println("import blib.util.*;");
writer.println("import java.awt.*;");
writer.println("import blib.game.*;");
writer.println("public class RenderingThread extends Thread {");
writer.println("");
writer.println(" public BufferedImage lastFrame = null;");
writer.println(" private long elapsedTime, previousStartTime = -1;");
writer.println(" ");
writer.println(" public void run(){");
writer.println(" while(true){");
writer.println(" try{");
writer.println(" ");
writer.println(" long now = System.currentTimeMillis();");
writer.println(" elapsedTime = previousStartTime != -1 ? now - previousStartTime : 0;");
writer.println(" previousStartTime = now;");
writer.println(" int WIDTH = Trident.getFrameWidth(), HEIGHT = Trident.getFrameHeight();");
writer.println(" int offX, offY;");
writer.println(" offX = Trident.camShake.offX;");
writer.println(" offY = Trident.camShake.offY;");
writer.println(" BufferedImage newFrame = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);");
writer.println(" Graphics g = newFrame.getGraphics();");
writer.println("");
writer.println(" if(Trident.engineDraw){");
writer.println(" for(TridEntity e: Trident.currentScene.entities){");
writer.println(" Point p = Trident.player.camera.worldToScreen(e.position);");
writer.println(" e.engineRender(g, null, p.x, p.y);");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" ArrayList<ArrayList<Entity>> splitEnt = Trident.player.camera.splitEntities(Trident.tridArrToEntArr(Trident.currentScene.entities), 16);");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(2), offX, offY);");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(0), offX, offY);");
writer.println(" if(Trident.drawPlayer){");
writer.println(" Trident.player.render(null, g, WIDTH / 2 - 16 - offX, HEIGHT / 2 - 16 - offY);");
writer.println(" }");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(1), offX, offY);");
writer.println("");
writer.println(" if(!Trident.fullbright) Trident.lightManager.render(Trident.player.camera, Trident.lights, g, offX, offY);");
writer.println("");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(3), offX, offY);");
writer.println("");
writer.println("");
writer.println(" ");
writer.println("");
writer.println(" if(Trident.drawCollision){");
writer.println(" g.setColor(Color.red);");
writer.println(" ArrayList<Rectangle> collision = Trident.currentScene.getCollision();");
writer.println(" collision.add(Trident.player.getCollision());");
writer.println(" for(Rectangle r: collision){");
writer.println(" Point p = Trident.player.camera.worldToScreen(new Position(r.x, r.y));");
writer.println(" g.drawRect(p.x, p.y, r.width, r.height);");
writer.println(" g.drawLine(p.x, p.y, p.x + r.width, p.y + r.height);");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" if(Trident.drawPos){");
writer.println(" g.setColor(Trident.debugColor);");
writer.println(" g.setFont(new Font(\"Arial\", Font.ITALIC, 10));");
writer.println(" TextBox.draw(Trident.player.getPos().toStringSimple(), g, 10, 30);");
writer.println(" }");
writer.println(" if(Trident.drawFrames){");
writer.println(" g.setColor(Trident.debugColor);");
writer.println(" g.setFont(new Font(\"Arial\", Font.ITALIC, 10));");
writer.println(" TextBox.draw(\"TPS: \" + (1000 / Math.max(MainPanel.server.getElapsedTime(), 1)) + \" (\" + MainPanel.server.getElapsedTime() + \" ms)\", g, 10, 30);");
writer.println(" TextBox.draw(\"FPS: \" + (1000 / Math.max(elapsedTime, 1)) + \" (\" + elapsedTime + \" ms)\", g, 10, 40); ");
writer.println(" }");
writer.println(" ");
writer.println(" // Apply Post Processing");
writer.println(" if(Trident.enableExposure){");
writer.println(" Trident.exposure.filter(newFrame, newFrame);");
writer.println(" }");
writer.println(" if(Trident.enableBloom){");
writer.println(" Trident.bloom.filter(newFrame, newFrame);");
writer.println(" }");
writer.println(" ");
writer.println(" if(MainPanel.inIntro){");
writer.println(" g.setColor(Color.black);");
writer.println(" g.fillRect(0, 0, 700, 500);");
writer.println("");
writer.println(" if(Trident.splash != null && BTools.hasImage(Trident.splash)){");
writer.println(" // Trident splash + custom splash");
writer.println(" MainPanel.splash.paintIcon(null, g, WIDTH / 2 - 80, 40);");
writer.println(" Trident.splash.paintIcon(null, g, WIDTH / 2 - 80, HEIGHT - 200);");
writer.println(" }else{");
writer.println(" // Trident splash only");
writer.println(" MainPanel.splash.paintIcon(null, g, WIDTH / 2 - 80, HEIGHT / 2 - 80);");
writer.println(" }");
writer.println("");
writer.println(" float alpha = (float)MainPanel.introPos.x;");
writer.println(" g.setColor(new Color(0f, 0f, 0f, alpha));");
writer.println(" g.fillRect(0, 0, 700, 500);");
writer.println(" }");
writer.println("");
writer.println(" ");
writer.println("");
writer.println(" lastFrame = newFrame;");
writer.println(" }catch(Exception e){");
writer.println(" if(!(e instanceof ConcurrentModificationException)){");
writer.println(" e.printStackTrace();");
writer.println(" }");
writer.println(" }");
writer.println(" ");
writer.println("");
writer.println(" }");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
// src/trident/ent
@ -1265,6 +1374,12 @@ public class Project {
writer.println(" ");
writer.println(" }");
writer.println("");
writer.println(" public static void tridentEvent(int id){");
writer.println(" if(id == Trident.EVENT_SCREENSHOT){");
writer.println(" System.out.println(\"Took a screenshot!\");");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" public static int command(ArrayList<String> cmdParts){ // cmdParts.get(0) is the command, while the rest are arguments for the command.");
writer.println(" switch(cmdParts.get(0)){");
writer.println(" case \"helloWorld\":");