From 8c10e69eff87c68a867cf91c5a3ec3f628faf5ce Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 16 Nov 2024 16:15:08 +0100 Subject: [PATCH] General improvements --- .../mdga/client/Acoustic/AcousticHandler.java | 26 +++++++++---- .../client/Animation/AnimationHandler.java | 2 +- ...{AnimationType.java => MdgaAnimation.java} | 2 +- .../java/pp/mdga/client/Board/AssetOnMap.java | 2 +- .../Board/{Asset.java => BoardAsset.java} | 8 ++-- .../java/pp/mdga/client/Board/BoardView.java | 18 ++++++--- .../java/pp/mdga/client/Board/MapLoader.java | 39 +++++++++---------- .../pp/mdga/client/Board/NodeControl.java | 27 ++++++++++++- .../pp/mdga/client/Board/PieceControl.java | 2 +- .../pp/mdga/client/Board/PileControl.java | 2 +- 10 files changed, 85 insertions(+), 43 deletions(-) rename Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/{AnimationType.java => MdgaAnimation.java} (56%) rename Projekte/mdga/client/src/main/java/pp/mdga/client/Board/{Asset.java => BoardAsset.java} (93%) diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java index dd5dbc70..356a004b 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java @@ -167,12 +167,14 @@ private void addGameTracks() { } private void updateGameTracks() { - if (playing != null && playing.nearEnd(3) && trackTimer.getTimeInSeconds() > 20) { - trackTimer.reset(); - + if(playing.nearEnd(10)) { if (gameTracks.isEmpty()) { addGameTracks(); } + } + + if (playing != null && playing.nearEnd(3) && trackTimer.getTimeInSeconds() > 20) { + trackTimer.reset(); MusicAsset nextTrack = gameTracks.remove(0); @@ -181,12 +183,10 @@ private void updateGameTracks() { } public float getMainVolume() { - return mainVolume; } public float getMusicVolume() { - return musicVolume; } @@ -194,12 +194,24 @@ public float getSoundVolume() { return soundVolume; } - public float getMusicVolumeTotal() { + public void setMainVolume(float mainVolume) { + this.mainVolume = mainVolume; + } + + public void setMusicVolume(float musicVolume) { + this.musicVolume = musicVolume; + } + + public void setSoundVolume(float soundVolume) { + this.soundVolume = soundVolume; + } + + float getMusicVolumeTotal() { return getMusicVolume() * getMainVolume(); } - public float getSoundVolumeTotal() { + float getSoundVolumeTotal() { return getSoundVolume() * getMainVolume(); } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationHandler.java index a680f6e4..07307307 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationHandler.java @@ -11,7 +11,7 @@ public AnimationHandler(MdgaApp app) { this.app = app; } - public void playAnimation(AnimationType type) { + public void playAnimation(MdgaAnimation type) { } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationType.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/MdgaAnimation.java similarity index 56% rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationType.java rename to Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/MdgaAnimation.java index 5d2d0233..4d1e0fff 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationType.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/MdgaAnimation.java @@ -1,4 +1,4 @@ package pp.mdga.client.Animation; -public enum AnimationType { +public enum MdgaAnimation { } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/AssetOnMap.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/AssetOnMap.java index e2700b00..d086af14 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/AssetOnMap.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/AssetOnMap.java @@ -1,3 +1,3 @@ package pp.mdga.client.Board; -public record AssetOnMap(Asset asset, int x, int y){} +record AssetOnMap(BoardAsset boardAsset, int x, int y){} diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/Asset.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardAsset.java similarity index 93% rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Board/Asset.java rename to Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardAsset.java index ad4ca6ed..002fd928 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/Asset.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardAsset.java @@ -1,6 +1,6 @@ package pp.mdga.client.Board; -public enum Asset { +enum BoardAsset { bigTent, cardStack, cir, @@ -28,20 +28,20 @@ public enum Asset { private final String diffPath; private final float size; - Asset(){ + BoardAsset(){ String folderFileName = "./" + name() + "/" + name(); this.modelPath = folderFileName + ".j3o"; this.diffPath = folderFileName + "_diff.png"; this.size = 1f; } - Asset(String modelPath, String diffPath){ + BoardAsset(String modelPath, String diffPath){ this.modelPath = modelPath; this.diffPath = diffPath; this.size = 1f; } - Asset(float size){ + BoardAsset(float size){ String folderFileName = "./" + name() + "/" + name(); this.modelPath = folderFileName + ".j3o"; this.diffPath = folderFileName + "_diff.png"; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java index edd27466..24ad9a9d 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java @@ -64,16 +64,22 @@ private void initMap() { for (AssetOnMap aom : assetsOnMap){ int x = aom.x(); int y = aom.y(); - Spatial model = createModel(aom.asset()); - model.setLocalTranslation(gridToWorld(x,y)); + Vector3f pos = gridToWorld(x,y); + + if(aom.boardAsset().name().contains("node")) { + infield.add(new NodeControl(app, pos, aom.boardAsset())); + } else { + Spatial model = createModel(aom.boardAsset()); + model.setLocalTranslation(pos); + } } } - private Spatial createModel(Asset asset){ - String modelName = asset.getModelPath(); - String texName = asset.getDiffPath(); + private Spatial createModel(BoardAsset boardAsset){ + String modelName = boardAsset.getModelPath(); + String texName = boardAsset.getDiffPath(); Spatial model = app.getAssetManager().loadModel(modelName); - model.scale(asset.getSize()); + model.scale(boardAsset.getSize()); model.rotate((float) Math.toRadians(0), 0, (float) Math.toRadians(90)); model.setShadowMode(RenderQueue.ShadowMode.CastAndReceive); Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md"); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/MapLoader.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/MapLoader.java index ffa38da5..8793b37d 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/MapLoader.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/MapLoader.java @@ -1,13 +1,12 @@ package pp.mdga.client.Board; import java.io.BufferedReader; -import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; -public class MapLoader { +class MapLoader { static public List loadMap(String mapName) { List assetsOnMap = new ArrayList<>(); @@ -34,8 +33,8 @@ static public List loadMap(String mapName) { int x = Integer.parseInt(coordinates[0]); int y = Integer.parseInt(coordinates[1]); - Asset asset = getLoadedAsset(assetName); - assetsOnMap.add(new AssetOnMap(asset, x, y)); + BoardAsset boardAsset = getLoadedAsset(assetName); + assetsOnMap.add(new AssetOnMap(boardAsset, x, y)); } } catch (Exception e) { e.printStackTrace(); @@ -44,23 +43,23 @@ static public List loadMap(String mapName) { return assetsOnMap; } - static private Asset getLoadedAsset(String assetName) { + static private BoardAsset getLoadedAsset(String assetName) { return switch(assetName){ - case "node" -> Asset.node_normal; - case "node_start" -> Asset.node_start; - case "node_bonus" -> Asset.node_bonus; - case "node_home_blue" -> Asset.node_home_blue; - case "node_home_yellow" -> Asset.node_home_yellow; - case "node_home_black" -> Asset.node_home_black; - case "node_home_green" -> Asset.node_home_green; - case "world" -> Asset.world; - case "tent_big" -> Asset.bigTent; - case "tent_small" -> Asset.smallTent; - case "stack" -> Asset.cardStack; - case "jet" -> Asset.jet; - case "radar" -> Asset.radar; - case "ship" -> Asset.ship; - case "tank" -> Asset.tank; + case "node" -> BoardAsset.node_normal; + case "node_start" -> BoardAsset.node_start; + case "node_bonus" -> BoardAsset.node_bonus; + case "node_home_blue" -> BoardAsset.node_home_blue; + case "node_home_yellow" -> BoardAsset.node_home_yellow; + case "node_home_black" -> BoardAsset.node_home_black; + case "node_home_green" -> BoardAsset.node_home_green; + case "world" -> BoardAsset.world; + case "tent_big" -> BoardAsset.bigTent; + case "tent_small" -> BoardAsset.smallTent; + case "stack" -> BoardAsset.cardStack; + case "jet" -> BoardAsset.jet; + case "radar" -> BoardAsset.radar; + case "ship" -> BoardAsset.ship; + case "tank" -> BoardAsset.tank; default -> throw new IllegalStateException("Unexpected asset in .mdga file: " + assetName); }; } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/NodeControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/NodeControl.java index 6e8ecfa1..5f7f6609 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/NodeControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/NodeControl.java @@ -1,5 +1,30 @@ package pp.mdga.client.Board; -public class NodeControl { +import com.jme3.material.Material; +import com.jme3.math.Vector3f; +import com.jme3.renderer.queue.RenderQueue; +import com.jme3.scene.Spatial; +import pp.mdga.client.MdgaApp; +class NodeControl { + private final MdgaApp app; + + private Spatial model; + + NodeControl(MdgaApp app, Vector3f pos, BoardAsset boardAsset) { + this.app = app; + + String modelName = boardAsset.getModelPath(); + String texName = boardAsset.getDiffPath(); + Spatial model = app.getAssetManager().loadModel(modelName); + model.scale(boardAsset.getSize()); + model.rotate((float) Math.toRadians(0), 0, (float) Math.toRadians(90)); + model.setShadowMode(RenderQueue.ShadowMode.CastAndReceive); + Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md"); + mat.setTexture("DiffuseMap", app.getAssetManager().loadTexture(texName)); + model.setMaterial(mat); + app.getRootNode().attachChild(model); + + model.setLocalTranslation(pos); + } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PieceControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PieceControl.java index 4ef15526..97057ef3 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PieceControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PieceControl.java @@ -1,5 +1,5 @@ package pp.mdga.client.Board; -public class PieceControl { +class PieceControl { } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PileControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PileControl.java index 4cdc7db1..67a4d994 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PileControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PileControl.java @@ -1,5 +1,5 @@ package pp.mdga.client.Board; -public class PileControl { +class PileControl { }