First Commit

This commit is contained in:
BlockManBlue 2023-11-20 16:42:12 -07:00 committed by GitHub
commit 8252fdfd6b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
68 changed files with 2110 additions and 0 deletions

18
Trident/README.md Normal file
View file

@ -0,0 +1,18 @@
## Getting Started
Welcome to the VS Code Java world. Here is a guideline to help you get started to write Java code in Visual Studio Code.
## Folder Structure
The workspace contains two folders by default, where:
- `src`: the folder to maintain sources
- `lib`: the folder to maintain dependencies
Meanwhile, the compiled output files will be generated in the `bin` folder by default.
> If you want to customize the folder structure, open `.vscode/settings.json` and update the related settings there.
## Dependency Management
The `JAVA PROJECTS` view allows you to manage your dependencies. More details can be found [here](https://github.com/microsoft/vscode-java-dependency#manage-dependencies).

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.

Binary file not shown.

BIN
Trident/bin/main/Main.class Normal file

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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Trident/data/BLib.jar Normal file

Binary file not shown.

BIN
Trident/data/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

View file

@ -0,0 +1,2 @@
{ projects
}

BIN
Trident/lib/BLib.jar Normal file

Binary file not shown.

220
Trident/src/main/Main.java Normal file
View file

@ -0,0 +1,220 @@
package main;
import javax.swing.*;
import project.*;
import java.awt.*;
import java.awt.event.*;
public class Main {
public static Image icon = new ImageIcon("data/icon.png").getImage();
public static void main(String[] args){
Project.loadRegistry();
JFrame selWindow = new JFrame("Trident");
selWindow.setSize(400, 200);
selWindow.setResizable(false);
selWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
selWindow.setIconImage(icon);
selWindow.setLayout(new GridLayout(2, 3));
selWindow.setLocation(400, 300);
JButton loadButton = new JButton("Load Project");
loadButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
selWindow.dispose();
selection(0);
}
});
loadButton.setBackground(new Color(0, 0, 50));
loadButton.setForeground(Color.white);
selWindow.add(loadButton);
JButton newButton = new JButton("New Project");
newButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
selWindow.dispose();
selection(1);
}
});
newButton.setBackground(new Color(0, 0, 50));
newButton.setForeground(Color.white);
selWindow.add(newButton);
JButton importButton = new JButton("Import Project");
importButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
selWindow.dispose();
selection(2);
}
});
importButton.setBackground(new Color(0, 0, 50));
importButton.setForeground(Color.white);
selWindow.add(importButton);
JTextArea loadText = new JTextArea("Load a project");
loadText.setEditable(false);
loadText.setBackground(new Color(0, 0, 100));
loadText.setForeground(Color.white);
selWindow.add(loadText);
JTextArea newText = new JTextArea("Create a new project");
newText.setEditable(false);
newText.setBackground(new Color(0, 0, 100));
newText.setForeground(Color.white);
selWindow.add(newText);
JTextArea importText = new JTextArea("Get a project put\ninto the registry");
importText.setEditable(false);
importText.setBackground(new Color(0, 0, 100));
importText.setForeground(Color.white);
selWindow.add(importText);
selWindow.setVisible(true);
}
public static int loadSel = 0;
public static void selection(int sel){
if(sel == 0){ // Load project
if(Project.projRegistry.length == 0){
JOptionPane.showMessageDialog(null, "You don't have any projects!", "Trident", JOptionPane.ERROR_MESSAGE);
main(new String[0]);
return;
}
JFrame selWindow = new JFrame("Trident");
selWindow.setSize(500, 200);
selWindow.setResizable(false);
selWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
selWindow.setIconImage(icon);
selWindow.setLayout(new GridLayout(2, 3));
selWindow.setLocation(400, 300);
JTextField text = new JTextField(Project.projRegistry[0] + "\n(1/" + Project.projRegistry.length + ")");
text.setEditable(false);
text.setBackground(new Color(0, 0, 100));
text.setForeground(Color.white);
JButton prevButton = new JButton("<");
prevButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
loadSel--;
if(loadSel < 0){
loadSel = Project.projRegistry.length - 1;
}
text.setText(Project.projRegistry[loadSel] + "\n(" + (loadSel + 1) + "/" + Project.projRegistry.length + ")");
}
});
prevButton.setBackground(new Color(0, 0, 50));
prevButton.setForeground(Color.white);
selWindow.add(prevButton);
selWindow.add(text);
JButton nextButton = new JButton(">");
nextButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
loadSel++;
if(loadSel > Project.projRegistry.length - 1){
loadSel = 0;
}
text.setText(Project.projRegistry[loadSel] + "\n(" + (loadSel + 1) + "/" + Project.projRegistry.length + ")");
}
});
nextButton.setBackground(new Color(0, 0, 50));
nextButton.setForeground(Color.white);
selWindow.add(nextButton);
JButton loadButton = new JButton("Load");
loadButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
selWindow.dispose();
loadProject(loadSel);
}
});
loadButton.setBackground(new Color(0, 0, 50));
loadButton.setForeground(Color.white);
selWindow.add(loadButton);
JButton deleteButton = new JButton("Remove from Registry");
deleteButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Project.projRegistry[loadSel] = null;
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;
}
}
Project.projRegistry = newRegistry;
loadSel = 0;
Project.saveRegistry();
if(Project.projRegistry.length == 0){
selWindow.dispose();
main(new String[0]);
return;
}
text.setText(Project.projRegistry[loadSel] + "\n(" + (loadSel + 1) + "/" + Project.projRegistry.length + ")");
}
});
deleteButton.setBackground(new Color(0, 0, 50));
deleteButton.setForeground(Color.white);
selWindow.add(deleteButton);
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
selWindow.dispose();
main(new String[0]);
}
});
cancelButton.setBackground(new Color(0, 0, 50));
cancelButton.setForeground(Color.white);
selWindow.add(cancelButton);
selWindow.setVisible(true);
}
if(sel == 1){ // New project
String name = JOptionPane.showInputDialog(null, "Enter the project name. If a project already exists with that name, keep in mind that it will replace it.", "Trident", JOptionPane.QUESTION_MESSAGE);
if(name == null){
main(new String[0]);
return;
}
String[] newRegistry = new String[Project.projRegistry.length + 1];
for(int i = 0; i < Project.projRegistry.length; i++){
newRegistry[i] = Project.projRegistry[i];
}
newRegistry[newRegistry.length - 1] = name;
Project.projRegistry = newRegistry;
Project.saveRegistry();
new Project(name);
JOptionPane.showMessageDialog(null, "Project successfully created.", "Trident", JOptionPane.INFORMATION_MESSAGE);
main(new String[0]);
}
if(sel == 2){ // Import project
String name = JOptionPane.showInputDialog(null, "Enter the project name. Make sure it's in the projects folder before you open it.", "Trident", JOptionPane.QUESTION_MESSAGE);
if(name == null){
main(new String[0]);
return;
}
String[] newRegistry = new String[Project.projRegistry.length + 1];
for(int i = 0; i < Project.projRegistry.length; i++){
newRegistry[i] = Project.projRegistry[i];
}
newRegistry[newRegistry.length - 1] = name;
Project.projRegistry = newRegistry;
Project.saveRegistry();
main(new String[0]);
}
}
public static void loadProject(int proj){
JFrame window = new JFrame("Trident Editor");
window.setSize(700, 500);
window.setMinimumSize(new Dimension(700, 500));
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setIconImage(icon);
// panel
MainPanel panel = new MainPanel(new Project(proj));
window.add(panel);
//
window.setVisible(true);
}
}

View file

@ -0,0 +1,508 @@
package main;
import javax.swing.*;
import project.*;
import blib.util.*;
import blib.input.*;
import java.awt.event.*;
import java.awt.*;
import blib.game.*;
import java.io.*;
import project.ent.*;
public class MainPanel extends JPanel {
Project project;
Server server;
FrameManager frameManager = new FrameManager();
KeyManager km = new InputListener(this);
Camera cam;
ImageIcon icon = new ImageIcon("data/icon.png");
int tool = 0;
Cursor[] cursors = {
BTools.getCustomCursor(new ImageIcon("data/images/cursors/select.png")),
BTools.getCustomCursor(new ImageIcon("data/images/cursors/move.png")),
BTools.getCustomCursor(new ImageIcon("data/images/cursors/resize.png")),
};
Point mouse = new Point(); // only used for better delta
boolean dropDown = false;
int dropType = 0;
/*
* 0 = trident button
* 1 = add new object
* 2 = delete object
*/
Rectangle dropRect = null;
ImageIcon selectImg = new ImageIcon("data/images/dropdown/select.png"), moveImg = new ImageIcon("data/images/dropdown/move.png"), resizeImg = new ImageIcon("data/images/dropdown/resize.png"), resetImg = new ImageIcon("data/images/dropdown/reset.png"), quitImg = new ImageIcon("data/images/dropdown/quit.png");
ImageIcon deleteImg = new ImageIcon("data/images/dropdown/delete.png");
ImageIcon boxImg = new ImageIcon("data/images/dropdown/box.png");
ImageIcon boxCollImg = new ImageIcon("data/images/dropdown/boxColl.png");
ImageIcon collisionImg = new ImageIcon("data/images/dropdown/collision.png");
ImageIcon plrStartImg = new ImageIcon("data/images/dropdown/plrStart.png");
ImageIcon customImg = new ImageIcon("data/images/dropdown/customEnt.png");
ImageIcon duplicateImg = new ImageIcon("data/images/dropdown/duplicate.png");
ImageIcon editImg = new ImageIcon("data/images/dropdown/edit.png");
ImageIcon triggerImg = new ImageIcon("data/images/dropdown/trigger.png");
TridEntity selectedEntity = null;
public MainPanel(Project proj){
project = proj;
BTools.resizeImgIcon(icon, 32, 32);
cam = new Camera(new Position(), this);
setBackground(Color.black);
frameManager.bgColor = Color.white;
cam.setDimension = new Dimension(frameManager.WIDTH, frameManager.HEIGHT);
server = new Server(new ServerListener());
}
public void paintComponent(Graphics graphics){
super.paintComponent(graphics);
Graphics g = frameManager.newFrame();
for(TridEntity e: project.currentScene.entities){
Point p = cam.worldToScreen(e.position);
e.engineRender(g, this, p.x, p.y);
if(e.equals(selectedEntity)){
g.setColor(new Color(0f, 0.2f, 1f, 0.5f));
g.fillOval(p.x - 32, p.y - 32, 64, 64);
}
if(e instanceof CustomEntity){
CustomEntity c = (CustomEntity)e;
String str = "[";
for(int i = 0; i < c.data.length; i++){
str += c.data[i] + "";
if(i == c.data.length - 1){
str += "]";
}else{
str += ", ";
}
}
g.setColor(Color.white);
int width = g.getFontMetrics().stringWidth(str);
g.fillRect(p.x - width / 2, p.y + 32 - 5, width, 20);
g.setColor(Color.black);
g.setFont(new Font("Arial", Font.PLAIN, 10));
TextBox.draw(c.name + "\n" + str, g, p.x, p.y + 32, TextBox.CENTER);
}
if(e instanceof Trigger){
Trigger trig = (Trigger)e;
String str = "" + trig.id;
g.setColor(Color.white);
int width = g.getFontMetrics().stringWidth(str);
g.fillRect(p.x - width / 2, p.y + 32 - 5, width, 10);
g.setColor(Color.black);
g.setFont(new Font("Arial", Font.PLAIN, 10));
TextBox.draw(str, g, p.x, p.y + 32, TextBox.CENTER);
}
}
g.setColor(new Color(0f, 0f, 0f, 0.5f));
g.fillRect(0, 0, frameManager.WIDTH, 40);
g.setColor(Color.white);
g.setFont(new Font("Arial", Font.PLAIN, 20));
TextBox.draw("Code Load Scene New Scene Save", g, 40, 20);
icon.paintIcon(this, g, 4, 4);
if(dropDown){
g.setColor(Color.lightGray);
g.fillRect(dropRect.x, dropRect.y, dropRect.width, dropRect.height);
g.setColor(Color.gray);
g.drawRect(dropRect.x, dropRect.y, dropRect.width, dropRect.height);
for(int i = 0; i < dropRect.height / 32; i++){
g.drawLine(dropRect.x, dropRect.y + (i * 32), dropRect.x + dropRect.width, dropRect.y + (i * 32));
}
g.setColor(Color.black);
g.setFont(new Font("Arial", Font.PLAIN, 20));
if(dropType == 0){
selectImg.paintIcon(this, g, dropRect.x, dropRect.y);
TextBox.draw("Select", g, dropRect.x + 32, dropRect.y + 16);
moveImg.paintIcon(this, g, dropRect.x, dropRect.y + 32);
TextBox.draw("Move", g, dropRect.x + 32, dropRect.y + 16 + 32);
resizeImg.paintIcon(this, g, dropRect.x, dropRect.y + 64);
TextBox.draw("Resize", g, dropRect.x + 32, dropRect.y + 16 + 64);
resetImg.paintIcon(this, g, dropRect.x, dropRect.y + 64 + 32);
TextBox.draw("Return to (0, 0)", g, dropRect.x + 32, dropRect.y + 16 + 64 + 32);
quitImg.paintIcon(this, g, dropRect.x, dropRect.y + 128);
TextBox.draw("Save and Quit", g, dropRect.x + 32, dropRect.y + 16 + 128);
}
if(dropType == 1){
deleteImg.paintIcon(this, g, dropRect.x, dropRect.y);
TextBox.draw("Delete", g, dropRect.x + 32, dropRect.y + 16);
duplicateImg.paintIcon(this, g, dropRect.x, dropRect.y + 32);
TextBox.draw("Duplicate", g, dropRect.x + 32, dropRect.y + 16 + 32);
editImg.paintIcon(this, g, dropRect.x, dropRect.y + 64);
TextBox.draw("Edit", g, dropRect.x + 32, dropRect.y + 16 + 64);
resetImg.paintIcon(this, g, dropRect.x, dropRect.y + 64 + 32);
TextBox.draw("Bring here", g, dropRect.x + 32, dropRect.y + 16 + 64 + 32);
}
if(dropType == 2){
boxImg.paintIcon(this, g, dropRect.x, dropRect.y);
TextBox.draw("Add BoxNoColl", g, dropRect.x + 32, dropRect.y + 16);
boxCollImg.paintIcon(this, g, dropRect.x, dropRect.y + 32);
TextBox.draw("Add BoxColl", g, dropRect.x + 32, dropRect.y + 16 + 32);
collisionImg.paintIcon(this, g, dropRect.x, dropRect.y + 64);
TextBox.draw("Add InvisColl", g, dropRect.x + 32, dropRect.y + 16 + 64);
plrStartImg.paintIcon(this, g, dropRect.x, dropRect.y + 64 + 32);
TextBox.draw("Add PlrStart", g, dropRect.x + 32, dropRect.y + 16 + 64 + 32);
triggerImg.paintIcon(this, g, dropRect.x, dropRect.y + 128);
TextBox.draw("Add Trigger", g, dropRect.x + 32, dropRect.y + 16 + 128);
customImg.paintIcon(this, g, dropRect.x, dropRect.y + 128 + 32);
TextBox.draw("Add Custom Entity", g, dropRect.x + 32, dropRect.y + 16 + 128 + 32);
}
}
frameManager.renderFrame(this, graphics);
}
public int getDropSel(int y){
return (y - dropRect.y) / 32;
}
private class InputListener extends InputAdapter{
public InputListener(JPanel panel){
super(panel);
}
public void onKeyPressed(int key){
if(key == KeyEvent.VK_R){
cam.pos = new Position();
}
if(key == KeyEvent.VK_1){
tool = 0;
}
if(key == KeyEvent.VK_2){
tool = 1;
}
if(key == KeyEvent.VK_3){
tool = 2;
}
if(key == KeyEvent.VK_DELETE && selectedEntity != null){
project.currentScene.entities.remove(selectedEntity);
selectedEntity = null;
}
if(key == KeyEvent.VK_M && km.getKeyDown(KeyEvent.VK_CONTROL)){
project.currentScene.save("data/projects/" + project.name);
}
if(key == KeyEvent.VK_C && km.getKeyDown(KeyEvent.VK_CONTROL)){
if(selectedEntity instanceof BoxColl){
BoxColl box = (BoxColl)selectedEntity;
project.currentScene.entities.add(new BoxColl(box.position.copy(), new Dimension(box.collision.width, box.collision.height), box.color));
}
if(selectedEntity instanceof BoxNoColl){
BoxNoColl box = (BoxNoColl)selectedEntity;
project.currentScene.entities.add(new BoxNoColl(box.position.copy(), box.color, box.width, box.height));
}
if(selectedEntity instanceof InvisColl){
InvisColl box = (InvisColl)selectedEntity;
project.currentScene.entities.add(new InvisColl(box.position.copy(), new Dimension(box.collision.width, box.collision.height)));
}
if(selectedEntity instanceof Trigger){
Trigger box = (Trigger)selectedEntity;
project.currentScene.entities.add(new Trigger(box.position.copy(), new Dimension(box.box.width, box.box.height), box.id));
}
if(selectedEntity instanceof PlrStart){
PlrStart box = (PlrStart)selectedEntity;
project.currentScene.entities.add(new PlrStart(box.position.copy()));
}
if(selectedEntity instanceof CustomEntity){
CustomEntity box = (CustomEntity)selectedEntity;
int[] data = new int[box.data.length];
for(int i = 0; i < data.length; i++){
data[i] = box.data[i];
}
Dimension collision = null;
if(box.collision != null) collision = new Dimension(box.collision.width, box.collision.height);
project.currentScene.entities.add(new CustomEntity(box.position.copy(), collision, data, box.name));
}
}
}
public void onMousePressed(int mb, Point mousePos){
mousePos = frameManager.getMousePos(panel, mousePos);
if(mousePos.equals(new Point())) return; // likely outside of frame
if(mb == 1){
if(dropDown){
if(dropRect.contains(mousePos)){
int sel = getDropSel(mousePos.y);
if(dropType == 0){
switch(sel){
case 0:
case 1:
case 2:
tool = sel;
break;
case 3:
cam.pos = new Position();
break;
case 4:
project.currentScene.save("data/projects/" + project.name);
System.exit(0);
break;
}
}
if(dropType == 1){
switch(sel){
case 0:
project.currentScene.entities.remove(selectedEntity);
selectedEntity = null;
break;
case 1:
if(selectedEntity instanceof BoxColl){
BoxColl box = (BoxColl)selectedEntity;
project.currentScene.entities.add(new BoxColl(box.position.copy(), new Dimension(box.collision.width, box.collision.height), box.color));
}
if(selectedEntity instanceof BoxNoColl){
BoxNoColl box = (BoxNoColl)selectedEntity;
project.currentScene.entities.add(new BoxNoColl(box.position.copy(), box.color, box.width, box.height));
}
if(selectedEntity instanceof InvisColl){
InvisColl box = (InvisColl)selectedEntity;
project.currentScene.entities.add(new InvisColl(box.position.copy(), new Dimension(box.collision.width, box.collision.height)));
}
if(selectedEntity instanceof Trigger){
Trigger box = (Trigger)selectedEntity;
project.currentScene.entities.add(new Trigger(box.position.copy(), new Dimension(box.box.width, box.box.height), box.id));
}
if(selectedEntity instanceof PlrStart){
PlrStart box = (PlrStart)selectedEntity;
project.currentScene.entities.add(new PlrStart(box.position.copy()));
}
if(selectedEntity instanceof CustomEntity){
CustomEntity box = (CustomEntity)selectedEntity;
int[] data = new int[box.data.length];
for(int i = 0; i < data.length; i++){
data[i] = box.data[i];
}
Dimension collision = null;
if(box.collision != null) collision = new Dimension(box.collision.width, box.collision.height);
project.currentScene.entities.add(new CustomEntity(box.position.copy(), collision, data, box.name));
}
break;
case 2:
if(selectedEntity instanceof BoxColl){
try{
int[] data = new int[3];
for(int i = 0; i < 3; i++){
String input = JOptionPane.showInputDialog(null, "Enter data[" + i + "]", "Trident", JOptionPane.QUESTION_MESSAGE);
data[i] = Integer.parseInt(input);
}
BoxColl box = (BoxColl)selectedEntity;
box.color = new Color(data[0], data[1], data[2]);
}catch(Exception e){}
}
if(selectedEntity instanceof BoxNoColl){
try{
int[] data = new int[3];
for(int i = 0; i < 3; i++){
String input = JOptionPane.showInputDialog(null, "Enter data[" + i + "]", "Trident", JOptionPane.QUESTION_MESSAGE);
data[i] = Integer.parseInt(input);
}
BoxNoColl box = (BoxNoColl)selectedEntity;
box.color = new Color(data[0], data[1], data[2]);
}catch(Exception e){}
}
if(selectedEntity instanceof CustomEntity){
try{
CustomEntity c = (CustomEntity)selectedEntity;
int[] data = new int[c.data.length];
for(int i = 0; i < c.data.length; i++){
String input = JOptionPane.showInputDialog(null, "Enter data[" + i + "]", "Trident", JOptionPane.QUESTION_MESSAGE);
data[i] = Integer.parseInt(input);
}
c.data = data;
}catch(Exception e){}
}
if(selectedEntity instanceof Trigger){
try{
int[] data = new int[1];
for(int i = 0; i < 1; i++){
String input = JOptionPane.showInputDialog(null, "Enter data[" + i + "]", "Trident", JOptionPane.QUESTION_MESSAGE);
data[i] = Integer.parseInt(input);
}
Trigger box = (Trigger)selectedEntity;
box.id = data[0];
}catch(Exception e){}
}
break;
case 3:
Position worldPos = cam.mouseToPos(new Point(dropRect.x, dropRect.y));
selectedEntity.position = worldPos;
break;
}
}
if(dropType == 2){
Position worldPos = cam.mouseToPos(new Point(dropRect.x, dropRect.y));
switch(sel){
case 0:
project.currentScene.entities.add(new BoxNoColl(worldPos, Color.black, 100, 100));
break;
case 1:
project.currentScene.entities.add(new BoxColl(worldPos, new Dimension(100, 100), Color.black));
break;
case 2:
project.currentScene.entities.add(new InvisColl(worldPos, new Dimension(100, 100)));
break;
case 3:
project.currentScene.entities.add(new PlrStart(worldPos));
break;
case 4:
try{
String input = JOptionPane.showInputDialog(null, "Enter the ID for the trigger", "Trident", JOptionPane.QUESTION_MESSAGE);
int id = Integer.parseInt(input);
project.currentScene.entities.add(new Trigger(worldPos, new Dimension(100, 100), id));
}catch(Exception e){}
break;
case 5:
String name = JOptionPane.showInputDialog(null, "Enter the object name", "Trident", JOptionPane.QUESTION_MESSAGE);
if(name != null){
int coll = JOptionPane.showConfirmDialog(null, "Does the object have collision?", "Trident", JOptionPane.YES_NO_CANCEL_OPTION);
if(coll == 2) break;
Dimension collider = null;
if(coll == 0) collider = new Dimension(100, 100);
String input = JOptionPane.showInputDialog(null, "Enter the amount of data you need", "Trident", JOptionPane.QUESTION_MESSAGE);
try{
int numData = Integer.parseInt(input);
int[] data = new int[numData];
for(int i = 0; i < numData; i++){
String dataStr = JOptionPane.showInputDialog(null, "Enter data[" + i + "]", "Trident", JOptionPane.QUESTION_MESSAGE);
data[i] = Integer.parseInt(dataStr);
}
project.currentScene.entities.add(new CustomEntity(worldPos, collider, data, name));
System.out.println("created entity");
}catch(Exception e){
e.printStackTrace();
dropDown = false;
return;
}
}
break;
}
}
dropDown = false;
return;
}else{
dropDown = false;
return;
}
}
if(mousePos.y < 40){
// System.out.println(mousePos.x);
// Toolbar
if(mousePos.x < 40){
dropDown = true;
dropType = 0;
dropRect = new Rectangle(0, 40, 200, 32 * 5);
}else if(mousePos.x < 90){
BTools.openHighlightFile(new File("data/projects/" + project.name).getAbsolutePath());
}else if(mousePos.x < 212){
String name = JOptionPane.showInputDialog(null, "Enter the scene name", "Trident", JOptionPane.QUESTION_MESSAGE);
if(name != null){
boolean loaded = project.loadScene(name);
if(!loaded){
JOptionPane.showMessageDialog(null, "Error: no scene with name '" + name + "' found.", "Trident", JOptionPane.ERROR_MESSAGE);
}
}
}else if(mousePos.x < 327){
String name = JOptionPane.showInputDialog(null, "Enter the scene name", "Trident", JOptionPane.QUESTION_MESSAGE);
if(name != null){
Scene scene = new Scene(name);
scene.save("data/projects/" + project.name);
project.setupScenes();
project.loadScene(name);
}
}else if(mousePos.x < 391){
project.currentScene.save("data/projects/" + project.name);
}
}else{
if(tool == 0){
if(selectedEntity != null){
selectedEntity = null;
}
Position worldPos = cam.mouseToPos(mousePos);
for(TridEntity e: project.currentScene.entities){
if(BTools.getDistance(e.position, worldPos) < 32){
selectedEntity = e;
return;
}
}
}
}
}
if(mb == 3){
if(selectedEntity == null){
dropDown = true;
dropType = 2;
dropRect = new Rectangle(mousePos.x, mousePos.y, 200, 32 * 6);
}else{
dropDown = true;
dropType = 1;
dropRect = new Rectangle(mousePos.x, mousePos.y, 200, 32 * 4);
}
}
}
}
MainPanel parent = this;
private class ServerListener implements ActionListener{
public void actionPerformed(ActionEvent event){
Point delta = new Point(-mouse.x + frameManager.getMousePos(parent, km.getMousePos()).x, -mouse.y + frameManager.getMousePos(parent, km.getMousePos()).y);
mouse = frameManager.getMousePos(parent, km.getMousePos());
// Movement
Point dir = new Point();
if(km.getKeyDown(KeyEvent.VK_W)) dir.y--;
if(km.getKeyDown(KeyEvent.VK_S)) dir.y++;
if(km.getKeyDown(KeyEvent.VK_A)) dir.x--;
if(km.getKeyDown(KeyEvent.VK_D)) dir.x++;
double speed = 0.5;
if(km.getKeyDown(KeyEvent.VK_SHIFT)) speed *= 2;
if(km.getKeyDown(KeyEvent.VK_CONTROL)) speed /= 2;
cam.pos.x += dir.x * server.getElapsedTime() * speed;
cam.pos.y += dir.y * server.getElapsedTime() * speed;
if(tool == 1 && selectedEntity != null && km.getMouseDown(1)){
selectedEntity.position.x += delta.x;
selectedEntity.position.y += delta.y;
}
if(tool == 2 && selectedEntity != null && km.getMouseDown(1)){
if(selectedEntity instanceof BoxNoColl){
BoxNoColl box = (BoxNoColl)selectedEntity;
box.width += delta.x;
box.height -= delta.y;
if(box.width < 0) box.width = 0;
if(box.height < 0) box.height = 0;
}
if(selectedEntity instanceof Trigger){
Trigger trig = (Trigger)selectedEntity;
trig.box.width += delta.x;
trig.box.height -= delta.y;
if(trig.box.width < 0) trig.box.width = 0;
if(trig.box.height < 0) trig.box.height = 0;
}
if(selectedEntity.HASCOLLISION){
selectedEntity.collision.width += delta.x;
selectedEntity.collision.height -= delta.y;
if(selectedEntity.collision.width < 0) selectedEntity.collision.width = 0;
if(selectedEntity.collision.height < 0) selectedEntity.collision.height = 0;
}
}
setCursor(cursors[tool]);
repaint();
}
}
}

View file

@ -0,0 +1,947 @@
package project;
import java.io.*;
import blib.util.*;
import java.util.ArrayList;
import blib.bson.*;
public class Project {
public static String[] projRegistry = null;
public String name;
public ArrayList<Scene> loadedScenes = new ArrayList<Scene>();
public Scene currentScene = new Scene("Empty Scene");
public Project(int proj){ // Load from file
name = projRegistry[proj];
setupScenes();
currentScene = loadedScenes.get(0);
}
public Project(String name){ // New project
this.name = name;
// Make directories
File dir = new File("data/projects/" + name + "/src/trident/ent");
dir.mkdirs();
dir = new File("data/projects/" + name + "/src/update");
dir.mkdirs();
dir = new File("data/projects/" + name + "/src/ent");
dir.mkdirs();
dir = new File("data/projects/" + name + "/lib");
dir.mkdirs();
dir = new File("data/projects/" + name + "/data/images/player");
dir.mkdirs();
dir = new File("data/projects/" + name + "/data/images/trident");
dir.mkdirs();
dir = new File("data/projects/" + name + "/data/scenes");
dir.mkdirs();
// Copy files (images and the such)
BTools.copyFile(new File("data/BLib.jar"), new File("data/projects/" + name + "/lib/BLib.jar"));
BTools.copyFile(new File("data/images/trident/box.png"), new File("data/projects/" + name + "/data/images/trident/box.png"));
BTools.copyFile(new File("data/images/trident/boxColl.png"), new File("data/projects/" + name + "/data/images/trident/boxColl.png"));
BTools.copyFile(new File("data/images/trident/collision.png"), new File("data/projects/" + name + "/data/images/trident/collision.png"));
BTools.copyFile(new File("data/images/trident/customEnt.png"), new File("data/projects/" + name + "/data/images/trident/customEnt.png"));
BTools.copyFile(new File("data/images/trident/plrStart.png"), new File("data/projects/" + name + "/data/images/trident/plrStart.png"));
BTools.copyFile(new File("data/images/trident/trigger.png"), new File("data/projects/" + name + "/data/images/trident/trigger.png"));
BTools.copyFile(new File("data/icon.png"), new File("data/projects/" + name + "/data/icon.png"));
BTools.copyFile(new File("data/images/player/idleS.png"), new File("data/projects/" + name + "/data/images/player/idleS.png"));
BTools.copyFile(new File("data/images/player/idleN.png"), new File("data/projects/" + name + "/data/images/player/idleN.png"));
BTools.copyFile(new File("data/images/player/idleW.png"), new File("data/projects/" + name + "/data/images/player/idleW.png"));
BTools.copyFile(new File("data/images/player/idleE.png"), new File("data/projects/" + name + "/data/images/player/idleE.png"));
BTools.copyFile(new File("data/images/player/walkS.png"), new File("data/projects/" + name + "/data/images/player/walkS.png"));
BTools.copyFile(new File("data/images/player/walkN.png"), new File("data/projects/" + name + "/data/images/player/walkN.png"));
BTools.copyFile(new File("data/images/player/walkE.png"), new File("data/projects/" + name + "/data/images/player/walkE.png"));
BTools.copyFile(new File("data/images/player/walkW.png"), new File("data/projects/" + name + "/data/images/player/walkW.png"));
// Write files (source files & bson files)
// src/trident
try{
File file = new File("data/projects/" + name + "/src/trident/Main.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident;");
writer.println("");
writer.println("import javax.swing.*;");
writer.println("import java.awt.*;");
writer.println("public class Main{");
writer.println(" protected static JFrame window = new JFrame(\"Trident Game\");");
writer.println(" public static void main(String[] args){");
writer.println(" window.setSize(700, 500);");
writer.println(" window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);");
writer.println(" window.setMinimumSize(new Dimension(700, 500));");
writer.println(" window.setIconImage(new ImageIcon(\"data/icon.png\").getImage());");
writer.println(" // panel");
writer.println(" MainPanel panel = new MainPanel();");
writer.println(" window.add(panel);");
writer.println(" //");
writer.println(" window.setVisible(true);");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/MainPanel.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident;");
writer.println("");
writer.println("import javax.swing.*;");
writer.println("import java.awt.*;");
writer.println("import blib.game.*;");
writer.println("import blib.util.*;");
writer.println("import java.awt.event.*;");
writer.println("import blib.input.*;");
writer.println("import java.util.ArrayList;");
writer.println("");
writer.println("import trident.ent.*;");
writer.println("import update.*;");
writer.println("public class MainPanel extends JPanel {");
writer.println("");
writer.println(" protected FrameManager frameManager = new FrameManager();");
writer.println(" protected Server server;");
writer.println(" protected KeyManager km = new InputListener(this);");
writer.println(" ");
writer.println(" public MainPanel(){");
writer.println(" setBackground(Color.black);");
writer.println("");
writer.println(" Trident.player = new Player(new Position(), km, 0.1, this, \"data/images/player\", 16, 16);");
writer.println(" Trident.player.camera.setDimension = new Dimension(frameManager.WIDTH, frameManager.HEIGHT);");
writer.println(" Trident.player.resizeImages(32, 32);");
writer.println(" Trident.currentScene = new Scene(\"Test Scene\");");
writer.println("");
writer.println(" Trident.addCustomEntity(new BoxColl());");
writer.println(" Trident.addCustomEntity(new BoxNoColl());");
writer.println(" Trident.addCustomEntity(new InvisColl());");
writer.println(" Trident.addCustomEntity(new PlrStart());");
writer.println(" Trident.addCustomEntity(new Trigger());");
writer.println("");
writer.println(" Update.setup();");
writer.println("");
writer.println(" Trident.setupScenes();");
writer.println("");
writer.println(" Trident.loadScene(Trident.defaultScene);");
writer.println("");
writer.println(" server = new Server(new ServerListener());");
writer.println(" }");
writer.println("");
writer.println(" public void paintComponent(Graphics graphics){");
writer.println(" super.paintComponent(graphics);");
writer.println(" Graphics g = frameManager.newFrame();");
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));");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(0));");
writer.println(" if(Trident.drawPlayer){");
writer.println(" Trident.player.render(this, g, frameManager.WIDTH / 2 - 16, frameManager.HEIGHT / 2 - 16);");
writer.println(" }");
writer.println(" if(!Trident.engineDraw) Trident.player.camera.render(g, splitEnt.get(1));");
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(" ");
writer.println(" frameManager.renderFrame(this, graphics);");
writer.println(" }");
writer.println("");
writer.println("");
writer.println(" private class InputListener extends InputAdapter {");
writer.println(" public InputListener(JPanel panel){");
writer.println(" super(panel);");
writer.println(" }");
writer.println("");
writer.println(" public void onKeyPressed(int key){");
writer.println(" if(key == KeyEvent.VK_F11){");
writer.println(" Trident.fullscreen = !Trident.fullscreen;");
writer.println(" Main.window = BTools.getWindowFullscreen(Main.window, Trident.fullscreen, panel);");
writer.println(" return;");
writer.println(" }");
writer.println(" Inputs.keyPressed(key);");
writer.println(" }");
writer.println("");
writer.println(" public void onMousePressed(int mb, Point mousePos){");
writer.println(" Inputs.mousePressed(mb, mousePos);");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" private class ServerListener implements ActionListener {");
writer.println(" public void actionPerformed(ActionEvent event){");
writer.println(" Trident.mousePos = km.getMousePos();");
writer.println(" Trident.mouseDelta = km.getMouseDelta();");
writer.println("");
writer.println(" frameManager.bgColor = Trident.bgColor;");
writer.println("");
writer.println(" if(!Trident.noclip) Trident.player.updateWithCollision(server.getElapsedTime(), Trident.currentScene.getCollision());");
writer.println(" else Trident.player.update(server.getElapsedTime());");
writer.println("");
writer.println(" for(TridEntity e: Trident.currentScene.entities){");
writer.println(" e.update(server.getElapsedTime());");
writer.println(" if(e instanceof Trigger){");
writer.println(" Trigger trig = (Trigger)e;");
writer.println(" if(trig.containsPos(Trident.player.getPos())){");
writer.println(" Update.trigger(trig.id);");
writer.println(" }");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" Update.update(server.getElapsedTime());");
writer.println("");
writer.println(" repaint();");
writer.println(" }");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/Scene.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident;");
writer.println("");
writer.println("import java.util.ArrayList;");
writer.println("import java.awt.*;");
writer.println("import java.io.*;");
writer.println("import blib.bson.*;");
writer.println("import blib.util.*;");
writer.println("import trident.ent.*;");
writer.println("import blib.game.*;");
writer.println("public class Scene {");
writer.println(" ");
writer.println(" public final String name;");
writer.println(" public ArrayList<TridEntity> entities;");
writer.println(" protected Position plrStart = new Position();");
writer.println(" protected int plrDir = Player.SOUTH;");
writer.println("");
writer.println(" public Scene(String n){ // Empty scene");
writer.println(" name = n;");
writer.println(" entities = new ArrayList<TridEntity>();");
writer.println(" }");
writer.println(" public Scene(File f) throws IOException{");
writer.println(" entities = new ArrayList<TridEntity>();");
writer.println(" ArrayList<BSonObject> objects = BSonParser.readFile(f.getAbsolutePath());");
writer.println(" BSonObject obj = BSonParser.getObject(\"name\", objects);");
writer.println(" name = obj.getString();");
writer.println(" obj = BSonParser.getObject(\"dir\", objects);");
writer.println(" if(obj != null){");
writer.println(" String str = obj.getString();");
writer.println(" if(str.equals(\"west\")) plrDir = Player.WEST;");
writer.println(" if(str.equals(\"north\")) plrDir = Player.NORTH;");
writer.println(" if(str.equals(\"east\")) plrDir = Player.EAST;");
writer.println(" }");
writer.println(" obj = BSonParser.getObject(\"entities\", objects);");
writer.println(" BSonList asList = (BSonList)obj;");
writer.println(" for(int i = 0; i < asList.list.size(); i++){");
writer.println(" String objName = asList.list.get(i).getString();");
writer.println(" i++;");
writer.println(" boolean foundEnt = false;");
writer.println(" for(TridEntity e: Trident.entRegistry){");
writer.println(" if(e.name.equals(objName)){");
writer.println(" double x, y;");
writer.println(" x = asList.list.get(i).getDouble();");
writer.println(" i++;");
writer.println(" y = asList.list.get(i).getDouble();");
writer.println(" i++;");
writer.println(" int w = 0, h = 0;");
writer.println(" i++;");
writer.println(" if(e.HASCOLLISION){");
writer.println(" w = asList.list.get(i).getInt();");
writer.println(" i++;");
writer.println(" h = asList.list.get(i).getInt();");
writer.println(" i++;");
writer.println(" }");
writer.println(" int[] data = new int[e.numData];");
writer.println(" for(int j = 0; j < e.numData; j++){");
writer.println(" data[j] = asList.list.get(i).getInt();");
writer.println(" i++;");
writer.println(" }");
writer.println(" i--;");
writer.println(" entities.add(e.construct(new Position(x, y), (e.HASCOLLISION ? (new Dimension(w, h)) : null), data));");
writer.println(" foundEnt = true;");
writer.println(" break;");
writer.println(" }");
writer.println(" }");
writer.println(" if(!foundEnt) System.out.println(\"ERROR: no entity type '\" + objName + \"' found\");");
writer.println(" }");
writer.println("");
writer.println(" // Check for plrstart");
writer.println(" for(TridEntity e: entities){");
writer.println(" if(e instanceof PlrStart){");
writer.println(" plrStart = e.position.copy();");
writer.println(" break;");
writer.println(" }");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" public static Scene loadScene(String path){ // stub method ::: Load a scene from a file");
writer.println(" return null;");
writer.println(" }");
writer.println("");
writer.println(" public ArrayList<Rectangle> getCollision(){");
writer.println(" ArrayList<Rectangle> collision = new ArrayList<Rectangle>();");
writer.println(" for(TridEntity e: entities){");
writer.println(" if(e.HASCOLLISION){");
writer.println(" collision.add(e.getCollision());");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" return collision;");
writer.println(" }");
writer.println("");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/Trident.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident;");
writer.println("");
writer.println("import blib.game.*;");
writer.println("import blib.util.*;");
writer.println("import java.awt.*;");
writer.println("import java.util.ArrayList;");
writer.println("");
writer.println("import update.*;");
writer.println("import java.io.*;");
writer.println("public class Trident {");
writer.println("");
writer.println(" // Debug Settings");
writer.println(" public static boolean drawPos = false;");
writer.println(" public static boolean drawCollision = false;");
writer.println(" public static boolean noclip = false;");
writer.println(" public static boolean engineDraw = false;");
writer.println(" public static Color debugColor = Color.red;");
writer.println(" ");
writer.println(" // Public Variables");
writer.println(" public static Point mousePos;");
writer.println(" public static Point mouseDelta;");
writer.println(" public static boolean drawPlayer = true;");
writer.println("");
writer.println("");
writer.println(" // Trident Variables");
writer.println(" protected static Player player;");
writer.println(" protected static Color bgColor;");
writer.println(" protected static Scene currentScene;");
writer.println(" protected static boolean fullscreen = false;");
writer.println(" protected static ArrayList<Scene> loadedScenes = new ArrayList<Scene>();");
writer.println(" protected static ArrayList<TridEntity> entRegistry = new ArrayList<TridEntity>();");
writer.println(" protected static String defaultScene = \"default\";");
writer.println("");
writer.println("");
writer.println(" // Setting methods");
writer.println(" public static void setPlrSpeed(double speed){");
writer.println(" player.speed = speed;");
writer.println(" }");
writer.println(" public static void setBackground(Color color){");
writer.println(" bgColor = color;");
writer.println(" }");
writer.println(" public static void setPlrPos(Position pos){");
writer.println(" player.goToPos(pos);");
writer.println(" }");
writer.println(" public static void setShortCollision(boolean b){");
writer.println(" player.shortCollision = b;");
writer.println(" }");
writer.println(" public static void setWindowTitle(String title){");
writer.println(" Main.window.setTitle(title);");
writer.println(" }");
writer.println(" public static void setupScenes(){");
writer.println(" try{");
writer.println(" loadedScenes = new ArrayList<Scene>();");
writer.println(" File dir = new File(\"data/scenes\");");
writer.println(" File[] files = dir.listFiles();");
writer.println(" ArrayList<File> sceneFiles = new ArrayList<File>();");
writer.println(" for(File f: files){");
writer.println(" if(BTools.hasExtension(f, \"bson\")) sceneFiles.add(f);");
writer.println(" }");
writer.println("");
writer.println(" for(File f: sceneFiles){");
writer.println(" loadedScenes.add(new Scene(f));");
writer.println(" }");
writer.println(" }catch(Exception e){");
writer.println(" System.out.println(\"Error setting up scenes.\");");
writer.println(" e.printStackTrace();");
writer.println(" }");
writer.println(" ");
writer.println(" }");
writer.println(" public static void loadScene(String name){");
writer.println(" for(Scene s: loadedScenes){");
writer.println(" if(s.name.equals(name)){");
writer.println(" currentScene = s;");
writer.println(" player.goToPos(s.plrStart);");
writer.println(" player.setDirection(s.plrDir);");
writer.println(" Update.sceneStart(name);");
writer.println(" return;");
writer.println(" }");
writer.println(" }");
writer.println(" System.out.println(\"***********************************************************************************\");");
writer.println(" System.out.println(\"Error loading scene: No scene with name '\" + name + \"' found.\");");
writer.println(" System.out.println(\"***********************************************************************************\");");
writer.println(" }");
writer.println(" public static void addCustomEntity(TridEntity e){ // Add a cutsom entity to the registry");
writer.println(" entRegistry.add(e);");
writer.println(" }");
writer.println(" public static void spawnEntity(TridEntity e){");
writer.println(" currentScene.entities.add(e);");
writer.println(" }");
writer.println(" public static void setDefaultScene(String s){");
writer.println(" defaultScene = s;");
writer.println(" }");
writer.println("");
writer.println(" // Getting methods");
writer.println(" public static double getPlrSpeed(){");
writer.println(" return player.speed;");
writer.println(" }");
writer.println(" public static Position getPlrPos(){");
writer.println(" return player.getPos().copy();");
writer.println(" }");
writer.println(" public static Scene getCurrentScene(){");
writer.println(" return currentScene;");
writer.println(" }");
writer.println(" public static boolean getFullscreen(){");
writer.println(" return fullscreen; ");
writer.println(" }");
writer.println(" public static ArrayList<Entity> tridArrToEntArr(ArrayList<TridEntity> entities){");
writer.println(" ArrayList<Entity> newEntities = new ArrayList<Entity>();");
writer.println(" for(TridEntity e: entities){");
writer.println(" newEntities.add((Entity)e);");
writer.println(" }");
writer.println(" return newEntities;");
writer.println(" }");
writer.println(" public static ArrayList<TridEntity> entArrToTridArr(ArrayList<Entity> entities){");
writer.println(" ArrayList<TridEntity> newEntities = new ArrayList<TridEntity>();");
writer.println(" for(Entity e: entities){");
writer.println(" newEntities.add((TridEntity)e);");
writer.println(" }");
writer.println(" return newEntities;");
writer.println(" }");
writer.println("");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/TridEntity.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident;");
writer.println("");
writer.println("import blib.game.*;");
writer.println("import blib.util.*;");
writer.println("");
writer.println("import javax.swing.*;");
writer.println("import java.awt.*;");
writer.println("public class TridEntity extends Entity {");
writer.println("");
writer.println(" public final boolean HASCOLLISION;");
writer.println(" private final Dimension collision;");
writer.println(" public String engineRenderData = \"\";");
writer.println(" private ImageIcon engineImg = new ImageIcon(\"data/images/trident/customEnt.png\");");
writer.println(" protected String name;");
writer.println(" protected int numData;");
writer.println(" ");
writer.println(" public TridEntity(Position pos){");
writer.println(" super(pos);");
writer.println(" HASCOLLISION = false;");
writer.println(" collision = null;");
writer.println(" }");
writer.println(" public TridEntity(Position pos, Dimension collision){");
writer.println(" super(pos);");
writer.println(" if(collision.equals(new Dimension(0, 0))) HASCOLLISION = false;");
writer.println(" else HASCOLLISION = true;");
writer.println(" this.collision = collision;");
writer.println(" }");
writer.println(" public TridEntity(String n, boolean hasColl, int numData){");
writer.println(" super(new Position());");
writer.println(" HASCOLLISION = hasColl;");
writer.println(" collision = null;");
writer.println(" name = n;");
writer.println(" this.numData = numData;");
writer.println(" }");
writer.println(" public TridEntity construct(Position pos, Dimension collision, int[] data){");
writer.println(" System.out.println(\"Error: tried to create an empty entity\");");
writer.println(" return null;");
writer.println(" }");
writer.println("");
writer.println(" public final Rectangle getCollision(){");
writer.println(" return new Rectangle((int)position.x - (collision.width / 2), (int)position.y - (collision.height / 2), collision.width, collision.height);");
writer.println(" }");
writer.println("");
writer.println(" public void gameStart(){");
writer.println(" ");
writer.println(" }");
writer.println(" ");
writer.println(" public void render(Graphics g, JPanel panel, int x, int y){");
writer.println("");
writer.println(" }");
writer.println("");
writer.println(" public void engineRender(Graphics g, JPanel panel, int x, int y){");
writer.println(" if(HASCOLLISION){");
writer.println(" g.setColor(Color.red);");
writer.println(" g.drawRect(x - getCollision().width / 2, y - getCollision().height / 2, getCollision().width, getCollision().height);");
writer.println(" g.drawLine(x - getCollision().width / 2, y - getCollision().height / 2, x + getCollision().width / 2, y + getCollision().height / 2);");
writer.println(" }");
writer.println(" engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);");
writer.println(" }");
writer.println("");
writer.println(" public void update(long elapsedTime){");
writer.println("");
writer.println(" }");
writer.println("");
writer.println("}");
writer.close();
}catch(Exception e){}
// src/trident/ent
try{
File file = new File("data/projects/" + name + "/src/trident/ent/BoxColl.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident.ent;");
writer.println("");
writer.println("import blib.util.*;");
writer.println("import java.awt.*;");
writer.println("import javax.swing.*;");
writer.println("");
writer.println("import trident.*;");
writer.println("public class BoxColl extends TridEntity{");
writer.println("");
writer.println(" public Color color = Color.white;");
writer.println("");
writer.println(" private ImageIcon engineImg = new ImageIcon(\"data/images/trident/boxColl.png\");");
writer.println(" ");
writer.println(" public BoxColl(Position pos, Dimension size, Color c){");
writer.println(" super(pos, size);");
writer.println(" color = c;");
writer.println(" }");
writer.println(" public BoxColl(Position pos, Dimension size){");
writer.println(" super(pos, size);");
writer.println(" }");
writer.println(" public BoxColl(){");
writer.println(" super(\"boxcoll\", true, 3);");
writer.println(" }");
writer.println(" public TridEntity construct(Position pos, Dimension collision, int[] data){");
writer.println(" return new BoxColl(pos, collision, new Color(data[0], data[1], data[2]));");
writer.println(" }");
writer.println("");
writer.println(" public void render(Graphics g, JPanel panel, int x, int y){");
writer.println(" g.setColor(color);");
writer.println(" g.fillRect(x - getCollision().width / 2, y - getCollision().height / 2, getCollision().width, getCollision().height);");
writer.println(" }");
writer.println("");
writer.println(" public void engineRender(Graphics g, JPanel panel, int x, int y){");
writer.println(" render(g, panel, x, y);");
writer.println(" engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/ent/BoxNoColl.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident.ent;");
writer.println("");
writer.println("import blib.util.*;");
writer.println("import java.awt.*;");
writer.println("import javax.swing.*;");
writer.println("import blib.game.*;");
writer.println("");
writer.println("import trident.*;");
writer.println("public class BoxNoColl extends TridEntity{");
writer.println(" ");
writer.println(" public Color color = Color.white;");
writer.println(" public int width, height;");
writer.println("");
writer.println(" private ImageIcon engineImg = new ImageIcon(\"data/images/trident/box.png\");");
writer.println(" ");
writer.println(" public BoxNoColl(Position pos, Color c, int w, int h){");
writer.println(" super(pos);");
writer.println(" color = c;");
writer.println(" width = w;");
writer.println(" height = h;");
writer.println(" renderType = Entity.UNDER;");
writer.println(" }");
writer.println(" public BoxNoColl(Position pos, int w, int h){");
writer.println(" super(pos);");
writer.println(" width = w;");
writer.println(" height = h;");
writer.println(" renderType = Entity.UNDER;");
writer.println(" }");
writer.println(" public BoxNoColl(){");
writer.println(" super(\"boxnocoll\", false, 5);");
writer.println(" }");
writer.println(" public TridEntity construct(Position pos, Dimension collision, int[] data){");
writer.println(" return new BoxNoColl(pos, new Color(data[2], data[3], data[4]), data[0], data[1]);");
writer.println(" }");
writer.println("");
writer.println(" public void render(Graphics g, JPanel panel, int x, int y){");
writer.println(" g.setColor(color);");
writer.println(" g.fillRect(x - width / 2, y - height / 2, width, height);");
writer.println(" }");
writer.println("");
writer.println(" public void engineRender(Graphics g, JPanel panel, int x, int y){");
writer.println(" render(g, panel, x, y);");
writer.println(" engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/ent/InvisColl.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident.ent;");
writer.println("");
writer.println("import blib.util.*;");
writer.println("import java.awt.*;");
writer.println("import javax.swing.*;");
writer.println("");
writer.println("import trident.*;");
writer.println("public class InvisColl extends TridEntity{");
writer.println(" ");
writer.println(" public Color color = Color.red;");
writer.println("");
writer.println(" private ImageIcon engineImg = new ImageIcon(\"data/images/trident/collision.png\");");
writer.println(" ");
writer.println(" public InvisColl(Position pos, Dimension size){");
writer.println(" super(pos, size);");
writer.println(" } ");
writer.println(" public InvisColl(){");
writer.println(" super(\"inviscoll\", true, 0);");
writer.println(" }");
writer.println(" public TridEntity construct(Position pos, Dimension collision, int[] data){");
writer.println(" return new InvisColl(pos, collision);");
writer.println(" }");
writer.println("");
writer.println(" public void engineRender(Graphics g, JPanel panel, int x, int y){");
writer.println(" g.setColor(color);");
writer.println(" g.drawRect(x - getCollision().width / 2, y - getCollision().height / 2, getCollision().width, getCollision().height);");
writer.println(" g.drawLine(x - getCollision().width / 2, y - getCollision().height / 2, x + getCollision().width / 2, y + getCollision().height / 2);");
writer.println(" engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/ent/PlrStart.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident.ent;");
writer.println("");
writer.println("import blib.util.*;");
writer.println("import java.awt.*;");
writer.println("import javax.swing.*;");
writer.println("");
writer.println("import trident.*;");
writer.println("public class PlrStart extends TridEntity{");
writer.println(" public Color color = Color.red;");
writer.println("");
writer.println(" private ImageIcon engineImg = new ImageIcon(\"data/images/trident/plrStart.png\");");
writer.println(" ");
writer.println(" public PlrStart(Position pos){");
writer.println(" super(pos);");
writer.println(" } ");
writer.println(" public PlrStart(){");
writer.println(" super(\"plrstart\", false, 0);");
writer.println(" }");
writer.println(" public TridEntity construct(Position pos, Dimension collision, int[] data){");
writer.println(" return new PlrStart(pos);");
writer.println(" }");
writer.println("");
writer.println(" public void engineRender(Graphics g, JPanel panel, int x, int y){");
writer.println(" engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/trident/ent/Trigger.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package trident.ent;");
writer.println("");
writer.println("import blib.util.*;");
writer.println("import java.awt.*;");
writer.println("import javax.swing.*;");
writer.println("");
writer.println("import trident.*;");
writer.println("public class Trigger extends TridEntity{");
writer.println(" ");
writer.println(" public Color color = Color.blue;");
writer.println(" public Dimension box;");
writer.println(" public int id;");
writer.println("");
writer.println(" private ImageIcon engineImg = new ImageIcon(\"data/images/trident/trigger.png\");");
writer.println(" ");
writer.println(" public Trigger(Position pos, Dimension size, int i){");
writer.println(" super(pos);");
writer.println(" name = \"trigger\";");
writer.println(" box = size;");
writer.println(" id = i;");
writer.println(" } ");
writer.println(" public Trigger(){");
writer.println(" super(\"trigger\", false, 3);");
writer.println(" }");
writer.println(" public TridEntity construct(Position pos, Dimension collision, int[] data){");
writer.println(" return new Trigger(pos, new Dimension(data[0], data[1]), data[2]);");
writer.println(" }");
writer.println("");
writer.println(" public boolean containsPos(Position pos){");
writer.println(" Point p = new Point((int)pos.x, (int)pos.y);");
writer.println(" Rectangle rect = new Rectangle((int)position.x - box.width / 2, (int)position.y - box.height / 2, box.width, box.height);");
writer.println(" return rect.contains(p);");
writer.println(" }");
writer.println("");
writer.println(" public void engineRender(Graphics g, JPanel panel, int x, int y){");
writer.println(" g.setColor(color);");
writer.println(" g.drawRect(x - box.width / 2, y - box.height / 2, box.width, box.height);");
writer.println(" g.drawLine(x - box.width / 2, y - box.height / 2, x + box.width / 2, y + box.height / 2);");
writer.println(" engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
// src/ent
try{
File file = new File("data/projects/" + name + "/src/ent/ExampleEntity.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package ent;");
writer.println("");
writer.println("import blib.util.*;");
writer.println("import trident.*;");
writer.println("import javax.swing.*;");
writer.println("import java.awt.*;");
writer.println("public class ExampleEntity extends TridEntity {");
writer.println("");
writer.println(" // Constructor, runs when the entity is created");
writer.println(" public ExampleEntity(Position pos){");
writer.println(" super(pos);");
writer.println(" }");
writer.println(" // Registry constructor, used only for adding to the registry");
writer.println(" public ExampleEntity(){");
writer.println(" super(\"example\", false, 0);");
writer.println(" }");
writer.println(" // Custom constructor, used by the engine when building a scene");
writer.println(" public TridEntity construct(Position pos, Dimension collision, int[] data){");
writer.println(" return new ExampleEntity(pos);");
writer.println(" }");
writer.println("");
writer.println(" // Runs when the game begins, use this over constructor in most cases other than assigning image variables");
writer.println(" public void gameStart(){");
writer.println("");
writer.println(" }");
writer.println("");
writer.println(" // Render while in game");
writer.println(" public void render(Graphics g, JPanel panel, int x, int y){");
writer.println("");
writer.println(" }");
writer.println("");
writer.println(" // Render while in engine. Tip: call the normal render first to still render it normally, then overlay something on top");
writer.println(" public void engineRender(Graphics g, JPanel panel, int x, int y){");
writer.println(" super.engineRender(g, panel, x, y);");
writer.println(" }");
writer.println("");
writer.println(" // Runs every tick while the game is running");
writer.println(" public void update(long elapsedTime){");
writer.println(" ");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
// src/update
try{
File file = new File("data/projects/" + name + "/src/update/Inputs.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package update;");
writer.println("");
writer.println("import java.awt.*;");
writer.println("import java.awt.event.*;");
writer.println("");
writer.println("import trident.*;");
writer.println("public class Inputs {");
writer.println(" ");
writer.println(" public static void keyPressed(int key){");
writer.println(" // Basic debug keys");
writer.println(" if(key == KeyEvent.VK_F1){");
writer.println(" Trident.drawCollision = !Trident.drawCollision;");
writer.println(" }");
writer.println(" if(key == KeyEvent.VK_F2){");
writer.println(" Trident.engineDraw = !Trident.engineDraw;");
writer.println(" }");
writer.println(" if(key == KeyEvent.VK_F3){");
writer.println(" Trident.drawPos = !Trident.drawPos;");
writer.println(" }");
writer.println(" if(key == KeyEvent.VK_F4){");
writer.println(" Trident.noclip = !Trident.noclip;");
writer.println(" }");
writer.println(" }");
writer.println("");
writer.println(" public static void mousePressed(int mb, Point mousePos){");
writer.println("");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
try{
File file = new File("data/projects/" + name + "/src/update/Update.java");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("package update;");
writer.println("");
writer.println("import trident.*;");
writer.println("import ent.*;");
writer.println("public class Update {");
writer.println("");
writer.println(" public static void setup(){");
writer.println(" // Add custom entities to the registry here. Required in order to load them properly");
writer.println(" Trident.addCustomEntity(new ExampleEntity()); // Use the empty constructor");
writer.println("");
writer.println(" // Set settings");
writer.println(" Trident.setPlrSpeed(0.2);");
writer.println(" Trident.setShortCollision(true);");
writer.println(" }");
writer.println("");
writer.println(" public static void sceneStart(String scene){");
writer.println("");
writer.println(" }");
writer.println(" ");
writer.println(" public static void update(long elapsedTimes){");
writer.println("");
writer.println(" }");
writer.println("");
writer.println(" public static void trigger(int id){");
writer.println(" ");
writer.println(" }");
writer.println("}");
writer.close();
}catch(Exception e){}
// data/scenes
try{
File file = new File("data/projects/" + name + "/data/scenes/default.bson");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("string name default");
writer.println("string dir east");
writer.println("{ entities");
writer.println("string boxcoll");
writer.println("double -200");
writer.println("double 0");
writer.println("boolean true");
writer.println("int 100");
writer.println("int 100");
writer.println("int 0");
writer.println("int 255");
writer.println("int 0");
writer.println("string plrstart");
writer.println("double -300");
writer.println("double 0");
writer.println("boolean false");
writer.println("string inviscoll");
writer.println("double -200");
writer.println("double 100");
writer.println("boolean true");
writer.println("int 100");
writer.println("int 100");
writer.println("string boxnocoll");
writer.println("double -200");
writer.println("double -100");
writer.println("boolean false");
writer.println("int 100");
writer.println("int 100");
writer.println("int 255");
writer.println("int 0");
writer.println("int 0");
writer.println("}");
writer.close();
}catch(Exception e){}
setupScenes();
currentScene = loadedScenes.get(0);
}
public static void loadRegistry(){
ArrayList<BSonObject> objects = BSonParser.readFile("data/projectRegistry.bson");
BSonObject obj = BSonParser.getObject("projects", objects);
BSonList asList = (BSonList)obj;
projRegistry = new String[asList.list.size()];
for(int i = 0; i < asList.list.size(); i++){
projRegistry[i] = asList.list.get(i).getString();
}
}
public static void saveRegistry(){
try{
File file = new File("data/projectRegistry.bson");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("{ projects");
for(String s: projRegistry){
writer.println("string " + s);
}
writer.println("}");
writer.close();
}catch(Exception e){e.printStackTrace();}
}
public void setupScenes(){
try{
loadedScenes = new ArrayList<Scene>();
File dir = new File("data/projects/" + name + "/data/scenes");
File[] files = dir.listFiles();
ArrayList<File> sceneFiles = new ArrayList<File>();
for(File f: files){
if(BTools.hasExtension(f, "bson")) sceneFiles.add(f);
}
for(File f: sceneFiles){
loadedScenes.add(new Scene(f));
}
}catch(Exception e){
System.out.println("Error setting up scenes.");
e.printStackTrace();
}
}
public boolean loadScene(String name){
for(Scene s: loadedScenes){
if(s.name.equals(name)){
currentScene = s;
return true;
}
}
System.out.println("***********************************************************************************");
System.out.println("Error loading scene: No scene with name '" + name + "' found.");
System.out.println("***********************************************************************************");
return false;
}
}

View file

@ -0,0 +1,153 @@
package project;
import java.util.ArrayList;
import java.awt.*;
import java.io.*;
import blib.bson.*;
import blib.util.*;
import blib.game.*;
import project.ent.*;
public class Scene {
public final String name;
public ArrayList<TridEntity> entities;
protected Position plrStart = new Position();
protected int plrDir = Player.SOUTH;
private TridEntity[] entRegistry = {
new BoxColl(),
new BoxNoColl(),
new InvisColl(),
new PlrStart(),
new Trigger(),
};
public Scene(String n){ // Empty scene
name = n;
entities = new ArrayList<TridEntity>();
}
public Scene(File f) throws IOException{
entities = new ArrayList<TridEntity>();
ArrayList<BSonObject> objects = BSonParser.readFile(f.getAbsolutePath());
BSonObject obj = BSonParser.getObject("name", objects);
name = obj.getString();
obj = BSonParser.getObject("dir", objects);
if(obj != null){
String str = obj.getString();
if(str.equals("west")) plrDir = Player.WEST;
if(str.equals("north")) plrDir = Player.NORTH;
if(str.equals("east")) plrDir = Player.EAST;
}
obj = BSonParser.getObject("entities", objects);
BSonList asList = (BSonList)obj;
for(int i = 0; i < asList.list.size(); i++){
System.out.println(i);
String objName = asList.list.get(i).getString();
i++;
boolean foundEnt = false;
for(TridEntity e: entRegistry){
if(e.name.equals(objName)){
System.out.println("load " + objName);
double x, y;
x = asList.list.get(i).getDouble();
i++;
y = asList.list.get(i).getDouble();
i++;
int w = 0, h = 0;
i++;
if(e.HASCOLLISION){
w = asList.list.get(i).getInt();
i++;
h = asList.list.get(i).getInt();
i++;
}
int[] data = new int[e.numData];
for(int j = 0; j < e.numData; j++){
data[j] = asList.list.get(i).getInt();
i++;
}
i--;
entities.add(e.construct(new Position(x, y), (e.HASCOLLISION ? (new Dimension(w, h)) : null), data));
foundEnt = true;
break;
}
}
if(!foundEnt){
double x, y;
x = asList.list.get(i).getDouble();
i++;
y = asList.list.get(i).getDouble();
i++;
int w = 0, h = 0;
boolean hasColl = asList.list.get(i).getBoolean();
i++;
if(hasColl){
w = asList.list.get(i).getInt();
i++;
h = asList.list.get(i).getInt();
i++;
}
int[] data = new int[0];
while(i < asList.list.size() && asList.list.get(i).type == BSonObject.INT){
int[] newData = new int[data.length + 1];
for(int j = 0; j < data.length; j++) newData[j] = data[j];
newData[data.length] = asList.list.get(i).getInt();
data = newData;
i++;
}
entities.add(new CustomEntity(new Position(x, y), new Dimension(w, h), data, objName));
i--;
}
}
}
public void save(String projDir){
try{
File file = new File(projDir + "/data/scenes/" + name + ".bson");
file.createNewFile();
PrintWriter writer = new PrintWriter(file);
writer.println("string name " + name);
writer.println("string dir south");
writer.println("{ entities");
for(TridEntity e: entities){
writer.println("string " + e.name);
writer.println("double " + e.position.x);
writer.println("double " + e.position.y);
writer.println("boolean " + e.HASCOLLISION);
if(e.HASCOLLISION){
writer.println("int " + e.getCollision().width);
writer.println("int " + e.getCollision().height);
}
if(e instanceof BoxNoColl){
BoxNoColl box = (BoxNoColl)e;
writer.println("int " + box.width);
writer.println("int " + box.height);
writer.println("int " + box.color.getRed());
writer.println("int " + box.color.getGreen());
writer.println("int " + box.color.getBlue());
}
if(e instanceof BoxColl){
BoxColl box = (BoxColl)e;
writer.println("int " + box.color.getRed());
writer.println("int " + box.color.getGreen());
writer.println("int " + box.color.getBlue());
}
if(e instanceof Trigger){
Trigger trig = (Trigger)e;
writer.println("int " + trig.box.width);
writer.println("int " + trig.box.height);
writer.println("int " + trig.id);
}
if(e instanceof CustomEntity){
CustomEntity custom = (CustomEntity)e;
for(int i: custom.data){
writer.println("int " + i);
}
}
}
writer.println("}");
writer.close();
}catch(Exception e){}
}
}

View file

@ -0,0 +1,65 @@
package project;
import blib.game.*;
import blib.util.*;
import javax.swing.*;
import java.awt.*;
public class TridEntity extends Entity {
public final boolean HASCOLLISION;
public Dimension collision;
public String engineRenderData = "";
private ImageIcon engineImg = new ImageIcon("data/images/trident/customEnt.png");
public String name;
protected int numData;
public TridEntity(Position pos){
super(pos);
HASCOLLISION = false;
collision = null;
}
public TridEntity(Position pos, Dimension collision){
super(pos);
if(collision == null || collision.equals(new Dimension(0, 0))) HASCOLLISION = false;
else HASCOLLISION = true;
this.collision = collision;
}
public TridEntity(String n, boolean hasColl, int numData){
super(new Position());
HASCOLLISION = hasColl;
collision = null;
name = n;
this.numData = numData;
}
public TridEntity construct(Position pos, Dimension collision, int[] data){
System.out.println("Error: tried to create an empty entity");
return null;
}
public final Rectangle getCollision(){
return new Rectangle((int)position.x - (collision.width / 2), (int)position.y - (collision.height / 2), collision.width, collision.height);
}
public void gameStart(){
}
public void render(Graphics g, JPanel panel, int x, int y){
}
public void engineRender(Graphics g, JPanel panel, int x, int y){
if(HASCOLLISION){
g.setColor(Color.red);
g.drawRect(x - getCollision().width / 2, y - getCollision().height / 2, getCollision().width, getCollision().height);
g.drawLine(x - getCollision().width / 2, y - getCollision().height / 2, x + getCollision().width / 2, y + getCollision().height / 2);
}
engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);
}
public void update(long elapsedTime){
}
}

View file

@ -0,0 +1,39 @@
package project.ent;
import blib.util.*;
import java.awt.*;
import javax.swing.*;
import project.*;
public class BoxColl extends TridEntity{
public Color color = Color.white;
private ImageIcon engineImg = new ImageIcon("data/images/trident/boxColl.png");
public BoxColl(Position pos, Dimension size, Color c){
super(pos, size);
color = c;
name = "boxcoll";
}
public BoxColl(Position pos, Dimension size){
super(pos, size);
name = "boxcoll";
}
public BoxColl(){
super("boxcoll", true, 3);
}
public TridEntity construct(Position pos, Dimension collision, int[] data){
return new BoxColl(pos, collision, new Color(data[0], data[1], data[2]));
}
public void render(Graphics g, JPanel panel, int x, int y){
g.setColor(color);
g.fillRect(x - getCollision().width / 2, y - getCollision().height / 2, getCollision().width, getCollision().height);
}
public void engineRender(Graphics g, JPanel panel, int x, int y){
render(g, panel, x, y);
engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);
}
}

View file

@ -0,0 +1,47 @@
package project.ent;
import blib.util.*;
import java.awt.*;
import javax.swing.*;
import blib.game.*;
import project.*;
public class BoxNoColl extends TridEntity{
public Color color = Color.white;
public int width, height;
private ImageIcon engineImg = new ImageIcon("data/images/trident/box.png");
public BoxNoColl(Position pos, Color c, int w, int h){
super(pos);
color = c;
width = w;
height = h;
renderType = Entity.UNDER;
name = "boxnocoll";
}
public BoxNoColl(Position pos, int w, int h){
super(pos);
width = w;
height = h;
renderType = Entity.UNDER;
name = "boxnocoll";
}
public BoxNoColl(){
super("boxnocoll", false, 5);
}
public TridEntity construct(Position pos, Dimension collision, int[] data){
return new BoxNoColl(pos, new Color(data[2], data[3], data[4]), data[0], data[1]);
}
public void render(Graphics g, JPanel panel, int x, int y){
g.setColor(color);
g.fillRect(x - width / 2, y - height / 2, width, height);
}
public void engineRender(Graphics g, JPanel panel, int x, int y){
render(g, panel, x, y);
engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);
}
}

View file

@ -0,0 +1,18 @@
package project.ent;
import blib.util.*;
import project.*;
import java.awt.*;
public class CustomEntity extends TridEntity{
public int[] data;
public CustomEntity(Position pos, Dimension d, int[] dat, String n){
super(pos, d);
data = dat;
name = n;
}
public CustomEntity(){
super("custom", false, 0);
}
}

View file

@ -0,0 +1,31 @@
package project.ent;
import blib.util.*;
import java.awt.*;
import javax.swing.*;
import project.*;
public class InvisColl extends TridEntity{
public Color color = Color.red;
private ImageIcon engineImg = new ImageIcon("data/images/trident/collision.png");
public InvisColl(Position pos, Dimension size){
super(pos, size);
name = "inviscoll";
}
public InvisColl(){
super("inviscoll", true, 0);
}
public TridEntity construct(Position pos, Dimension collision, int[] data){
return new InvisColl(pos, collision);
}
public void engineRender(Graphics g, JPanel panel, int x, int y){
g.setColor(color);
g.drawRect(x - getCollision().width / 2, y - getCollision().height / 2, getCollision().width, getCollision().height);
g.drawLine(x - getCollision().width / 2, y - getCollision().height / 2, x + getCollision().width / 2, y + getCollision().height / 2);
engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);
}
}

View file

@ -0,0 +1,27 @@
package project.ent;
import blib.util.*;
import java.awt.*;
import javax.swing.*;
import project.*;
public class PlrStart extends TridEntity{
public Color color = Color.red;
private ImageIcon engineImg = new ImageIcon("data/images/trident/plrStart.png");
public PlrStart(Position pos){
super(pos);
name = "plrstart";
}
public PlrStart(){
super("plrstart", false, 0);
}
public TridEntity construct(Position pos, Dimension collision, int[] data){
return new PlrStart(pos);
}
public void engineRender(Graphics g, JPanel panel, int x, int y){
engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);
}
}

View file

@ -0,0 +1,35 @@
package project.ent;
import blib.util.*;
import java.awt.*;
import javax.swing.*;
import project.*;
public class Trigger extends TridEntity{
public Color color = Color.blue;
public Dimension box;
public int id;
private ImageIcon engineImg = new ImageIcon("data/images/trident/trigger.png");
public Trigger(Position pos, Dimension size, int i){
super(pos);
name = "trigger";
box = size;
id = i;
}
public Trigger(){
super("trigger", false, 3);
}
public TridEntity construct(Position pos, Dimension collision, int[] data){
return new Trigger(pos, new Dimension(data[0], data[1]), data[2]);
}
public void engineRender(Graphics g, JPanel panel, int x, int y){
g.setColor(color);
g.drawRect(x - box.width / 2, y - box.height / 2, box.width, box.height);
g.drawLine(x - box.width / 2, y - box.height / 2, x + box.width / 2, y + box.height / 2);
engineImg.paintIcon(panel, g, x - engineImg.getIconWidth() / 2, y - engineImg.getIconHeight() / 2);
}
}