Keller-Dev Docs · Java & Hytale

Java Core

Entkoppeltes Rendering eines persistenten Quest-Trackers

In Ergänzung zu Modals/Dialogfenstern erfordern UI-Elemente wie ein Quest-Tracker eine permanente Anzeige auf der Bildschirmoberfläche (Screen-Space). Implementierung Details:Das Zeichnen erfolgt nach dem Verwerfen der Kamera-Transformation (cameraView.dispose()) direkt auf dem untransformierten Graphics-Kontext (g). Der Tracker rendert unabhängig vom Zustand anderer temporärer UI-Komponenten (z. B. ob die DialogBox gerade sichtbar ist oder nicht).

Referenz: Datei 1. Spielprojekt · Klasse GameWindow.GamePanel
@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // 1. World-Space Objekte (mit Kamera-Verschiebung)
    Graphics2D cameraView = (Graphics2D) g.create();
    cameraView.translate((int) Math.round(-camera.getX()), (int) Math.round(-camera.getY()));
    drawTileMap(cameraView);
    drawInteractables(cameraView);
    player.draw(cameraView);
    cameraView.dispose();

    // 2. Screen-Space HUD & UI (untransformiert)
    drawQuestTracker(g); // Permanent oben links

    if (dialogBox.isVisible()) {
        drawDialogBox(g); // Modal unten überlagert
    }
}
#hud #rendering #screen-space #ui #quest-tracker
Bearbeiten