diff --git a/Trident/bin/main/Main$1.class b/Trident/bin/main/Main$1.class index d812b40..41d0e76 100644 Binary files a/Trident/bin/main/Main$1.class and b/Trident/bin/main/Main$1.class differ diff --git a/Trident/bin/main/Main$2.class b/Trident/bin/main/Main$2.class index 25ac815..28969a6 100644 Binary files a/Trident/bin/main/Main$2.class and b/Trident/bin/main/Main$2.class differ diff --git a/Trident/bin/main/Main$3.class b/Trident/bin/main/Main$3.class index 7e37b18..183fd88 100644 Binary files a/Trident/bin/main/Main$3.class and b/Trident/bin/main/Main$3.class differ diff --git a/Trident/bin/main/Main$4.class b/Trident/bin/main/Main$4.class index 9ee43ad..02d4e30 100644 Binary files a/Trident/bin/main/Main$4.class and b/Trident/bin/main/Main$4.class differ diff --git a/Trident/bin/main/Main$5.class b/Trident/bin/main/Main$5.class index a423b69..10f4204 100644 Binary files a/Trident/bin/main/Main$5.class and b/Trident/bin/main/Main$5.class differ diff --git a/Trident/bin/main/Main$6.class b/Trident/bin/main/Main$6.class index 0ab7c74..4321c03 100644 Binary files a/Trident/bin/main/Main$6.class and b/Trident/bin/main/Main$6.class differ diff --git a/Trident/bin/main/Main$7.class b/Trident/bin/main/Main$7.class index 0e4f60e..e86fd99 100644 Binary files a/Trident/bin/main/Main$7.class and b/Trident/bin/main/Main$7.class differ diff --git a/Trident/bin/main/Main$8.class b/Trident/bin/main/Main$8.class index 702f2e3..912b41b 100644 Binary files a/Trident/bin/main/Main$8.class and b/Trident/bin/main/Main$8.class differ diff --git a/Trident/bin/main/Main.class b/Trident/bin/main/Main.class index 92957c1..0839d5b 100644 Binary files a/Trident/bin/main/Main.class and b/Trident/bin/main/Main.class differ diff --git a/Trident/bin/main/MainPanel$InputListener.class b/Trident/bin/main/MainPanel$InputListener.class index b20115e..5968712 100644 Binary files a/Trident/bin/main/MainPanel$InputListener.class and b/Trident/bin/main/MainPanel$InputListener.class differ diff --git a/Trident/bin/main/MainPanel$ServerListener.class b/Trident/bin/main/MainPanel$ServerListener.class index 70a0a99..8b3d294 100644 Binary files a/Trident/bin/main/MainPanel$ServerListener.class and b/Trident/bin/main/MainPanel$ServerListener.class differ diff --git a/Trident/bin/main/MainPanel.class b/Trident/bin/main/MainPanel.class index f5e3fd4..a79f824 100644 Binary files a/Trident/bin/main/MainPanel.class and b/Trident/bin/main/MainPanel.class differ diff --git a/Trident/bin/project/Project.class b/Trident/bin/project/Project.class index ffedca0..7d7ff86 100644 Binary files a/Trident/bin/project/Project.class and b/Trident/bin/project/Project.class differ diff --git a/Trident/bin/project/Scene.class b/Trident/bin/project/Scene.class index d817b51..c69985b 100644 Binary files a/Trident/bin/project/Scene.class and b/Trident/bin/project/Scene.class differ diff --git a/Trident/bin/project/TridEntity.class b/Trident/bin/project/TridEntity.class index f83f2ae..efb5e25 100644 Binary files a/Trident/bin/project/TridEntity.class and b/Trident/bin/project/TridEntity.class differ diff --git a/Trident/bin/project/ent/BoxColl.class b/Trident/bin/project/ent/BoxColl.class index a0437ca..7fdc402 100644 Binary files a/Trident/bin/project/ent/BoxColl.class and b/Trident/bin/project/ent/BoxColl.class differ diff --git a/Trident/bin/project/ent/BoxNoColl.class b/Trident/bin/project/ent/BoxNoColl.class index e33612f..dcc3f36 100644 Binary files a/Trident/bin/project/ent/BoxNoColl.class and b/Trident/bin/project/ent/BoxNoColl.class differ diff --git a/Trident/bin/project/ent/CustomEntity.class b/Trident/bin/project/ent/CustomEntity.class index f86a1ee..00ec222 100644 Binary files a/Trident/bin/project/ent/CustomEntity.class and b/Trident/bin/project/ent/CustomEntity.class differ diff --git a/Trident/bin/project/ent/InvisColl.class b/Trident/bin/project/ent/InvisColl.class index 2c2b619..62b0339 100644 Binary files a/Trident/bin/project/ent/InvisColl.class and b/Trident/bin/project/ent/InvisColl.class differ diff --git a/Trident/bin/project/ent/Light.class b/Trident/bin/project/ent/Light.class index 4040ffd..a4d0efd 100644 Binary files a/Trident/bin/project/ent/Light.class and b/Trident/bin/project/ent/Light.class differ diff --git a/Trident/bin/project/ent/PlrStart.class b/Trident/bin/project/ent/PlrStart.class index 70a618b..d193b6d 100644 Binary files a/Trident/bin/project/ent/PlrStart.class and b/Trident/bin/project/ent/PlrStart.class differ diff --git a/Trident/bin/project/ent/Trigger.class b/Trident/bin/project/ent/Trigger.class index b4a3645..990cbb3 100644 Binary files a/Trident/bin/project/ent/Trigger.class and b/Trident/bin/project/ent/Trigger.class differ diff --git a/Trident/data/BLib.jar b/Trident/data/BLib.jar index 6f8ad74..5630394 100644 Binary files a/Trident/data/BLib.jar and b/Trident/data/BLib.jar differ diff --git a/Trident/data/images/crosshair.png b/Trident/data/images/crosshair.png new file mode 100644 index 0000000..7fae063 Binary files /dev/null and b/Trident/data/images/crosshair.png differ diff --git a/Trident/lib/BLib.jar b/Trident/lib/BLib.jar index 6f8ad74..5630394 100644 Binary files a/Trident/lib/BLib.jar and b/Trident/lib/BLib.jar differ diff --git a/Trident/src/main/MainPanel.java b/Trident/src/main/MainPanel.java index c602120..0346c0d 100644 --- a/Trident/src/main/MainPanel.java +++ b/Trident/src/main/MainPanel.java @@ -9,6 +9,7 @@ import java.awt.*; import blib.game.*; import java.io.*; import project.ent.*; +import project.ent.Light; public class MainPanel extends JPanel { Project project; @@ -47,6 +48,9 @@ public class MainPanel extends JPanel { ImageIcon triggerImg = new ImageIcon("data/images/dropdown/trigger.png"); ImageIcon lightImg = new ImageIcon("data/images/dropdown/light.png"); + ImageIcon crosshair = new ImageIcon("data/images/crosshair.png"); + boolean drawCross = true; + long saveTime = 0; TridEntity selectedEntity = null; @@ -122,6 +126,9 @@ public class MainPanel extends JPanel { TextBox.draw("[L] Show Darkness: " + drawLight + " Default light level: " + project.currentScene.defaultLight, g, frameManager.WIDTH - 10, frameManager.HEIGHT - 20, TextBox.RIGHT); g.setColor(new Color(1f, 1f, 1f, (saveTime / 1000f))); TextBox.draw("Saved!", g, 10, frameManager.HEIGHT - 20); + g.setColor(Color.white); + g.setFont(new Font("Arial", Font.PLAIN, 15)); + TextBox.draw("(" + cam.pos.toStringSimple() + ")", g, frameManager.WIDTH, 10, TextBox.RIGHT); if(dropDown){ g.setColor(Color.lightGray); @@ -178,6 +185,8 @@ public class MainPanel extends JPanel { } } + if(drawCross) crosshair.paintIcon(this, g, frameManager.WIDTH / 2 - 4, frameManager.HEIGHT / 2 - 4); + frameManager.renderFrame(this, graphics); } @@ -215,22 +224,32 @@ public class MainPanel extends JPanel { 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)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } if(selectedEntity instanceof BoxNoColl){ BoxNoColl box = (BoxNoColl)selectedEntity; project.currentScene.entities.add(new BoxNoColl(box.position.copy(), box.color, box.width, box.height)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } 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))); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } 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)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } if(selectedEntity instanceof PlrStart){ PlrStart box = (PlrStart)selectedEntity; project.currentScene.entities.add(new PlrStart(box.position.copy())); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); + } + if(selectedEntity instanceof Light){ + Light box = (Light)selectedEntity; + project.currentScene.entities.add(new Light(box.position.copy(), box.radius)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } if(selectedEntity instanceof CustomEntity){ CustomEntity box = (CustomEntity)selectedEntity; @@ -241,11 +260,15 @@ public class MainPanel extends JPanel { 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)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } } if(key == KeyEvent.VK_L){ drawLight = !drawLight; } + if(key == KeyEvent.VK_C && !km.getKeyDown(KeyEvent.VK_CONTROL)){ + drawCross = !drawCross; + } } public void onMousePressed(int mb, Point mousePos){ @@ -305,22 +328,32 @@ public class MainPanel extends JPanel { 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)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } if(selectedEntity instanceof BoxNoColl){ BoxNoColl box = (BoxNoColl)selectedEntity; project.currentScene.entities.add(new BoxNoColl(box.position.copy(), box.color, box.width, box.height)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } 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))); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } 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)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } if(selectedEntity instanceof PlrStart){ PlrStart box = (PlrStart)selectedEntity; project.currentScene.entities.add(new PlrStart(box.position.copy())); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); + } + if(selectedEntity instanceof Light){ + Light box = (Light)selectedEntity; + project.currentScene.entities.add(new Light(box.position.copy(), box.radius)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } if(selectedEntity instanceof CustomEntity){ CustomEntity box = (CustomEntity)selectedEntity; @@ -331,6 +364,7 @@ public class MainPanel extends JPanel { 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)); + selectedEntity = project.currentScene.entities.get(project.currentScene.entities.size() - 1); } break; case 2: @@ -461,6 +495,8 @@ public class MainPanel extends JPanel { boolean loaded = project.loadScene(name); if(!loaded){ JOptionPane.showMessageDialog(panel, "Error: no scene with name '" + name + "' found.", "Trident", JOptionPane.ERROR_MESSAGE); + }else{ + cam.pos = new Position(); } } }else if(mousePos.x < 327){ @@ -470,6 +506,7 @@ public class MainPanel extends JPanel { scene.save("data/projects/" + project.name); project.setupScenes(); project.loadScene(name); + cam.pos = new Position(); } }else if(mousePos.x < 391){ project.currentScene.save("data/projects/" + project.name); @@ -477,6 +514,23 @@ public class MainPanel extends JPanel { }else if(mousePos.x < 520){ project.currentScene.plrDir++; if(project.currentScene.plrDir > 3) project.currentScene.plrDir = 0; + }else{ + try{ + double x, y; + String inputX = JOptionPane.showInputDialog(panel, "Enter the x position", "Trident", JOptionPane.QUESTION_MESSAGE); + if(inputX != null){ + x = Double.parseDouble(inputX); + String inputY = JOptionPane.showInputDialog(panel, "Enter the y position", "Trident", JOptionPane.QUESTION_MESSAGE); + if(inputY != null){ + y = Double.parseDouble(inputY); + cam.pos = new Position(x, y); + } + } + }catch(Exception e){ + JOptionPane.showMessageDialog(panel, "Invalid input", "Trident", JOptionPane.ERROR_MESSAGE); + } + + } }else{ if(tool == 0){ @@ -528,12 +582,18 @@ public class MainPanel extends JPanel { cam.pos.x += dir.x * server.getElapsedTime() * speed; cam.pos.y += dir.y * server.getElapsedTime() * speed; + + saveTime -= server.getElapsedTime(); if(saveTime < 0) saveTime = 0; if(tool == 1 && selectedEntity != null && km.getMouseDown(1)){ selectedEntity.position.x += delta.x; selectedEntity.position.y += delta.y; + + + selectedEntity.position.x += dir.x * server.getElapsedTime() * speed; + selectedEntity.position.y += dir.y * server.getElapsedTime() * speed; } if(tool == 2 && selectedEntity != null && km.getMouseDown(1)){ if(selectedEntity instanceof project.ent.Light){ diff --git a/Trident/src/project/Scene.java b/Trident/src/project/Scene.java index 71e863e..a763504 100644 --- a/Trident/src/project/Scene.java +++ b/Trident/src/project/Scene.java @@ -52,13 +52,11 @@ public class Scene { obj = BSonParser.getObject("entities", objects); 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++;