First Commit
18
Trident/README.md
Normal 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).
|
BIN
Trident/bin/main/Main$1.class
Normal file
BIN
Trident/bin/main/Main$2.class
Normal file
BIN
Trident/bin/main/Main$3.class
Normal file
BIN
Trident/bin/main/Main$4.class
Normal file
BIN
Trident/bin/main/Main$5.class
Normal file
BIN
Trident/bin/main/Main$6.class
Normal file
BIN
Trident/bin/main/Main$7.class
Normal file
BIN
Trident/bin/main/Main$8.class
Normal file
BIN
Trident/bin/main/Main.class
Normal file
BIN
Trident/bin/main/MainPanel$InputListener.class
Normal file
BIN
Trident/bin/main/MainPanel$ServerListener.class
Normal file
BIN
Trident/bin/main/MainPanel.class
Normal file
BIN
Trident/bin/project/Project.class
Normal file
BIN
Trident/bin/project/Scene.class
Normal file
BIN
Trident/bin/project/TridEntity.class
Normal file
BIN
Trident/bin/project/ent/BoxColl.class
Normal file
BIN
Trident/bin/project/ent/BoxNoColl.class
Normal file
BIN
Trident/bin/project/ent/CustomEntity.class
Normal file
BIN
Trident/bin/project/ent/InvisColl.class
Normal file
BIN
Trident/bin/project/ent/PlrStart.class
Normal file
BIN
Trident/bin/project/ent/Trigger.class
Normal file
BIN
Trident/data/BLib.jar
Normal file
BIN
Trident/data/icon.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Trident/data/images/cursors/move.png
Normal file
After Width: | Height: | Size: 387 B |
BIN
Trident/data/images/cursors/resize.png
Normal file
After Width: | Height: | Size: 417 B |
BIN
Trident/data/images/cursors/select.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
Trident/data/images/dropdown/box.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
Trident/data/images/dropdown/boxColl.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
Trident/data/images/dropdown/collision.png
Normal file
After Width: | Height: | Size: 222 B |
BIN
Trident/data/images/dropdown/customEnt.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
Trident/data/images/dropdown/delete.png
Normal file
After Width: | Height: | Size: 252 B |
BIN
Trident/data/images/dropdown/duplicate.png
Normal file
After Width: | Height: | Size: 189 B |
BIN
Trident/data/images/dropdown/edit.png
Normal file
After Width: | Height: | Size: 192 B |
BIN
Trident/data/images/dropdown/move.png
Normal file
After Width: | Height: | Size: 153 B |
BIN
Trident/data/images/dropdown/plrStart.png
Normal file
After Width: | Height: | Size: 309 B |
BIN
Trident/data/images/dropdown/quit.png
Normal file
After Width: | Height: | Size: 225 B |
BIN
Trident/data/images/dropdown/reset.png
Normal file
After Width: | Height: | Size: 228 B |
BIN
Trident/data/images/dropdown/resize.png
Normal file
After Width: | Height: | Size: 177 B |
BIN
Trident/data/images/dropdown/select.png
Normal file
After Width: | Height: | Size: 222 B |
BIN
Trident/data/images/dropdown/trigger.png
Normal file
After Width: | Height: | Size: 222 B |
BIN
Trident/data/images/player/idleE.png
Normal file
After Width: | Height: | Size: 156 B |
BIN
Trident/data/images/player/idleN.png
Normal file
After Width: | Height: | Size: 173 B |
BIN
Trident/data/images/player/idleS.png
Normal file
After Width: | Height: | Size: 170 B |
BIN
Trident/data/images/player/idleW.png
Normal file
After Width: | Height: | Size: 163 B |
BIN
Trident/data/images/player/walkE.png
Normal file
After Width: | Height: | Size: 376 B |
BIN
Trident/data/images/player/walkN.png
Normal file
After Width: | Height: | Size: 403 B |
BIN
Trident/data/images/player/walkS.png
Normal file
After Width: | Height: | Size: 397 B |
BIN
Trident/data/images/player/walkW.png
Normal file
After Width: | Height: | Size: 361 B |
BIN
Trident/data/images/trident/box.png
Normal file
After Width: | Height: | Size: 432 B |
BIN
Trident/data/images/trident/boxColl.png
Normal file
After Width: | Height: | Size: 459 B |
BIN
Trident/data/images/trident/collision.png
Normal file
After Width: | Height: | Size: 333 B |
BIN
Trident/data/images/trident/customEnt.png
Normal file
After Width: | Height: | Size: 486 B |
BIN
Trident/data/images/trident/plrStart.png
Normal file
After Width: | Height: | Size: 444 B |
BIN
Trident/data/images/trident/trigger.png
Normal file
After Width: | Height: | Size: 333 B |
2
Trident/data/projectRegistry.bson
Normal file
|
@ -0,0 +1,2 @@
|
|||
{ projects
|
||||
}
|
BIN
Trident/lib/BLib.jar
Normal file
220
Trident/src/main/Main.java
Normal 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);
|
||||
}
|
||||
}
|
508
Trident/src/main/MainPanel.java
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
947
Trident/src/project/Project.java
Normal 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;
|
||||
}
|
||||
}
|
153
Trident/src/project/Scene.java
Normal 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){}
|
||||
}
|
||||
|
||||
}
|
65
Trident/src/project/TridEntity.java
Normal 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){
|
||||
|
||||
}
|
||||
|
||||
}
|
39
Trident/src/project/ent/BoxColl.java
Normal 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);
|
||||
}
|
||||
}
|
47
Trident/src/project/ent/BoxNoColl.java
Normal 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);
|
||||
}
|
||||
}
|
18
Trident/src/project/ent/CustomEntity.java
Normal 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);
|
||||
}
|
||||
}
|
31
Trident/src/project/ent/InvisColl.java
Normal 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);
|
||||
}
|
||||
}
|
27
Trident/src/project/ent/PlrStart.java
Normal 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);
|
||||
}
|
||||
}
|
35
Trident/src/project/ent/Trigger.java
Normal 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);
|
||||
}
|
||||
}
|