diff --git a/AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowGameSimulatorAction.java b/AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowGameSimulatorAction.java index 2575b13..0411823 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowGameSimulatorAction.java +++ b/AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowGameSimulatorAction.java @@ -24,9 +24,10 @@ @Override public void run() { Window window = Window.get(); + window.changeScene(1); GameEnginePresenter presenter = new GameEnginePresenter(window.getScene(), simulator); TimerService timerService = new TimerService(simulator); - window.runFromDTRAM(); + window.run(); } }; game.start(); diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/Simulator.java b/AlgebraicDataflowArchitectureModel/src/simulator/Simulator.java index 0f5b6c6..bb90111 100644 --- a/AlgebraicDataflowArchitectureModel/src/simulator/Simulator.java +++ b/AlgebraicDataflowArchitectureModel/src/simulator/Simulator.java @@ -253,7 +253,7 @@ nextEvents.add(nextEvent); } } - if (nextEvents.size() == 0) { + if (invDependency.size() == 0) { Event nextEvent = new Event(channel, inResPath, nextSystemState.getResource(inResId)); nextEvent.setMessage(nextEvent.updateDependingParameters(resourceStateValueProvider)); nextEvents.add(nextEvent); diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/GameEnginePresenter.java b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/GameEnginePresenter.java index 42ab124..0d37247 100644 --- a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/GameEnginePresenter.java +++ b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/GameEnginePresenter.java @@ -181,8 +181,8 @@ Expression type = mesh.get("type"); if (type.toString().equals("\"sprite\"")) { String texturePath = mesh.get("sprite").toString().replace("\"", ""); - Sprite meshObj = new Sprite(texturePath); - //gameObj.addComponent(meshObj); + Mesh meshObj = new Mesh(gameObj, Mesh.MeshType.SPRITE, texturePath); + gameObj.addComponent(meshObj); SpriteReceiver nativeSpriteReceiver = new SpriteReceiver(meshObj); simulator.addNativeReceiver(nativeSpriteReceiver, spriteUpdateChannel, meshResource); diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/SpriteReceiver.java b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/SpriteReceiver.java index e19cbc7..162a64d 100644 --- a/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/SpriteReceiver.java +++ b/AlgebraicDataflowArchitectureModel/src/simulator/interfaces/gameEngine/SpriteReceiver.java @@ -9,9 +9,9 @@ import simulator.interfaces.INativeReceiver; public class SpriteReceiver implements INativeReceiver { - private Sprite mesh; + private Mesh mesh; - public SpriteReceiver(Sprite mesh) { + public SpriteReceiver(Mesh mesh) { this.mesh = mesh; } @@ -20,7 +20,7 @@ Expression message = event.getMessage(); if (message instanceof Term) { Expression exp = ((Term) message).getChild(0); - mesh.setTexturePath(exp.toString()); + mesh.setSprite(exp.toString()); } } diff --git a/GameEngine/resources/0.png b/GameEngine/resources/0.png deleted file mode 100644 index a6b7443..0000000 --- a/GameEngine/resources/0.png +++ /dev/null Binary files differ diff --git a/GameEngine/resources/RemoveButton.png b/GameEngine/resources/RemoveButton.png index 99da289..05bfdc6 100644 --- a/GameEngine/resources/RemoveButton.png +++ b/GameEngine/resources/RemoveButton.png Binary files differ diff --git a/GameEngine/resources/enemy1.png b/GameEngine/resources/enemy1.png new file mode 100644 index 0000000..a6b7443 --- /dev/null +++ b/GameEngine/resources/enemy1.png Binary files differ diff --git a/GameEngine/resources/enemy2.png b/GameEngine/resources/enemy2.png new file mode 100644 index 0000000..e885a4e --- /dev/null +++ b/GameEngine/resources/enemy2.png Binary files differ diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/ComponentView.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/ComponentView.java index c27f3be..363d00f 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/ComponentView.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/ComponentView.java @@ -2,7 +2,10 @@ import gameEngine.ResourceManager; import gameEngine.entites.EditorEntity; +import gameEngine.input.Input; +import gameEngine.input.MouseInput; import gameEngine.views.Sprite; +import gameEngine.views.Window; import org.joml.Vector3f; public class ComponentView extends Draggable{ @@ -17,7 +20,7 @@ public ComponentView(EditorEntity parent, EditorEntity.Connectiontype connectionType){ this.parent = parent; - this.sprite = new Sprite("GameEngine/resources/ComponentView.png"); + this.sprite = new Sprite(Window.resourcePath + "ComponentView.png"); sprite.updateSpriteDimensions(); portview = new PortView(PortView.PortType.OUT, parent); this.connectionType = connectionType; @@ -47,6 +50,12 @@ meshSprite.setRotation(parent.transform.rotation); meshSprite.setScale(parent.transform.scale); meshSprite.update(); + + float mouseX = MouseInput.getX(); + float mouseY = MouseInput.getY(); + if (Input.GetMouseButtonDown(0) && meshSprite.isMouseOver(mouseX, mouseY)) { + changeMeshSprite(); + } } Vector3f pos = new Vector3f(parent.transform.position.x+92,parent.transform.position.y,parent.transform.position.z); @@ -54,6 +63,16 @@ portview.handleDragging(); } + private void changeMeshSprite() { + meshId = (meshId + 1) % resourceManager.getPathList().size(); + + // 新しいスプライトを設定 + String newPath = resourceManager.getPath(meshId); + if (newPath != null) { + meshSprite.setTexturePath(newPath); + } + } + @Override protected boolean isMouseOver(float mouseX, float mouseY) { return sprite.isMouseOver(mouseX, mouseY); @@ -71,6 +90,7 @@ } public String getSpritePath(){ + if(meshId == 0) return null; return resourceManager.getPath(meshId); } } diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/Connection.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/Connection.java index 4c144fa..dab46dd 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/Connection.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/Connection.java @@ -3,6 +3,7 @@ import gameEngine.entites.editorComponents.PortView; import gameEngine.views.LineRenderer; import gameEngine.views.Sprite; +import gameEngine.views.Window; import org.joml.Vector3f; public class Connection { @@ -14,8 +15,8 @@ public Connection(PortView inPort, PortView outPort) { this.portA = inPort; this.portB = outPort; - this.lineRenderer = new LineRenderer("GameEngine/resources/Line.png"); - this.removeButtonSprite = new Sprite("GameEngine/resources/RemoveButton.png"); + this.lineRenderer = new LineRenderer(Window.resourcePath + "Line.png"); + this.removeButtonSprite = new Sprite(Window.resourcePath + "RemoveButton.png"); } public void render() { @@ -26,7 +27,7 @@ lineRenderer.render(); Vector3f buttonPosition = lineRenderer.calculatePosition(posA, posB); - removeButtonSprite.setPosition(buttonPosition.x, buttonPosition.y); + removeButtonSprite.setPosition(buttonPosition.x+2, buttonPosition.y+2); removeButtonSprite.setScale(1,1,1); removeButtonSprite.update(); } diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/EntityView.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/EntityView.java index 85de626..fae7f48 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/EntityView.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/EntityView.java @@ -2,6 +2,7 @@ import gameEngine.entites.EditorEntity; import gameEngine.views.Sprite; +import gameEngine.views.Window; import org.joml.Vector3f; import java.util.ArrayList; @@ -15,7 +16,7 @@ public EntityView(EditorEntity parent){ this.parent = parent; - this.sprite = new Sprite("GameEngine/resources/EntityView.png"); + this.sprite = new Sprite(Window.resourcePath + "EntityView.png"); sprite.updateSpriteDimensions(); portviewA = new PortView(PortView.PortType.IN, parent); portviewB = new PortView(PortView.PortType.IN, parent); diff --git a/GameEngine/src/main/java/gameEngine/entites/editorComponents/PortView.java b/GameEngine/src/main/java/gameEngine/entites/editorComponents/PortView.java index f5c9757..f345076 100644 --- a/GameEngine/src/main/java/gameEngine/entites/editorComponents/PortView.java +++ b/GameEngine/src/main/java/gameEngine/entites/editorComponents/PortView.java @@ -23,12 +23,12 @@ private boolean dragging = false; public PortView(PortType portType, EditorEntity parent){ - this.lineRenderer = new LineRenderer("GameEngine/resources/Line.png"); + this.lineRenderer = new LineRenderer(Window.resourcePath + "Line.png"); this.parent = parent; if(portType == PortType.IN){ - this.sprite = new Sprite("GameEngine/resources/InPort.png"); + this.sprite = new Sprite(Window.resourcePath + "InPort.png"); } else if(portType == PortType.OUT){ - this.sprite = new Sprite("GameEngine/resources/OutPort.png"); + this.sprite = new Sprite(Window.resourcePath + "OutPort.png"); } this.portType = portType; assert sprite != null; diff --git a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java index 06f71ef..f1d5e51 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/EditorScene.java @@ -29,7 +29,9 @@ gameEditor = new GameEditor(this, windowWidth, windowHeight); gameEditor.setScene(this); glClearColor(1, 1, 1, 0); - resourceManager.addPath("GameEngine/resources/empty.png"); + resourceManager.addPath(Window.resourcePath + "empty.png"); + resourceManager.addPath(Window.resourcePath + "enemy1.png"); + resourceManager.addPath(Window.resourcePath + "enemy2.png"); System.out.println(resourceManager.getPathList()); } diff --git a/GameEngine/src/main/java/gameEngine/scenes/GameScene.java b/GameEngine/src/main/java/gameEngine/scenes/GameScene.java index 13c5d25..dccf701 100644 --- a/GameEngine/src/main/java/gameEngine/scenes/GameScene.java +++ b/GameEngine/src/main/java/gameEngine/scenes/GameScene.java @@ -8,6 +8,7 @@ import gameEngine.entites.gameComponents.*; import java.util.HashMap; +import java.util.Objects; import static org.lwjgl.opengl.GL11.glClearColor; @@ -48,6 +49,7 @@ //接続しているComponentView for(ComponentView componentView: editorEntity.getEditorComponent(EntityView.class).getConnectedComponentViews()){ if(componentView.meshSprite != null) { + if(Objects.equals(componentView.getSpritePath(), null)) continue; object.addComponent(new Mesh(object, Mesh.MeshType.SPRITE, componentView.getSpritePath())); break; } diff --git a/GameEngine/src/main/java/gameEngine/views/Button.java b/GameEngine/src/main/java/gameEngine/views/Button.java index b2e9b20..e6ae52c 100644 --- a/GameEngine/src/main/java/gameEngine/views/Button.java +++ b/GameEngine/src/main/java/gameEngine/views/Button.java @@ -20,12 +20,12 @@ } public Button(float posX, float posY, float scaleX, float scaleY){ - this(posX, posY, new Sprite("GameEngine/resources/button.png")); + this(posX, posY, new Sprite(Window.resourcePath + "button.png")); buttonSprite.setScale(scaleX, scaleY); } public Button(){ - this(0,0, new Sprite("GameEngine/resources/button.png")); + this(0,0, new Sprite(Window.resourcePath + "button.png")); } public void update() { diff --git a/GameEngine/src/main/java/gameEngine/views/Window.java b/GameEngine/src/main/java/gameEngine/views/Window.java index 74ffd3f..e7edb39 100644 --- a/GameEngine/src/main/java/gameEngine/views/Window.java +++ b/GameEngine/src/main/java/gameEngine/views/Window.java @@ -19,6 +19,7 @@ public class Window { private static Window window; + public static String resourcePath = "GameEngine/resources/"; private static Scene currentScene; public int width; public int height; @@ -32,17 +33,19 @@ this.height = 900; this.title = "HelloWorld"; init(); - editorScene = new EditorScene(width, height); } public static void changeScene(int newScene) { switch (newScene) { case 0: // EditorScene + if (window.editorScene == null) { + window.editorScene = new EditorScene(window.width, window.height); + } currentScene = window.editorScene; break; case 1: // GameScene - EditorScene editorScene = (EditorScene) currentScene; - if(editorScene != null && editorScene.editorEntities != null){ + if(currentScene != null && ((EditorScene) currentScene).editorEntities != null){ + EditorScene editorScene = (EditorScene) currentScene; currentScene = new GameScene(new HashMap<>(editorScene.editorEntities)); } else currentScene = new GameScene(); @@ -66,12 +69,7 @@ run(); } - public void runFromDTRAM() { - Window.changeScene(1); - run(); - } - - private void run() { + public void run() { System.out.println("Hello LWJGL " + Version.getVersion() + "!"); loop(); glfwFreeCallbacks(glfwWindow);