mirror of
https://athene2.informatik.unibw-muenchen.de/progproj/gruppen-ht24/Gruppe-02.git
synced 2024-11-24 23:59:44 +01:00
Hintergrund + Felder ID hinzugefügt
This commit is contained in:
parent
e889a61d43
commit
f97cbd778d
@ -1,7 +1,5 @@
|
|||||||
package pp.monopoly.client.gui;
|
package pp.monopoly.client.gui;
|
||||||
|
|
||||||
import com.jme3.font.BitmapFont;
|
|
||||||
import com.jme3.font.BitmapText;
|
|
||||||
import com.jme3.material.Material;
|
import com.jme3.material.Material;
|
||||||
import com.jme3.math.ColorRGBA;
|
import com.jme3.math.ColorRGBA;
|
||||||
import com.jme3.math.Vector3f;
|
import com.jme3.math.Vector3f;
|
||||||
@ -12,14 +10,14 @@ import com.jme3.texture.Texture;
|
|||||||
import pp.monopoly.client.MonopolyApp;
|
import pp.monopoly.client.MonopolyApp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TestWorld zeigt eine einfache Szene mit einem texturierten Quadrat und einem Würfel.
|
* TestWorld zeigt eine einfache Szene mit einem texturierten Quadrat.
|
||||||
* Die Kamera wird durch den CameraController gesteuert.
|
* Die Kamera wird durch den CameraController gesteuert.
|
||||||
*/
|
*/
|
||||||
public class TestWorld {
|
public class TestWorld {
|
||||||
|
|
||||||
private final MonopolyApp app;
|
private final MonopolyApp app;
|
||||||
private CameraController cameraController; // Steuert die Kamera
|
private CameraController cameraController; // Steuert die Kamera
|
||||||
private Toolbar toolbar; // Toolbar-Instanz
|
private Geometry cube; // Spielfigur
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Konstruktor für TestWorld.
|
* Konstruktor für TestWorld.
|
||||||
@ -37,18 +35,21 @@ public class TestWorld {
|
|||||||
app.getGuiNode().detachAllChildren(); // Entferne GUI
|
app.getGuiNode().detachAllChildren(); // Entferne GUI
|
||||||
app.getRootNode().detachAllChildren(); // Entferne andere Szenenobjekte
|
app.getRootNode().detachAllChildren(); // Entferne andere Szenenobjekte
|
||||||
|
|
||||||
|
setSkyColor(); // Setze den Himmel auf hellblau
|
||||||
createBoard(); // Erstelle das Spielfeld
|
createBoard(); // Erstelle das Spielfeld
|
||||||
Geometry cube = createCube(); // Erstelle den Würfel und speichere ihn
|
createCube(); // Füge den Würfel hinzu
|
||||||
toolbar = new Toolbar(app, cube); // Erstelle die Toolbar und übergebe den Würfel
|
|
||||||
|
|
||||||
// Übergib die Kamerasteuerung an CameraController
|
// Erstelle den CameraController
|
||||||
cameraController = new CameraController(
|
cameraController = new CameraController(
|
||||||
app.getCamera(), // Die Kamera der App
|
app.getCamera(), // Die Kamera der App
|
||||||
Vector3f.ZERO, // Fokus auf die Mitte des Spielfelds
|
Vector3f.ZERO, // Fokus auf die Mitte des Spielfelds
|
||||||
3, // Radius des Kreises
|
5, // Radius des Kreises
|
||||||
2, // Höhe der Kamera
|
3, // Höhe der Kamera
|
||||||
0.05f // Geschwindigkeit der Bewegung
|
0.5f // Geschwindigkeit der Bewegung
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Füge die Toolbar hinzu
|
||||||
|
new Toolbar(app, cube);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -62,6 +63,13 @@ public class TestWorld {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setzt die Hintergrundfarbe der Szene auf hellblau.
|
||||||
|
*/
|
||||||
|
private void setSkyColor() {
|
||||||
|
app.getViewPort().setBackgroundColor(new ColorRGBA(0.5f, 0.7f, 1.0f, 1.0f)); // Hellblauer Himmel
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Erstelle das Spielfeld.
|
* Erstelle das Spielfeld.
|
||||||
*/
|
*/
|
||||||
@ -80,46 +88,20 @@ public class TestWorld {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Füge einen kleinen blauen 3D-Würfel hinzu und zeige seine Koordinaten an.
|
* Erstellt den Würfel (Spielfigur) in der Szene.
|
||||||
*/
|
*/
|
||||||
private Geometry createCube() {
|
private void createCube() {
|
||||||
// Erstelle einen kleinen 3D-Würfel
|
Box box = new Box(0.05f, 0.05f, 0.05f); // Kleinere Größe für Spielfigur
|
||||||
Box cube = new Box(0.04f, 0.04f, 0.04f); // Sehr kleine Kantenlänge
|
cube = new Geometry("Cube", box);
|
||||||
Geometry cubeGeom = new Geometry("PlayerPiece", cube);
|
|
||||||
|
|
||||||
// Erstelle ein Material mit einer blauen Farbe
|
|
||||||
Material cubeMat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
|
||||||
cubeMat.setColor("Color", ColorRGBA.Blue); // Blaue Farbe
|
|
||||||
cubeGeom.setMaterial(cubeMat);
|
|
||||||
|
|
||||||
// Positioniere den Würfel
|
|
||||||
cubeGeom.setLocalTranslation(0.9f, 0.01f, -0.9f);
|
|
||||||
|
|
||||||
// Füge den Würfel zur Szene hinzu
|
|
||||||
app.getRootNode().attachChild(cubeGeom);
|
|
||||||
|
|
||||||
return cubeGeom; // Rückgabe des Würfels
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
// Setze das Material für den Würfel
|
||||||
* Zeige die Koordinaten des Würfels im GUI an.
|
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||||
*
|
mat.setColor("Color", ColorRGBA.Blue); // Blau gefärbter Würfel
|
||||||
* @param position Die Position des Würfels
|
cube.setMaterial(mat);
|
||||||
*/
|
|
||||||
private void displayCubeCoordinates(Vector3f position) {
|
|
||||||
// Lade die Schriftart
|
|
||||||
BitmapFont font = app.getAssetManager().loadFont("Interface/Fonts/Default.fnt");
|
|
||||||
BitmapText coordinatesText = new BitmapText(font);
|
|
||||||
|
|
||||||
// Setze den Text mit den Koordinaten
|
// Setze den Startpunkt des Würfels
|
||||||
coordinatesText.setText(String.format("Würfel Koordinaten: X=%.2f, Y=%.2f, Z=%.2f",
|
cube.setLocalTranslation(0.8999999f, 0.1f, -0.9f);
|
||||||
position.x, position.y, position.z));
|
|
||||||
|
|
||||||
// Positioniere den Text auf dem Bildschirm
|
app.getRootNode().attachChild(cube);
|
||||||
coordinatesText.setLocalTranslation(10, app.getCamera().getHeight() - 10, 0); // X, Y (oben links)
|
|
||||||
coordinatesText.setSize(font.getCharSet().getRenderedSize() * 1.5f); // Schriftgröße
|
|
||||||
|
|
||||||
// Füge den Text zum GUI-Node hinzu
|
|
||||||
app.getGuiNode().attachChild(coordinatesText);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package pp.monopoly.client.gui;
|
|||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import com.jme3.font.BitmapText;
|
||||||
import com.jme3.math.Vector3f;
|
import com.jme3.math.Vector3f;
|
||||||
import com.jme3.scene.Geometry;
|
import com.jme3.scene.Geometry;
|
||||||
import com.simsilica.lemur.Axis;
|
import com.simsilica.lemur.Axis;
|
||||||
@ -20,6 +21,7 @@ public class Toolbar {
|
|||||||
private final MonopolyApp app;
|
private final MonopolyApp app;
|
||||||
private final Container toolbarContainer;
|
private final Container toolbarContainer;
|
||||||
private final Geometry cube; // Referenz auf den Würfel
|
private final Geometry cube; // Referenz auf den Würfel
|
||||||
|
private final BitmapText positionText; // Anzeige für die aktuelle Position
|
||||||
private final float boardLimit = 0.95f; // Grenzen des Bretts
|
private final float boardLimit = 0.95f; // Grenzen des Bretts
|
||||||
private final float stepSize = 0.18f; // Schrittgröße pro Bewegung
|
private final float stepSize = 0.18f; // Schrittgröße pro Bewegung
|
||||||
private int currentPosition = 0; // Aktuelle Position auf dem Spielfeld
|
private int currentPosition = 0; // Aktuelle Position auf dem Spielfeld
|
||||||
@ -52,6 +54,10 @@ public class Toolbar {
|
|||||||
|
|
||||||
// Füge die Toolbar zur GUI hinzu
|
// Füge die Toolbar zur GUI hinzu
|
||||||
app.getGuiNode().attachChild(toolbarContainer);
|
app.getGuiNode().attachChild(toolbarContainer);
|
||||||
|
|
||||||
|
// Erstelle die Position-Anzeige
|
||||||
|
positionText = createPositionDisplay();
|
||||||
|
updatePositionDisplay(); // Initialisiere die Anzeige mit der Startposition
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -104,7 +110,8 @@ public class Toolbar {
|
|||||||
currentPosition = (currentPosition + step + 4 * positionsPerSide) % (4 * positionsPerSide);
|
currentPosition = (currentPosition + step + 4 * positionsPerSide) % (4 * positionsPerSide);
|
||||||
Vector3f newPosition = calculatePosition(currentPosition);
|
Vector3f newPosition = calculatePosition(currentPosition);
|
||||||
cube.setLocalTranslation(newPosition);
|
cube.setLocalTranslation(newPosition);
|
||||||
System.out.println("Würfelposition: " + newPosition);
|
updatePositionDisplay(); // Aktualisiere die Positionsanzeige
|
||||||
|
System.out.println("Würfelposition: " + newPosition + " (Feld-ID: " + currentPosition + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -131,10 +138,31 @@ public class Toolbar {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erstellt die Anzeige für die aktuelle Position.
|
||||||
|
*
|
||||||
|
* @return Das BitmapText-Objekt für die Anzeige
|
||||||
|
*/
|
||||||
|
private BitmapText createPositionDisplay() {
|
||||||
|
BitmapText text = new BitmapText(app.getAssetManager().loadFont("Interface/Fonts/Default.fnt"), false);
|
||||||
|
text.setSize(20); // Schriftgröße
|
||||||
|
text.setLocalTranslation(10, app.getCamera().getHeight() - 10, 0); // Oben links
|
||||||
|
app.getGuiNode().attachChild(text);
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aktualisiert die Anzeige für die aktuelle Position.
|
||||||
|
*/
|
||||||
|
private void updatePositionDisplay() {
|
||||||
|
positionText.setText("Feld-ID: " + currentPosition);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entfernt die Toolbar.
|
* Entfernt die Toolbar.
|
||||||
*/
|
*/
|
||||||
public void remove() {
|
public void remove() {
|
||||||
app.getGuiNode().detachChild(toolbarContainer);
|
app.getGuiNode().detachChild(toolbarContainer);
|
||||||
|
app.getGuiNode().detachChild(positionText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user